Main principles of agileEach method has its set of principles. However many principles are shared so we can list most common of them to figure out what the core idea of agile methodology is. 1. Client must be actively involved. 2. Team’s opinion is also an argument. 3. Requirements may change but schedule never. 4. Better deliver small parts but constantly. 5. Best practice is delivering before deadlines. 6. Test, test, test. 7. Don’t move to another feature until current one is not complete. 8. Collaboration and cooperation between both parties is vital. Agile is very popular if not to say more. It is considered to be more advanced than for example Waterfall software development approach being more flexible and less formalized. But it is not a cure-all solution anyway. Agile has its drawbacks and weak-points which also have to be considered when you choose your software development methodology.
Disadvantages of agile
Client’s involvement, close collaboration and cooperation. These are the fundamental principles of agile which ensure that result will be exactly as it was expected. However, this principles fail when a client has not sufficient time and not always available upon the first request. Also these principles affect the pace and swiftness of the development process.
New requirements emerged and modified. This what makes agile being a very flexible method of software development. However this is how never-ending projects appear with constant improvements and enhancements. And this, in its turn, leads to a more unpredictability in business planning. Moreover both parties are at risk. A developer can’t effectively schedule his upcoming projects and a client can face an unexpectedly excessive budget.
Constant testing. This insures quality and saves from unpleasant surprises during the final testing. At the same time this increases the cost of development significantly since it involves more resources (man/hours).
Deliver by parts, don’t move forward until the current feature is done. This principle of course is meant to ensure quality. But if you look closer to the real order of things you will understand that this approach can be excessive. Developer has to contact his client as soon as another line of project is ready; client has to test it up and express his opinion. Reliable? Yes. Time-consuming and requires constant control? Of course! Besides, put developers shoes on. It’s mentally quite tediously to follow each delivery iteration. Since we talk about agile as a flexible method, let’s be fair to all parties and don’t forget about another principle: team’s opinion is also an argument.
Early delivery. Well, both developers and clients are interested in fast delivery. But let’s face it: rushing almost always means lack of quality. So, it is not recommended to make fast delivery a number one priority.