The programmer, like the poet, works only slightly removed from pure thought-stuff. –Fred Brooks,
—The Mythical Man-Month
A crucial part of programming is to divide a problem into smaller parts. This problem decomposition is an essential skill of every programmer. No matter whether you want to write a program from scratch or add functionality to an existing problem, you need to decompose the programming problem first. Problem decomposition, also called requirements analysis, is a skill underestimated by inexperienced and experienced programmers alike. The former underestimate it because ...