Thumbtack Engineering Engineering

PyCon 2015: We Make You Work for Your Swag

Thumbtack t-shirts

This year, we sent 20 members of the Thumbtack team to PyCon in Montreal. We all had a great time, learned lots, and really made a name for ourselves. By the end of the conference, everyone knew who we were and that Thumbtack enables you to get your personal projects done.

We also had great swag: a comfy t-shirt, sunglasses, and a beer glass. However, unlike most other booths, we didn’t give it away for free. We wanted the PyCon attendees to work for it! For the third year in a row, we created a code challenge that engineers would have to correctly write up in Python to receive anything. At first, submissions slowly trickled in, but by the end of the conference, people were really excited to solve our problem. Some people didn’t even talk to us, just walked to our booth, picked up the challenge sheet, and walked away. In total, we got 87 submissions! And now, the beer our winners drink out of those glasses will taste a little sweeter because it’s flavored with sweet, sweet victory.

Our Challenge

When I was little, my family went to our town’s district math night. We came back with a game that we still play as a family. The game is called Inspiration. It’s played with a normal deck of cards, with the picture cards taken out. Everyone gets four cards and one card is turned face up for everyone to see. You then have to mathematically combine your four cards with addition, subtraction, multiplication, and division to get the center card. The person who does it the fastest wins.

This year, our challenge was inspired by Inspiration, no pun intended. The first part asked people to write a Python program that takes in four numbers and determines the mathematical expression that can combine the first three numbers to get the fourth. If they could solve this, they were awarded a t-shirt and sunglasses. The harder challenge was to solve the same problem, but with an arbitrary number of inputs. The number to solve for was always the last number in the string, but the total number of operands was not constant. These solvers won the coveted Thumbtack beer glass.

Hall of Fame

Most of the solutions had some commonalities. They used brute force and they used Python’s built in library itertools to create permutations of the numbers and combinations with replacement of the operators. The following solutions were my favorites:

Greg Toombs had the shortest solution, with only 19 lines of code. You can find Greg on LinkedIn.

Joshua Coats had the best commented solution. He definitely make me chuckle. You can find Joshua on GitHub and Twitter.

Robbie Robinson had one of the cleanest solutions. You can find Robbie on LinkedIn.

Thanks for everyone who submitted a solution! Can’t wait for PyCon next year!

Dependency injection... for performance?

We recently added automatic dependency injection to the PHP codebase powering our website. As we’ve said in the past, dependency injection is a good move for a lot of reasons. It leads to clearer, easier to understand code that is more honest about what it depends upon. Automatic dependency injection reduces boilerplate code to construct objects. And of course, it makes code easier to test.

But it had another benefit we weren't expecting. It made our pages load a few milliseconds faster.

speedup

Some of our dependencies are slow to construct because they need to read a settings file or because they use a library that instantiates a ton of objects. Our dependency injection framework allows dependencies to be constructed lazily, which (for most requests) means never constructing them at all. Better, faster code — what's not to love?

Ready to try out dependency injection for yourself? We made our library, ttinjector, public for all to use.

Welcome Mark Schaaf

Mark Schaaf
Mark hiking the John Muir Trail

We're excited to introduce Mark Schaaf, the newest member of our team.

Mark is joining us as Thumbtack's VP of Engineering. He previously was a Senior Engineering Director at Google, where he ran the mobile display ads engineering team and later led consumer and merchant payments engineering. Previously, he was the 2nd engineering hire and Senior Director of Engineering at AdMob, which was acquired by Google in 2010.

In his free time Mark tells us that he likes to get outside, hiking and backpacking the Sierra Nevada. Whenever the weather cooperates, he enjoys snowcamping.

Welcome, Mark!

Interviewing for Female Friendliness: Tips from an Engineer

There have been countless articles written recently about “Women in Tech”. Yet, when I think back to the month I spent interviewing before deciding to join Thumbtack, I don’t remember being at all concerned about vetting any of those companies for female-friendliness. Luckily, I ended up in a great environment, but I know other women who haven’t been so fortunate. That got me thinking about some questions that perhaps I should have asked upfront to ensure that I was making the right culture fit.

Questions About Work

Ask This: How often do people ask questions? How do people ask questions?

