10 Tips for Enhancing Waterfall Software Development

So your company uses a waterfall approach to software development and you’re stuck with it. Your management doesn’t understand agile development and doesn’t want to. They like how work gets done even if projects often take longer than they’d like. Now what?

Other than finding another job, your options are limited. Here are ten suggestions for enhancing standard waterfall development making it less bureaucratic and more fun.

  1. Iterate. Instead of a single design-code-test cycle, introduce multiple cycles. These are essentially mini-waterfalls, not agile sprints, but they still allow you to get partially completed software into the hands of real users more often. The feedback will be priceless.
  2. Accelerate. Use Rapid Application Design sessions. Kick-start your projects in a few days, not weeks. Assemble a multi-disciplined team to plan and estimate quickly. Rough out scope, schedule and architecture. Don’t seek perfection — just give it your best shot. Repeat as needed in future cycles. The team should include both business and technical people with in-depth experience in the target environments.
  3. Visualize. Use walls, whiteboards, flip-charts, projectors and even sticky notes to help everyone comprehend the problem and solution spaces. Timelines, assignments, risks, features, open issues, etc. are candidates for visual communications. Allocate a dedicated Team Room (or Project Room) for this purpose.
  4. Face it. Promote and encourage face-to-face interaction. Email should be used to document results not raise and resolve issues. When someone asks you a question via email (and copies everyone they can think of), walk down the hall and answer the question. Then, ask the person to email the answer to everyone copied on the original message.
  5. Participate. Set an expectation of continuous stakeholder participation. Establish participation guidelines. In the Team Room, make it clearly visible who is actively participating and who is not.
  6. Automate. Invest in automated test development. Include SQA in planning and analysis meetings. Give SQA a voice in establishing the timeline and quality metrics. Software quality will improve markedly.
  7. Demonstrate. Show the software to key stakeholders and end users early and often. It’s the best way to uncover implied assumptions and hidden risk factors. There’s no substitute for timely, targeted feedback.
  8. Test. Start SQA testing early and don’t stop. The sooner the developers get detailed feedback on the quality of the code they’ve written, the better. Bugs will get fixed faster.
  9. Learn. Invest in continuous learning and training for the entire team. Software tools and technologies, development and business processes, people skills, etc. need continual reinforcement and advancement.
  10. Finish. Develop a good ‘definition of done’. This rule applies as much to waterfall teams as agile ones. Everyone needs to know what it means to be ‘done’. Hold them to it.

Doing all of the above won’t convert your software development team into an agile one but you’ll see improvements. Pick a few items on the list and get going. Adopt more over time if you can. These tips will enhance the waterfall development process you’re using and result in better software.

Updated: June 19, 2012 — 9:54 pm