Skip to main content

The Slider of Process and Innovation

Generalizations are all good.

While I'm talking about that, let me just mention that the point of every software team is the same: build something great. A piece of software that fulfils its promises, is easy to use and learn, and adds real value to any human who wants to achieve whatever goals are incorporated in the system. That's great software. That's what we're all trying to do.

The Google search engine is an example of great software. I'm not a player, but I bet World of Warcraft is great software. The .NET framework is great software. There are beacons of design that inspire every software team, in every field.

When I first started managing software teams, I was a process nut. I just assumed that the best way to get great software was to join the process dots.

Back then, it was all about the planning. Plan the planning phase, and then plan out how you were going to build it, in painstaking detail, from the very beginning. Then you build it all (exactly as you planned it), test it all (exactly as you planned it), fix the bugs (but there wouldn't be many, because you had planned everything so well) and as long as everybody did everything precisely as you'd planned it, then perfect, delightful software would just fall into the customers joyous, enraptured hands.

At first I blamed the team for not following the plan.

Or me, for not enforcing the following of the plan.

Slowly, I began to realize that you could take the best, most clearly articulated plan, and still not ship on time, or ship anything good.

That planning wasn't enough.

This made me sad. A good plan should always win, right? It must be the people that are at fault. Everyone knows that people are the surest way to wreck any fine process.

So I turned to the dark art of winning hearts - of convincing people that the plan was good. Of finding out what it was that motivated people to do the best they can, with the devious plan of getting them to stick to my plan.

"This is a good plan. You should follow it. I will buy you a car if you follow it."

I couldn't afford to convince people. Then I realized that people only liked plans that they felt they had contributed to. That the team dynamics, and the people in the team affected the outcome even more than the plan.

And then I realized something that struck me at the time as really strange.

A loosely federated, appropriately sized team of talented people could produce great software without following the plan. That's what all this agile hooplah was about.

Because they loved it. They created it. They innovated. They made it better, once they'd made it once already. They would make late cycle changes that give risk managers heart attacks, and make the product twice as good. They felt like they owned the process that had let to its inception, and they were prepared to take responsibility for the project's success.

I'd already discovered the hard way, that a perfect process didn't guarantee the kind of amazing software I was looking for.

This morning, while trying to juggle the schedule, it dawned on me that this relationship is best illustrated with the following slider:



It's all about where you set the slider. Are you willing to enforce more process, in order to increase predictability? It will come at the expense of innovation. Want to increase innovation? Release the process constraints to increase flexibility.

Too far to the left and your biggest risk is boring software, that fails to inspire.

Too far to the right and your biggest risk is no software at all.

Attempting to move the slider in the middle of a development cycle is nearly impossible, and always extremely dangerous. At project inception, that's when you need to set the slider, and you need to do it with universal agreement from your team.

Generally speaking, of course...

Comments

Popular posts from this blog

Easter at Blackhead

Camping out on the headland, miles from anywhere. Big swell, off-shore winds, clear crisp nights and smoke from the wood fire. Sometimes it's so rewarding to get out from under the pressure of your life and just be a family of humans.

How to rename an XML Node in C#

This was driving me crazy - here's an easy cut and paste solution to not being able to use the DOM to rename a node for lazy developers like me: public static XmlNode RenameNode (XmlNode node, string namespaceURI,string qualifiedName) { if (node.NodeType == XmlNodeType.Element) { XmlElement oldElement = (XmlElement) node; XmlElement newElement = node.OwnerDocument.CreateElement(qualifiedName, namespaceURI); while (oldElement.HasAttributes) { newElement.SetAttributeNode(oldElement.RemoveAttributeNode(oldElement.Attributes[0])); } while (oldElement.HasChildNodes) { newElement.AppendChild(oldElement.FirstChild); } if (oldElement.ParentNode != null) { oldElement.ParentNode.ReplaceChild(newElement, oldElement); } return newElement; } else { return null; } ...

Democracy in Action...

I have to vote in the US Senate Election Tomorrow. Okay, I don't have to vote, but being an Australian American, voting is something we do. Australia has compulsory voting, which I am overwhelmingly supportive of. People often assume that the point of compulsory voting is to somehow educate people about politics - to force them to have an opinion. The reality has nothing to do with voters, and everything to do with ensuring good governance - By forcing politicians to care about every voter, rather than just the ones who can be bothered to go down to the poll both and vote, it means that politicians are consequently forced to address the needs of all the citizens in the country. Under a non compulsory voting system, it's mainly the wealthy and educated who vote. I was a little shocked to find out that part of the aim of the campaign advertisements that have been confusing me for the last month on TV is not to encourage voters to vote for one candidate or another, but to discou...