Thursday, May 5, 2011

Programming is not Gardening.

It's nice to see that Microsoft managers have determined that software engineers are actually gardeners. At least in MSFT, this might be true, given how code is seen as an organic thing that you can wish into fruition. At MSFT, I'm sure there are a LOT of managers who'd think this is accurate, insightful, spiritual, and holds any meaning whatsoever.

A rose, however you code it, still smells as sweet. And bullshit, no matter how you name it, still smells like bullshit. Name it manure, fertilizer, soil additives, or whatever you like. That doesn't change what it IS.

Code is code. It is the building of code that creates software, and the bridge analogy is severely flawed, and by that I mean it's flawed from the roots up, or utterly incorrect. Only a Microsoft executive or arts major could screw up science so badly.

Software Engineering *IS* engineering, and nothing less. Many types of software must be vigorously scrutinized, tested, retested, proven to work under stress, and then certified by official agencies. There are DoD, IEEE, Union, Legal, International, and other laws that software must adhere to. There are thousands of standards. There are software testers and entire facilities dedicated to attempting to 'crack' software. All this to prove it is worthy.

Software is generally tested, and universally scrutinized, to a much greater degree than any bridge. A bridge needs to pass only a handful of tests, and sometimes no more than one. If the bridge is on private property and does not conduct interstate transit, it need only be signed off by an architect. That's it. A public bridge is signed off in a few more steps, from design, to a model, and then in iterations through the construction phase. Once completed, a bridge is not ever scrutinized again in quite the same way, unless it is being considered for demolition following aging or earthquake events.

Software is actually tested thousands of times during the creation phase, and then after it is released into an "alpha" status is then peer reviewed and demonstrated. If it passes the alpha stage it is then beta, or issued for limited release and further testing. After tens of thousands of examinations, once all critical bugs and functional bugs are corrected, it is finally 1.0. But, that isn't the end for software.

There's 2.0, 3.0, all the way up to 10.0, a state that few software rarely achieve, as by this time they are generally quite ancient and prone to be replaced with faster and newer code. Software is also much more rapidly surpassed and redesigned than a bridge, but does not lack in quality, mathematics, nor in certifications.

To compare software engineering to mechanical engineering is an insult to software engineers who work much harder, over longer hours, with far more stress than bridge builders. Structures are never started until all the plans are ready, the money is all paid down, and then they usually take longer than planned and go over budget. Software is almost never allowed to do any of this. Software starts AS a plan, constantly gets redesigned, and has to change to accommodate new desires along development. A bridge can't be altered halfway through!

Software generally is paid along as development continues, each step requiring performance to continue, and constant communication with all vested parties is the norm. As a software engineer I have to be an author, janitor, researcher, developer, mechanical engineer, physicist, designer, project manager, AND programmer.

So, you go plant your code seed and water it. That might be how some companies write code, but no quality software will come of it. Office is on version ten now and still has problems that existed back in the first release. That's what happens when you treat your employees like cheap labor.

ANY business that attempts to label Software Engineers as gardeners will not see my resume, and I will not work for them. I would expect that any SE would balk at taking a job where they will be treated as though they are cheap replaceable labor. I have a Masters degree. Your gardener might have finished high school.

Programming is about as comparable to gardening as rocks are to water. Only an MBA could fail to understand that.

No comments: