Software engineer Gayle Laakmann McDowell has worked for companies including Microsoft, Google and Apple, but she’s also known in the technology industry for her books, Cracking the Coding Interview and The Google Resume, offering tips and insights to people looking to land a job in the tech industry.
McDowell will be talking on that topic during a series of free events in Seattle next week. The first two, on Monday and Tuesday night in at The Easy in South Lake Union, are completely full, but as of this afternoon, a limited number of slots are still available for her talk on Wednesday evening Aug. 15 on the Amazon.com campus.
GeekWire spoke with McDowell via phone in advance of her Seattle visit.
How have things changed for engineers going into interviews, given the talent shortage? Do candidates have an upper hand, and have these interviews become easier because companies are just happy to get their hands on any engineers they can?
Not that I’ve seen. Interviews have stayed really competitive. It isn’t as much that there’s an engineering shortage. There’s a shortage of qualified engineers. There are a ton of programmers in the U.S. There are a ton that are looking for work, it’s just that there’s this gap between the people who are really qualified and talented enough to work in big tech companies vs. those who aren’t. The bar has stayed really quite high. There’s such a gap between someone who’s great and someone who’s not, and there’s such a cost in hiring somebody who doesn’t really cut it that they aren’t willing to lower their bar, generally speaking.
One thing that struck me from your book The Google Resume was that this takes years of forethought. People have got to be building their personal network and doing the right things well in advance of their first interview with any of these companies. What could someone do if they haven’t been doing those things?
For people who are looking for technical roles, there’s actually a lot somebody can do in just a month or two. One thing is to start doing a lot more coding on their own. With one weekend of work, an engineer can build a reasonably impressive project, which means that if they take three or four weekends in a month to build some software, they can develop a pretty good portfolio, and that can really make a big difference in improving their skills as well as showing that they’re somebody who really is passionate about technology.
For people who are looking for less technical roles, they can do a similar thing. They maybe can’t suddenly learn to code and build projects, but they can go and hire people from Odesk or Elance who can start building projects. And they can start really getting immersed in the tech world. Reading about startups … to really make sure they’re up to date and aware of what’s going on. The biggest thing is, just do everything you can to build a portfolio that demonstrates a passion for technology.
Biggest mistake you see in coding interviews on the part of candidates?
I think the biggest mistake is people who think that because their full-time job is as an engineer, they don’t need preparation. People don’t realize that even though they code every day they’re really out of date. They’re really rusty with a lot of data structures and algorithms. The material that interviews cover is different from what people actually do on a day-to-day basis. People really need to prepare and practice coding with a pen and paper, or on a whiteboard if they have one. That much more closely resembles the actual interview.
The other thing I see is candidates who just give up. Candidates who get nervous, think that they’re performing really poorly — which they may not be at all — and just completely give up and say, I can’t solve this, I need help. Or candidates who think that they’re done with the problem but haven’t really thought things through fully.
What about the question of how many programming languages to learn, whether you’re in school or out in the market already. Is it better to focus on one language, and know it really well, or should you have expertise in a wider variety of languages but perhaps not as deeply?
Languages aren’t that important. I would recommend that candidates know the major languages. Know Java, know C++. And then pick up one of these scripting languages, Python, Ruby, etc., or one of the more web-based languages. But it doesn’t really matter if you specialize in one language vs. working with a bunch of them. If you’re a pretty competent software engineer, it’s so easy to pick up a new language that the tech companies aren’t going to care much what language you’re working in.
The big thing there is thoroughness. Candidates who get a problem, ask questions, make sure that they really understand the problem. They don’t have to rush. It’s not a race. Get comfortable with different solutions, think through the trade-offs, write the code and think through problems. Approach it like you would in the real world. You want to make sure that you understand the trade-offs with your solution, knowing that your solution may be good but there are other solutions that may be better or worse in other ways. Just being really thorough about every step of the process.
For those of us who’ve never been through a coding interview, what are they like? How do they compare to normal job interviews?
Coding interviews are intense. They’re really different than anything else. Because of the shortage of talented software engineers, they’re very focused on whether you can really cut it at a technical level. Though a lot of companies don’t want to admit this, they’re really much less focused on who you are or how you communicate. It’s just, are you smart enough? Are you a good enough coder? It’s closer to a quiz than a normal interview in a lot of ways.
What about salaries? What types of trends have been taking place at the top tech companies over the past couple years.
The big tech companies are in something of a race to see who can offer the biggest salaries, who can offer the best perks. Google and Facebook especially have gone up a ton. The entry salary out of college is over 100k now, which is huge when you consider people aren’t working all that long of hours compared to people in other industries. Increasingly the big tech companies are having to compete not only with each other but also with all the startups. That’s making things tough for everybody.
How are these interviews different at startups, compared to Microsoft, Google or Facebook?
Big tech companies have more of a willingness to hire someone who has the aptitude and train them to be great in three or six months. Startups want someone who can hit the ground running. Startups are also willing to experiment more and do different things in their interviews. Startups are going to be more focused on what programming language a candidate knows and they’re more likely to look at a candidate’s personality because they know when you’re working on a small team, and you’re working on a startup your roles are in flux a lot. The ability to take on different tasks is going to be really important. Whereas the big tech companies are saying, OK, if you’re smart and you can code, we don’t care too much if you don’t know our current technology because we’ll teach you. The big tech companies are more focused on technical skills but less focused on particular skills.