Time for change
We aren’t Software Engineers. We develop, we design, we gather requirements, we deliver, but we don’t engineer. As I describe in Call To Arms, its time for us to get real, to move our industry toward a real Engineering discipline. We cannot continue along our current troubled, unsustainable path. We are all trying to move forward, but without a clear direction and strategy, we will continue to have a bloody revolution.
Evolution, not revolution
Even though I believe our movement toward Engineering can be far quicker than other Engineering disciplines like Civil Engineering, which took hundreds of years, our movement should be one of evolution, not revolution. Revolution is our current mindset, and the cause of much pain, such as the famous blue screen of death, or Obamacares issues during roll out. There are pockets of so-called Software Engineers who truly are creating great products, and Software Craftsman who truly care about delivering what the customer wants. This is why I believe we should be pushing for a natural evolution of Software Engineering, where we move our industry one person and one company at a time.
MicroEvolution to MacroEvolution
The relationship between microevolution and macroevoluution is an interesting one. As Darwin taught us, evolution boils down to the survival of the fittest. It gets incredibly interesting when you start looking at the evolutionary process at multiple scales. At the micro level, small mutations, such as a mutation that creates a slightly longer neck, creates a slight advantage to an organism. Over time, that small change might get compounded, creating a longer neck, and eventually driving these long-necked organisms to success (potentially at the cost of their short-necked ancestors).
Many micro-changes following this same pattern drive organisms over time to change, sometimes quite dramatically. Looking at the sum of these small changes over a long period of time, in biology, this lead to millions of species of organisms with a complex ancestral tree.
This is what needs to happen with our industry, except instead of nature being the patient driver, we should encourage and accelerate this evolution through education, networking, mentorship, and other processes of learning and sharing. In fact, evolution already happens. In many ways, capitalism is similar to evolution. Evolution can be sloppy though, and capitalism is driven more from greed than success. This is why it is important for us to take control of the driving factors of the evolution of our industry.
If we can set the proper direction at the micro-level, by providing guidance to individuals across the industry, we can take advantage of the force of evolution, reaping the benefits of many different teams experimenting with how to drive our industry toward true Engineering. Many good practices and many bad practices will arise, great practices will combine with others to become even better, and the strongest will survive.
I believe we will experience this evolution in Software Engineering in the next 20 years. We really don’t have a choice, as technology is ever-increasingly part of our lives. I am excited to be part of this evolution!
In my next blog, I will discuss who is driving this evolution, and what role each of us can have, no matter if we’re at top Universities or smaller Universities, at large companies like Google and Amazon or small companies with tiny teams.