September 8, 2010

...Learn TDD with Codemanship

People Who Make Software Happen the name I think I'm now going to start using instead of "software developer" or "programmer".

After lively debate on Twitface about why coding may or may not be important, or self-indulgent, or irrelevant, or Belgian, or whatever, I think I need to choose may words more carefully to make myself understood.

It's entirely clear in my mind. If software has to be created, then in order for that to happen you need - above all else - people who are skilled at making software happen.

If we wanted to know which parts of a car we really, really need in order to go places in it, we might remove components one by one until it stops working. Maybe we remove the seats. Will it still go places without seats? Yes. So we remove the hubcaps. Does it still go? Sure it does. How about the radio? No problem, wheels keep turning. How about we take out the engine? Oh, okay. It needs an engine. What about the wheels? Yeah, we probably need some wheels to go places. And the steering? Well, it will go places without steering, but you might not like the places it goes. But it still goes. Will it go with a steering wheel but no engine or no wheels? Nope. It's simple physics. Something has to convert stored energy (from petrol or a battery or a rubber band like in my old Volkswagon) into mechanical energy to turn the wheels. And we need the wheels to apply this mechnical energy to the road so the road can push back and propel the car forward in a style of which I'm sure Newton would approve.

Same is true of software development. You can remove the project manager and software can still happen. You can remove the business analyst and software will still happen. You can remove the testers and software will still happen. But if you remove the people who write the code, no software will happen. End of.

Now, you may not like the software that happens when there's not the equivalent of steering and brakes and leather bucket seats and chrome hubcaps on your team, but the physics is simple - without people who can make software happen, software does not happen at all.

And you may say "better to go nowhere than go just anywhere", but the fact remains - if you want to go somewhere, your car will need an engine and wheels. They are the fundamental components required for operation of a car.

And people who make software happen are the fundamental components of a software development team. You can muddle by without anything else. Indeed, many such teams do far better than "muddle by".

So I'm strongly favouring the term "people who make software happen" to serve as a reminder to us all what a software development team really needs.

Posted 10 years, 7 months ago on September 8, 2010