We’re getting into building our product at SmarterCloud and are starting to make early choices about what kind of tools we’ll use. Findbugs? Jacoco? Gradle or Ant? MySQL or Postgres? Maybe something new and fancy like Mongo or DynamoDB?
For non-technical folks, this is basically like asking “Phillips or flathead?” No one’s arguing that we need a screwdriver, we’re just figuring out which one we like best and how it will play with all of the 2x4s we’re sticking together. At any early (or even) late stage company these questions are revisited on the daily. Tooling is so important to modern software engineering that there are literally thousands of blog posts devoted to scaling tools and testing them.
So instead of diving into the specifics of what we’re using, I just wanted to give advice to anyone who is building a startup: use tools until you just absolutely cannot take it anymore. Don’t build it yourself. Building it yourself is crap.
As far as I can tell, a startup is about adding value to the world for your customers. What the product does is highly relevant. How the product is built is highly irrelevant. Great, you built The Great American Database. Unless you’re competing with Oracle who gives a crap? Maybe Marc Andreessen will think you’re a badass coder, but in my estimation you now have to write code to update your B-Trees rather than using open-source software that will do that for you. What a goddamn nightmare.
Startup leaders should focus on:
- Recruiting top talent
- Deploying infrastructure to enable your talent
The more of that infrastructure that’s homegrown and not core to your value proposition, the more you are going to distract your top talent with bugs, late night pages, and a general mess. You should be so lucky that you hit scale where the existing tools are falling down on themselves. Suffice to say, when I was on the Amazon Alexa we reached a scale that >90% of startups will never reach within our first year and there were lots of tools that continued to work just fine.
It’s easy to lean toward “owning things” because it makes us feel comfortable and/or accomplished. However, with free and open-source software plus cheap cloud infrastructure, this makes absolutely zero sense. Today’s best engineers take pride in building intelligently, not just building for building’s sake.
 I only linked Aphyr because he blows it out of the water in terms of depth of knowledge. He’s worth the exclusive link. But there are a ton of other good ones to find too.
 When I was at Hadapt, we cracked open the PostgreSQL source so we could use their front-end (they have a bunch of great shortcuts enabled including history searching and an in-place Vim). Hooking this up to a back-end (not even with a rewrite, just figuring out how to inject the C++ objects into Java code) took two engineer-teams six months.