Submitted
By Alexander Shestakov
To stand the test of time, software products must be built with changes in mind.
Continuous Integration (CI) is a methodology of organizing the software development process in which every change of the source code from the shared repository, as well as the behavior of the software system as a whole with the aforementioned changes, are checked for validity.
CI helps detect problems and issues early in development, saving time and money by locating bugs and fixing them early in the process. In addition, because each commit is verified by an automated build, it is possible to see if the code works and share results with the client at any moment, shortening the feedback loop.
Why Does The Joel Test Still Work?
The famous Joel Test is helpful when rating the quality of a software team in a very short period of time—something that would otherwise take days, if not months. I believe the first three questions are the most important, and should be asked and answered every day: Do you use source control? Can you make a build in one step? Do you make daily builds?
These three essential questions help teams use CI naturally and allow projects to evolve with the changing circumstances in the most organic manner possible. All IT projects that use CI find it much easier to make builds, monitor quality indicators, check the quantity of mistakes, and measure test coverage.
The Law of Cost Inversion in IT
In classical engineering, the process of designing is cheap, and building is expensive. In IT, the structure of costs is inverted; designing is the most expensive part of the process, and building is the cheapest. Why is that? In the modern world, hardware is worth next to nothing compared to the high expenses of good developers and their time. For that reason, it is important remember that classic engineering methods cannot be used in IT without modifications.
Software development teams need to be aware of existing and future technical issues as soon as possible. The sooner a bug is detected, the cheaper it is to fix.
Although setting up CI is a one-time activity that is neither costly nor complicated, many companies stay away from CI in an effort to lower costs. However, they end up losing money in the long run. The time that goes into setting up CI is well worth spending, since the efforts will be monetized in the near-term thanks to a shorter feedback loop. Because clients of IT companies want working results faster than before, and it is not always possible to predict when they will be available to check on the product, CI is the only methodology that allows developers to always have a working product to demonstrate.
Most methodologies presuppose iterations once a month or week. CI forces developers to make iterations daily—a popular trend that significantly shortens time to market. If you use CI and automated rollout into production, you can even do it once every few minutes, if necessary. If the software product is large and complex, it is easier to experiment and add features that you aren’t sure about to the interim build and take it back for a different build if it doesn’t work.
Transparency Makes Clients Happy
Clients like to be more involved in today’s development process. CI practices allow clients to get detailed reports on how the product works without manager involvement. Because the process is automated, it is possible to see bugs and errors in the source code at any given time without backtracking. If the code works as planned, a build can be assembled on the spot and sent to the client.
CI adoption also means more transparency for managers who now have instant access to vital information such as which employee was responsible for detecting a bug, when it was discovered, and how long it took to fix it.
All of these advantages allow teams to organize work with the client in a way that grants them access to important information on the state of the team and the project without having to involve the manager in the process.
Convenience for Developers
Developers benefit from CI in various ways. First of all, with the help of CI, it is possible to automate the rollout of products into production.
Second, CI helps increase the developer’s level of confidence. Whenever a change in the source code is made, the developer knows whether any accidental errors were introduced.
Third, CI helps to enforce code style guidelines on all projects, which is useful for teams with ‘not-so-experienced’ members who still need to learn to work together and speak a common language.
With the help of CI, developers can finally be the creative gods they have always wanted to be, and machines can run their automated processes to safe cushion their experiments. For these processes to work, the source code needs to be self testing and CI must be properly set up.
A Few Final Words in Defense of CI
Time spent on setting up CI is well worth it. By catching and validating fixes of bugs early, CI helps save time and money, shortens the feedback loop, reduces risks significantly, increases visibility and transparency, enhances communication, and automatically releases working software into production. Faster time to market also means software can be used by the target audience early on and more easily adapt to user needs and changing business requirements. In a world where IT teams compete for even faster, cheaper ways to make software, CI is a proven methodology that delivers working results that are appreciated not only by clients, but also managers and developers equally. SW
Alexander Shestakov is a software engineer with Itransition. He graduated from Belarusian State University of Informatics and Radioelectronics with honors, with a degree of Engineer of Radio Electronics. His areas of interest are Ruby, Rails, Sinatra, Open Source, TDD and BDD.
Aug2015, Software Magazine