-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix up links
- Loading branch information
Showing
2 changed files
with
84 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
[[TOC]] | ||
|
||
# Problem Statement | ||
|
||
Clearly state the problem you’re seeking to solve. This is the most difficult and most important part of the template: the problem must capture both the root technical or process concern *and* the reason why that matters. If this Problem Statement is just another way of stating the Solution Proposal, it needs to go deeper. | ||
|
||
For example, "Inter-service traffic is unencrypted" is not an effective problem statement. It doesn’t explain why this problem matters, doesn’t explain what we’re actually seeking to solve (is it confidentiality of data? Integrity of data? Authentication?), and clearly implies a solution: encrypt the traffic. | ||
|
||
Even in a crappy case where we must solve a problem because we promised auditors or clients we would solve that problem, *that is part of the problem statement*. | ||
|
||
If you’re struggling to find the right balance for expressing a problem statement, consider working with your manager to find a way to express why they should care about the problem. The [5 Whys Technique](https://en.wikipedia.org/wiki/5_Whys) is also a useful model. | ||
|
||
# Proposed Solution | ||
|
||
## Summary | ||
|
||
Explain the solution. This does not need to be a full-fledged design but it needs to be concrete and thought-through enough to evaluate how it solves the problem. Questions to consider as you write this section: | ||
|
||
* What details would a reader need to know to plan a similar implementation? | ||
|
||
* How does this solve the original problem statement? | ||
|
||
* Can this solution be simplified? | ||
|
||
* Does this solution have an expiration date or hard scaling ceiling? | ||
|
||
* Does this solution introduce new technology where existing technology might do? | ||
|
||
* How will this solution be managed and maintained by a team? | ||
|
||
## Constraints | ||
|
||
What assumptions guided you while formulating this solution? For example, many current infrastructure projects must be designed under the constraint that SM exists as a hybrid private/public cloud for the next couple years. | ||
|
||
This section should both preemptively answer many "Why didn’t you ____?" questions and help future readers contextualize decisions made in the past. | ||
|
||
# Alternative: [A] | ||
|
||
## Summary | ||
|
||
Offer a briefer summary of this alternative solution. This does not need to be in the same detail as your proposal, but does need to be sufficiently fleshed out to ensure readers are on the same page with you when discussing options. | ||
|
||
## How is this alternative superior? | ||
|
||
How is this alternative better than the main proposal? The goal of this section is to fully represent why someone might prefer this idea to ensure that this document is grounded in solving the problem rather than advocating for a technical idea. | ||
|
||
This should be persuasive. If you find yourself tempted to swap the proposal with this alternative, you’re doing it right. If you *do* swap, even better. | ||
|
||
## Why choose against this alternative? | ||
|
||
Why did you choose to go with the main proposal over this alternative? This should be an accounting of your reasoning rather than just a list of cons. What were the most significant factors in your decision? | ||
|
||
Again, this should be persuasive. Even if your audience disagrees with your choice, they should come away from this section understanding and respecting exactly why you made it. | ||
|
||
# Alternative: [B] | ||
|
||
## Summary | ||
|
||
Offer a briefer summary of this alternative solution. This does not need to be in the same detail as your proposal, but does need to be sufficiently fleshed out to ensure readers are on the same page with you when discussing options. | ||
|
||
## How is this alternative superior? | ||
|
||
How is this alternative better than the main proposal? The goal of this section is to fully represent why someone might prefer this idea to ensure that this document is grounded in solving the problem rather than advocating for a technical idea. | ||
|
||
This should be persuasive. If you find yourself tempted to swap the proposal with this alternative, you’re doing it right. If you *do* swap, even better. | ||
|
||
## Why choose against this alternative? | ||
|
||
Why did you choose to go with the main proposal over this alternative? This should be an accounting of your reasoning rather than just a list of cons. What were the most significant factors in your decision? | ||
|
||
Again, this should be persuasive. Even if your audience disagrees with your choice, they should come away from this section understanding and respecting exactly why you made it. | ||
|
||
# Alternative: [...] | ||
|
||
Flesh out at least two diligently researched alternatives. If there are others that were strongly considered, that you expect to come up in conversations about this solution, or that help flesh out your decision-making process, add them here. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters