How did agile methodology develop?
Running a business requires business people to be on their feet and to make effective decisions in a split second. For, these decisions can affect an entire organisation and its growth, the company’s lifecycle, and operations from stakeholders down to new staff.
The importance of quick and effective decision making is also applicable to the development team and programmers. It is probably why a group of programmers collaborated a long time ago to find ideas and implement them to better themselves and their profession. Their ideas turned to experiments to decide their efficacy and impact of the operations of the programmers, coders and development team. At the time, practices like pair programming, user stories, stand-up meetings, iterative approaches and processes that are used today widely, was, but, just a few experiments. However, among these trials, some ideas failed, while some worked. The group of programmers weren’t disappointed by the failures and chose to work on the new features that worked.
Their steadfast determination led to the formation of principles that are known today, as the Agile Manifesto. The manifesto and the concept of Agile spread like wildfire due to its efficacy in making operations easy and effective. So, much so, that, business people outside the developer world began using these agile methods to run their organisations and to train their executives.
The widespread use of the concepts also led to the formation of practices that hindered the growth of companies and individuals working in them. A certain amount of structure and formality was built around Agile that was a contrast to its beliefs. Ultimately, this lead to concepts like Scrum Teams and Scrum Master. When done right, the concepts are about ensuring a team is able to work together and solve problems through training and coaching. However, without proper training and knowledge about the concepts of Scrum and Agile, the employees can feel like slaves and start disliking the idea.
What does it mean to be agile?
The Agile Manifesto created in 2001 in Utah by seventeen developers talks about various elements of the software development lifecycle:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
The content of the Agile Manifesto, and the four key values in it, shows the true nature of the Agile model and what it means to be Agile, not just in a software development process such as (FDD: feature-driven development), but in workflow overall. An Agile mindset keeps people as a priority over tools and development processes. The first value of the Agile Manifesto focuses on this point strongly by promoting dynamic communication between teammates and colleagues over a structured one.
Being Agile also means that an individual or company focuses more on the task at hand than the documentation. However, this does not mean it promotes a lack of records. What it tries to propagate is a work culture where individuals don’t waste their time documenting every little detail and following a hierarchy from testers to project managers and developers in getting approvals. Instead, they utilize their time to finish the task effectively and fast across the team – therefore assisting in rapid application development or extreme programming for example.
Agility is a set of practices that involve a product’s end-users in the development process of the same. Unlike negotiation, where the consumer is approached at the start and end of the production. This Agile mindset is more adaptive and can help speed up the process of software development (or services in case of businesses) by constantly checking in the customer’s feedback through smaller milestones and 2 week sprints. Then it is easier to refactor necessary changes based on business needs and customer needs alike avoiding large technical debt.
Being Agile, like its dictionary definition, means to be able to move quickly. The core of the concept of Agility is reacting to change with positivity and fluidity – consider this a continuous integration for instance. So, if one iteration doesn’t work out in the development process, the agile team’s focus is changed in the next sprint.
How do companies implement Agility?
When it comes to implementing Agility in companies, many fail to capture the essence of the concept. They treat it as a medium to improve the performance of an Agile team of employees. It should be used as a tool to transform the work culture of an organisation.
For instance, when one is not able to estimate the results of an experiment precisely. What an Agile-mindset should do is to accept that sometimes there are parameters that are uncontrollable and unpredictable. However, what most companies do is try and bring in new methods to ‘improve’ the ability to estimate, review story points, tweak metrics, refresh/revise the overall strategy or software development method for instance.
The above is one among many such practices and mistakes that individuals and companies alike make in implementing Agile. Moreover, organizations make things worse by adding rigid structure and unrealistic ideas into the mix.
For instance, a manager set a two-week deadline for a task that could use a little time. They asked for daily reports and daily standups, instead of every week. This practice of micromanagement led to the employees being stressed out as they needed to have something to report to the head every day. This kind of practice may get faster results, but they will lack quality. It violates Agility because it can often get caught up in feedback loops, burndown rates or working on projects in very small increments. Being Agile means having the freedom to be self-organizing, to choose your work and set realistic deadlines and be open to changes. Many organizations fail to grasp this and many team members often don’t know when to stand up to it.
Why developers dislike the agile software development methodology
Lack of knowledge
One of the foremost reasons why software developers hate agile is that their managers don’t understand the concept of Agility. They try to utilize the ideas of Agile in a structured manner. In turn, this violates the nature of an Agile-mindset and ends up regressing to traditional project management tactics that they are familiar with.
The fault lies in their understanding of the principles mentioned in the Agile Manifesto. The inability to comprehend the concept makes them implement structure and hierarchy that they are familiar with from experience. This results in a work culture that makes employees feel like they are slaves and pushes them further away from team work and collaborate less often within.
For instance, pressuring the team to follow a short deadline to complete a task that can use a little time. In such situations, the employees subjected to the pressure are exhausted, making them hate working at the company or in a team.
Process-oriented development teams
Another reason developers dislike Agile is the way their superiors treat the concept more as a religion than a process that can increase productivity. Which means, they blindly stick to their beliefs and refuse to budge towards a more agile approach of product management. Consequently, they forget the core of Agility – change.
When superiors have incomplete knowledge of the concept and believe it to be something akin to a religion that can save them, they try to force it on their team. Moreover, they refuse to be flexible with their implementation, thinking they need to follow a rule strictly. Whereas, an Agile framework and Agile mindset within the team’s members should be able to adapt to changes with ease.
When practitioners of Agile fail to grasp the concept itself, it leads to their teams disliking Agility and choose to work against it. This reduces functionality across the team and causes issues overall.
Will to change during a project
The fundamental reason that makes software project managers (and project managers overall) unknowingly violate the principles of Agile is basic human nature. Since childhood, an individual is moulded to listen and take orders from people superior to them. The training remains deep in the consciousness of an individual as they grow to be independent and salaried individuals, including the rebellious ones who flaunts authority.
This nature then is applied in the implementation of Agile with a structured process, as it makes it comfortable to do so. Another reason why individuals don’t wish to be Agile is the core reasoning of the concept and the ability to make the project or product owner responsible for blame. On the other hand, an Agile-mindset not only responds positively to change but also takes responsibility for tasks. As such, if it fails to blame no one other than the individual themselves it puts the risk on them in these changing requirements.
The very idea of taking upon blame or responsibility for failure is scary to such individuals. For, as human beings, they fear failure the most.
Moreover, the usual blame game is not applicable when being Agile. It is not surprising when considering human nature that individuals dislike taking the culpability, and would rather blame a third-party for something that went wrong in the overall project or product development for instance. As such, when a particular idea fails in a strategy one can easily hold the manager responsible or the team leader; or even overall resource – blaming anyone but themselves. However, when applied in a true sense, Agility does not support blaming others and promotes taking responsibility for their own actions. This is one of the aspects that makes individuals dislike Agile.
Are there any lean alternatives to Agile development
The only alternative to Agile processes is Agile alone. The structured and the managerial way the concept of Agility is handled and the human nature causing it is the root cause of why developers dislike Agile and why the concept is not effective sometimes. As such, the only way forward from this slump is to implement the true meaning and essence of Agile.
Managers have to be ready to let go of their false beliefs and be open to change in a decent timeframe. They should try and establish a work culture that focuses its prioritization on Agile, following the four core values and twelve principles of the Agile Manifesto. Only then, would the employees like developers start accepting the concept and applying it effectively in retrospective and for ideas moving forward.
To conclude, Being Agile and having an Agile-mindset is important for the growth of a company, enabling cross-functional teams and therefore its overall productivity. As such, an organization and its executive should implement whatever is necessary to make its employees accept the concept. Through Business Agility programs from institutions like Leadership Tribe, a company can train its managerial staff to make them understand what Agility and being Agile means. Doing so will lead to the staff being better managers who can inspire their teams into being Agile.
The human nature that constantly fights Agility can only be changed by implementing the core values of concept in daily life without limiting it to professional areas. Therefore, to make developers like, and use the concepts of Agility, a manager should be Agile thoroughly. We, at Leadership Tribe, offer Agile methods in our coaching and training to support you and your team members in your journey to being Agile, as well as Kanban, Scrum Methodology, Sprint Planning and more.