Somebody wants us to be better than our competitor instead of being the best. That made me wonder.
Somebody recently confused Code Quality and Software Quality. That made me mad.
Somebody said software developers should get out of fairyland and face the real world. That made me sick.
Famous people say software developers are most commonly bad at what they do. That trips me over the edge every time.
Guys, bad software is not the software developers fault. (Bad code is.)
Bad software is the fault of the people paying for it.
Don’t like it? Don’t pay it. Uninstall. Undeploy. Unbuy. Unmanage. Get something else. It’s easy as that.
Don’t start using software in the first place. If you can’t articulate your needs and requirements, don’t buy software to solve them.
Bad software is the fault of the software development organization not understanding the customers problem and not providing an inexpensive, viable, desirable, innovative and extensible solution to it.
Bad software is the fault of the software development management not following through with sales, marketing, architecture, development, test and support, but establishing unrealistic time boxes and unreasonable objectives.
Bad software is the fault of the software architect not taking the responsibility for it.
Bad software is the fault of the software sales and marketing not working with the customers and appropriate research organizations on identifying the primary needs and requirements, not generating feasible and innovative solution ideas and non-functional requirements, and not imagining that there are human beings in front of the screen.
Do we even know who the customer is, anyway? The girl using the client front-end rather wanting to go shopping? The poor chap in the server room desperately trying to maintain system integrity? The overworked IT manager? The parsimonious finance guys? The special-interest influenced government creating new laws, regulations and other bureaucrazy compliance obstacles?
How in the world should a software developer working in a larger organization be able to balance the needs of those persons in a completely orthogonal field just by generating code for ever-changing runtime environments while maintaining sanity and having a fulfilled work-life-balance?
If you’ve figured this out, let us know how to fix the break in the time-space-continuum.
Hardware developers have it easier.
Matter doesn’t change that often. The laws of physics and chemistry are quite stable and are not too much influenced by politics or psychology.
How often is there a fundamentally new technology, like say nano-technology, and how much time has it to penetrate the industry? How much time would you grant a mechanical engineer to go from zero to full-speed on such a change?
The benefits of a hardware improvement are easy to see and understand. Your new pump pumps more smoothly and is longer lasting and needs much less maintenance? Congratulations! By the way, do you care that I just refactored 42 class definitions so that they are easier to change when we need to?
Hardware can much more often be built bottom-up than software. But most of today’s software is not top-down, at least not in the way it is used.
Abuse is a phenomena much more likely to happen with software than with hardware. If you use a hammer to comb your hair, it’s gonna hurt. Why do you think using Excel for calculating payroll doesn’t?
Hardware is easier to make stronger.
If it breaks, send someone to weld another mount to it or use stronger material for the next charge.
No matter how hard you try, software can’t be made unbreakable. Really. Trying to fix software quality by sending software developers to the customer is like sending a pig to a vegan kitchen to learn taste.
Honestly, the software chasm is vast, I’m having to learn. I want to write software. You don’t want to use it.
So don’t blame the developers for bad software quality. Blame yourself.