2 ms·
You don't get to do it right until version 3. You write version 1 quick and dirty to get it out the door fast. Version 1 is written to acquire customers. You
by logfromblammo 8y ago
You don't get to do it right until version 3.
You write version 1 quick and dirty to get it out the door fast. Version 1 is written to acquire customers. You write version 2 to patch over all the problems of version 1. Version 2 is written to retain customers, but it ends up as an unmaintainable mess.
In version 3, you finally get to throw out the old code base and take the time to write clean, architected, maintainable code. Version 3 is written to attract and retain developers. Once it reaches parity with version 2, you can do the "Big Migration", and then start adding features. Version 4 and up are all built on 3, but barely anyone ever gets that far.
Note that this won't match up with the version numbers written into the software. You can't do anything about those, because marketing and management tells you what they have to be. Anecdotally, most software projects never progress past version 2, no matter how high their marketing numbers go. This is because version 3 does not directly add to the bottom line. It adds to developer productivity, and if the company cannot measure the value of developer productivity already, there will never be a business case for it. We all want to work on version 1 or version 3, because version 2 is a never-ending nightmare slog of one problem after another, but version 2 is that gaping hole that businesses will just keep throwing their money into, forever. And version 4 is easy and boring, where the only hard work is in upholding the process that is keeping the less experienced coders from cluttering up the place.
OP's mistake was in writing version 3 before telling management why that would be a "Good Idea That Saves Money" and seeking their mandate, and in not owning the successful completion as a major accomplishment. OP's current manager always understood that people run the company, not the code. That's not incompetent; it's a competence OP doesn't currently understand.