How can we use Agile?
To speed up a product release
When it's needed to do something faster, Agile methodology is very useful. Let us imagine two companies with almost the same business to explain how it works. One company writes the technical assignment, then creates system project and develops the design – it’s a waterfall model, that usually takes several months to release. On the other hand, a team works on Agile and release several versions before this date. Of course, they spend a lot of time on troubleshooting but when the product is already on the market.
It's maybe the hardest problem for most of all software developers. When a team works on a project for more than 3-4 months, goals should be changed. It's obvious that changes would not be critical: from a database for accounting to military software. But even a small digression requires lots of changes in documentation if a team works through waterfall model. A team working on Agile just makes some meetings to set new routine tasks.
Lack of understanding between customer and performer
Every company that works with businesses far from IT knows how painful it can be. Needs of business always change, because of market tendencies, but software development is more conservative, so it's very difficult to understand each other if everybody talks in his own language.
This way we can form 4 Agile values:
- interaction between both sides;
- working product;
- collaboration and partnership;
- alacrity and changes.
12 principles of Agile manifesto
1.Regular and early software delivery to satisfy customers. If they want an elephant a year, give them ears in three months, legs in next three month and so forth.
2.Be ready to change requirements. Don't be afraid of this process - it's okay when you work with business.
3.Work as fast as possible! Most companies use SCRUM or Kanban to plan and manage their workflow according to changing requirements and Agile values.
4.Business has to collaborate with a development team and provide enough information about all needs and problems. It's very important because in the most situations programmer cannot imagine what happened in the bank as well as customers sometimes don't know anything about development. So successful collaboration is the only way to provide really quality software.
5.The team is the center of all Agile methodology, so managers must create the right atmosphere and set the most productive conditions. In its turn, the team should study and keep creative condition.
6.Communications are very important too. It would be the best if you communicate face to face but writing is also okay. Use stickers, emails, Slack and so forth to keep in touch with everyone.
7.Product must work! It's clear - never show your customers things that don't match queries.
8.Rythm of the work is extremely important. You should build sustainable process of development and troubleshooting with your customers.
9.The principle developers hate. Agile doesn't work at the broken code, so a team must work really good to get reliable results.
10.Simple code and design. In Agile simplicity is almost equal to quality, so better don't try to impress somebody with complex code.
11.Manager in Agile doesn't manage but tell his team why they should self-organize. It seems a bit strange but it works if PM or chief is really skilled in Scrum and Agile process.
12.The team must analyze their work during the development process, not only they release something. It's very important to check and solve issues as soon as they emerge, but not every manager can set a workflow in this way.
But the main value of Agile is how every team explain and feel it. It's not canonical but work through this method can't be canonical in any sense. That's why it is frequently used for custom software development where no place for templates.