What do you think of Agile/Scrum software development?
Now a days many companies are touting that they are developing their software based on Agile methods, Scrum, Kanban. etc.
What do you think of Agile? Is it a panacea for all software development or just lots of marketing buzz? I mean one can become a Professional Scrum Product Owner after taking a 2 Days class that costs about $1200. How can then this be a really valuable skill if it takes 2 Days and $1200 to learn it! Sound more like a new age cult to me. What do you think?
Well given the fact that you can become Agile Certified in 2 days, by paying $1500 and taking a 2 days class, there is really not much to Agile/Scrum software development. So which do you think can bring a software project to successful result? Someone with 10 years, even better 20 years, of software development expertise or someone with days of Agile scrum?
Agile/Scrum is something that is created by MBA types. And not People who are really expert and experienced in creating cutting edge software, specially massive internet services. So as long as you have the Money to waste, that is greatly slow down the pace of development to make the MBA types Happy, it is fine. OTOH, if you want fast and complex software development, just have good project managers and product managers and a Head of engineering to get the Job done fast and accurate.
The firm I work for is practicing agile development and it works for us.
- It allows fast delivery of working software with core features which is good for clients who are in a hurry to enter the market with an early version of their app.
- New features are added continuously, with incorporating the client's feedback and so the app evolves in line with the client's needs.
- No need to plan every detail at the beginning. Instead clients can define short-term goals, check results and then plan for the next stage. It gives flexibility to change functionality and scope of the project at any stage and ensures delivery of the right product.
- Most work is done on-the-run without careful long-term planning. If the software engineers are not experienced in agile this can create difficulties, especially with large software systems.
- Agile requires a lot of commitment from the client. If the client is not getting involved, this eliminates all the pros.
From my years of real software development, I am not a big fan of Agile/scrum, though it does work for some people. I think most organizations give lip service to adopting it and then you wind up with some sort of mish-mash of Agile and Waterfall that is truly a disaster. So overall just a Big waste of time :(
Much better is to let People who have years of REAL software development to select an agile team, and get the Job done fast and good free of Agile/Scrum Bull Shit.
Well according to agilealliance.org, Agile development method is based on these 12 Principles:
1- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2- Welcome changing requirements, even late in development.
3- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
1st, which Software developer in their right mind would be not for these Principles to start with!!!!!
2nd, some times "early and continuous delivery of valuable software" is not a good idea at all and can even lead to disasters. Imagine if a Site was launched "early", such as a Bank Site, without multi layers of Security in place, which multi layers of Security "customer" would not even know about unless they were Linux/Php experts.
It is really a buzz word. Since any good Software development team has already been following the common sense principles in so called Agile development which are:
Individuals and Interactions over processes and tools.
Working software over comprehensive documentation.
Customer Collaboration over contract negotiation.
Responding to change over following a plan.
I mean Doh! Which good software development team was not already doing this!
For more on what I mean check out:
10 Key Principles of Agile Software Development