Must Read Books   My Server   Web   Music

When agile fails, a hotfix is not enough

Non-agile real life examples

Agile is overrated most of the time, if not all of the time. It is treated as the magician that will transform a software development lifecycle, make things go faster and organize everything, while at the same time is expected to be the reason for delivering a great final product. Anyone that believes that, has already failed. It’s like believing that a guitar will make you a musician, an exploit a hacker, a cooking book a chef, a treadmill a runner and so on … It definitely takes more than that, and at the end you might discover that you do not need a guitar in order to be a musician or an exploit to be a hacker or a cooking book to be a chef or a treadmill to be a runner.

Facts are very simple. If someone can respect and successfully adopt the agile manifesto principles into any software development process, then the process is consider by definition agile. The ways that you achieve the agile objectives should not really matter and in fact they should be different across companies or even teams, if you want to talk about an original and healthy software development lifecycle.

It does not take much effort to look around you and realize that there are other systems that serve similar purposes, target similar goals, face similar challenges, but at the end of the day have nothing to do with software development. Let’s take as an example any team sport. In all professional teams there is an absolute hierarchy of roles, including: team owner(s), managers, players, scouters, assistant managers, trainers, assistant-trainers, general staff, marketing people, etc… By analysing their environments you could easily see a very close resemblance, that reflects into roles and hierarchies up to goals, processes, customers and profits.

There are other examples with certainly more structured models, such as military or hospitals units. Although these models have extremely strict policies due to the critical nature of the services that they provide, they also hide exceptional processes for decision making and task prioritization. Obviously, these environments are not directly comparable with a software development lifecycle, but they could certainly be considered as additional food for thought for improving models that are related to software development.

Going back to the team sport model analysis, by diving into the details we could easily highlight some quite important differences. The philosophy that underlies professional sports clubs (for example a basketball team) focuses on similar objectives, but the logic and the established authorities are distinct. Communication, responsibilities, decision making, success, failure, consequences, feedback, training, tactics, recruitment, profit, marketing, budget, facilities, equipment, roles, hierarchies, evaluation, and competition are mirroring back to software development, almost identically. However, there is no agile and these systems can still deliver the expected results. Interesting!

1. A single person for final decisions

Behind every successful team, there is almost always a great coach. He is the center of all decision making, the single point of authority and contradicting with him, simply does not exist. In return, he has to build a team of winners, report back to the owners, inspire, communicate, re-consider, enforce and at the end of the day make the players believe. He must become the psychologist for his team and it’s owners. There is no easy way out. The coach will have to possess the highest of technical depth and the type of background that will allow him to easily gain the respect of everybody within the team, in a few days. Then, trust and team chemistry will follow, resulting into relationships with the strongest baseline and with no unnecessary doubts.

In return, he is the first to blame if something goes wrong and and the one that has to tolerate and defend all the judgemental press during his leadership. Extreme pressure and responsibilities, with only desire to be acknowledged as the main contributor for the team’s success. Certainly not a position that everyone is capable to handle and probably the most critical role in the entire team structure. A coach should have the ability to keep relationships at professional levels as appropriate and evaluate situations accordingly. Obviously, he does not have a comfort zone, he is accountable for the team’s performance, he is the guardian of a fragile balance and it is usually an all or nothing deal.

2. Players are in control

Players can win or lose a game. They are the ones that make the calls inside the field and therefore, they are definitely considered to be the ones in control. Players are identified as the second most valuable asset of the product and together with the fans, which are indisputably the first asset, they create the sport. In an ideal system, someone could easily argue that these two assets are sufficient to complete a profitable system that targets sports entertainment. Interesting enough, the players form their own informal structure (e.g. team’s captain), which allows them to function better under a light hierarchy model. The right or charismatic coach must be able to successfully integrate with that internal hierarchy and earn its respect, as he drives the entire team into success. Anything less would simply be an average effort!

3. Fans have the power

Without the fans, professional players, profitable sports or team owners would not exist. Sports entertainment is just another heavy industry, that depends on satisfied sports fans. The main priority is the fans and observing sometimes their unified power is simply amazing. That kind of power is the one that can drive industry changes, demand the re-construction of an entire team or conclude that a team was successful even if it did not achieve all the yearly objectives. Therefore, it constitutes a fundamental requirement to be able to respect, understand, use, but not be afraid of that power. Every coach and his players should move into that direction every single day, anything else constitutes an overhead.

4. Evaluation is a continuous process

Every highly competitive environment requires strict evaluation processes in place. In particular, sports teams treat evaluation as a very critical aspect of their system. Players are judged based on their performance and their overall behaviour. Coaches are criticized for their tactics or roster decisions and team owners are expected to spend the maximum budget for the team. Every single game is like a new evaluation test for everybody to pass. Repeated failures to rise against the expectations, will eventually result to substitution. There is no paperwork and all the assessment happens real-time, based on the deliverables.

5. Distinct duties based on skills

Successful teams are build on top of extremely diverse players. These players were hired in order to fulfil the requirements for a specific position inside the team, and that’s what they know to do best. Their role must be strictly defined, because their performance completely depends on that factor. It is unlikely to see a defender to be placed on an attacker’s position or a play-maker to have to cover the position of the center. That would be at best inefficient and it should never happen. At least not in any serious professional team that has a reasonable coach. As a result, team’s roster changes quite often according to needs and expectations for the new season. However, it is only under very extreme occasions that the entire core-team is replaced. That usually happens only if the team failed terribly to achieve the planned objectives. In that case, the whole team is anyway under serious re-construction and everything is redefined. Even then, defining the new roles among members of the team should be based strictly on the players qualifications and experience. You do not try to create players. You know what you need and you get the experienced players to perform for the team.

6. Wins come game by game

Whoever believes that the reason behind great teams lies only under infinite budget, modern facilities and an enormous population of fans has been probably misled to a wrong direction. These are significant factors, but constitute only the “fuel for the engine”. What makes sports teams a very interesting example is that they treat each game as a stand alone challenge, with ultimate goals: to win, improve, learn from their mistakes and understand their opponents. That is their manifesto principles.

They will not rush or force situations, they will mature game by game and they will connect to each other via practice. That allows quality, discipline and communication to come as natural result of hard work. The coach is responsible to drive the team into that path. If that doesn’t happen, most likely the team will end up like a boat without a captain, waiting to sink at the first bad weather. The efforts must be synchronized, well-defined, locked-down, targeting only short-term commitments within the team’s capabilities.

About Spyros

Addicted to any kind of hacks, coding, django, debian, vim and caffeine.


Comments are closed.