An iterative approach to software development and even project management, agile development, or more specifically agile software development, has taken the business world by storm. What started as a way for software developers to organize the tasks they needed to complete a project, agile development, has been repurposed as a project management framework.
Naturally, as custom software developers, we want to focus on agile development in the software development process.
The Evolution of Agile Software Development
Agile development was initially designed as a software development methodology in 2001. The Agile Manifesto, created by 17 technologies, outlined four primary principles that determined agile project management to develop better software more efficiently. The four main principles encouraged the following items to be prioritized:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Looking back upon these main principles, it is easy to see how agile development has evolved in business relationships generally. While the agile style might be commonplace to us now, agile development emerged because of difficulties with previous software development methodologies, like the waterfall methodology.
The waterfall method was the prior gold standard for developing software, but it required a ton of documentation before coding construction even started. A business analyst (or a similar position) was first needed to propose a business application, which documented the software and business needs’ requirements. So while this document might have been helpful, it was also exceptionally long as it needed to establish the overall strategy, functional specifics, and the visual user interface design.
Technologists would take this document and develop the technical requirements document, which specified data structures, architecture, object-oriented functional designs, and more. Eventually, the coders would be able to work, followed by standard processes like integration and testing.
At this time (the 1970s), the software development process could take years. Although, recognize that the waterfall methodology was revolutionary, especially with the introduction of precise and disciplined specs.
Unfortunately, software developers were supposed to know the ins-and-outs of “the specs” or the technical document. They would often be questioned why a specific feature, hidden in the hundreds of pages of specs, wasn’t added. This methodology was eventually out-phased for a few reasons, mainly because software development itself was too time-consuming and difficult to be as precise as the document asked. At this time, developers were also required to develop low-level stuff, like multithreading for data processing and opening database connections, much of which can be sourced and implemented or used open-source now.
More developers have moved away from computer-based applications, and software development for internet applications is more widespread. In addition to this, the market response for applications and software has increased dramatically. Developers began to move away from the waterfall approach as it did not necessitate a fast turnaround.
Roles in the Agile Methodology
Developing software using agile methodology starts by defining the users and the vision statement related to the project scope. It also clarifies the issues that the project solves, opportunities within the project, and values that need to be addressed.
Here are the roles:
- User: Agile methodology always starts with the customer or the primary user. This is the person who is generally bringing the issues to the software development team. Other names for users are user personas since there might be different types of users that a software development team works with.
- Product owner: A lot of the time, the software development team will be working with a liaison rather than the user. The product owner is the person or stakeholder responsible for communicating its insights, ideas, and feedback. This person is responsible for ensuring that the software supports the product vision, and they are the ones creating this vision. One way for the product owner to develop the product vision is by presenting multiple user stories, which explain the target use, the problem being solved, the importance of the software as a solution, and constraints and acceptance criteria. Once the vision is clearly defined, the product owner will work with the development team to make the product a reality.
- Software development team: Of course, the software development team plays another significant role in agile development. Software development teams are multidisciplinary. Each individual brings their unique skills to the table to be a part of the software development process and create a product that fulfills the product vision. Sometimes software developers will also bring on designers, analysts, specialized engineers (like back-end system engineers and database developers), quality assurance engineers, and more.
While agile methodologies are the overarching plan, several different frameworks can be used to be agile. These frameworks include SCRUM and Kanban. Scrum is the most popular agile framework, and it focuses on a delivery cadence dubbed a sprint. Meeting structures are usually mapped out like so:
- Planning: Sprint prioritizes are identified.
- Commitment: The team reviews the list to identify how much can be done during the main stretch of the sprint.
- Daily standup meetings: This allows the team to communicate updates on their status and strategies.
A scrum master or scrum coach might manage the team. At the end of the project, the software functionality is presented to the product owner in a demo meeting. The team also conducts retrospective meetings to discuss how the project went, seeking improvements for the next project.
In addition to scrum frameworks, Kanban might pull user stories and funnel them through an organized development process. Other frameworks might take on a hybrid approach, where hybrid agile techniques are used for new applications, and waterfall approaches are used for legacy systems. Scalable frameworks can also be practical, depending on the needs of the project.
Interpreting Agile Development
When approaching agile development, developers will consider the agile development practices and then align them to the framework being used. Within the software development process, different teams might use different development approaches depending on how they work. For example, some teams might utilize pair programming, which allows two developers to code together. This dives higher quality code and also implements a training protocol so junior developers can improve.
Some teams will use a test-driven development approach that ensures product quality. And others might adopt their technical standards so that the developers have a sort of “rails” that align with the user story needs. This might include naming conventions, code quality, security standards, and so on (kind of like an editorial style guide).
No matter which individual approaches are used, agile development will prioritize the four main principles: individuals and interactions, working software, customer collaboration, and responding to change. This is because in staying focused on the agile methodology, software production teams will be better equipped to produce a higher quality product within an expedited development timeline and better software hygiene.
Agile prioritizes flexibility and adaptability. The entire project is not wholly defined from the start, as the original plans for a project are often wrong (or plans change) and therefore end up misguiding the project and taking up too much time.
Agile also breaks down the project into digestible components, which allows for more compartmentalized testing with the product owner and users. If some part of the software is not operating as the user wants, then that issue is addressed sooner, and the team is more prepared to adapt and adjust the plan accordingly.
Overall, agile methodologies are preferred over others because it improves project flow. It produces a better quality product, individuals are happier working on the projects and contributing their part, and workloads are better managed. In introducing a more individualized approach, each team takes accountability for their work. In this way, projects are completed faster, and more diverse input is encouraged.