Manifesto for Collaborative Software Development
The Author's fancy mechanical keyboard, ca. 2022

Manifesto for Collaborative Software Development

We have uncovered better ways of developing software by doing it and helping others do it, and so we continue to do so.

Through this learning we have further come to value:

Teamwork over individual work

Deployed to end user software over unreleased or incomplete artifacts

User satisfaction over non-user success

Effectiveness over efficiency

That is, while there is value in the items on the right, we find we get 10x that value from the items on the left.

Principles behind the Collaborative Manifesto

  1. Our highest priority is to satisfy the users, the sponsors, and the developers through sustainable delivery of valuable software as a collaborative team.
  2. Collaborative software must be built in a way that it is easy to change by any developer, and so it supports requirement changes at any point in development.?
  3. Deliver high quality software as frequently as multiple times a day, a week, or a month, if possible with no “hand-offs”.
  4. The users, the sponsors, and the developers must build trust in each other and work together as frequently as possible.
  5. Cultivate an environment of trust and support for all involved to get the job done.? This is done with the understanding that every software development endeavor requires growth and learning by each individual involved.?
  6. The most efficient and effective method of conveying critical information for ALL involved is face-to-face conversation, either in person or video telecommunications. While not required at all times, it is the safest default.
  7. Software in the hands of end users is the primary measure of progress.
  8. The users, sponsors, and developers should be able to maintain an acceptable pace indefinitely.
  9. Technical excellence is NOT optional. This means doing as much TDD, Pair/Ensemble Programming, CI/CD with trunk based development, and Refactoring as is possible to reach agreement for your engineering culture.
  10. Simplicity is extremely difficult to achieve, thus needs to be made a first class citizen of all requirement scoping.
  11. Collaborative, self organizing teams build the best products. Therefore, it is of paramount importance that any host organization must be actively prevented from imposing collaboration disincentives via individual metrics for financial or promotional rewards.
  12. The developers reflect constantly on how to become more effective and runs experiments to validate and incorporate, or invalidate and reject those experiments.

Steve Kuo

Consummate Code Crafter

3 个月

Nice carpet. It really brings your desktop together.

回复

There's a lot of good ideas here. There's something missing around "sustainability" where consistent productivity is measured over years, not weeks. There is a lot about trust here, but nothing to caution that "trust is fragile, easily broken, and rarely fixed once broken." There is also something missing about someone that the team has daily contact with who is empowered to authorize critical business decisions *in the moment*. A lot of product owners are actually PMs with no decision-making abilities. The PO stand-in would also need to be authorized to strip out vast swaths of functionality to get a real MVP. The PO stand-in usually is given a list of features to implement by a certain date, and no authority to reduce that list. This list is still not as positive as I would like it to be. PS, point 9 is insanely important, but only 1 CEO in 10,000 would understand what a rigorous requirement that is or have a clue as to how to get his middle management to support technical excellence over predictable releases.

回复
Philip Schlesinger

Enterprise Systems Architect

6 个月

I love it all — except I would ask that you write an exception for gitflow for software development that requires formal validation — for example, when releasing medical device software.

That’s good stuff, Garrick. Also, your keyboard is kewl AF. Also, I want to be an original signer. Are we meeting in Snowbird?

回复
Justin Farrell

Lead Software Engineer | React - C# - Java - Typescript - Go | Full-Stack

6 个月

Wow, this is wonderful. I especially love the emphasis on actually shipping the product to customers who want it - AKA, the goal. Many companies seem to lose sight of that one.

要查看或添加评论,请登录

Garrick West的更多文章

社区洞察

其他会员也浏览了