Software is hard. Embedded software is doubly so. Embedded projects often suffer from long development cycles, late delivery, unpredictable schedules, poor quality, missed customer expectations, and developer burnout. These problems often interact to become a positive feedback loop: unpredictable delivery leads to schedule pressure and unrealistic plans; schedule pressure leads to long hours and short-cuts; long hours lead to burn out; and on and on. Agile Development has been effective at improving the performance of many software development teams. Their productivity has increased and become more predictable; and their defect rates have fallen; sometimes by as much as an order of magnitude.

This paper describes Agile Development practices that can improve development performance, including iterative development, test-driven development, and special business practices.