Programming in the small ("hacking") and #programming in the large ("software engineering") are so different that people end up talking past each other. Shortcuts that work for a 1,000 line program may be disastrous for a 10,000 line program, while other techniques that seem like annoying boilerplate for a 10,000 line program might be absolutely essential to manage complexity at 100,000 lines.