Agile Web Development - Comprehensive Overview
On top of learning how to work with complex software, aspiring web developers need to know how to function as part of a professional team. Software development methodology is its own field of study with a unique lexicon, and one of the most important concepts that budding developers should familiarize themselves with is agile web development.
What is agile web development?
Agile web development is actually a broad category of methodologies based on the principles outlined in the Manifesto for Agile Software Development, which was compiled by a team of professional developers in 2001. Specific methods such a scrum and XP are considered agile although they existed before the manifesto was written. Through their combined experiences of working with other developers, the authors recognized the value of adaptive planning and collaboration between self-organizing, cross-functional teams. The goal is to allow for flexibility and provide rapid and continuous improvement of software solutions. Early delivery is also a key goal of agile development, which entails streamlining projects by eliminating time-sucking tasks.
Because they've been around for about two decades, a lot of the concepts behind agile development seem intuitive to younger developers; however, agile was a radical departure from older ways of doing things. Studies on the efficiency of agile web development compared to traditional methods are mixed, but agile remains popular in the professional world in 2017.
Traditional web development vs agile web development
Because the internet has evolved so rapidly in the past few decades, it's easy to forget that the World Wide Web isn't even 30 years old yet. During the infancy stages of web development, designers grappled with the basic task of translating the types of information you'd find in books into a website. They used paper prototypes, wire frames and flow charts to illustrate ideas. Use-case scenarios and focus groups were a primary source of feedback. Back then, CEOs would have their secretaries print out emails and then dictate responses, so there were obviously large gaps of understanding between users, developers and executives.
Developers soon discovered that creating software shouldn't be an entirely sequential process. There are always unexpected bugs as well as new technological hurdles to overcome, and anticipating the demands of users has become a science in itself. Fortunately, now that everyone is so well connected, it's easy to collect user feedback in real-time, so we have a greater understanding of how people interact with web applications.
The increase in internet users has coincided with advancements in content management systems, which has made it possible for anyone to design and edit a basic website with little training or expertise. These trends have given rise to industries that simply didn't exist a few years ago such as ecommerce. Since the process of making websites has become much more streamlined, developers have shifted focus to perfecting their methods to address the growing needs of businesses and consumers.
The move to agile
The image below visualizes the traditional process of web development:
As you can see, parts of the development process overlap, but there is a clear sequence of steps. Agile development, on the other hand, views most steps of development as ongoing and simultaneous:
The biggest difference is that programmers are involved with content and navigation from the beginning. Individual challenges are addressed as they arise rather than waiting to make large-scale changes before launch. Beta launches have also become standard in order to start collecting feedback as early as possible, and maintenance is viewed as equally important to all of the other steps.
Therefore, everyone involved with a project from the top decision-makers to content creators to IT specialists should meet in-person during the early stages of development so that everyone agrees upon the overall goals. Though it may seem tedious at first, having everyone on the same page from the start saves time by reducing the need for constant emails, phone conversations, and meetings throughout the development cycle. Because all members of the team are engaged right away, what once took 4-8 months to finish can now be accomplished in just a few weeks.
Agile vs waterfall
The typical agile web development process is composed of a series of "sprints," or cycles that involve discovery, design, development and testing. Every sprint results in a tangible product and new information to guide the next sprint. To better understand agile methods, it may be useful to compare it with the waterfall model, illustrated in the diagram below:
The waterfall model follows the traditional principles of sequential development whereas agile processes can be better visualized as a positive feedback loop:
Advocates of agile development may argue that the waterfall model is too rigid and ineffective; nonetheless, waterfall remains the norm in many workplaces, which is further evidence for why professional developers need to be adaptive to stay employed.
Aside from getting products to market faster, another advantage of agile methods is that they can require incremental investments. Then again, some investors are wary of such arrangements because they don't fully understand agile development, which may be one reason why the waterfall model persists.
Agile development components
An agile workflow usually consists of multiple components. The following provides a breakdown of the components found in a typical agile web development workflow:
- Product Backlog - A spreadsheet, chart or simply a physical wall covered in index cards that lists all of the features to be included in the final product. The product backlog provides a visual representation of the team's progress.
- Sprint Backlog - A list of the tasks to accomplish during a sprint. Before a sprint, the team chooses items from the product backlog and determines the tasks necessary to meet the user needs. Designers and developers independently assign priority and time estimates for each task, and that data is analyzed after each sprint to inform the next sprint. Some teams prefer to use a physical wall or whiteboard to keep track of tasks while others use free online task management tools like Trello.
- Scrum Meetings - Short, daily meetings to check in and set the course for the workday.
- Scrum Master - The facilitator of scrum meetings tasked with managing communication between team members.
- Shippable Increments - Tangible, fully-functioning applications that showcase a feature or the final product. Ideally, each sprint will result in a shippable increment.
A quick tip that's worth mentioning as you populate your product backlog is to create user personas. User personas are fictional characters that represent the goals, behaviors, and skills of your final product's potential users. Focusing on personas can help you identify which features you need to include. User personas may be derived from data collected through interviews or focus groups
Additional benefits of agile web development
Apart from what was already covered above, there are certain concrete benefits to using agile web development methodologies compared to traditional or other methods. The following section outlines these benefits.
1. Faster feedback
First drafts are never perfect. In fact, sometimes you can follow a client's specifications to a T, yet the final product looks nothing like what they had in mind. By completing tasks in iterations and having something tangible to share with users after each step, teams can make changes along the way and avoid a complete overhaul six months down the line. Having brief, daily scrum meetings gives team members an opportunity to communicate about individual small issues and resolve them before they become big problems for everyone.
2. Keeping up with change
The old adage "change is the only constant" couldn't be truer when it comes to web development. Instead of viewing changes as unexpected obstacles to overcome, agile developers embrace change as an inevitable part of the learning process.
3. Higher productivity
Agile processes provide ample opportunities to measure productivity, which helps project managers better estimate workloads.
4. Lower costs
Faster and more efficient development eliminates the need for overtime pay.
5. Greater customer satisfaction
Since applications go through so many checks before launch, customers are more likely to get a bug-free product that they are happy with.
6. Improved worker morale
When team members get to see the fruits of their labor in shippable increments, they know they're progressing in the right direction, which encourages them to keep working toward a goal. Team members are also more likely to feel a sense of shared ownership in the project, which is more motivating than artificial urgency.
7. Better accountability
Iterative methodologies make it easier to track the performance of individual team members, and it gives managers a way to measure the team's overall commitment level throughout the development process. This information can help them set more realistic goals and give executives accurate timelines.
8. No more detailed project plans
Forgoing a project plan isn't the same as not planning. It simply means that you don't need one specific document that you update every time you learn something new. Agile development's focus on frequent releases encourages an iterative learning process, so there's no reason to waste time and energy managing a document.
9. More collaboration
In offices that still use the waterfall method, some team members may rarely interact. Designers often send off their designs to developers and simply move on to the next task. In agile workplaces, designers and developers often sit next to each other while working collaboratively on each iteration, which results in a more polished final product.
Keeping it agile
When trying to hold yourself or your teammates to agile principles, ask the following 5 questions whenever someone throws out an idea:
- Will it help us achieve our goals?
- Is it consistent with our brand?
- Is there a better solution that already exists?
- What is the worst that could happen if we tried it?
- How will we evaluate whether or not the idea was effective?
Ongoing assessment is imperative to staying agile. Keeping what works and changing what doesn't helps everything move toward completion as quickly as possible.
Web development is about much more than making websites and applications. Development also includes the business side of the equation, and programmers are constantly going back to tweak technologies to meet the specific needs of companies and their shareholders. A web developer's job is never truly ever done. Understanding the many facets of the development process will leave you better equipped to work in a professional environment. As agile web development becomes more and more widespread it's important to stay up to date on any new developments in the world of agile development and practice it on a daily basis.