Hacker News new | ask | show | jobs
by WhaleBiologist 4624 days ago
From my experience code is either 'done properly' or 'shoehorned in'. But really, 'done properly' means 'you have time to organize everything satisfactorily at a high level', typically only when you are writing a new module from scratch.

Everything else is trying to shoehorn something new into an existing framework, and you don't have enough time to get it 'done properly' because your product manager has a heart attack when you tell them how long it'll take to do a proper refactoring job. This is where you will quite happily cut corners, and the chance that you'll inadvertently break existing functionality in the process increases exponentially. This is the mechanism that, in my experience, causes balls-of-mud.

And of course, no matter how good you are at planning every required use-case of your code over its lifetime at the 'done properly' stage, you can never think of it all, so at some point or another you are forced to shoehorn stuff in everywhere anyway.