Types of Software Engineers (Part 2)
This is part two of a two-part post on the general categories of software engineers. To pick things up at the beginning, check out the first.
Big problems with lots of unknowns. Don't know where to start. Call in someone who's good at dealing with ambiguity and doesn't have a blank-sheet problem. You're in need of a Researcher. They'll dig/read/experiment from here to (some sort) of solution, but you'd better not rely on being able to put their code to use as-is. It will be the result of a million tweaks, changes, and re-jiggerings that result in a mess that only its creator can even begin to unravel.
Rare is someone good at solving big abstract problems who can do it cleanly. Don't let the researcher title make you think you need a Ph.D. Many Ph.D's will have the right sort of mind/skillset for this type of work, but it's not exclusively their domain.
The best product managers are engineers who fit, or at least know, your target audience and care. This person/role runs everything through a filter. Is this the right thing for the user? Will it make the experience better, solve the problem more quickly, and/or make an appreciable difference for the company? They won't necessarily be the strongest coder, but they have a vision for where things need to go and a knack for ignoring/shutting down things that won't help get there.
Hard to find. Even harder to interview for. Leadership is in the details. This is not a manager, it's a technical lead. They get the best out of a team and grow all of its members. They have to have enough technical chops to earn their peer's respect. People will come to with questions rather than being forced to run things by them (a la code reviews, etc.)
A great leader can recognize someone's strengths and weaknesses and help them to find a path that fits the strengths and shores up the weaknesses. They recognize roles and know how to best allocate the team in to them.
The truth is every position involves a bit of each of type and everyone has a bit of each in them. Neither people nor roles are one-dimensional, but there are benefits to understanding and being able to identify them. You'll have a happier team, less turnover, and more quality/production.
The next post in this series will start to discuss how to find and interview candidates for specific roles. As always, let me know what you think.