In the past few months I’m having some recurring thoughts and questions1. What follows is mostly an attempt to force myself to structure these thougts and reach out to others that may share some insights on the subject. In other words: “warning: incoming rant.”
The subject of these questions is the current state of our software (I hesitate to say: Software Engineering, but I suppose it is implied). The general theme is: “why is the quality of our software so low?”. Some of the questions are:
- Why is software generally so slow?
- Why does software have so many bugs?
- Why can my computer be hacked? Why do virusses exist?
- Why do I need to restart my computer for this update? Why do updates exist at all?
- Why is software so complex?
Assuming the premises are correct (software is generally slow, has many bugs etcetera), the consequences of not answering the questions are quite serious. A few examples:
- Unstable and buggy software makes its users feel powerless.
- Bad performance means more computers running, which means a greater contribution to the greenhouse effect.
- The lack of a workable security model has opened the way for mass surveillance.
- Our lives are increasingly dependent on software. This means the above consequences are increasingly severe.
Some observations and hints towards the answers:
- The answers to the questions may very well be related.
- I have approximately 10 years of professional experience, yet I do not have the answers to the above questions ready.
- I am not alone. The top Google results for “why does software have bugs” are spammy sites. Not serious people seriously answering a serious problem.
A few hints as to the answers:
- I do not have a full answer (yet?), but the title of this blog hints at some ideas.
- Software Engineering as a field is very forgetful of its past.
- We are a young field. There’s a lot of space for cowboys in the west, and in a gold rush it’s often more important who’s first than who’s right.
- A lack of ambition keeps us from asking the important questions.
I hope to expand on the above in more detail shortly.