Software developers and cooks have something in common. You see, there are essentially two types of cooks: 1) Those who carefully follow recipes in order to recreate a dish or dessert; and 2) Those who use recipes as guides while preferring to adapt them to suit their tastes.
Similarly, some software developers like to follow a recipe, a hierarchical approach to building complex systems, while others prefer less hierarchy and more latitude to adapt the recipe. Neither approach is inherently better or worse than the other. They’re just different.
Follow-the-recipe developers generally prefer:
- Detailed business requirements documentation
- Well-defined, individual roles and responsibilities
- Big Design Up Front
Adapt-the-recipe developers generally prefer:
- High-level requirements that evolve with the project
- Cross-functional responsibilities within a team
- Evolutionary system design
These preferences represent different types of people and that’s where a serious challenge lies in wait. You see, big companies invest a lot of time and money identifying and selecting job candidates who they believe are good fits. Historically, most of those companies have used a structured, waterfall approach to software development. Thus, they hired people who like to follow recipes.
One day the company decides to try the latest hot trend in project management — agile development and Scrum, in particular. Suddenly, the follow-the-recipe developers are expected to adapt-the-recipe. Trust me on this, it’s not an easy transition.
Perhaps that’s why many enterprise companies implement agile development by breaking up large software projects into a series of shorter ones. They keep the basic follow-the-recipe framework while delivering software to the business in stages.
Is that a better software development approach? Yes, it is. Is it an agile development approach? No, it’s not!
Companies need to do three things to break out of this recipe conundrum:
- Train developers and management in agile development techniques and Scrum, in particular
- Followup with hands-on coaching as the theories are put into practice
- Obtain middle management buy-in and convince them to get out of the way
The first two are simple — find trainers / coaches and hire them. The third one is tough because it requires a change in management behavior. Some additional HR training and coaching will likely be needed.
If you’re serious about building software systems using real agile techniques, your team will need to learn new cooking skills.
photo credit: Neven Mrgan via photopin cc