Agile methodologies are being used in software development way more now compared to before. Unfortunately many people still don’t really understand what it is. The most important part of a methodology is to get everyone on the same page. I had a client who wanted to use agile methodology once, but when i was implementing some agile activities like planning poker every week and reduced specification of initial documents, they freak out, since its not normal to them. All these are just the techniques. The mindset is what matter, in my opinion. Keep in mind i myself am not a certified scrum master or anything, but ill try to detail what i understand of agile development.
First things first. Why Agile? ( from http://clearcode.cc/2014/12/agile-vs-waterfall-method/)
Lets take a look at the Agile Menifesto:
- Individuals and interactions over processes and tools
Have you heard the phrase “The customer never knows what they want”. this is because of the formality of traditional methodologies tend to focus on processes rather that what the users actually need. Some textbook says this is how its done, so the software needs to follow that to the tee. Seem familiar?
Devs need to focus on the actual users, what they usually do, and in what parts of their daily work would be most beneficial when automated.
- Working software over comprehensive documentation
The old school development methodology is called the Waterfall Method. This basically means full on corporate techniques where most of the time there are more formalities than actual communication. you do initial estimates, research, get somebody to sign something that locks them into the design. If they need changes, well fuck. Too bad. Pay us more.
This leads to bad software that mostly follows the documents that has been done ages ago, without the understanding that comes with time. Remember, Priority one is the project. Make sure it succeeds.
- Customer collaboration over contract negotiation
The mentioned documents and contracts that bind the rules of the project too much also frequently leads to a slightly hostile environment where the client and vendor are trying to ‘win’over the other, rather than trying to build the software into what the client needs. In agile, priority one is always the project. Client and vendor needs to understand that and work together to produce the most relevant software to their needs.
- Responding to change over following a plan
“Oh crap what we wanted earlier wasn’t nearly as relevant as we thought! But its been signed off! What do!?”. The core of scrum is the rapid prototyping. Rather than presenting the client the software once finished, you do smaller releases, called sprints, where everyone can view and comment. Changes and improvement, to a degree, are welcomed. We’re all on the same team here. The project will be molded into the software everyone needs rather than a locked design in some presigned document no one even remembers.
AGI has always been my favourite stat anyways..