3 ms·
I rewrote from scratch once, after much deliberation and was successful. In my case, I had some extremely good reasons: The original codebase was build using g
by hibikir 11y ago
I rewrote from scratch once, after much deliberation and was successful. In my case, I had some extremely good reasons:
The original codebase was build using good old waterfall, where neither programmers nor testers had ever met a user in their life. So all the things that are good about working software kind of go out the window: There are a lot of abstractions in the code, but they didn't match the user's mental model, or helped in any way.
My users didn't like the software at all. It might have me their requirements in theory, but not in practice.
The team that had built the application was pretty much gone, nobody that had any responsibility in any design decision was still in the company.
I actually had managed to get access to people that actually used the software, and people that supported those users, so relying on them, I was able to get a model of the world far better than the original developers ever did.
300K lines of Java, written over three years by 10+ developers were rewritten by a team of two in three months. All the functionality that anyone used was still there, but actually implemented in ways that made sense for user workflows.
I'd not have dared a rewrite had the situation been better though: Working code people want to use trumps everything.
- danieltillett 11y agoI have always felt that if you need more than 3 developers and 12 months then the software is too big and the scope needs to be cut down. Better a small program that does one thing well than a monolith that does everything badly - why do we never learn from the UNIX philosophy.
- mafro 11y agoI think what you're referring to is what the kids call "microservices".
- auxbuss 11y agoThree months = 60 working days. Two devs, so 120 working days. 300k lines of code. So, 2500 lines of production code rewritten per day. Sustained for three months. No holiday. No days off. And this code was tested to be equivalent of the old code. So, let's say, being conservative, another 2500 lines of test code per day. (It's a lot more that, of course, in most cases.) So 5000 lines of working, tested code per day. Plus, the team of two were checking in with the users to make sure everything was hunky dory. And the new team was designing a new "model of the world far better than the original developers ever did". I'd have gone along with that bullshit until the final sentence: Working code people want to use trumps everything. No, no, young ninja, rock star, Jedi: Working maintainable code trumps everything.