When a rewrite isn’t: rebuilding Slack on the desktop
&quot;<i>Conventional wisdom holds that you should never rewrite your code from scratch, and that’s good advice.</i>&quot;<p>Speaking as someone who has done a fair number of rewrites as well as watching rewrites fail, conventional wisdom is somewhat wrong.<p>1. Do a <i>rewrite.</i> Don&#x27;t try to add features, just replace the existing functionality. Avoid a moving target.<p>2. Rewrite the <i>same project.</i> Don&#x27;t redesign the database schema at the same time you are rewriting. Try to keep the friction down to a manageable level.<p>3. Incremental rewrites are best. Pick part of the project, rewrite and release that, then get feedback while you work on rewriting the next chunk.