Every day, engineers are asked to make judgments that will either positively or negatively affect the health of their product. These judgments are significantly affected by the engineer’s knowledge and context awareness.
Context awareness consists of two primary focus areas, the technology context and the business context. The importance of both should not be understated. Contrary to the belief of many software engineers, not every problem requires a technology solution.
The technology context consists of the languages, frameworks, and tools available to solve a particular problem. For every choice, there is a set of associated tradeoffs. Each has its areas of strength and weakness. Making the correct decision requires an engineer to understand which criteria are important for the solution, and which technologies best support the desired selection criteria.
In the absence of other motivating factors, suboptimal engineers often use one of two mechanisms for deciding which technology to use when solving a problem.
In many cases, the solutions that result from this type of selection criteria are neither optimal or the most appropriate.
Great engineers have a broad understanding of the technology landscape. They are curious and tend to explore relevant technologies, even if they aren’t used in their organization. In addition to their broad knowledge, they have the ability to go deep into a technology to understand the subtle nuances that can affect implementation choices.
The business context is a missed opportunity for many engineers. They are often so focused on the technology solutions; they fail to fully understand the business domain. This lack of understanding significantly reduces their ability to innovate within the problem space.
They are so focused on the solution space that they think every problem requires a technology solution. However, engineers that embrace the customer mindset understand what the customer wants to accomplish. This understanding keeps an engineer’s vision from getting clouded by the available technology solutions. They realize the solution might not require technology. It could be a business process change. It could be a reframing of objectives and outcomes. It might mean abandoning a product completely.
Bob was a solution-space engineer. Henry was a problem-space engineer. Bob worked at the world's first shovel company, and coincidentally he engineered shovels. They were beautiful shovels, and worked really well. Henry worked at the world's second shovel company, but they never really thought of themselves as a shovel company. They thought of themselves as a company that helped people dig holes. While Bob was perfecting the shovel, Henry engineered an excavator. Henry was a problem-space engineer.
Great engineers understand how to measure the value of product features and what benefit they provide to their customers. They make hypotheses about customer behavior and create tests to validate them. Often, what is believed to be the root cause of a problem is actually just a symptom of a bigger and deeper root cause. This business context awareness increases an engineer’s likelihood of discovering the true problem.
Every 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.
How do you solve a situation where the business needs and the technical needs of a product are in conflict? So many engineers misunderstand the importance of technology in their role. They have a selfish understanding of technology and business value. Many see their job as a vehicle to put more technologies on their resume, which they can then leverage to get another job, making more money somewhere else (that’s the theory anyway). However, the truly great engineers realize that technology is just a vehicle to deliver business value. These engineers have a deep knowledge of the business domain, and they leverage it in ways that make the product better. Their technology choices aren’t driven by the desire to learn something new, but rather by using the most appropriate technology to solve the problem given the objectives and the constraints.
How would you implement a new framework that does [something]? What technologies would you leverage? Why? Here we are looking to discover a candidate’s knowledge and expertise around a certain class of technology problem or context.
If you could change one thing in the architecture of your current system, what would it be? Why? Does this candidate have awareness of their current technology context? Do they recognize issues? Do they put some thought into a potential solution? Or do they simply do what is asked of them without questioning what is happening around them.
If you had the choice to use [Technology A] or [Technology B] to solve problem [X], which would you choose? Why? How does a candidate navigate a problem in a given technology context? Do they understand the tradeoffs? Do they make good choices based on the constraints?
Attention 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