3 ms·
I've got a little pet theory related to this. Which is that no one really solves difficult problems. They turn difficult problems into easy problems and then so
by SilverBirch 4y ago
I've got a little pet theory related to this. Which is that no one really solves difficult problems. They turn difficult problems into easy problems and then solve that. Often that literally means "We have this class of problems, I'm only going to solve the easy subset". And I've observed repeatedly people say "No we have to solve the real, hard, problem" - and a decade later, with a team of a hundred engineers, they've not really got anywhere.
Applied to this, that theory is very simple. It's enormously difficult and expensive to keep old code running, especially when the engineers who originally wrote it have left. Not only is it difficult, but the engineers who have to do maintain it will hate it, churn themselves and you'll be back to square one. So, solve the easy problem. Get your new guys to write something new, and give up on the old software once all the people who knew how it worked quit. And it's easy! No one left at the company is going to argue to keep the code. The new people will enjoy writing something new. Oh and people will be amazed at how happy and productive your team is - because you literally just choose not to do things that are difficult and no one appreciates.
But you may ask, what if the product is essential, you can't just abandon it. Well, call me flippant but if it were essential you shouldn't have let the engineers quit. And if you're really going to saddle me with it, I'll quit too. Then you still don't have your software, and it's not my problem - it's yours.
- eddsh1994 4y agoIf it’s essential it could last decades, greater than the career length of a developer. What happens then?
- clhodapp 4y agoI guess you budget to rewrite it even though it's "working fine"
- SilverBirch 4y agoSuccessful products are like the ship of theseus, they can go through the hands of thousands of engineers, the important part is having people actively working on it overlapping with more experience people. You don't literally expect the original author to be there forever, butyou do expect people to come onto the project and learn about it whilst the more experienced people are still there. If literally everyone working on a project is gone, the project is probably unmanageable at that point anyway, there's no point starting CPR, the project is dead.
- deleted 4y ago[deleted]
- JanisErdmanis 4y ago> They turn difficult problems into easy problems and then solve that. I think this needs to be said more carefully. For instance, problems could become manageable when a well-thought-out mental model is built. On the other hand, they could become easy when the problem itself is simplified. For me, the e-voting problem fits quite well in the picture where thousands of systems are being built with cute mobile UI but, in the end, are really holding on to the assumption: trust us, we will be honest.