pieterh wrote on 01 Mar 2012 20:00
In this article I'm presenting a series of patterns for success in software engineering. These patterns aim to capture the essence of what divides glorious success from tragic failure. They were described as "religious maniacal dogma" by a manager, and "anything else would be fucking insane" by a colleague, in a single day. For me, they are science, the results of decades of trial by error. Treat the Lazy Perfectionist and others as tools to use, sharpen, and throw away if something better comes along.
Table of Contents
|
The Lazy Perfectionist
Never design anything that's not a precise minimal answer to a problem we can identify and have to solve. — Pieter Hintjens
The Lazy Perfectionist spends his idle time observing others and identifying problems that are worth solving. He looks for agreement on those problems, always asking, "what is the real problem". Then he moves, precisely and minimally, to build, or get others to build, a usable answer to one problem. He uses, or gets others to use those solutions. And he repeats this until there are no problems left to solve, or time or money runs out.
The Benevolent Tyrant
The control of a large force is the same principle as the control of a few men: it is merely a question of dividing up their numbers. — Sun Tzu
The Benevolent Tyrant divides large problems into smaller ones and throws them at groups to focus on. He brokers contracts between these groups, in the form of APIs and unprotocols. The Benevolent Tyrant constructs a supply chain that starts with problems, and results in usable solutions. He is ruthless about how the supply chain works, but does not tell people on what to work, nor how to do their work.
The Earth and Sky
The ideal team consists of two sides: one writing code, and one providing feedback. — Pieter Hintjens
The Earth and Sky work together as a whole, in close proximity, but they communicate formally through an issue tracking. Sky seeks out problems, from others and from their own use of the product, and feeds these to Earth. Earth rapidly answers with testable solutions. Earth and Sky can work through dozens of issues in a day. Sky talks to other users, and Earth talks to other developers. Earth and Sky may be two people, or two small groups.
The Happy Failure
To succeed you must learn to fail rapidly, cheaply, and often. — Pieter Hintjens
The Happy Failure embraces failure as the only real way to learn. He focuses on reducing the cost of failure, and documenting failures so that everyone can learn from them. He does not over-specify functionality, stays away from upfront documentation, does not use test-driven development. All of these make it harder, and more costly to fail.
The Open Door
The accuracy of knowledge comes from diversity. — Pieter Hintjens
The Open Door accepts contributions from almost anyone. He does not argue quality or direction, instead allowing others to argue that and so get more engaged. He calculates that even a troll will bring more diverse opinion to the group. He lets the group form its opinion about what goes into stable code, and he enforces this opinion with help of a Benevolent Tyrant.
The Laughing Clown
Perfection precludes participation. — Pieter Hintjens
The Laughing Clown, often acting as the Happy Failure, makes no claim to high competence. Instead his antics and bumbling attempts provoke others into rescuing him from his own tragedy. Somehow however, he always identifies the right problems to solve. People are so busy proving him wrong they don't realize they're doing valuable work.
The Mindful General
Make no plans. Set goals, develop strategies and tactics. — Pieter Hintjens
The Mindful General operates in unknown territory, solving problems that are hidden until they are nearby. Thus he makes no plans, but seeks opportunities, then exploits them rapidly and accurately. He develops tactics and strategies in the field, and teaches these to his men so they can move independently, and together.
The Social Engineer
If you know the enemy and know yourself, you need not fear the result of a hundred battles. — Sun Tzu
The Social Engineer reads the hearts and minds of those he works with and for. He asks, of everyone, "what makes this person angry, insecure, argumentative, calm, happy?" He studies their moods and disposition. With this knowledge he can encourage those who are useful, and discourage those who are not. The Social Engineer never acts on his own emotions.
The Constant Gardener
Do not repeat the tactics which gained you one victory, but let your methods be regulated by the infinite variety of circumstances. — Sun Tzu
The Constant Gardener grows a process from a small seed, step by step as more people come into the project. He makes every change for a precise reason, with agreement from everyone. He never imposes a process from above but will let others come to consensus, then he will enforce that consensus. In this way everyone owns the process together and by owning it, they are attached to it.
The Rolling Stone
After crossing a river, you should get far away from it. — Sun Tzu
The Rolling Stone accepts his own mortality and transience. He has no attachment to his past work. He accepts that all that we make is destined for the trash can, it is just a matter of time. With precise, minimal investments, he can move rapidly away from the past and stay focused on the present and near future. Above all he has no ego and no pride to be hurt by the actions of others.
The Pirate Gang
Code, like all knowledge, works best as collective — not private — property. — Pieter Hintjens
The Pirate Gang organize freely around problems. They accept authority insofar as it provides goals and resources. The Pirate Gang own and share all they make: every work is fully remixable by others in the Pirate Gang. They move rapidly as new problems emerge, and are quick to abandon old solutions if they stop being relevant. No persons or groups can monopolize any part of the supply-chain.
The Flash Mob
Water shapes its course according to the nature of the ground over which it flows. — Sun Tzu
The Flash Mob comes together in space and time as needed, then disperses as soon as they can. Physical closeness is essential for high-bandwidth communications. But over time it creates technical ghettos, where Earth gets separated from Sky. The Flash Mob tends to collect a lot of frequent flier miles.
The Canary Watcher
Pain is not, generally, a Good Sign. — Pieter Hintjens
The Canary Watcher measures the quality of an organization by the their own pain level, and the observed pain levels of those he works with. He brings new participants into existing organizations so they can express the raw pain of the innocent. He may use alcohol to get others to verbalize their pain points. He asks others, and himself, "are you happy in this process, and if not, why not?" When an organization causes pain in himself or others, he treats that as a problem to be fixed. People should feel joy in their work.
The Hangman
Never interrupt others when they are making mistakes. — Pieter Hintjens
The Hangman knows that we learn only by making mistakes, and he gives others copious rope with which to learn. He only pulls the rope gently, when it's time. A little tug to remind the other of their precarious position. Allowing others to learn by failure gives the good reason to stay, and the bad excuse to leave. The Hangman is endlessly patient, because there is no shortcut to the learning process.
The Historian
The public record may be tedious, but it's the only way to prevent collusion. — Pieter Hintjens
The Historian forces discussion into the public view, to prevent collusion to own areas of work. The Pirate Gang depends on full and equal communications that do not depend on momentary presence. No-one really reads the archives, but the simply possibility stops most abuses. The Historian encourages the right tool for the job: email for transient discussions, IRC for chatter, wikis for knowledge, issue tracking for recording opportunities.
The Provocateur
When a man knows he is to be hanged in a fortnight, it concentrates his mind wonderfully. — Samuel Johnson
The Provocateur creates deadlines, enemies, and the occasional impossibility. Teams work best when they don't have time for the crap. Deadlines bring people together and focus the collective mind. An external enemy can move a passive team into action. The Provocateur never takes the deadline too seriously. The product is always ready to ship. But he gently reminds the team of the stakes: fail, and we all look for other jobs.
The Mystic
When people argue or complain, just write them a Sun Tzu quotation — Mikko Koppanen
The Mystic never argues directly. He knows that to argue with an emotional person only creates more emotion. Instead he side-steps the discussion. It's hard to be angry at a Chinese general, especially when he has been dead for 2,400 years. The Mystic will act as the Hangman when people insist on the right to get it wrong.
This article is an extract from Chapter 6 of the ZeroMQ book, on community building. If you like this, buy the book :-)
Comments
Despite the fact that we are moving to a range we are now acquainted with, it is still some place we haven't lived. I like becoming more acquainted with various regions: where to shop, where to eat, best places to stroll with the children or go for a run. Each new place we have lived has astonished me with spots that I wind up adoring! I'll certainly miss this spot by the lake where I generally take pictures, however I wager there's somewhere else I'll wind up adoring by the new house.
(bestessaywritingservice.co)
The constant gardener is also called Ralph Fiennes - Sun Tzu