Monday Dec 2, 2013 by Will Koffel - Startup Advisor, ClearlyTech
Almost every week, it feels like it’s time to add a new piece of technology into the mix. That could mean a new product feature, a project management tool, a business intelligence package, a new email system, often things on our tools list.
Whether you are replacing something that’s broken or conjuring a new component into existence, you must consider three paths:
Dig into the details below, but I find most software startups will have a breakdown that looks roughly like:
Application Code: 20% Build, 75% Borrow, 5% Buy
Ops/Services: 5% Build, 75% Borrow, 20% Buy
Every business has pillars. These are the central support beams for your success, those things that define your unique opportunity in the marketplace. You should Build your pillars. They represent the largest differentiator for you, the most important components of intellectual property, the areas in which you’re innovating, and the things you’ll do better than anyone ever has before.
Let’s take Netflix for example. They built a few clear technology pillars:
1. Logistics – Netflix grew off the bet that they could create a more delightful customer experience than renting DVDs from your local video store. Critical to that was figuring out how to handle logistics and inventory management for millions of DVDs shipped to and from residential consumers.
2. Recommendations – The best way to beat the experience of browsing the shelves at Blockbuster (may it R.I.P.) was to provide personalized recommendations. This recommendation engine is such a critical component for Netflix that in 2009 they ran a $1M Contest challenging hackers and academics around the world to improve their recommendation algorithm by 10%.
3. Digital Delivery – Netflix has evolved at the forefront of the streaming video revolution, and have invested heavily in building streaming services in the cloud.
None of these three pillars for Netflix are commodity “solved problems”, and it is absolutely core to their future business, so Netflix was right to develop these pillars in-house.
What are your 2–5 pillars; your “secret sauce”? Here are some anti-hints to help you out:
These may seem obvious to you, but I’ve seen each of these cases in real life. And in all of them, the technical teams had a gleeful pride in their accomplishment, which was sorely misplaced. They’d spent valuable development resources on things that aren’t key pillars which will make or break their business. Entrepreneurs have a super-power for convincing themselves their problems are unique. Pro Tip: they’re not.
If it’s not a pillar for your business, it’s a tool, a commodity, a pluggable solution. Stretching our architectural analogy, we’re talking about the drywall, wiring, and windows for your building. Probably not what you want your team spending time on.
You should borrow all the tools, libraries and services you can in order to help your team focus. You must stand on the shoulders of the open-source community and benefit from all it has to offer.
Unless you have defensible special circumstances, you’ll almost certainly borrow things like:
When in doubt, search GitHub for your current needs (web page animations? machine learning neural nets? wrapper libraries for legacy APIs?), and more than likely you’ll find numerous libraries in your language of choice to help you out.
It’s probably cost-effective to spend money in a lot of areas, think of them as your far-flung mercenary empire. A whole army of vendors, consultants, commercial software providers, and SaaS solutions is available on the cheap.
The construction worker on our fictional building definitely doesn’t build his own hammer or forge his own nails. He doesn’t design his own invoices or run his own website. He sub-contracts to a specialist when it comes time to build the swimming pool. And he buys custom site-management software to make sure his project stays properly staffed and on-schedule.
Here are a few reasons you might Buy instead of Building or Borrowing:
You will use a huge set of internal tools that are worth spending a small fixed fee or subscription rate for. Often these are things like Google Apps which you pay for by the “seat”, so they scale with the size of your workforce. Or awesome project management tools. Or web-based wireframing templates to help describe your product and rapidly iterate it.
Perhaps you have a need for a hundred terabytes of data, high-availability, and huge analytics joins across billion row tables. In that case, opting to pay six figures per year for HP’s Vertica might make great sense.
Often these special needs are closely tied to the pillars of your business, but the technical needs are so sophisticated, your custom-built solutions will sit on a foundation of commercial software packages.
Don’t want your team spending their time on ops projects? No problem, someone out there will run it for you.
I regularly use Amazon Web Services. For this very site, I pay for EC2 to run machines for me, saving me from ever having to worry about provisioning hardware or leasing datacenter space. I also sometimes use RDS-hosted MySQL. It’s not that I don’t know how to effectively manage a MySQL server, but it’s worth a few bucks to not have to do it myself, to have them run backups and updates for me, and to have 1-click access to change the size of the DB.
Paid monitoring solutions like ServerDensity, New Relic, Pingdom, and on-call systems like PagerDuty, provide loads of operational support out of the box. As a bonus, they help guide your team towards best-practices rather than having to invent that from scratch.
GitHub spares me from having to do source code backups, and streamlines collaboration for my teams without having to manage and run a centralized source code master node.
This list goes on and on. It’s the most represented on our list of recommended tools, and for good reason. Infrastructure/Software as a Service models have exploded in the last decade, and offer the biggest single reason why the initial capital costs of building new online applications has dropped so dramatically.
Sometimes you need specialty services that don’t warrant hiring internal resources. Maybe you need a new blog design template for your company blog, or a new logo design. You find a contract designer or development shop.
If you need expertise to build a custom data taxonomy of cuisines, hiring a grad student from a culinary school for the summer to do the research and produce a proprietary report for you would satisfy the need nicely.
Or perhaps you want a feature on your new blogging platform that automatically recommends content to younger readers based on reading-level of the article content. You could do a project contract with a PhD data-linguistics specialist to build you an algorithm to power that particular feature.
Consultants and Contractors are best for:
It is not a good idea to hire a contractor long-term for a role that you should be filling in your organization. If the function would be best served by a great team member, make it happen by whatever means necessary. Having a great dedicated team is a Pillar of everyone’s business.
As your company grows, all these decisions will be revisited. Something that you buy at the beginning you might decide to borrow or build once you have additional engineering resources. Something that you contract for now might become a commodity in the near future, and become better by a SaaS service, or even an free code library.
And of course development tools, software services, open-source solutions, and your access to great people are inevitably going to change over the years.
Don’t get overly wedded or sentimental about prior choices. Boldly revisit decisions as your business shifts. Lather, Rinse, Repeat.
From the popular MIT software license: THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ↩
At least not solved at Netflix scale, an important consideration when figuring out what’s a pillar for you and what isn’t. There are all sorts of things you would never build, but Google has to, like bespoke database solutions, merely because they are operating at an unprecedented scale. ↩
or PaaS, or IaaS ↩
I’ve owned and operated literally dozens of MySQL standalone and replicated setups over the years, tables up to a billion rows. ↩