Agile Mindset

Agile is not just some SDLC cycle that you follow, it is a mindset that we take to thinking about how we are going to work as a team, this mindset can be a change in how we even make up our team like having generalists instead of specialists in a team that can meddle with any area, it’s not just a matter of separating tasks into certain iterations such as development, testing, etc. Agile starts by addressing the agile mindset, the team should be open to continuous improvement and change.

First step to thinking like an agile team is “Focusing on the why”, when having sprints which generally last about 2 weeks, what we should understand is why shorter sprints improve the team’s agility, instead of “how to finish the work by 2 weeks”.

The key importance of agile in software development comes when working with knowledge workers compared to traditional workers, in places like a factory the project manager can gain the relevant expertise in the areas as he/she climbs up the ladder and take a more directive approach to get the work done, but when developing software it does not work the same, each person specializes in an area and it may seem impossible for a project manager to master each area such as a database engineer, software developer, and infrastructure specialist would in a team, which may need the project managers to take a more supportive role. This is why agile teams tend to be more self-organised, promoting collective decision making among the whole team, which gives these knowledge workers the flexibility they need to create a successful plan, but it’s not all free rein to let them go nuts.

The thing with working on software systems unlike something like a bridge or building, you can’t always plan everything at the start and hope everything will go according to it, software is not set in stone even as developing, integrated third party services may change causing the app to change as well, which is why doing work in short sprints brings an advantage, because the closer we get to the final product the more expensive changes will be. But the agile methodology allows the freedom to take only the minimum amount of decisions needed to get started and be flexible to make changes as the product develops, when working in short sprints, making it possible to change according to the need as the software develops without incurring too much expenses towards the product’s end.

Which can be explained by the cone of uncertainty:

image.png

According to the Agile Manifesto, there are certain values that an agile team should consider to take proper advantage of, that is, by focusing more on:

Note that we shouldn’t disregard the others but give more chance to those that allow flexibility, these only provide the bigger, more abstracted picture of the agile mindset, and not the practical way of working.