I've been asked by many to share the governance process that we used at Citizen Code where the CoMakery platform was incubated. Citizen Code was a democratically run venture studio funded through consulting. We governed our company with a strict Holacracy in 2014 and then used the following "Citizen Code Constitution" throughout 2015 to collectively manage our company. Anyone who was a member of the organization could amend how the company was run by making pull request proposals. Our team size was between 5 and 25 people over the course of that time.
The constitutional approach worked pretty well for us and it's a bold experiment I'm proud of. Of course there were problems. For example, some of my biggest learnings were that often people dislike governance meetings; that democratic agreements with outside parties can be slow and that even if your values align; and that having a crystal clear common mission is crucial as more purpose driven action is encouraged.
Challenges aside, I think democratic organizations are an amazing way to work. I believe that future iterations on this model are a key part of how we will work together collaboratively to solve the big challenges of our time like: climate change, pandemics, corruption, economic downturns and just doing fair fulfilling work.
And so I am excited to share our learnings with all of you who are continuing to evolve democratic organizations, coops, participatory orgs, DAOs and collectives working together in the spirit of creative collaboration. Let me know what you are up to by emailing me at [email protected] where I am evolving a platform to help organize communities to make things together in the same spirit. There is much to collaborate on.
And without further ado...
This constitution is how we agree to fulfill our collective purpose, make decisions, get things done, allocate resources, and respond to change. To clearly empower us we aspire to keep it simple.
We favor initiatives that envision and build:
- "Civilization 2.0" collaboration platforms for small business ecosystems, smart cities, marketplaces, governance, artists, and communities.
- "Tech to Connect" tools that increase empathy, connection, and constructive dialogue.
In support of our purpose, we invest in developing our personal capacity for effective collaboration and empathy. We aspire to build "Technology So Advanced It's Human."
We seek to employ these principles and values in our work at Citizen Code:
- Excellence - Producing great products. Doing the best we can do for our clients.
- Empathy - Care for each other. Create a culture of trust. Create structures that facilitate empathy.
- Efficiency - Execute rapidly. Don't waste anyone's time.
- Alignment - Choose clear collective goals that can be pursued in flexible ways.
- Empowerment - Empower individuals to permissionlessly pursue their passions in support of the collective purpose. Give those doing the work decision making authority, budget, and resources to flexibly do the right thing. Make room for the plurality of personal passions.
- Transparency - Create accountability and support informed decisions by transparently sharing goals, progress, salaries, equity, expenses, and profit margins. Keep records of decisions we made and why we made them.
- Feedback - Make incremental steps towards improvement with regular feedback. Favor immediate non-harmful solutions over delayed perfection. Encourage making mistakes in low risk conditions and sharing what we learned. Run experiments. Get advice from each other before making decisions.
- Regeneration - Favor a sustainable pace that refreshes, energizes, and nurtures. Favor profitable and sustainable growth. Factor in externalities. Give back to the systems that support us.
Members of the organization can participate in the Proposal Process, hold a Role, or employ the organization's resources; non-members cannot. Membership can be granted or revoked by a person who holds the “Role Assigner” role.
Members are free to take any action that fulfills the purpose of the organization and the roles that they hold as long as they do not break an explicit Rule and they seek to uphold the values of the constitution.
Members are empowered to make decisions using their best judgement rather than relying on voting or consensus. Decisions about Budgets can only be made by Purchasers.
When making decisions of significant impact the decider must seek advice and record decisions in this way:
- Seek advice from people who are affected or have relevant knowledge. Consider what aligns with our purpose and values.
- Make the decision and act on it.
- Transparently and durably inform the community of the decision and rationale in the Citizen Code Constitution Wiki Decisions section or in email.
Rules govern the resources of the organization. They are decided through the proposal process.
Roles and their accountabilities are defined through proposals. Roles are defined separately from people.
People are assigned to roles by a person with a “role assigner” role. A person can be assigned to multiple roles. A person can resign from roles they do not wish to hold. People are only accountable for roles they hold.
Processes include roles, their interactions and decisions in achieving an outcome.
If you are personally experiencing a tension that cannot be addressed by making a decision, you may propose to create or modify a role, rule, purpose, or portion of the constitution. You can make your proposal in a GitHub pull request or at a meeting. The proposal must be made public to all Members such that they have the opportunity to clarify, give feedback, or object to the proposal.
A Facilitator facilitates the process if it is an in person meeting. If no Facilitators are present, someone else can step up to facilitate but that person should not merge pull requests at the end.
For each un-merged proposal pull request, the facilitator takes these steps:
- The person experiencing the need for change (the author of the pull request) reads their proposal to the group of affected people. They explain why the change is needed and what the proposal is, and why it is un-merged.
- The facilitator asks if anyone has clarifying questions and lets people ask their questions and get answers.
- The facilitator asks each group member for a reaction. A simple "no reaction" or a thumbs up is perfectly acceptable and speeds the process up.
- The proposer may amend their proposal based on suggestions.
- The facilitator asks each group member whether they object or not. The group member responds with “objection” or “no objection”. Only objections that are based on the belief that the proposal would cause significant harm are valid. Valid objections are resolved between the proposer and the objector. The proposer chooses how to amend their proposal based on suggestions. Modified proposals are then re-presented to the group for objections.
- If there are no valid objections then the proposal is adopted.
- The Facilitator merges the pull request.
- The proposer creates a new GitHub pull request for the proposal.
- The tension that is to be addressed by the proposal is included in the commit message.
- The change is announced to all Members on the slack #governance channel.
- Members can respond with clarifications, reactions, and blocking objections. Any Member can abstain from participating.
- Valid objections must include a reason that the proposal is believed to be harmful and not safe enough to try; it must also include either 1) a thumbs down emoji 2) the words "objection" or 3) a "-1".
- Any facilitator can decree that the proposal is adopted if there is evidence that the final proposal has been seen by those who are significantly affected and there are no valid objections to the final version of the proposal for two days.
- Anyone can request that the pull request be discussed in-person in the next governance meeting.
- The proposer or facilitator can require that the pull request be discussed in-person in the next governance meeting.
Proposals that are adopted can be further modified through the proposal adoption process.
Employees are authorized to expense up to $250 per month to further the collective Purpose. Proposals must be made for larger amounts.
Members propose Budgets or Purchases to Purchasers through Github pull requests. Purchasers indicate their individual approval by commenting on the pull request in Github with a 👍 or +1.
Purchasers indicate the Budget proposal has been adopted by merging the pull request to the Budgets or Purchases page. The names of the Purchasers who approved the proposal must be included in the proposal.
Individual Purchasers may approve purchases or budgets of up to $2,000 in a any calendar month.
Any 2 Purchasers can approve a purchase or budget of up to $5,000.
Any 3 Purchasers may approve a purchase of up to $10,000.
As required by the Citizen Code LLC operating agreement, Co-founders must engage in a proposal process with other Co-founders before paying or borrowing more than $10,000; or increasing benefits to active Co-founders or company employees in an amount greater than $10,000 in any calendar year.
Purchase proposals must include:
- What is being purchased
- Amount of the purchase
- Benefit to the Purpose or Goals
- Approving Purchasers who approved the proposal
Budget proposals must include:
- Budget Title that can be used in conversation to reference what the budget will be used for
- Budget Owner who decides how the budget will be spent to achieve a goal
- Goal that the budget will be used to achieve
- Success Criteria that determines if the goal has or has not been achieved
- Amount of currency or other resources
- Time Limit for achieving the goal
- Approving Purchasers who approved the proposal
Budgets targeted at Revenue goals are expected to demonstrate revenue and a path to profitability within a maximum of 6 months and $36,000 of investment by Citizen Code. Budgets that can demonstrate revenue and a path to profitability with lower risk are more likely to be approved.
Budget currency can be exchanged for employee time at $100/hr.
- Daily standup for product team members at 8:45am
- Retros every other Friday
- Co-founder meeting each Monday
- Co-founders 1 day meeting quarterly
- Email - Gmail
- Team Wiki - Google Drive with Google Doc Index
- File Sharing - Google Drive
- Team Chat - Slack
- Hour Tracking - Harvest
- Operational Tasks - Asana
- Development Queues - Pivotal Tracker
- Accounting - Xero
- Bank - Silicon Valley Bank
To make story estimation more efficient, there will be 3 minutes to estimate each story and the team can vote thumbs up or thumbs down to continue the estimation, if there is a tie estimation continues.
In order to track billable hours, the focus of our effort, and equity in incubated projects - all hours worked on client, partner, and internal products should be tracked in Harvest. This time includes project related emails, standups, retros, and meetings with the client. Company stand-ups and meetings are not included. These hours may be marked as non-billable or moved to an internal project based on a Citizen's judgement.
To satisfy company billing departments, each entry should be accompanied by a short comment on work completed.
When working on a day rate, or focused on a single project, a single entry for hours may be entered with a summary of work.
A contract coordinator must approve all contracts before they are signed.
Within budgetary constraints, you can use any tool you like for a role you perform. If multiple people need a common tool to perform work then the common tool must be proposed using the proposal adoption process. Uninterested people can opt out.
Tool decisions are recorded in the Group Tools section.
Because self-organization needs information; we will make accounting software (e.g. Harvest and Xero) read access available to employees and subcontractors of Citizen Code who have worked at Citizen Code for 30 days and completed at least 40 hours of work.
Use these rules:
- Only use funds that are earned from retainer amounts
- If we have not received cash from clients for billable work it is not considered net cash. Exceptions to this with conversations.
- Vacation days for co-founders will be taken as accrued profit distributions and will be paid as funds are available.
Pay out in this order:
- Pay Sub-contractors & Employees
- Reimburse expenses
- Pay bi-weekly co-founder profit accruals with cash available. Accrue remaining amounts.
- Pay accrued co-founder payment rights First in First Out.
- Assigns people to roles
- Must attempt to consult with co-founders as part of making role assignments.
- Facilitates proposal adoption meetings
- Creating transparent systems for tracking recruitment efforts
- Helping to craft a marketing message and strategy for recruiting potential employees
- Engage in recruitment efforts that increase the likelihood hiring diverse product managers, designers, and developers
- Creating and maintaining documents for new Citizen Code subcontractors or employees
- Distributing documents to new Citizen Code subcontractors or employees upon start
- Answering questions and doing any necessary related follow up with new Citizen Code subcontractors or employees
- Advocate and facilitate improving Citizens' working environment
- Checking in with all Citizens periodically
- Working to keep Citizens happy
- Maintain internal documents and systems
- Maintaining the employee handbook with health care, vacation, etc.
- Bi-weekly invoicing, payroll, expenses, and benefits payments
- Tracking of hours and time off
- Reporting on hiring budget
- Creating performance reports that answer Citizen financial questions
- Communicate with the bookkeeper to be aware of the most up to date financial information.
- Sending approval requests to the #budget-proposals slack channel.
- Authorize payments from the budget
- Report on the Budget Validation Metric to all Members on the 1st and 15th of each month.
- Manage software licenses
- Maintaining a list of existing software licenses
- Issuing software licenses to people (or letting them self-issue licenses)
- Purchasing new software licenses
- Keeping track of licenses that are no longer in use (because someone quit or is otherwise not using a license) and re-issuing that license to someone else
- Track Citizen Code-owned hardware
- Purchasing hardware
- Keeping track of Citizen Code-owned hardware
- Making sure Citizen Code gets its hardware back when it is no longer being used
- Providing contracts for consulting projects, employees, and sub-contractors
- Consulting a lawyer about contracts when needed
- Verifying contracts are fiscally responsible
- Approving contracts
Employees and Sub-Contractors working on products
- Record hours worked on incubated products, marketing materials or client projects in Harvest.
- Schedule work dates with the Staffing Coordinator
- If this is the only role held, work a minimum of 32 recorded hours on Staffing Coordinator determined projects (or proportional number of hours if you are engaged part time or taking time off).
- Manage relationships when named in a contract
- Letting client, personnel, and co-founders know when personnel start and stop. Ideally with a 1 week lead time or greater.
- Instigating conversations about process and practice improvements; asking for help and support in doing this when needed.
- Communicating the pragmatic aspects of the contract terms and the billing structure to each stakeholder before contract signing (e.g. financier, product manager, and development lead).
- Coordinating with staffing coordinator for upcoming demand for work
- Indicating staffing needs for the upcoming week
- Sharing a quick narrated screencast of project changes with product team members, at least monthly, as long as the client does not object (or delegating creation of the screencast to someone else)
- Educating new clients on our agile process and defining project goals
- Communicating with BD when we reach the end of agreed hours to kickoff re-negotiation
- Shaping our process for running internal projects
- Moving internal projects forward
- Proposing internal project selection criteria to co-founders
- Approving resource allocation with the Bookkeeping Coordinator
- Improve technology decisions, increase similarities, and leverage technical insights across clients
- Maintain visibility of all technology decisions across all clients
- Communicate Citizen Code’s preferences around technology decisions to Citizens
- Rotate through projects and advise on best practices for software development
- Building and maintaining a process and systems for efficiently coordinating staffing.
- Collecting information from PMs about needed resources for their projects.
- Communicating staffing plan.
- Collecting information from consultants about their availability.
- Determining the most likely tech anchor for upcoming projects (to help with scoping, for example).
Product-facing responsibilities:
- Using and tinkering with the application to look for bugs and inconsistencies (Exploratory Testing
- Verifying that old bugs don't return (Regression Testing), possibly including writing Manual Test Plans or Automated Acceptance Tests.
- Testing application appearance and behavior across multiple platforms (including different web browsers, physical mobile devices, and BrowserStack)
- Recommending bug reporting and tracking systems (including tools and processes)
Customer-facing responsibilities
- Organizing and triaging bug reports from client(s), developers and end users. Triage involves:
- separating reports into bugs vs. features
- sorting bugs by priority (e.g. P1, P2, P3)
- sorting feature requests by urgency (e.g. urgent - nice - someday)
- Communicating with bug reporters as needed to clarify steps to reproduce and acceptance criteria
- Staying on a project from start to finish (or at least as long as possible).
- Providing technical continuity as other developers rotate on and off the project.
- Estimating stories for budgeting and project planning; determining if group story estimation is advantageous.
- Seeking advice from other team members to improve estimation.
- Participating in technical conversations with clients when requested by Business Development and Project / Product Manager roles.
- Allocating at least one hour per week to allow any Citizen Code employee or subcontractor to shadow an existing dev pair on the project
- Subcontractors do not bill for this time, and the third hour is not charged to the client
- Interested parties may contact the tech anchor directly to schedule this time
- This is designed to foster shared learning, skill development, and cross-team pollination across the organization, and the tech anchor should be responsible for ensuring that these sessions are meeting these requirements to the satisfaction of the shadowing parties
- Maintain a consistent brand
- Setup online presence
- Provide business cards
- Review prepared marketing materials (physical and electronic)
- Provide marketing materials that support the Sales Strategy
- Propose updates to the Sales Strategy
- Propose assumptions, risks, and hypotheses to test
- First touches with potential clients via events/conferences
- Working on long-term partnerships, co-sponsorship opportunities
- Assessing product/market fit and proposing adjustments to branding and strategy
- Feeding leads into biz dev process
- Focus efforts on the Sales Strategy
- Assess client needs and project scope
- Report on top prospects at tactical meetings
- Record email communications and status changes in Streak
- Communicate important sales news in #biz-chatter and #biz-summary
- Look holistically at whether we should continue to do business with a Client
- Checkin with Bookkeeper, Project Manager, and Staffing Coordinator to determine if the contract should be renewed
- Look holistically at whether we should continue to do business with a Client
- Checkin with business development person, project manager, and staffing coordinator to determine if the contract should be renewed
- Help weave a community of purposeful doers and thought leaders
- Help maintain existing relationships
- Raise awareness around Citizen Code’s purpose, values, services, and products
- Coordinate meetups, talks, conferences, and dinners in support of company's goals and business development
- Scheduling meetings, interviews, and customer development calls for Citizens
- Checkin with the client during projects about what is working or not working for them
- Asking client at the end of the engagement about their experience
- Advise team members on how to make customers happier
Process for generating ideas for incubation:
-
Exploration. Solidify an understanding of different customer problems
-
Focus. Facilitated group discussion about which problems/solutions are most feasible, desired, & viable for validation. After discussion, Citizens vote for the proposal they find matches the above criteria using a two-round runoff vote. If a proposal does not receive the majority vote (>50%) in the first round, voting is held again with the field narrowed to the top two (or N, if there is a tie) proposals.
-
Validation. Testing riskiest assumptions and validating that a particular problem/solution is a good fit for CC to pursue
-
MTP Build. Building the minimum testable product (might be code, might not) once a problem/solution is validated
With respect to #1, what will differentiate us as an innovation group is our capacity for listening, empathy, & critical thinking. We can continue to deepen our capacity in this area by having open, honest dialog about the different problems/opportunities we see and by respectfully and thoughtfully challenging one another's assumptions.
The process will have a "rounds" approach, where we go from an idea to validation in each round. Our inaugural round will run through Steps #1-3 over the course of one month.
Ideas may be submitted at any point in time here.
General support for feedback on ideas:
- Slack
- Discourse
A monthly facilitated meeting to review ideas and stack rank front-runners by feasibility, desirability, and viability. These criteria are outlined more specifically in our product scorecard
The internal project coordinator will make the final selection.
Review the following blog posts for more context:
http://blog.citizencode.io/post/112264193300/citizen-code-generating-great-ideas
http://blog.citizencode.io/post/112264463215/citizen-code-evaluating-great-ideas
Edits to the scorecard criteria are welcome.
Once we've identified a front-runner, any Citizen with bandwidth and interest(*) can work together to gather qualitative feedback. This will be done primarily with customer interviews but we will consider other ethnographic techniques as well. There is a Weekly Techniques Meeting so we can discuss customer development tools and other validation strategies/challenges.
If we find support for the chosen problem/solution in our interviews by the end of the round, we will move on to Step #4 and start a lean build of an MTP. If not, we will begin another round.
Tensions Addressed:
- Equity proposals should be considered by all affected
Process:
- The person receiving the equity offer emails the following to citizens@
- Financial details: number of options/shares or percentages, dilutions, strike prices, exercise dates, office space, etc
- Resource details: are specific people needed
- Timing details: how long is the contract
- Context around the client relationship: how have things been so far working with them
- Context around product and market: describe product and how you think it will be a success
- Allow for 72 hours of reaction time
- Discuss cash availability with bookkeeper
- Discuss staffing with staffing coordinator
Tensions Addressed:
- To maintain capacity for incubating internal projects trade proposals need to be monitored.
Process:
- The person advocating the Work for Trade drafts a Statement of Work (SOW)
- The SOW is proposed to the Contract Coordinator, Purchasers, Bookkeeper, and Project Manager using the proposal Processes
- The Contract Coordinator is accountable for signing only an SOW with no valid objections