Although his life came to a tragic end I have a great admiration for Ignaz Semmelweis. You’ve probably never heard of him but most of us owe our lives to him. He was the Australian physician who helped popularize sterilization practices that surgeons use today.
I can’t even imagine how he must have been ridiculed by his fellow colleagues and the challenges he faced trying to tell the most esteemed doctors and surgeons of the day that they had to wash their hands before operating on their patients.
This was only in the mid-1800s but it seems like ages ago. Medical practices did not take into account microorganisms that could cause disease. The idea that invisible germs could be the cause of disease was considered somewhat superstitious because it was not very different from the popular belief that disease was caused by some evil spirits that doctors were trying to refute. Both had invisible causes and they must’ve seemed very similar to most people back then.
To think that a practice as trivial as washing your hands before going into surgery could make the difference between life and death for your patience was pretty far-fetched in the mind of the 18th-century physician. Of course it’s not so much the practice of washing your hands but the knowledge behind the practice that allows us to use the practice to get extraordinary results. This is usually the case, practices are easy, even trivial, but the reason they’re amazingly powerful has to do with the ideas behind the practices, the theories that embody some level of truth.
We must know the practices but just knowing them without knowing why we use them is not enough; we also must understand the principles behind the practices. If we understand the “why” we are more apt to do the “what” consistently and correctly.
The practices for software development that I advocate are simple, even trivial, like a doctor washing their hands before surgery but the benefits are profound. It’s not enough to know what the practices are. I can tell you what they are right now but it won’t affect what you do when you build software. In order for that to happen you have to understand the why. Why something is important and what we’re trying to accomplish are oftentimes different but they support each other.
What is it in our field that we’re trying to accomplish? I think our goal should be to write maintainable software. The cost of software is so high that we must find ways to drive the cost of ownership down. To do this we have to make software easier to maintain and extend by doing specific things when we write it.
These are the principles and practices that I teach. My Software Developer Essentials training focuses on 18 specific things that most developers are not taking advantage of such as qualities, principles, disciplines, guidance and practices. Of course there are many more things to be aware of that we don’t have time to touch on in a 3-day class but just these things are enough to help get most everyone on the same page and moving forward.
These skills for writing maintainable code along with the skills for re-factoring legacy code into something more understandable and maintainable will become the most sought-after skills for software developers during the next 10 years.