Agile Delivery: Lessons Learned from the Trenches
Over the past five years, BridgePhase has employed Agile concepts on several software development projects. Agile development provides the framework for customers and integrators to work closely together and as efficiently as possible. This paper will take a deeper look into some of these concepts and describe how BridgePhase has adopted them into our recommended methodology for Agile development projects.
Continuous Integration – Throughout the development lifecycle, there are opportunities to reduce inefficiencies, reduce cost, reduce time to market and improve the overall product. One technique that contributes to all of these areas in the concept of continuous integration. With CI, used in the Agile state, as soon as development changes are made they are quickly and seamlessly deployed to an environment available to the entire team. This is accomplished by utilizing automated build and deploy scripts triggered by incremental code check-ins. CI allows immediate feedback and eliminates any guess work or confusion between the customer’s vision and the developed product.
Continuous Collaboration – Agile development is very unique in how the development team interacts with the customer. On non-agile projects, we often find ourselves meeting with the customer at various pre-planned “check-points” or through weekly status reports. On agile projects, we often find our top developer sitting between 2 customer team members. The consistent collaboration with the customer and the availability of the customer is critical to a successful agile environment. Although this takes a greater investment from the client, it increases the probability of a successful implementation.
Minimal Documentation – A favorite for many developers, one of the key Agile tenants is working software over comprehensive documentation. Agile only requires enough documentation to meet product owner approval. Some user stories may require documentation of architectural changes or reusable components / patterns, but most stories require minimal documentation to showcase the implemented solution. This allows the development team to spend more time at what they are good and means less binders collecting dust in office file cabinets.
Automated Testing – You may have fixed an issue or built an enhancement, but what did you break? Automated testing allows a collection of standardized tests to not only be created overtime, but to be tied into the deployment of new code. With any significant delivered functionality (measure by story points if you want), it is critical to create unit tests which can be automated. Even more critical is that these tests are stored in a library and incorporated into your standard build / deploy scripts. This allows quick identification when an enhancement ends up breaking functionality created a year ago. Over time, a library of system unit tests that are automated is created and is an extremely valuable artifact for a system.
In summary, the Agile Methodology strives to increase business value through the rapid release of usable functionality. This is made possible through the concepts discussed in this paper as well as many others that are incorporated into BridgePhase agile development projects.
Comments are closed.