Doing continuous integration right isn't simply about the tools you use. In fact, when talking to some of the industry's foremost experts on application lifecycle management (ALM), tools are typically the last thing they want to talk about. Jim Holmes, director of engineering for Telerik in Dayton, Ohio, wouldn't even talk about them when asked about producing high-quality software, which is rather funny, given that his employer is a well-known tools vendor. "Honest to God, it is much more important to have the appropriate culture before you ever consider anything about the technology or the tools."
It's a sentiment that was iterated by Michael Hüttermann, author of Agile ALM: Lightweight Tools and Agile Strategies, when asked a similar question: "Even more important than tools is that a basic mindset should exist," Hüttermann said. "Above all, the mindset -- the general approach of teamwork and Agile approaches -- must be in place. It's more important to have those types of aspects in companies and projects."
The pro-tooling anti-pattern
ALM is about people, processes and tools working together to create high-quality software, and one of the most common pitfalls organizations fall into is thinking a certain suite of tools or a certain software product will allow them to automatically be doing Agile, continuous integration (CI) or Kanban correctly. This self-defeating practice is so common that it's considered an anti-pattern in the industry, and seasoned ALM professionals are quick to warn against it.
The irony is that while many software professionals are quick to postpone the discussion about various ALM tools, it's actually the emergence of highly effective CI and continuous deployment tools that have encouraged many organizations to shift toward an Agile ALM methodology. Over the past three or four years, the CI market has seen some of the most innovative and exciting new tools emerge from the open source community, making the adoption of CI tools affordable. Plus, they're supported freely by the community and through pay-as-you-go offerings from vendors.
At the heart of the CI tools market is an open source software product named Jenkins, a self-described "extendable open source continuous integration server." "Jenkins is a build-and-delivery hub," Hüttermann said.Jenkins is masterful at building software, monitoring jobs running on remote machines, and running test suites to make sure the latest piece of code doesn't break the build. But Jenkins has done more than simply provide the industry with an open source tool that performs builds. Because it can support continuous development and deployment -- pushing tested software right out to the production environment -- Jenkins CI has acted like a wrecking ball, breaking down walls that have historically divided development and operations teams. "Jenkins is a neat example of a software-based Swiss Army knife that can assist both development and operations teams," Hüttermann said.
The great thing about organizations that start using a CI tool like Jenkins is not that it tends to merge development and operations into a hybrid department affectionately known as DevOps, but it's the fact that as development, testing and building become automated, software professionals start looking for more and more opportunities to automate -- going beyond traditional standards. "Automate as much as you possibly can," said John Smart, author of Jenkins: The Definitive Guide. "You have to automate deployment. You can't have a big chunk of manual processes in deployment that are run by hand, or tasks that you have to ask your [systems administrator] to do." Manual processes result in chaos if the operations professional in charge leaves without documenting them properly. When tasks are automated, those types of concerns disappear.
Every organization recognizes the benefits associated with automating key operational processes, but before CI tools like Jenkins came on the scene, automation was often done through a combination of home-grown build files. Jenkins, along with its various plug-ins, has greatly simplified and standardized the development and deployment process, putting automation and CI within reach for everyone. That being said, doing Agile and ALM correctly means more than just automating builds and continuously integrating code. With the right methodologies in use, the right culture of quality consciousness and collaborative processes in place, using CI tools such as Jenkins properly can be the final piece of the puzzle -- helping organizations produce the highest-quality software imaginable.
Find out more info here on continuous delivery and continuous integration.
Learn how to simplify your DevOps tooling