“Good software, like wine, takes time.” – Joel Spolsky 🍷
— Programming Wisdom (@CodeWisdom) August 18, 2017
These days, it is common to see software development and operations being combined into one practice. This has come to be known as DevOps. This is an interesting phenomenon that has come about as the business and engineering models of software has undergone changes over the years. Software has gone from having release cycles of 1-3 years to release cycles of less than 3 months.
One of the strengths of software has traditionally been that, because of iterative development and testing, software keeps getting better over time. Some of the older, entrenched softwares (such as GNU/Linux etc) are today of excellent quality because of having had thousand of people look at the code, modify it, test it and fix bugs. This aspect of iteratively improving software has not changed.
However, the mentality of having longer development cycles has given way to having short cycles. With all these changes happening, it seems natural that a new type of software practice – DevOps – has come about. This combines the duties of software development, automated testing and release.
The end result seems to be that customers can now rapidly receive new releases. It remains to be seen if the industry will become better off over the next few decades because of rapid development cycles. Now, bugs can be fixed and software delivered on time to customers quickly. But, in the long run, it seems that software will continue to take as long as before reaching solid quality.