The 10 Qualities to Look for When Hiring Software Engineers
June 17, 2015
Based on a Quora thread: What distinguishes a great software engineer from a good one?
Perhaps the most in-demand talent today is software engineers, as the average Silicon Valley developer receives dozens of unsolicited recruiter messages every week. That said, all software engineers are not created equal, and some are going to push your company far ahead others.
The problem for recruiters is most of them aren’t overly technical, so they don’t always know what the perfect software engineer looks like. To help, there was a Quora thread on this exact issue, and some highly successful engineering managers described the qualities of perfect software engineer.
Here is what they said:
1. They are able to balance pragmatism and perfectionism.
Great programmers have the ability to make both masterful/quick/dirty hacks and elegant/refined/robust solutions, and the wisdom to choose which is appropriate for a given problem. Some lesser programmers seem to lack the extreme attention to detail necessary for some problems. Others are stuck in perfectionist mode.
2. They aren’t averse to debugging and bugfixing.
Mediocre programmers often fear and loathe debugging, even of their own code. Great programmers seem to dive right and drill down with Churchill-esque tenacity. They might not be happy if it turns out that the bug is outside their code, but they will find it.
3. They have a healthy amount of skepticism.
A good programmer will get a solution that appears to work and call it a day. A great programmer will tend to not trust their own code until they've tested it extensively.
4. They understand what the business is trying to accomplish.
You can also call it product-awareness. Most engineers (especially the really talented ones) tend to waste a huge percentage of their time making improvements to things that won't make the slightest bit of difference in the grand scheme of things. Great engineers are aware of the fact the company exists for a purpose - they have a feel for what matters and what doesn't to the customers.
5. They know when not to write code.
This goes along with the point before. Yes, coders have to follow the plan. But sometimes the plan doesn’t make sense, and a great engineer will recognize that and make themselves heard.
After all, it’s great to write great code. But if what your coding isn’t going to push the company forward in a meaningful way, it’s an exercise in futility.
6. They have no attachment.
The best programmers are ones that can work tirelessly on a project for months, and when faced with evidence that there are better approaches, they'll be the first to `rm -rf` their code and ask "OK, what's next?"
7. They can clearly communication complex ideas.
Can the engineer explain themselves to non-technical stakeholders, as well as other engineers? Many technically proficient engineers are not considered great because they can't communicate their ideas.
8. They desire to simplify instead of making things more complex.
Hard, complex challenges are often fun for developers. Great engineers want to simplify the problem instead of building something complicated.
9. They know the industry really well.
Great engineers are extremely well informed of software efforts outside their own domain and are thus great at not reinventing the wheel. It makes them more efficient and ultimately more strategic with their time.
10. Most of all, they love to code.
Being an engineer is a great high paying job, which is why many good developers do it. Great engineers would code even if that weren’t the case. They keep their skills current, and they have the stamina to power through long hours because they are doing what they love.
* image by Mozilla in Europe