3 ms·
> Simple, direct, and declarative code ... works only in an ideal world where nothing changes, i.e. where software written once is so good that you don't need
by mojuba 6y ago
> Simple, direct, and declarative code
... works only in an ideal world where nothing changes, i.e. where software written once is so good that you don't need to touch it.
In reality though, what happens to successful software projects is that once the management and the customers see that it works and is good enough they always, always start to request more features. In fact in the minds of managers adding a feature is just adding a feature, should be easy right? Well no, a lot of the times it's not. Too often adding features affects some core abstractions in the code in such ways known only to the developers that adds technical debt.
"Let's redesign the home feed. Should be easy, right?"
- mgkimsal 6y ago" they always, always start to request more features." It's not even that they'll request things in the future. There's often a backlog of stuff that will be coming up. I've still had to fight on people pushing back with "quit 'overengineering'! YAGNI! etc" comments. "Yes, we ARE going to need it. You agreed to it 3 weeks ago in meeting X! Just because it's not in this week's workload doesn't mean it will never happen. We're slated to have to do XYZ in 5 weeks - we understand enough of the problems that will face to be laying some of the groundwork (some extra refactoring/cleanup today in prep for work that will come down the pipeline 5-6 weeks from now)." But... that will impact the schedule for today so... ignore it. It's not always so blatant, and current projects don't suffer from this approach nearly as much as some past ones, but it happens.
- elonvolo 6y agoYAGNI, YAGNI, YAGNI Is the battle cry of losers Who say “don’t bring that gun to the knife fight” And ignore their opponents’ bazookas.
- thrower123 6y agoSoftware just rots like a smashed watermelon in a tropical jungle these days if you aren't actively developing it all the time. You can't get off the treadmill of updating and paying attention, because if you take your eye off the ball for just a few months, you wake up with outages because some service you depended on has deprecated their API and no longer support the way you were calling it before.