The right answer to this question should be “all the time.” Women, as compared to men, tend to suffer more from impostor syndrome. We believe that our success is a result of luck, timing, or deception rather than our own intelligence or competence. This can make it difficult for us to ask for help, for fear of being discovered to be an imposter. It is easier to ask for help when a supportive and humble culture is already established, where engineers are constantly asking for and receiving help from each other.

Ask This: What practices do you have in place to ensure high quality code and continued learning?

Processes for reviewing code and a culture of continued learning can be additional indicators of humility.

Specifically, look for engineering teams that:

  • Pair program: It doesn’t have to be required or happen all the time, but teams whose engineers pair with each other even a couple of times a week are likely to be teams who value collaboration. Because engineering can sometimes be an isolating profession for women, this type of collaborative environment can be great for female engineers.
  • Participate in code review: A great follow-up question here is “Why are code reviews valuable to you?” Bonus points go to the company whose engineer responds that not only do code reviews help ensure high quality code in the codebase, but they also create more opportunities for engineers to learn from each other and learn about different parts of the codebase.
  • Take online classes together, read, provide an education stipend: A culture where engineers are continually learning can help women rid themselves of imposter syndrome by reminding us that everyone is still learning and no one knows everything.

Additionally, pay attention to the tone with which your interviewer speaks about these topics. If a company encourages pair programming, but your interviewer doesn’t recognize the benefits, this is a red flag.

Questions About People

Ask This: Are there any women on the team? If so, what positions do they hold?

If the answer is no, it isn’t necessarily a red flag. Many teams want to hire more women, but there aren’t enough of us out there. In this case, you could follow up with “Is it important to you to have a diverse team? Why or why not?”

If the answer is yes, however, you have a great opportunity to speak with someone directly about what it’s like to be a female engineer at that company. Ask for their contact information so you can reach out to them if you don’t meet them during your interview. By the way, if you’re interviewing here at Thumbtack, I’d love to meet you!

Ask This: Are any engineers involved in programs aimed at supporting women in the industry? (e.g. PyLadies, Women Who Code, Hackbright, etc.)

I found out about Thumbtack because three of the nine engineers on the team (at the time I was hired) had volunteered at Hackbright, an organization that provides engineering fellowships for women. This indicated to me that Thumbtack cares about hiring more women in engineering roles.

Questions About Culture

Ask This: What kinds of things do team members do together besides work? How central is drinking to social events?

A female friend of mine recently asked this question at a company where she interviewed for a software engineering position. The response? It was something like this:

“We do a lot of things outside of work together. I actually went surfing with one of my coworkers this morning. But if you wanted to find someone to, I don’t know, go shopping with you, I’m sure you could.”

Because, you know, all women love shopping. Such gender-based assumptions would cause me to worry about future assumptions that might be made. Not all answers will give such a clear signal, but any answer should still give you a good feel for the personalities of the people you would be working with.

This question can also suss out how central drinking is to social events. I’m not saying that women don’t like drinking, but team bonding that is centered around drinking can be an indicator of a “brogrammer” culture. Here we brew beer and take mixology classes together, but even when we do those things the focus is not on consuming excessive amounts of alcohol. Rather, we do these things to learn something new, appreciate the drinks, and get to know each other better.

Besides being an indicator for culture, excessive drinking can lead to uncomfortable situations for women as inhibitions are lowered and teammates say or do things they might not have otherwise.

In Conclusion

I feel very grateful to have found a workplace that has such a fantastic culture and lacks many of the issues female developers face. Many thanks to the engineers on our team that have worked so hard to build this culture. I hope this post will help women who are currently looking for a job in software engineering, or who might be looking in the future. If you are currently looking, you might also want to check out the interview prep events hosted by Women Who Code, as well as posts like “Self Care Strategies for the Software Engineer Job Search” on the Hackbright Academy blog. Feel free to share some of the resources you use in the comments!

Brett Cannon - Python 3: Why you want it and how to (eventually) get it

From the October 14, 2014 SoMa Tech Talk series.

We were happy to host Brett Cannon for his talk "Python 3: Why you want it and how to (eventually) get it."

Brett has been a core Python contributor since 2003 and recently undertook rewriting the Python import system for Python 3. He's a big advocate for encouraging developers switch to Python 3 and has inspired us here at Thumbtack where we have been using it successfully in production for a number of months.

In this talk, Brett walks you through why you should really want to switch, some of the benefits you can get right now, even on Python 2.7, and what next steps you can work on right now to prepare yourself to switch.

Page 1 / 10 »