I’m a new Thumbtack engineer, but I’m not new to engineering. I joined Thumbtack 4 months ago from a much larger tech company: one that has well over 20,000 engineers and a very strong engineering culture, one whose services you likely use daily.
Thumbtack’s got a strong engineering base too: in things like peer code, code best practices, design reviews, continuous integration and monitoring. Engineering discussions here are ongoing amongst a highly engaged group of engineers and managers. And while most of the systems here were new to me, the services they’re providing are very familiar. The first months here have been both stimulating and full of change. This blog post aims to share some of that perspective while it’s still fresh: I’m like a traveler who’s just stepped off an airplane in a country where much is recognizable or has some analogue with the familiar but almost nothing is the same.
One aspect which is comfortingly familiar is that — like my previous environment — Thumbtack is very data-driven: generated by engineering systems, analyzed by data science teams and surfaced in dashboards and ad-hoc visualization tools. An essential aspect of this is the culture of experimentation: engineering and product teams are continuously trying out new features or ways of organizing our service, and measuring how much impact those changes have. Experiments occur across our mobile and desktop clients, and at all levels of the backend, and fine-grained event tracking allows us to quantify the consequences. Associated with experimentation is a strong research side of Thumbtack which influences how we architect our information (complex because of the many hundreds of service categories we cover).
My previous work environment had excellent internal tooling and systems, but the flip-side of this was that it was also something of a technological fortress: it was rare for external services to be used. Everything from the build system through code review tools to online question submission/voting during company all-hands was internally developed. Thumbtack’s engineering environment is the opposite: it’s a federation of tools, some of which are internal but most of which are commercial or open-source. Part of the adaption for me has been getting familiar with code authoring tools like git and production systems such as Docker that many readers of this blog will likely know well (but I didn’t). While some of these are established, there are others — like Coda, providing rich collaborative documents — which are very new and bring start-up innovation into our engineering workplace. The federal approach has its rough edges for sure, and includes some components that I don’t love, but I’m really appreciating the freshness of it, and the ability to swap things out for better alternatives, as we’ve just done with our on-call system.
Thumbtack has over 150 engineers, which places it in something of a sweet spot: it’s large enough to support engineering excellence across our various client and backend systems while at the same time keeping the communication burden low. I am able to spend far more of my time at Thumbtack on the rewarding side of engineering: coding and making user-visible changes, rather than large team coordination or large team debugging, and that’s a really refreshing part of the culture change. It’s not just a matter of size, but also collaborative tools (instead of long comment chains, just waggle a colorful head) as well as the engineering culture: no-meeting Wednesdays, do-not-disturb headphone policy and technical documents discussed online (rather than presenting them).
The sweet spot is true of other things too: Thumbtack is big enough to have a lot of resources at its disposal and mature enough to have strong structure; small enough that it’s easy to reach out across system lines to other engineering teams. Switching from one team to another is one swift hop at Thumbtack, and as a consequence and there is little siloization. That also means it’s easier to alter things: change happens rapidly here (sometimes too rapidly: keep reading) and there is potential for it in every direction. The service itself is evolving at clip. We’ve just held a Make Week in which new groups form outside of our normal teams, and I was easily able to make the transition from mobile client development to helping with a micro-service, switching language and reviewers en route but keeping a familiar development environment and business concepts. There is also a strong culture of citizenship here, with engineers take time off from their daily tasks to contribute to common infrastructure.
Of course not everything here is ideal; we have our growing pains. Although it’s over a decade old, Thumbtack in some ways is still behaving like a start-up: in my third week I broke an important production endpoint without even realizing that my submit was triggering a deployment and that the automated integration test and alerting system were both me – and both failed. I would have had to work much much harder to break things previously. Similarly to over-eager deployment, engineering aspects like automated testing are definitely not where they should be at Thumbtack; again a legacy of the recent past, but there is also an awareness of where many of these problems are and efforts underway to tackle them.
Thumbtack’s engineering environment is — not surprisingly — a reflection of the Thumbtack service we’re building out: sometimes polished sometimes scrappy, evolving fast, and great today with all the potential to be excellent tomorrow. That’s one reason I’m excited to be here.