Software development – don’t react to failure by putting in more process and control

Some thoughts from Heisenberg Developers that I really enjoyed reading.

Software development is a complex system of multiple poorly understood feedback loops and interactions. It is an organic process of trial and error, false starts, experiments and monumental cock-ups. Numerous studies have shown that effective creative work is best done by motivated autonomous experts. As developers we need to be free to try things out, see how they evolve, back away from bad decisions, maybe try several different things before we find one that works.

If you ask me how long a feature is going to take, my honest answer is that I really have no idea. I may have a ball-park idea, but there’s a long-tail of lower-probability possibilities, that mean that I could easily be out by a factor of 10. What about the feature itself? Is it really such a good idea? I’m not just the implementer of this software, I’m a stake holder too. What if there’s a better way to address this business requirement? What if we discover a better way half way through the estimated time? What if I suddenly stumble on a technology or a technique that could make a big difference to the business?

As soon as you ask a developer to tell you exactly what he’s going to do over the next 8 days (or worse weeks or months), you kill much of the creativity and serendipity.

The more finely grained the tasks, the more you kill autonomy and creativity.

Not all developers dislike micromanagement. Some are more attracted to the paycheck than the art.
Finely grained management is a recipe for “talent evaporation”.

Advertisements

Author: Michal Zuber

Full stack developer, biker and rollerblader. Owner and developer at https://nevilleweb.sk/ Co-founded http://neville.sk/ Blog at https://michalzuber.wordpress.com/

One thought on “Software development – don’t react to failure by putting in more process and control”

  1. Excellent quotes! “It’s going to take as long as it takes” is something I like to say when dealing with new work. We should be able to have some idea of the scale of the task, but we _always_ encounter “unknowns” along the way and if you have a good and trustworthy team working on it, then either they lack training or there literally isn’t any way they can do it faster. Software deadlines I think not only constrain developers but they encourage rushed decisions that will backfire down the line.

    Thanks for the post!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s