“Agile” is one of the most popular words in the technology industry. The reason for this is that the Agile software development model has won a lot of ground inside companies and teams.
If you are looking for a definition or a set of rules generally accepted to define this model of organization, you will be disappointed to learn there isn’t one. Being a fairly open system that counts on strong collaboration among its members rather than strict rules, the opinions about it vary greatly.
Some of those working in such an environment will vouch for a number of rules that need to be followed in order to count as agile. Others will say the exact opposite, that agile is all about rule abolition, which makes for a good excuse to work at one’s convenience.
One way to look at Agile is that it gives the freedom of adopting rules or process structures to a certain project or team. This becomes efficient by letting a project flow smoothly in accordance with each members style and pace. Of course, there will be deadlines, sprints and a framework. But communication will be the strongest tool as members need to work together.
The beauty of it is that projects don’t need to be adapted to fit in a working scheme. On the contrary, the agile scheme adapts to each project and the very different team members. A basic mobile app project with five members differs greatly from an industrial machine programming one where money and lives are at stake. Yet they can all use Agile Software Development.
In the same category of liberty of movement lies the fact that you can always reconsider steps and processes and make changes as you go. Other working models are stricter with project stages unraveling in a progressive way and not allowing changes in past stages without revisiting everything. In Agile you can produce documentation that you need or implement tools and see how it works. This is why you cannot strictly define Agile because it is a dynamic way of team working.
A minor drawback in Agile may be the fact that some people use it to justify a lack of planning ahead. Agile is not something you make up as you work, it could just as well be named Chaos. In models like Waterfall, a client building a product loses when mistakes appear in previous stages. Because it costs a lot to go back and fix, you end up losing time, money, energy and ground on the competition. This is why it has been pretty much left behind. Agile is winning ground precisely because it allows for flexibility and improvement at all times.
However, planning happens in Agile as well. You have to define some guidelines, goals and predict results for at least a few weeks ahead. It helps each member organize their tasks and the team to assess their progress. Also, at the end of each sprint, you can take a step back to visualize your project so far and see if the initial decisions and ideas still make sense. If not, you can always make changes.
Failing to plan or refusing to do so will leave you with doubtful software and poor results. Flexibility and adaptability are keywords in the tech world. Changes you make to a project can impact greatly your customer or user community, but it comes with the territory and you need to be ready to take on the challenge. This does not mean that you don’t plan ahead to have an idea where you are going and predict some estimates. Imagine scenarios, think of possible outcomes and try to prevent the undesired. This is what Agile comes down to! Plans may seem useless because they never go accordingly, but planning is priceless because it gives you direction.