Compiled vs dynamic? Loose vs static typing? To rebase or not to rebase? Tabs or spaces? Pursuing high codebase velocity at a startup tends to center around technology choices. However, most forget the importance of learning to “take out the trash” efficiently.
Clearly deprecating code, removing unused code or adding tests for untested code are all important. But equally important is diligently reshaping of codebase methodologies on a consistent basis. For example, if you change from using onclick to unobtrusive JS, how do you make sure the whole codebase is converted in a timely manner? It might seem like premature optimization at first, but it’s absolutely key that new team members have good examples to work from on day one. A “trash free” environment means velocity stays high with each new hire, instead of losing hours (or days!) figuring out which methodology is up-to-date or which stylistic format we’re following this month.
When hiring, I’ve learned to look for engineers who will want to be “cleaners”. When they find a better way of doing something, they update the entire codebase (or as much as possible) to use the new methodology. This cleaner mentality is a great indicator of a team player who is in it for the long haul with the team, willing to do the dirty work to make everyone’s job better.
So lead by example. Make sure you have a process in place to actively reshape your methodologies. I guarantee the result will have more impact on your velocity than any technology choice you make this year.
How do you maintain high velocity with your team?