Optimizing projects with agile software development

Miguel Fraguela
3 min readNov 7, 2017

--

At EmpathyBroker we have been using Scrum as the agile solution for our projects since our foundation.

As a software development company working in large applications and web services, managing the lifecycle of a project often becomes a quite complex and challenging task.

Traditional software development approaches usually follow a linear pattern where the project is divided into several phases that are followed sequentially.

The most common of these methodologies is the waterfall model, which typically defines the following phases for a project:

  • System requirements
  • Software design
  • Implementation
  • Testing
  • Deployment
  • Maintenance

All these phases are written down in a specification document at the early stages, and little to no change is allowed afterwards. They must be followed in order, meaning that each one must be completed before moving on to the next, although some overlap is permitted.

Common limitations of the waterfall model:

  • An important amount of time is usually spent doing analysis and planning all aspects of the project to create a detailed specification up front, which is then approved by business stakeholders. If flaws are found in the specification later on in the development process, it can be difficult and costly to make the necessary changes and corrections.
  • Stakeholders are often discouraged from introducing changes that differ from what was defined in the specification.
  • Although stakeholders can track progress through extensive documentation, they usually have to wait until the last stages of the development to be able to get their hands on a working release of the software.

As the need to address the drawbacks of traditional development increased over the years, new methodologies and approaches emerged.

Agile software development was born from the combination of several of those methodologies, which encouraged a more collaborative, flexible and efficient way to develop applications.

The philosophy behind it is exposed in the Manifesto for Agile Software Development, where its main principles are gathered. It covers most aspects of the lifecycle of a project, incorporating practices like continuous testing and continuous integration while emphasizing technical excellence, good design and quick response to change.

There are several implementations for agile, being the most common Scrum and Kanban, but all of them share the same core concepts.

Agile software development is iterative: work is divided into small iterations or sprints, which are short periods of time (usually from one to four weeks) where the team works on a limited set of features or stories. At the end of each sprint, a functioning piece of the software is released and shown to stakeholders. This allows them to see real progress early and frequently, in contrast with the waterfall model where stakeholders often have to wait for long periods of time.

Stakeholders are welcome to propose changes and redefine priorities, even at the late stages. The project is not bounded by a fixed specification like it happens in the waterfall model. Constant communication is held between the team and stakeholders so that in-depth requirements are progressively defined during development based on the customer’s needs.

Working software is favored over extensive documentation: it’s better to keep documents light and focus on delivering functional software, rather than wasting time and effort on writing highly detailed documentation that will eventually get outdated. In each iteration, the team usually works in all phases of the product (analysis, implementation, testing, etc.), and a working part of the application is released.

However, agile software development may not work in all situations: it’s intended for large and complex projects whose requirements can change over time. Also, requires effort and training to implement, and software companies that have been using traditional approaches for years can find it difficult to switch to agile methodologies.

Incorporating agile practices in our workflow, work becomes more organized, teams share improved communication, self organization and decision making.

Agile practices do have an extraordinary effect too on customer satisfaction through active communication and collaboration; a fundamental ingredient in successful software.

--

--