Mastodon

Why Problem Solving Is The Most Important Skill

Thought and idea

For me, a software engineer who has a rigorous, clearly articulated problem solving approach will always impress me, especially if they can use some ingenuity when developing a solution.

As a software engineer (SWE) interviewer at Google, I’m trained to assess software engineering talent. I also work an an interview coach to prepare candidates for the tough interview process. A typical SWE candidate has to endure between four and five 45-minute 1-on-1 interviews with different engineers. They have to do well enough to convince a separate slate of reviewers that they are a good technical fit.

Only a small fraction of the millions of people that apply to Google each year get in. Given the quality of folks I have the pleasure of working with, Google does a good job of finding impressive engineers.

Now the thing that impresses me the most about a good software engineer is exactly the thing for which Google screens. It’s their ability to look at a problem, break it down into its component parts, define an optimal solution, brainstorm ways to achieve that optimal solution, and then pick the best approach. There is rigor and discipline in how they approach most problems. And because they know their tools so well, they can apply that knowledge to solve a problem in clever ways (e.g. using a bitmap to sort an array of integers, implementing binary search in reverse when you don’t know the size of the thing your trying to search).

Sometimes you can distinguish engineers who are good at problem solving by their resume. They don’t speak about their past work merely in tools and frameworks. They talk about solutions and measurable results. They talk about their impact to the business or to their users. They can show how what they do fits in the big picture, and that the languages and platforms were means to a greater end.

Good problem solvers also tend to have solid communication skills too. They are able to convey in clear terms how they are thinking about a problem. I love a good chat with my coworkers about a challenging issue. We ask the dumb questions. We state our assumptions and presuppositions out loud. We riff off one another. We come up with solutions that sound absurd. We come up with others that are weird but plausible. There is mutual respect and a mutual interest in doing the right thing.

I believe most software engineers who apply to Google see the interview as just a test of knowledge about algorithms and data structures. And while it definitely involves those things, it’s much more about how one uses those tools to solve problems in a rigorous, clear, and understandable way. If you can show me that in the interview room, then I know you’ll be able to do that on the job.

Generally speaking, I would rather hire someone who can demonstrate a disciplined problem solving approach and doesn’t know anything about a red-black tree than someone who knows what it is and uses it to solve the wrong problem because they didn’t think to ask the right questions in the first place.

If you’re curious about a good problem solving approach for technical interviewing, I’ve got an article on my website that is worth a read.

This article is my answer to the question “As a software engineer yourself, what characteristic of another software engineer impresses you the most?” Originally posted on Quora.