It’s Software – And I Helped!
Filed Under Human Factors
Software is not Shake & Bake…
Projects are continually plagued with poor choices due to something I have just now coined – Shake and Bake Syndrome.
Every single individual involved in a project sincerely cares about the best possible outcome; however as a result of caring – we pollute the purity of designs and implementations by adding a small amount of our personal opinions to the project.
Here are a few common examples of this in action:
- Feature lists driven by a committee of people
- DBAs enforcing their application database schema
- Non-UI developers making UI
- Customers modifying professional designs
- New feature creep labeled as bugs by QA personal
- Developers assuming they understand the domain
So in short, here is what happens – everyone wants to help, everyone throws in their 1 big idea, the project becomes a mashup of disjoint ideas.
Seriously, what would a Frank Lloyd Wright house look like if he gave into the “design by committee” mentality? I guarantee that it would have not had the same artistic beauty.
Since we could (and have) debate whether software is a science or art, the question comes to mind – are the only pure pieces of software art those done by a single person? Or, is the single developer always doomed to imperfection since we can never master everything?
Regardless, I highly value my teammates because I know that they compliment me in my weaknesses; however, I am growing ever-so-more tired of the non-stakeholders adding in their 2 cents.
It’s time to make some Scrum chicken Shake & Bake…and no, you can’t help.
10 Responses to “It’s Software – And I Helped!”
An orchestra consists of many specialized professional people working together to create the most beautiful music possible. Some of the best conductors are also infamous for their strong opinion, or dictatorship if you like. A conductor must have intimate knowledge of all instruments. The conductor must ensure that there is harmony and consistency in the music. Harmony, coherence, consistency are all qualities we want in our software systems.
So, deducing by analogy, maybe it is a good idea to put a single strong super-expert leader in place that has the final say in decisions?
Ofcourse, this will in many cases not be the right way to go. Empowering the people at the workfloor is very effective in problem-solving and enables speed, innovation and creativity. Unlike the orchestra, most software systems are not well-defined and not repeatable. I think the problems you mention are not just a development method issue, but also a matter of choice. Yes, I do think you can overcome these problems by implementing a very rigid development method, procedures and organizational structure, but this might back-fire and seriously cripple your development speed and quality.
@Bas –
You have exactly hit the heart of my (implicit) dilemma.
CEOs (and I shouldn’t forget Architects) must have that “I am never wrong methodology” not only to survive, but also to push progress forward.
However, this is exactly contradicting to self organizing and empowering teams.
One thing is still solid – I hate having to act on others opinions that were never validated, warranted, or asked.
Great comment!
I disagree that CEOs and software architects must have the “I am never wrong mentality to survive”. That’s so 1990 Max. A great leader is one who knows their own limitations and is willing to let those around them make them a better leader. This means listening carefully and above all else, using proper judgment to grow, even if this means being wrong.
In your post you mention “we pollute the purity of designs and implementations by adding a small amount of our personal opinions”. I think what you’ really trying to say is that if we allow unauthorized contributors to poison the purity of our vision it may never come to true fruition. I don’t whole-heartedly agree with this though. It all comes down to the strength of your leadership. There should be an idea gathering/brainstorming phase, but once past, its time to stop accepting ideas.
My gut feeling is that this post is based on the comment you made latter “I am growing ever-so-more tired of the non-stakeholders adding in their 2 cents.” In reality this is a complete non issue with a strong leader and a clear boundary where and when it’s appropriate to be contributing ideas.
So this means suck it up and open your mouth Max!
@Justin –
I do not disagree with one word you say however…
– There are very few great leaders because most strong personalities are the ones that bubble to leadership positions…and this sucks.
– A wise man knows when to speak, and when to shut the hell up.
Nothing as of recent has tweaked my head into these thoughts, but as I grow older (and probably more cynical) I find the hypocrisy in that my is fuse getting shorter on this topic but I am starting to find the lack of will and reason to fight it….
When architects are wrong, it’s only after they’ve decided for themself they’re wrong. Ha ha.
No, seriously…could I stuff some ham and cheese inside the chicken?
Wow – really great quality comments today…really happy about that…
Steve Jobs has shown the world that the vision (and dictatorship) of a great leader can save an entire company, and build a new business. But only when the leader knows he’s right he has to be relentless about the implementation.
But even great leaders can be unsure about the outcome of a project. Then it’s best to allow for self-organization among team members.
[…] It’s Software – And I Helped! – Max Pool Max has some cool brainwaves (or is it just that I could never write sentences like these), and is happy with the ensuing reader comments ‘ we pollute the purity of designs and implementations by adding a small amount of our personal opinions to the project ‘ […]
The question becomes how do we use Scrum and Agile if we can’t decide by committee? I challenge the idea that a professional UI designer knows better than the customer what the design should look like (unless by professional design you meant architecture/class outline). Even if we go the route of putting one person in charge of deciding things as Bas said, you still have someone polluting the idea.
I might be naive in thinking this, but if you can’t explain to someone why you are building something in this way, perhaps you do not deserve a say in the way it should be built. If a DBA disagrees with how you will be accessing data and you don’t have a good architecture reason to point to, why do you need to have it done your way? This only holds true if someone is disagreeing with you for a reason other than, “I don’t know what you are doing” or “We never do it that way”.
Seriously, what would a Frank Lloyd Wright house look like if he gave into the “design by committee” mentality? I guarantee that it would have not had the same artistic beauty.
Maybe it would look like this:
http://en.wikipedia.org/wiki/Friedensreich_Hundertwasser