Good SCM version control is more than just checking in and checking out files and code modules. Good SCM DevOps practices link the file versions to a change record in the change management system. This, in turn, links the working software to the business compliance and governance strategy. Good SCM practices, by way of tools, also track the version of each file involved in a build and, eventually, a release. Each time that change will be captured by the SCM system, even if one file changes in an existing release,. Full releases are typically tracked by baselines, and file version differences between baselines need to map back to the change system. Good DevOps practices are good software development practices. Agile only adapts these DevOps practices because they make software development releases less complex and more manageable.
Continuous deployment is based on the same idea as continuous integration. Only continuous deployment involves the deployment of the application and its component to a “production-like” environment. Because this process involves “smoking” out problems sooner, virtualized computing and cloud makes maintaining production-like environments easier.
Working in increments is another agile practice that one can readily adopt. In agile, the increments are called sprints. The benefit to working in increments is reasonably clear; they allow you to establish simple milestones in your work while you test and look for feedback. Working in increments provides a strategy for managing change, which means that the business and the team can discuss and understand technical “trade offs.” Teams can also run quality tests on each increment and find defects sooner when they are the least expensive to fix.
To me, working in increments is a natural way to work, and it is a great strategy for making projects less complicated. The approach is to break down complex tasks into simpler tasks. Teams can adopt this incremental strategy any time, and there does not need to be a big commitment to using a formal agile process and training. Working in increments also provides the team opportunities for “think breaks.”
Short breaks really do help with the design and problem-solving process. I am the anxious type and I have major difficulties leaving work-in-progress, but I have always had successful results when I take a think break, or “sleep on” a problem.
Agile has this concept of the daily standup, or daily Scrum meeting, and it is a great idea for communicating status and issues. These daily meetings have a very standardized process. However, teams can schedule regular brief updates without the formality, and they can gain similar benefits. It is possible to use a report or query from the current SCM or change management system to discuss the current status of the team’s work. This will also make the development process more transparent and it will serve to help with future planning.
Although I really am a fan of agile there is not always a need to fully adapt and make an investment in a formal methodology. As discussed in this article, there are some “good software development” practices that can be implement by your team without large investments in software development process experts. These good software development practices will make your development project less difficult, increase software quality, and also increase customer satisfaction. Industry best practices, including continuous integration, continuous deployment and DevOps, will help you achieve success on your own to become more agile.