Staffing an engineering team is a risky gamble that needs to be approached systematically. A lot of time, effort, and resources go into developing new team members before it's clear whether or not they are good fits for their chosen roles. Considerable amount of dollars can be wasted in establishing a person to operate at optimal productivity. Some of these costs are intangible, including loss of morale and gradual lowering of standards while there is a churn of people who aren't great in their roles. Therefore, everything we can do to raise the probability of aligning the right person for a role significantly reduces risk in terms of time, money and morale.
Let us say you have an open role for a mobile app developer on your engineering team. How could you increase the probability of aligning the right person for this role?
The answer is to focus on values, abilities and skills needed for the role - in that order. Often we primarily pay attention to only core skills needed to do the work, a few behavioral attributes and make our decisions based on that. The results are, well, hit-and-miss.
Here is my take on what a focus on values and abilities, in addition to skills looks like.
Values
This is possibly the area where the least attention is paid to, but has the greatest long term impact on the fit of an engineer to the role.
What is the value expected out of this role? Is it of more value to experiment with new tools or to refine and optimize existing ones? Is it of more value to get features engineered in a short timeframe or to build a foundation that improves longer term efficiencies? Is it of more value to respond to frequent revisions of customer demands or execute with perfection on finalized requirements?
The engineer's values need to be compatible with the value expected out of a role because our values are deep seated beliefs that motivate our behaviors. The engineer's values need not be exactly the same as required for the role, but they must be close enough to coexist.
For example, if an engineer who values in having a robust foundational framework for every app they build is assigned to a role meant to churn out new features in a limited timeframe -- they will find it challenging to get past a flawed framework to focus on feature development. They would repeatedly advocate that the framework be fixed first before new features are built. Every new feature request could potentially result in a conflict between the product manager and the engineer, who would have opposing views on what's important.
On the other hand, if an engineer who values getting features quickly into the hands of customers, is assigned to a refactoring team role responsible for ensuring the technical debt is paid down, they could lose the motivation to do great work as they might find the lack of having a direct impact to the end user unfulfilling.
Abilities
Typically, a significant number of generalizations are made about the abilities needed for a role (all software engineers need to do similar things, right? ) without enough analysis around the abilities needed by a person who would be successful in a role on the engineering team.
What are the abilities, i.e. ways of thinking and behaving expected for this role? Does it have a greater need for a quick learner or a fast doer? Does it require the engineer to see more things at an abstract level or focus on the particulars? Is high organizational skills or high creativity needed more for success in this role? It the ability to interact with diverse expertise or the ability to comprehend complex white-papers more valuable for this role?
The engineers abilities need to be compatible with the abilities expected out of a role. If the expectation is that the engineer needs to develop new abilities (not skills) on the job, then it is a likely setup for failure.
My belief is that both values and abilities of a person are unlikely to change significantly over time. But skills are learned tools, such as being able to code in Swift or to write continuous integration scripts for AWS infrastructure. Most skills can be acquired in a limited amount of time and often change in worth based on demand and supply.
How can we use this information?
By detailing the values and abilities required to succeed in a role, we can build a consistent set of criteria that can be applied for staffing the role.
We then build a set of value and ability questions that can be asked of the potential candidates for the role. People involved in the staffing process should seek answers to these questions and ascertain whether the candidate has the qualities, based on the answers they provide.
Aligning the right candidate to the role based on this process increases the probability of finding the engineer who would be successful in the role.
All I can do is borrow ideas from great thinkers in different fields and combine and apply them in interesting ways to my field of work. Each of my posts here is the result of applying what I have learned from the extraordinary professionals below. Whether you are a technology leader in an organization or if you are a consultant like me trying to help their clients be more successful - I would highly recommend reading the references below, which I have synthesized into my work and my writing.