Doubling Down on Differentiated Code

By January 11, 2016Engineering


ShareThis has grown tremendously over the last 5 years. I’ve stopped counting the millions of domains we’re on. However, our culture continually improves and that makes it particularly fun to work here. Our culture defines what it means to be part of engineering at ShareThis. It is what makes us do what we do.

Differentiated Code

One major improvement that we’ve been hashing out recently centers around differentiated code. What is that? Put simply, it is code that adds value to the company. No one should be writing code that doesn’t add value. If we are writing a lot of code to manage MySQL instances, we are wasting time. This lost time isn’t just lost dollars in terms of salary, it’s lost time in terms of opportunity.

So what do you do if you need to manage your MySQL instance? Originally, we were committed to managing our infrastructure to defray costs and avoid vendor lock-in. This ended up being unwise. The cost of maintaining all of our own systems at scale ended up outweighing the savings that we would get by managing your own machines. In the good ShareThis fashion, we iterated! We are in the process of moving all of our MySQL instances into Amazon’s RDS. The same is true for other services: our Hadoop clusters moved to Google BigQuery, our Docker private repo moved to Docker Hub, we use EMR for special jobs, etc.

Would We Ever Do It Ourselves?

Perhaps if our company grew to a size where we wanted an operations department, it might make sense to own it – but I’m not so sure. At first blush, cost seems prohibitive. A bank of servers that costs $5k / mo is replaced with a service that costs $25k / mo. However, once you factor in people costs, the $5k / mo. becomes $30k / mo. of lost engineering time architecting, maintaining, and troubleshooting the service. This is compounded at scale, where you are spending more and more on redundancy, on call, consulting fees during crunch times, etc.

So What Do We Spend Our Time On?

So what are we doing if we’re not building out databases, pipelines, and services? We’re writing differentiated code with minimal interruptions from our infrastructure. Our engineers are instead writing application code that brings value to our publishers directly — Amazing!

If you’re interested in solving problems like this we would love to have you join our team!