This question has occupied much time in my thoughts over the past several years as I’ve continued to flesh out ideas around my three-dimensional approach to assessing talent (skills, competencies, characteristics), I’ve wondered about the distinction between competencies and characteristics. Are they the same? Are they different? Is the distinction important? At times, I’ve considered them as part of the same category. However, though the distinction is subtle, the two are not the same.
I finally had an epiphany that helped me understand the difference. I realized that skills are used to accomplish the
‘what’. Competencies influence ‘how’ we accomplish what we do. And characteristics help define ‘why’ we do what we do.
(Skills, Competencies, Characteristics) = (What, How, Why)
Does it matters whether we know why an engineer does what they do? It not only matters, but is vital to predicting their success in the role. When surveying engineers, you’ll find some love the challenges provided by their career choice, others hate it, and the rest are anywhere on the spectrum between these two extremes. It should come as no surprise that the best engineers love their job and have the requisite competencies needed for excellence.
I first formulated the three-dimensional approach to talent assessment while working for a large banking organization. To say this approach is unique wouldn’t be entirely accurate, as most organizations employ some sort of behavioral assessment during the interview process. These behavioral interviews incorporate both characteristic and competency assessments. However, there were two things that I did differently which significantly improved the interview process.
The sections below describe the characteristics I’ve found to be critical in predicting great software engineering talent. Each section also contains a link that describes each area in much greater detail, and also includes a number of questions that can be used to assess each of these characteristics.
A software engineer’s primary responsibility involves solving problems. For each problem encountered, there’s a set of real or artificially imposed constraints that make the solution difficult. It is critical for an engineer to use analytics, logic, and reason to draw meaningful conclusions from ambiguous data. Constraints are imposed from a wide variety of sources. They may be in the form of cost, performance, customer, deadline, quality, environmental, etc.
Assessing Problem-Solving Capabilities in Software EngineersThe work of a software engineer frequently involves the need for long periods of intense mental focus and concentration. Whether it’s designing a new platform, implementing a new framework, fixing a complicated production issue, or learning a new programming language, a software developer is under constant mental taxation. The fast-paced environment can be stressful for many engineers and the rate of employee burnout in the technology industry tends to be quite high. Intrinsically motivated engineers are drawn to the profession because they love to solve challenging problems, they enjoy learning new things, and they are fueled by the numerous opportunities to increase their knowledge and skills.
Assessing Intrinsic Motivation in Software EngineersA software engineer’s context changes extremely rapidly. New technologies and frameworks are introduced continually. Developers must devote significant time and energy to learning activities just to stay relevant. Because the pace of change is so rapid, engineers who are learn quickly are better equipped to leverage the changing context.
Assessing Learning Aptitude in Software EngineersThere’s a silent killer on the loose. It’s the killer of productivity which results from low team morale. It takes on many shapes and it’s often reincarnated in the form a self-serving team member who puts individual needs and desires before the needs of the team. It knows not the boundaries of gender, race, religion, nationality, or technical competency.
Assessing Humble Team-First Attitude in Software EngineersThe story of a software engineer’s motivation, aptitude, and desires can often be played out between the lines of their resume. While it frequently requires some digging, buried between the wood fibers and ink is a tale of successes, failures, accomplishments, and disappointments.
Increasingly significant accomplishments over time showcase a motivated engineer who loves learning and has the aptitude to take on progressively more complicated tasks and responsibilities. These accomplishments demonstrate not only technical aptitude, but leadership and influence, and often result in significant organizational impact.
Accomplishments of Increasing Impact in Software EngineersThe practice of software development frequently requires complex thoughts to be conveyed from one engineer to another. Transforming a concept into a design, and then a working implementation requires that multiple developers share their ideas in ways that are easily understood.
Engineers must effectively communicate with all audiences. As technology provides development teams with exponentially expanding volumes of information, the ability to filter, distill, decipher, and convey information becomes increasingly important. Those who lack communication skills will be forced to improve, or risk becoming irrelevant or obsolete.
Assessing Communication and Articulation Capabilities in Software EngineersEvery day, engineers make decisions that can significantly affect the success of a product. It is important for them to fully understand the context in which they are making these decisions. This includes the technology landscape, the customer needs, the problem space, the constraints, the risk, and the potential opportunities. Judgment calls frequently need to be made, and without the appropriate context, the likelihood of a poor decision increases significantly.
Assessing Judgment and Context-Awareness in Software EngineersThe operation of a software team is a fluid situation. Technologies become obsolete, frameworks come and go, and process methodologies are continually changing. This environment creates numerous coaching opportunities for both teams and individuals. The willingness to accept coaching is a key characteristic of any great engineer.
Assessing Coachability and Accountability in Software EngineersSoftware Craftsmanship is the art of knowing what is beautiful, and caring enough to make it so. Problem-solving abilities don’t necessarily equate to craftsmanship. Code that has been crafted by an engineer who cares is much more maintainable, readable, less convoluted, more easily understand, and significantly more pleasurable to work with.
Assessing a Software Engineer's Propensity for Software CrafsmanshipAttention all leaders of software teams! Are you interested in discovering a consistent framework for evaluating software engineering talent?
The most important responsibility for a leader of a software development team is to hire the right talent. Hiring the right team will make you look good, regardless of whether you have any faults and weakness. However, if you lack the ability to properly assess engineering talent, it is highly likely that you will fail.
This book will help you conduct a complete talent assessment of interviewees without focusing too heavily on a candidate's skills and knowledge and will help you to:
It doesn't matter if you are the best leader in every other way, the universal truth in software engineering is that you can't lead poor talent to do great things!
But with this book you can eliminate having poor talent in the first place and make sure that only the best people work for you. Every time