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?
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
All that has happened is someone has added a name (Agile) to what professional programmers have been doing for decades, delivering a WORKING program tailored to the CUSTOMER'S needs in a timely manner, then using customer feedback to incrementally update the same program without all of the bullshit that the customer does not need or want.
That is a far cry from what so-called 'web designers' do as evidenced by the massive numbers of bloated half-assed working websites on the internet. There is no reason to constantly re-invent the wheel like is constantly happening on the web.
$1200 to waste 2 days in class is ridiculous. One can spend half that much time at no cost by using Google and have a better handle on what is learned. Of course, doing that will not get a piece of paper showing that you spent time in a class. If a programmer is so bad that he needs that paper, he should take up some other skill that he is capable of doing, like maybe knitting.