Thriving Together: What I learned about impactful engineering at Thumbtack

Photo by Hannah Busing on Unsplash

The last few years at Thumbtack have been quite a ride, as we pursue becoming the go-to platform for people to fix, maintain, and improve their homes. We’ve built several new product features, incorporated machine learning into some of our core algorithms, and enhanced our infrastructure to support all this. Being a part of these initiatives stretched me as an engineer and taught me a lot of lessons about how I can add the most value. Among these, the most important ones include how I work with other engineers and team members. In this post, I’d like to reflect on some of those lessons and how they enhance my impact as an engineer.

Asking for Help & Feedback

Lots of people that are new to the workforce, in software engineering or otherwise, struggle with asking for help. I was no exception. At the beginning of my career, I saw asking for help as a subtle sign that I either couldn’t figure something out myself or was too lazy to do so.

Soon, I encountered my fair share of “weeks wasted stuck on a task,” because of my reluctance to get help. I even had instances when I managed to figure things out, only to find that I misunderstood what I needed to do. After more than enough of these episodes, I realized that it rarely matters whether I get help or not, as long as we execute our projects well and on time.

After spending more time at Thumbtack, I started to believe that we should consider asking for input as part of the project requirements. Even if I’m fully capable of executing a project without any help, there are so many positive externalities from asking for other perspectives/feedback that it’s often worthwhile to do so.

Firstly, a teammate could show you a better way of doing things, maybe based on a new tool they built or a pro-tip they discovered in their own project. Even if not, it can’t hurt to make sure everyone’s on the same page about what you’re building and avoid the dreaded time wasted building the wrong thing. For example, one project I drove was building a feature store to support faster feature engineering in our machine learning model retrains. My first instinct was to research feature store solutions used at other companies to model our one after. However, after asking for feedback from engineers that would be using this infrastructure, we realized that most of the benefit would come from the ability to backfill newly defined features using historical data. Armed with this insight, we instead augmented our existing data infrastructure to support this feature. This allowed us to avoid building new, potentially unnecessary infrastructure. Like in entrepreneurship, it’s important to deeply understand the problem at hand and build the minimal effective solution to that problem. Regularly asking for help and feedback from key stakeholders helps you do just that.

Lastly, even if there’s no benefit to your project, sharing context with others helps them feel ownership in the projects themselves. This spreads awareness of your work and garners allies for it. For instance, if you’re building a new microservice or piece of infrastructure, you might get more users for it by sharing your work with others.

Team Culture & Processes

Learning to ask for help and input helped me deliver more impact as an individual contributor. Indeed, early in my career, I focused on how I could make myself directly more impactful by executing projects better and faster. Aside from getting input from others, I familiarized myself with my editor, accumulated pro-tips and useful commands, and kept a backlog of quick tasks to fill my time whenever my main projects were blocked. The improvements were consistent and it felt great to see myself accomplishing more as time went on.

Eventually, I started to hit diminishing returns. One can only write so much code, debug so many issues, and perform so many code reviews in a day. Furthermore, like any other person, I had my fair share of off days where I didn’t accomplish as much as I had hoped. In conversations with my manager, we concluded that it would be more impactful to find ways to elevate the entire team. As a result, I worked to improve documentation and tools like our simulator to help new hires and teammates onboard faster and accomplish more.

Again, this approach also hit diminishing returns. After cleaning up documentation on frequently misunderstood systems and polishing various tools, I felt like my teammates generally knew their way around our systems. If not, they could unblock themselves by asking the right people for help, which is a common practice on the team.

Nowadays, I’m more interested in improving coordination between teammates and between different teams. Aside from team planning sessions and high-level cross-team syncs, I’ve found that frequent check-ins (daily or every other day) accelerated progress for small, focused, cross functional teams. During these check-ins, we’d address blockers, brainstorm solutions to issues we foresaw, and clarify who’s responsible for what. Practices like this improve collaboration, alignment, and allow us as a company to unlock projects that single teams wouldn’t be able to execute on their own.

Establishing a Vision

One way to align several individuals and teams is to present a clear vision and get them bought into it. Before, I often scoffed at “vision presentations,” thinking that they were vague and contributed little to the daily work done on engineering teams. This changed after I observed that many of the impactful projects at Thumbtack, like supporting multi-category search results or building an instant match marketplace, started with clear articulations of where we want the product to go. For example, given our vision of creating a more flexible, powerful search experience on Thumbtack, allowing search results to contain professionals across multiple categories became a logical next step.

Beyond clarifying what next steps should be, having a clear vision also helps galvanize several teams that would otherwise prioritize work independently. A lot of the most impactful features need involvement from several teams and cross functional departments. Uniting under a shared vision unlocks this cross functional collaboration. Once a vision is articulated, it becomes much easier for teams to figure out how they can make progress towards that vision through the product surfaces they own.

Lastly, when the vision is clear, everyone from managers to individual contributors can make more of the everyday micro-decisions much easier. Instead of needing to consult with product managers, who in turn have to consult with heads of product, everyone is empowered to be a decision maker, equipped with a clear understanding of where the product and company are headed.

A lot of the most significant products and systems are built and maintained by teams. Effective teams are often more than just a group of talented individuals. Cultures that encourage helping one another, processes that encourage effective communication, and alignment on compelling visions can elevate a team beyond the sum of its parts.

If you’re interested in joining a thoughtful yet fast moving team, come join us at Thumbtack!

About Thumbtack

Thumbtack (www.thumbtack.com) is a local services marketplace where customers find and hire skilled professionals. Our app intelligently matches customers to electricians, landscapers, photographers and more with the right expertise, availability, and pricing. Headquartered in San Francisco, Thumbtack has raised more than $400 million from Baillie Gifford, Capital G, Javelin Venture Partners, Sequoia Capital, and Tiger Global Management among others.

Mark is a Software Engineer at Thumbtack. This blog was originally published at https://medium.com on July 8, 2022.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store