iterative design, planning, and coding