Bringing Application Development Agility to Installation Practices
Thanks to a focus on speed and flexibility, agile development methodologies are moving into the mainstream of application development. Agile teams deliver software to customers or users in a series of iterations, each adding one or more features that enable them to both get an early benefit from the application and provide feedback on available features and usability.
The value of agile methodologies is that they provide essential features quickly to customers in response to a business opportunity. It also enables the agile team to be able to take user feedback and make corrections to existing features, as well as adapt future features to a changing business environment.
But agile teams often don’t include installation as a part of their agility charter. As a result, installation can get left behind as teams race to deliver software to customers and users.
But installation is more important than that, both from a technical and perception standpoint. A lack of agility in installation can mean a poor or difficult experience for those early users, to the detriment of the product and brand. And relying on an ad hoc approach to successive installations and uninstallations during a sequence of iterative product releases could result in files, directories and Registry keys being left behind and cluttering up the users’ computers.
It’s not difficult or demanding for an agile team to also practice the same principles for application installation. Here are five ways that teams can integrate installation into their agile processes, improving application quality, providing for better customer satisfaction and further accelerating application delivery.
Five Tips for Delivering Working Software with Agile:
- Plan for installation
- Include the installation with first product delivery to customers
- Install as a team
- Be flexible
- Leverage automation
Plan for Installation
Application installation is often relegated to a back seat when it comes time for agile planning. Few teams ask customers or agile product owners about their installation and uninstallation requirements. That has to improve for agile methodologies to take the next step in their maturity.
Installation doesn’t seem to offer an immediate business benefit to customers or users, and many teams believe that planning and designing for installation can reasonably be pushed until just prior to the final product release.
There are two aspects to installation at the beginning of an agile project. The first surrounds user stories and/or requirements. Installation is a business requirement, even though it may not be explicitly stated in user stories or other need definition. Many take installation for granted, or place installation requirements lower in the application backlog, so that detailed planning for installation is deferred until later in the project.
Instead, agile teams have to always consider application installation as a part of the application design. Unless installation is part of the initial planning and design, it may not match the business needs, or be able to be seamlessly integrated into the application.
The second aspect is the initial planning for sprints and iterations. Teams often feel that installation requirements take care of themselves, and don’t require specific planning or design. Alternatively, they believe that installation can be the final step in the process, immediately before delivery. It effectively falls to the bottom of the feature backlog.
To make sure that installation development is agile, teams have to plan for installation features just as they do business features. This means examining user stories for installation requirements, deriving features from those requirements, prioritizing those features and assigning tasks to developers to implement the features.
Include the Installation with The First Delivery to Customers
There are several reasons why an agile process requires the delivery of a clean and professional installation with the first customer release. Perhaps the most immediate reason is how the users perceive the application. An ad hoc, sloppy or inaccurate installation process sends an immediate message that the application itself may exhibit some of the same negative characteristics.
The perception may be inaccurate, but a poor installation experience can leave a significant hole for an application to climb out of. Because releases are frequent under agile methodologies, ongoing difficulties in installation may give users a permanently poor impression of the application as a whole, even if it meets the business needs it promised.
Another important reason to have a professional installation on initial customer release is that it can prevent technical issues later on in the project. For example, an ad hoc or incomplete uninstallation routine can leave files, directories, and Registry keys on the user systems. Over time, the accumulation of extraneous files and keys can cause instability on the computer, frustrating the user and in extreme cases requiring a reinstallation of the operating system. At the very least, such instabilities may cause users to stop using the application, breaking down the deliveryfeedback mechanism essential to agile methodologies.
It may require a slightly longer development iteration, or an additional iteration, but the benefits of starting off with a professional installation for initial customer use outweigh the small additional time required to integration installation with the application itself.
Install As A Team
Installation development is a team sport in agile processes, in that all team members should have responsibility for installation development. Many teams assign a single engineer to installation development, often a more junior engineer who lacks experience in building installs. This approach creates a separation between the application effort and its corresponding installation development, which can result in a mismatch between application needs and the installation. Further, the individual developer responsible for installation may not receive information on new or modified installation requirements based on changes to the application.
Every team member has a need to understand how the application installs, and how that installation affects their features and code. By making each developer a part of the installation effort, agile teams can assure that the application and installation requirements are considered and developed together.
The key to a successful agile process is flexibility. At the beginning of a project, it is likely that the team doesn’t have a clear idea of all of the installation requirements for the application. Further, it may not be necessary to have all installation features and options available with the very first product release. Rather, like application features, the most important and relevant installation features should be delivered first.
Then, based on customer feedback and changing business needs, features can be added, and existing features fine-tuned. Like the application itself, the installation is continually evolving, with the team accepting feedback and making adjustments based on usability and business needs.
It’s also necessary to be flexible in response to changing platforms or operating systems. Today, applications are installed on a wide variety of systems, from desktops to servers to virtual machines and even tablets and phones.
Agile methodologies are based on simplicity, a theme that was emphasized with the use of decidedly low-tech tools like 3 X 5 notecards and Post-it® Notes. However, teams quickly outgrew such approaches as applications became more complex and teams were distributed across the country or even the world.
Today, most agile teams use automation to help identify repetitive activities and make them more automatic. In addition, automation helps simplify complicated or infrequent tasks so that they can be accomplished without a labor-intensive effort. Automation accelerates and assures consistent quality in repetitive activities.
In many cases automation is a necessity, especially when the agile team is geographically dispersed. Data sharing, collective decision-making and collaboration tools are essential in creating the environment needed to make agile processes possible on distributed teams.