The Most Appropriate Solution Selection Pattern
What are Soft Skill Patterns?
Software developers require strong soft skills to effectively solve many of the problems which we face.
Peter F Drucker, the famous management educator, tells us that “Doing the right thing is more important than doing the thing right.” Intuitively this adage makes sense. For programmers, is there any value in building a great product that no one wants?
Soft skills, which include communication, team-work, and problem solving, define our ability to “do the right thing.” Our hard (technical) skills can only help us “do the thing right.” Our soft skills are therefore, arguably, more important to our effectiveness—our ability to deliver value—than our hard skills.
Ever since “The Gang Of Four” gave us “Design patterns : elements of reusable object-oriented software” in 1995, software developers have understood the benefits of well-known patterns. We know that, whilst no two problems we face are ever identical, recurring themes are often identifiable.
Once we identify such themes, we can turn solutions that prove effective into defined reusable patterns. These patterns not only help us solve common hard skill problems effectively, but also reduce the time it takes us to make a decision and increase shared understanding of the solution.
So, if we can benefit from patterns that solve hard skill problems, can we do the same for soft skill problems?
Let’s look at one of the reusable patterns we can use to help us find the right solutions to “do the right thing” problems. We’re going to walk through the “Most Appropriate Solution Selection” pattern and discuss how to use it effectively to help us build and use soft skills while making good decisions.
Why This Particular Pattern?
If you want to deliver better solutions that are understood and supported by more people, and waste less effort getting to that better solution, you should use the “Most Appropriate Solution Selection” pattern.
As software developers, so much of the work we do and the decisions we make could be performed in several different ways. And of course, there is almost always someone ready to say: “you should have done it like this,” and probably someone else asking you “why didn’t you do it like that?” Sound familiar?
This pattern will help you select the most appropriate solution to a complex problem with multiple possible solutions of varying suitability.
Whilst there is no way (that I know of) to ensure you always choose the perfect approach, if you follow this pattern, it will help you make better decisions.
What is the “Most Appropriate Selection Solution” Pattern?
The “Most Appropriate Solution Selection” pattern is a way of outlining all the possible solutions, and each of their pros and cons, then using the gathered information to make a shared decision with buy-in from all the stakeholders.
At its heart, it’s not just a way to pick a plan of action, it’s a way to build shared understanding so that more people understand and support the solution.
How to Use the Pattern
Let’s take a look at how to use this pattern, step-by-step. You will find each of these steps in the pattern definition diagram above. I’ll highlight the primary soft skills used in each step, too.
Step 1: Define a problem or task
This is the entry point to the pattern. You have identified a problem that you need to solve and you think there are a number of possible valid solutions.
Step 2: Identify potential solutions
During this step you will use your analytical thinking skills to identify and list possible solutions to the problem. You are not yet trying to compare or select solutions and should avoid attempts to do so.
The output of this step is a list of potential solutions each with an identifier (“Solution 1,”etc.). You will also need to provide sufficient detail for each solution so that they can be compared later.
Consider including the “do nothing” option when identifying solutions. In many cases, the current state could be considered preferable to all the “do something” solutions. By including it, you ensure that there is a discussion on whether any of the alternatives are more appropriate than the current state. Where I include “do nothing,” I typically name this “Option zero” to clearly distinguish it.
Step 3: Compare the pros and cons of each solution listed.
After identifying the potential solutions, the next step is to perform a comparison of their relative merits. This step should not result in the selection of a solution, or even identification of a preference. Selection should only occur later in the process when the full context of the decision is established.
During this stage you will apply critical thinking skills to list the pros and cons of each solution. These should be recorded on a Table of Options. The table displays a row for each potential solution. There are four columns: Identifier (name), Description (a short description, emphasizing the differences between the solutions), Pros, and Cons.
You are listing the comparative merits on the table. It does not, therefore, add any value to include merits which are common to all options. For example, if all solutions require purchase of the same third party product, adding this fact as a con for every solution would not be useful.
In some cases it will be useful to emphasize a measure of the difference. For example, “Solution A is around five times more effort than solution B.” When using language that indicates a measure of a quality, be sure that the statement is objective. Quantifiable measures will typically be useful, but avoid subjective statements as they can have a less clear meaning. Consider “more expensive” to be more objective than “much more expensive”.
It is very normal for a pro for one option to be a con for another. For example, if Option 1 is “half the cost” of Option 2, then Option 2 is “twice the cost” of Option 1. Listing both sides makes the comparison clearer. Where there are three or more potential solutions, be sure to state which solutions you are comparing. The following would be clear:
- a pro of A: A is the cheapest
- a pro of B: B is cheaper than C
- a con of B: B is more expensive than A
- a con of C: C is the most expensive
It is critical that you record the merits with honesty and integrity. If you are consciously exaggerating merits of one solution over the others, you should challenge yourself why. Avoid tipping the scales one way or the other if you really want to identify the most appropriate solution.
Step 4: Make a selection through discussion with decision makers and subject matter experts
Now that you have a list of potential solutions along with their relative merits, it is time to select the most appropriate one. This pattern will only be effective if you have completed the identification and comparison stages as described.
This step is the most collaborative stage of the process. Arrange a meeting with the key stakeholders, decision makers, and subject matter experts to discuss the Table of Options you have created. Send the table to them in advance so they can review it. Deter any attempts to select an option ahead of the meeting by email or other conversations.
Start the meeting by re-confirming the problem that you are trying to solve. Reach consensus on the problem before looking at the solutions. Now use your presentation skills to briefly describe the options and their merits. Typically at this point the attendees will raise questions, pronounce judgements and, most valuably, provide contextual information to the group. This context is the final ingredient that allows the group to select the most appropriate selection. Use your facilitation skills to capture this context. For example, one of the attendees could say: “Well it’s critical we get a solution by next week otherwise…” The context awareness gained, in this case, is that time to delivery is probably more important to following long term strategy.
In a different meeting you may hear: “…we need this version to be really stable as the users are getting frustrated with all the issues.” Again, this statement gives a clear context, which will drive the decision. Re-state and capture this context to the group—ideally write it on a whiteboard where everyone in the meeting can see it, giving them a chance to challenge and understand it.
Once context has been captured, the most appropriate solution is frequently obvious to all. If not, go through the options again and relate them to the context you have gathered.
You might say something like: “so it seems Option A isn’t appropriate as it will take a long time to deliver.” On occasion, you reach the most appropriate solution by eliminating the alternatives.
Try to influence the meeting to a positive conclusion. If you can’t reach full consensus, consider accepting a majority vote or ask a key stakeholder to decide. There is not likely to be a better time to make a decision than now.
Outcome 1: Most appropriate solution selected
By following the pattern, you will have selected a single solution which is deemed to be the most appropriate given the current context. Preserve the final table of options in case you want to refer to it again in the future.
Outcome 2: Shared understanding gained
It has been a team-effort to arrive at the decision. The process described by the pattern naturally spreads the knowledge and understanding of the problem and the solution to many people.
You are likely to benefit from this process in a number of ways. It is common, for example, for decisions to be challenged by people who were not involved in the decision making process. This pattern involves more people in the decision making than other approaches, so the likelihood of challenge is reduced.
Also, the decision making team is likely to include a number of people who will be involved in delivering and using the solution. These people will benefit from a deep understanding of the solution gained through early engagement, along with satisfaction that they were able to influence the decision making process.
The Pattern in Action
Ash is a software developer on a team responsible for building a data store, which collects data from many areas of the organisation. They extract data from many source systems, databases, and files, transform it to conform to their data model, and then load the data into that model (a classic ETL process).
Ash has been assigned the task of setting-up a new regular data feed of transaction data from System X into the data store. After some quick analysis, she notices that some of the data from System X looks different to the rest and won’t fit into the existing data model. What should she do with the anomalous data?
Let’s look at three alternative approaches she could take.
Approach 1: Ash deletes the unexpected data. Without discussing the problem with anyone, Ash decides that the unexpected data doesn’t look very useful and certainly doesn’t fit into the existing data model. Her task has been estimated to take just two days and there is no way she can load the extra data in that time. She is, however, reasonably confident that she can add some extra code to delete the unexpected data and do the rest of the work needed, roughly within the two-day estimate.
Approach 2: Ash talks to the System X experts. Ash decides to talk to the developers of System X. They advise her that the anomalous data represents cancelled transactions, so it probably isn’t needed as she is loading (non-cancelled) transactions. They also tell her that it is easy for them to remove the cancellation data from the feed, rather than her adding code to delete it. Ash is very happy to accept their help as it means she no longer needs to do the extra work. She can complete the task in the planned two-day estimate.
Approach 3: Ash follows the Most Appropriate Solution Selection pattern. Ash realises the task is a little different than what was planned. She doesn’t think she has enough information to make the decision herself, so she decides to follow this pattern. As with Approach 2, Ash talks to the System X developers, which helps her get a better appreciation of the problem and its possible solutions. Instead of making the decision herself, however, Ash puts a Table of Options together. She then arranges a short meeting to discuss it with a few of the usual decision makers. Ash wants to benefit from their knowledge, and also ensure they have an opportunity to influence the decision.
During the meeting, Basil, the team’s product owner, says, “I think there is an Option 3: Load the cancelled transactions into the data store.” Basil advises that the cancellation data is very useful and they certainly want to capture it in the store. Ash adds Option 3 to the table and they record its pros and cons.
The meeting unanimously agrees that Ash should follow Option 3, because the data is so useful. It will take longer to complete the task than the original estimate, but the outcome is much preferred. Everyone leaves the meeting smiling.
Ash records the decision and the table of options in the team’s work-logging system. After completing the task, Ash receives a “thank you” note from Basil, who was really impressed with how she led the group to reach such a great outcome. In his note he remarks “It reminds me of that 7 Habits book, when it talks about synergy: two heads are better than one.” Ash smiles again—she loves delivering great value.
Anti-Patterns: Pitfalls to Avoid
In the example, the pattern worked out well for Ash, but there are some important things to acknowledge when incorporating this pattern into your decision making
The “most appropriate” solution isn’t always the “best.” You will notice this pattern isn’t called the Best Solution Selection pattern. The word “best” can get in the way when we’re trying to make the right decision.
Consider this question: which of these subscriptions to an online service is the best: Free, Standard, or Premium? It’s entirely subjective. Many would answer Premium as it gives the most features. Others would say Free as we don’t need to pay for it.
If instead “which is the most appropriate?” was the question, the majority (hopefully all) would respond “well, it depends…” It’s the same with choosing any solution. The most appropriate solution depends on the context. Sometimes it will be the most expensive and feature-rich solution. Other times it will be the cheapest and most feature-poor solution.
Collaboration is critical to effective use of this pattern so that the context is gathered from, and shared with, the group. With limited collaboration, the true context may not be established, and therefore a sub-optimal solution selected.
Avoid premature preference. For this pattern to help you, you need to be honest with the pros and cons of each solution. It is very easy to hold a premature preference for one solution and over-emphasize its pros or the alternatives’ cons.
Don’t let yourself jump to conclusions as it is likely to lead to one of two situations. Firstly, your bias may be spotted by the other decision makers, which will affect their opinion of the whole process and probably you. Alternatively, your bias may not be noticed, which might lead the group to a sub-optimal solution.
Keep an open mind and assess each solution honestly and with integrity. You want to delay the selection of the solution until after the merits have been assessed.
Be aware of personalisation bias. When identifying potential solutions, it is quite common for more than one person to suggest alternatives. That is great, but avoid calling them “Charlie’s idea” or “Dinesh’s solution.” Stick to “Solution 1” and “Solution 2” (etc.).
As soon as a solution is intrinsically linked to a person, you risk personal, political, or protectionist bias clouding evaluation. For example, if Dinesh is a senior person, attendees could be biased (even subconsciously) towards “Dinesh’s solution” in an attempt to curry favor.
Similarly, Charlie is likely to be very biased towards “Charlie’s Idea” since the human urge to be right is strong. These biases can easily lead to a sub-optimal solution, so it is important to avoid them.
Record all solutions that have been proposed. During one selection meeting I was running, an attendee proposed a “new” solution. I told her, “We did consider that approach, but we didn’t see it as viable so we haven’t included it.” She reasonably asked, “Why isn’t it viable?” I couldn’t remember on the spot, and her suggestion appeared quite appropriate in the light of more context. I could have avoided this uncomfortable position by including the alternative in the initial list. This situation taught me the value of recording and presenting all options that have been proposed, even if they were deemed nonviable.
Preserve the final decision. One benefit of this pattern is that the process naturally records an important decision and the reasoning. It is quite common for decisions to be questioned or revisited later. If the Table of Options is preserved, it can be used to assist with these queries. If the output isn’t retained, then it cannot add any further value.
Most development teams will have a knowledge store, or a work logging system. These are the perfect places to retain the Table of Options and notes of the decision made.
Making Decisions Simpler
It all comes down to finding a way to make our decisions simpler. Making decisions simpler makes us more effective at our jobs and our lives, and helps us to constantly “do the right thing.”
We can use patterns to solve problems related to soft skills (communication, teamwork, problem solving) just as we use them to solve hard skill problems.
Consider the potential value of soft skill patterns, and give the Most Appropriate Solution Selection pattern a try. I hope if you find it works for you, you’ll consider giving other patterns a try, too.