Continuous integration lets us automate the software validation process so we can confidently make last-minute changes and get instant feedback when we’re introducing defects into the system.
You want to create a build system that’s so easy to use that it’s invisible to the developers on the team. It should be able to be invoked with a single click and should automatically build, test, and validate new code that’s added to the system. Teams that are first adopting continuous integration sometimes ask …
Continue reading “Integrate Frequently”
Read MoreI’ve come across a few teams in my career who have unstable build and test environments. When they develop a feature and test it on their test servers everything’s fine, but as soon as they move the code into production bugs that didn’t show up before begin to manifest. I had one client whose system …
Continue reading “Version Everything!”
Read MoreWe want to make invoking the build as simple as possible. So simple in fact, that it becomes a non-event that’s nearly invisible to us. The build should be accessible from the desktop or in the IDE. It should require only a single click to invoke. A local build should be invoked first, compiling only those …
Continue reading “One-Click Builds”
Read MoreFor me, software agility is best summed up in the first principle from the Agile Manifesto, which talks about continuous delivery of valuable software. Agile software development is supposed to be a flow that doesn’t conform to prescribed phases. Instead, it breaks projects down into features and tasks. We build the features that are most …
Continue reading “The Heartbeat of a Project”
Read MoreDifferent people have different ideas of what it means to be Agile. For some, Agile means doing standup meetings and two-week iterations. For others,it means doing all the practices from Scrum, Lean, and Extreme Programming. For me, what it means to be Agile comes right out of the Agile Manifesto, which says: “Our highest priority …
Continue reading “Automate Deployment”
Read MoreContinuous delivery is the single most important step in agility. Regardless of whether you do big releases or not you should always build software incrementally so it is always in a releasable state. Why? Because the only way to know if code will work in a system is to test it in the system. This …
Continue reading “Seven Strategies for Continuous Delivery”
Read MoreThe first step in achieving agility and technical excellence is to set up an infrastructure to support it. The infrastructure we will discuss here, an automated build server, is one of the most important aspects of agility because we can only consider a story as “done” when it is fully integrated into the build. Here …
Continue reading “Seven Strategies for Agile Infrastructure”
Read MoreA story, use case, or requirement is not done until it is integrated into the rest of the build system. “Well, it works on my machine,” is not a statement we want to hear on an Agile project. A story that is not integrated into the build is not complete and worth zero story points …
Continue reading “Integrate Early and Often”
Read More