Agile development is a management framework that most contemporary software companies have embraced years ago and still actively use, even though they're not aware of it. It's the idea of developing software in a flexible, fast-paced and open-minded manner, with lots of focus on rapid results, efficiency, and most importantly the customer.
The agile developer is basically like a jazz musician that loves to improvise and explore, in contrast to the classical pianist that sticks to strict structure and musical harmony.
Nowadays it's almost impossible to work differently, and when you think of it, why should we – software developers have a huge arsenal of resources that allow rapid development and unorthodox approaches to solving problems. People are a lot more liberal and open-minded, plus customers are a lot more demanding nowadays. In the early 2000s people felt that something has dramatically changed, so in 2001 a group of technologists presented the Agile Manifesto.
There were attempts to adapt agile methods even back in the dawn of software development, but such unorthodox experiments were always overshadowed by the waterfall methodology that preferred careful planning and strict step-by-step development without the customer getting much in the way. Seems very old-school, but that's how it mostly worked before the World Wide Web entered our lives and proposed a new world order.
In the old days software development required lots of complicated documentation and software descriptions before starting a project. Documents would be long and boring, detailing data architecture, structure, and interface, also every step of development and a business plan. The worst part is that none of it could be changed.
The Waterfall method was necessary because the technology was bulky and rigid, communications were slow and software development was generally expensive, so any changes during production posed a financial danger. The waterfall method became irrelevant over time because computers got cheaper and more accessible, people started communicating over the Internet.
Suddenly there was lots of free information and the possibility to do things efficiently, thus following strict documentation and rules became unnecessary. The Agile Manifesto sort of seems like an official beginning of a new movement, but the agile methodology emerged as a natural side effect of technological advancement.
Better communications and evolving work culture has produced one of the cornerstones of agile management – close relations with customers. The philosophy behind it teaches that you will avoid mistakes, save time and keep customers happy if you involve them in the process of developing software. Flexibility is also something both developers and customers value, so agile developers stress the importance of letting projects evolve as time goes on.
Imagine if somebody would sign a contract to write a novel using only the typewriter, and nothing else, and then in a month, somebody invents a laptop. It's more convenient writing with a laptop, but you can't switch because there is an annoying contract over your head, with dire consequences, if you choose to break it.
Agile philosophy suggests that life is constantly changing and you must adapt to surrounding circumstances to achieve the best results. This also means being able to switch back and forth, prioritizing tasks and constantly scrutinizing your work in a non-linear way.
And of course, none of this can be achieved without a dedicated team. Any advocate of the agile method will tell you that it's better to have a small, tight-knit team that deeply cares about achieving good results.
Focus on project execution first and worry about solving the remaining problems later.
Don't put blame on anybody but search for the solution on their own.
Speak about their weakness in order to achieve better results.
Ask questions and seek knowledge.
Spend time with each other outside of the office.
Refuse to fail and keep a positive attitude.
The keyword to being a good agile team is simplicity and that's what binds together any effective company because they seek to achieve results through having an open mind and general flexibility.
There are lots of agile frameworks that have slight differences in how they approach problems.
Scrum is probably the most popular method that is based on sprint iterations that give teams a framework for shipping software on a regular basis. Achievements using this method come frequently, bringing a feeling of importance and fueling employees with energy.
Short iterations also reinforce the importance of good estimation and fast feedback from tests. Scrum developers usually have meetings to determine what to complete during the next sprint and share results. To ensure efficiency, they also have daily 15-minute mini-meetings to keep the team in touch.
XP is another system that used to be dominant until it was dominated by Scrum. XP teams work in a strict priority order. Features to be developed are prioritized by the customer and the team is required to work on them in that order. It's a framework which focuses heavily on ensuring the quality of delivered software and which prescribes engineering solutions towards that end. XP teams work in very short development cycles so that changes requested by the customer (who work together with the team) can be incorporated frequently.
Kanban is a visual system for managing work as it moves through a process. The goal of Kanban is to identify potential problems in your process and fix them so work can flow through it cost-effectively at an optimal speed. Kanban puts a focus on not making any change to your existing processes right away.
Kanban must be applied directly to the current workflow. Any necessary changes can occur gradually over a period of time at a pace the team is comfortable with. Kanban also encourages you to make small changes rather than making radical changes that might lead to resistance within the team and organization. Most importantly, the method encourages constant improvement at all the levels of the organization and it says that leadership doesn't have to originate from senior managers only.
Although not every software company shares details on how they manage their teams, you can be sure that most of them will utilize some form of agile management. Music streaming giant Spotify is a well-publicized example of a company that used Scrum in the beginning, but over time developed their own unique management style that still fits into the agile style framework.
Spotify is known for dividing the company into these small autonomous squads that have full freedom to create and manage themselves. Squads are encouraged to collaborate and socialize through working in common work areas and shared lounges, motivating each other and giving compliments and constantly create something new.
Spotify believes that releasing new versions of a product should be routine and it encourages squads to constantly add new features to its product, no matter how small or incomplete they are. Employees can also migrate from one squad to another and align themselves with communities that share their objectives and interests.
Fear of failure is a huge problem in lots of tech companies. Spotify has realized this early on and decided to get ahead of the problem. In order to remove the shame of failure and encourage experimentation, Spotify has these weeks when employees can build whatever they want and later present it to their colleagues.
This basically teaches people to confront their potential failure and see it as a normal part of life, rather than avoid it all. Some squads even have these fail walls where they share their failures and later revisit them to learn from past mistakes.
Spotify is not some kind of lawless anarchist tech utopia, more like a self-regulatory democracy where teams know their responsibilities and reach long-term goals that fit into the bigger picture. Spotify has leaders, but they are viewed more like coachers and mentors, so naturally more authority is given to groups than separate individuals. The paradox is that in Spotify autonomy works together with alignment – every independent squad works for a common goal, no matter how much independence they have.
Even though Spotify has developed its own style of management, it's pretty normal to continue experimenting and apply new methods. The funny part is that successful methods usually become viral, which just shows how gracefully separate units can shift into a unified body.
We are not saying that you should necessarily adapt Spotify's model. Every business is different, so it's better to customize and come up with your own management framework. It's also true that not every company can be flexible and cultivate an agile management culture, because it could result in certain people taking advantage of their freedom or wasting money that is reserved for creative flexibility, eventually turning the company into a dysfunctional mess.
However, most famous software companies were built using unorthodox management measures, and their success was due mostly to being open-minded. The agile management methodology is a reflection of the 21st century and a brainchild of the World Wide Web. If implemented correctly, agile companies are just better at innovating and making clients and employees happy.