>I’ve lost count of how many projects I have started that began with some variation of “Yeah, I could build this but better.”
Genuinely, I think the best antidote to this is to refuse to do this until you personally feel about 80% confident you really understand how to work with the thing from the inside out.
Don't try to rewrite Vim until you've already read and annotated a copy of Practical Vim and drove it daily for a few years, for example. Don't try to rewrite SQLite until you've started hitting up against use cases even the common advice online can't help you with.
This means you will probably do very few rewrites. That's intentional - focusing your effort on making new software that solves new problems is, for all those who trash talk it, really much more valuable. And if you ever do a rewrite in earnest you'll walk in with intimate knowledge of what exactly you're trying to do here.
Genuinely, I think the best antidote to this is to refuse to do this until you personally feel about 80% confident you really understand how to work with the thing from the inside out.
Don't try to rewrite Vim until you've already read and annotated a copy of Practical Vim and drove it daily for a few years, for example. Don't try to rewrite SQLite until you've started hitting up against use cases even the common advice online can't help you with.
This means you will probably do very few rewrites. That's intentional - focusing your effort on making new software that solves new problems is, for all those who trash talk it, really much more valuable. And if you ever do a rewrite in earnest you'll walk in with intimate knowledge of what exactly you're trying to do here.