Sunday, July 29, 2018

How the Military Decision Brief Made Me a Better Software Architect

The decision brief template provides an outline that promotes thinking of different ways to solve a problem and considering the trade-offs of different solutions.
As a junior software engineer, I tried to figure out how more senior engineers came up with design ideas I never considered. After learning about and using the course of action decision briefing template, I came to recognize that they were thinking of different evaluation criteria for a design and then proposing solutions based on those criteria. They were considering the impact to storage, memory, CPU, scalability, supportability, maintainability, security, effort to implement, and other factors I wasn't considering. Considering these different evaluation criteria would often prompt them to come up with alternative design options.
If you are able to define the evaluation criteria for your design, you will better understand the rubric you’ll be graded against before you present it for peer review.

Once you know how your design will be evaluated, you can start asking yourself questions like, “What design would be best for scalability?” or “What design would be the quickest to implement?” Thinking about how to optimize each evaluation criteria one at the time can help you generate different ideas that may not have been obvious. It is easier to come up with ideas if you have a specific problem or constraint you are trying to solve for rather than trying to solve for many considerations all at once. If you over-constrain your thinking, you tend to lose out on those creative big ideas.
When faced with a new or complex engineering problem, I find it useful to think about this briefing template and focus in on the evaluation criteria I will use to judge different software architecture or design options. Below is an outline as well as a link to a sample of the version of the decision briefing template I've used. Nowadays I use a simplified template in a document rather than slide format that focuses on each key decision, but I find the slide format useful for learning and understanding the format and way of thinking.
How to Make Cereal for Breakfast Slide
Sample Course of Action Brief
  • Purpose
  • Problem
  • Recommendation
  • Prior Coordination
  • Background Information
  • Facts Bearing on the Problem
  • Assumptions
  • Courses of Action (COA)
  • Screening Criteria
  • Screened COAs
  • Surviving COAs
  • Evaluation Criteria
  • Analysis of Each COA
  • Comparison of COAs
  • Recommendation
  • Decision

Saturday, July 14, 2018

How Foursquare Can Save You from Business Disasters

The simple four square layout can be a powerful decision-making tool. It can help you analyze a problem in two different dimensions to hone in on what is most important. The hardest thing about risk management isn’t spending time dreaming up what can go wrong. The hardest part of risk management is determining what risks need to be addressed and in what priority.

Risk = Impact x Likelihood. The higher the impact and the higher the likelihood, the more risk you have. Quantifying impact and likely can be difficult and expensive if you try to do so with excessive precision. A matrix like the below can help you roughly rank your risks relative to each other in terms of likelihood and impact. Once you have ranked your risks relative to each other, you can focus in on the High Impact / High Likelihood risks. Items in the Low Impact/Low Likelihood column do not deserve much attention. You may need to focus some attention on those high impact but low likelihood events and monitor the low impact / high likelihood events.

Road Trip Risks
The matrix above of potential adverse events plotted against the axes of risk for a road trip. While we could spend many hours applying actuarial science to calculating probabilities and impacts of each of the consequences in the matrix, we can simply use the relative estimated positions in the chart to quickly focus on what potential consequences merit planning out mitigations. In the High/High quadrant we have “Traffic jam on I-95” that we may mitigate by leaving early. You could also generate ideas for mitigating the risk of being stopped for speeding such as avoiding the urge to engage “crazy mode” in your vehicle. Having your car stolen during a road trip would be a very high impact but low likelihood event. Since it’s low likely, incurring the expense of buying a second backup car that someone else follows you around with would likely cost much more than the mathematical expectation of losing the car. But since it’s high impact, you might choose to transfer the risk to an insurance company and have a plan to use a rental car if needed.

You could also invert this concept to map out various opportunities and rank each on their probability of success and positive impact. 

This exercise can be done individually or in a group. In a group setting, I recommend having everyone write down events on sticky notes. Mark off the grid with painter's tape on the wall. Have each person place their notes in the matrix. After all the notes are placed, go around to each person to ask if they think any changes should be made and continue round robin rounds until the matrix is stable.