My day-to-day life in software management involves interacting with technical and non-technical types, which places certain demands on me. Part of my challenge is to explain software development to non-technical people in the simplest way possible.
I have found that this is both a challenge and a useful exercise. Distilling a complex activity into its simplest form so that the explanation has meaning and relevance to everyone concerned is not particularly easy! But it does have advantages. It forces you to think about what is truly important, to examine what those essential truths that are core to productive software development, regardless of the software development life cycle model that is being used.
In doing so, I find that I am able to evaluate programmers and coach them effectively. The same applies for development teams as well; you are able to look for those critical interaction points to help teams get into the “flow.” It also helps you to focus on the metrics are the most important – not to use as a weapon at review time, but to coach and guide people and teams in improving.
Since I’ve been writing the blog for several months now, I thought this would be a great time to reflect on my thinking. And come up with something to write about.
Interestingly enough, I came across an informative and entertaining software development writer in my Internet travels: Jurgen Appelo, Chief Information Officer at ISM eCompany who is the author of the blog NOOP.NL. I gravitated towards this blog because I enjoyed Jurgen’s writing style and because he is a fellow manager writing about software development, something that not particularly common in cyberspace.
Jurgen posted a blog entry in 2008 that states his objective: his quest for the Theory of Everything for Software Development. (His post inspired me to shamelessly steal – I mean incorporate – his title for this blog post.)
In his post, Jurgen states that he doesn’t care about any specific methodology. He cares about how they differ from one another, and that he wants to broaden his mind to understand how all solutions fit together in one big model.
I couldn’t agree more! Agile, RUP, Waterfall, Spiral – they’re a specific means to an end. They each define a unique approach towards achieving the end result of building working software that delights the customer. The question of the day is this: Is there a theory of everything for software development?
I think that I’ve got one. I’ll share it in a few days once I’m satisfied with how I’m explaining it.