I’d like to draw a couple of analogies between software development and learning a new skill such as playing the piano or speaking a new language. Bear with me and hopefully you’ll gain new insights into the benefits of agile development over waterfall development.
Have you ever taken piano lessons? Or, have you ever taken classes to learn a new language? If not, maybe you know someone who has. These types of learning situations can be tedious and boring when using old school techniques. In fact, many people give up because they can’t deal with the monotony.
Take piano lessons, for example. You want to learn how to play the piano. That is, you want to play some songs. Yet, the lessons begin by teaching you how to read music or telling you how a piano works. Most people really don’t care. They don’t expect to become concert hall pianists. They just want to play a few songs and have some fun!
The same kind of thing happens when learning a new language. Lessons begin with the alphabet followed by spelling and grammar principles. Again, most people don’t care. They’re not interested in becoming translators for the United Nations. You just want to carry out a brief, simple conversation such as asking for directions.
We crave a sense of accomplishment.
Thankfully, many teachers have figured out that learning has to be fun. They’ve discovered that it’s important to get students doing what they want to do early in the process. The piano student is taught to play simple songs as quickly as possible. The language student is taught to speak simple sentences early on. These techniques provide a sense of accomplishment and encourage students to try harder. The tedium of music sheets or proper spelling are interwoven with the fun stuff.
Both sides benefit. The teacher has fewer dropouts and the students learn more.
It’s the same with software development.
Now consider software development. The business stakeholders identify a software need. Managers assemble a software development team. The business community wants to begin working with the new software as soon as possible. The development team wants to begin writing the software almost immediately.
What usually happens instead? The development team is forced to write lengthy specification documents, conduct review meetings, revise documentation, seek approvals — blah, blah, blah. The developers are unhappy because they aren’t doing what they enjoy and value most. The business community is unhappy because they are supplying enormous amounts of information and getting nothing useful in return.
This old school technique is based on waterfall development principles. Is it any wonder that both software developers and business stakeholders lose interest in the project and move on?
Learn a lesson from modern piano and language teachers. Exploit the fun factor. Let the developers build something quickly. Engage the business community with working software as soon as possible. Everyone feels better and actively participates. The quality of the end product improves. That’s agile! It’s common sense, right?