Do people really matter? If you have a strong enough process in place, does it make any real difference who you have execute it? Couldn’t you just invest a lot of time defining and documenting a structured and disciplined, software engineering process, then hire cheap labor to follow it?
Many companies in various retail service industries do exactly that.
- Fast food chains like MacDonald’s and Burger King
- Big retailers like Walmart and Target
- Hospitality providers like Hilton and Sheraton
There’s a variation that goes even further. Major product companies go to great lengths to train independent service providers in the installation, maintenance and repair of their products. This applies to many kinds of products including automobiles, televisions, computers, lawn mowers, furnaces, refrigerators, medical equipment and many other gadgets.
Why not apply this approach to software engineering?
The standard answer is that software engineering includes an element of art. It’s not just about building something. The software needs to look good and behave well.
That rationale may sound good but the situation is more complex than artful engineering. Many professions include an artistic element. Plumbers and electricians often take great care in making their work look great.
Art aside, the software profession really is different — not only when compared to other diverse professions but also when compared to other engineering fields like electrical or mechanical engineering.
For one thing, software development is often a trial-and-error process. There is little risk or harm in trying something. If it works, leave it alone. If it doesn’t, try something else. If you’re not sure, send it to QA and let them deal with it.
This is quite different from many other professions where a mistake can be costly and second tries are hard to get.
Software is also a grass-roots movement. There is no single standards body or certifying agency. There are many. There is no preferred approach to managing software development, building software systems or writing code. There are many.
This makes it easy for almost anyone to give software engineering a try. It’s a low cost profession to enter and you can train yourself on your own time at home.
Software engineering is chaotic.
These characteristics make managing the software engineering process difficult. That’s why we have dozens of approaches to managing software projects and building software systems. No wonder the whole industry appears to be in chaos at times.
There is a powerful upside to the apparent chaos, however. It brings rapid change and fosters innovation. Yes, at times things move too fast and problems result but the industry is still learning.
Software engineering has it’s roots in the 1940’s but didn’t really come into it’s own as a profession until the 1960’s. That makes it very young — even electrical engineering can be traced back to the 1800’s.
Greater discipline will arrive in time. Until then, find an approach what works for you and keep making it better by using short cycle times, frequent checkpoints, and regular retrospectives.