Creative programming takes time, and careful attention to the details. Programming is all about expressing intent, and in any large program there are many areas in which the programmer’s intent is unclear. Clarification requires insight, and acquiring insight is the primary creative act in programming. But insight takes time and often requires extensive conversation with one’s peers. In industry, time is unavailable, one has to work with only a small set of peers, and no one can afford to spend time thinking about what something means. It’s necessary to make something that works, more or less, and move on to the next thing. But the fact that the programmer didn’t fully understand the problem at hand means that there is a portion of the program that works by accident rather than by design. And those places are where the bugs live.