>>79
in my opinion it's lack of upfront thought which leads to patched up large systems. when you don't put in thought ahead of time you end up needing a bunch of bloated heuristics to fsck up your poor design choices, or you end up with a large herd of programs implementing similar functionality without abstraction (think drivers, cli parsing, graphics programming, etc).