Cybernetics and Continuous Improvement
Cybernetics is the science of communications and automatic control systems in both machines and living things. If feedback is implemented into the application of cybernetics, the control systems can bring about significant improvement in areas of architectural non-functional attributes like consistent reliability, easy scalability, superior performance, top quality, risk aversion, and overall security. Automatic control systems should be able to provide some form of feedback so that processes can be improved and/or inputs adjusted causing change in the desired output of the system.
The first published use of the words continuous integration, I know of, were written in a book, “Object Oriented Analysis and Design” by Grady Booch, Scientist IBM. This concept was introduced to me through IT training in the late 1980’s. Each developer would check his or her work in periodically during the day and each time code was committed into RCS/CVS, a build was executed. Feedback was actually in the form of two audio files. A woo-hoo sound would be emitted from our build server upon a successful build or the sound of someone vomiting when the build broke. To add to the negative audio feedback, our build server would email all developers to let us know that the build needed to be fixed. At that time, we did not have the CI/CD tools we have today, but we understood the value of cybernetics and continuous feedback. And, our code defined quality. This code was used in the building of nuclear submarines for the United States NAVY.
The process of automating the SDLC, continual feedback, and just-in-time notification is exquisite. Psychology plays a big part in creating a sense of urgency and the community code is always buildable. Even if an offending developer can’t fix the common repo with his new code. The commits can be rolled back and that code base is now pristine again. Mark Twain understood the concept in his day. He once said, “Continuous improvement is better than delayed perfection.”