Skip to content

Instantly share code, notes, and snippets.

@mowat27
Last active October 25, 2018 07:35
Show Gist options
  • Save mowat27/8490260 to your computer and use it in GitHub Desktop.
Save mowat27/8490260 to your computer and use it in GitHub Desktop.
Problem Analysis Checklist for developers

What is the problem?

  • What issue(s) have been reported?
  • What sort of abnormal behaviour have you noticed?
  • What error(s) are you seeing?

How does this problem affect your customers?

Many problems a team encounters will have a direct impact on how people use your sites. It is very important to understand how your work will affect your customers before you decide on a solution to the problem. If you don't, it will be tempting to write code that "fixes" the immediate issue but does not really improve the system as a whole. Instead of making the system better, you will have introduced technical debt that will be paid back in the form of unexpected problems or reduced flexibility later.

Sometimes, you will find that a issue that appears simple on the surface is actually a symptom of a much deeper problem and will take longer than expected to fix. In these caes, it's essential that you let your manager and/or technical lead know so they can help you find the correct solution and allocate enough time for it to be implemented.

There are an inifinite number of things that might affect customers. Here are some things to think about but do not consider it a complete list.

  • Activities a custamer cannot perform because of this problem
    • e.g. not being able to find some kind of information or not being able to buy something
  • A poor user experience
    • e.g. Missing information, broken links, missing images, confusing error messages

How does this problem affect your brand?

Some problems may not directly affect your customer, but they still are important because they give a bad or unprofessional impression of your company.

Again, the list of possible impacts is infinite and overlaps with the user experience section above, but here are some examples of the sort of thing to consider

  • Badly worded copy and spelling mistakes
  • Styling and layout problems
  • Inconsitencies between different areas of the site
  • Slow responses
  • 500 errors
  • Tehcnical errors leaking through to the user

How does this problem affect your team?

Every time you touch the code, you should leave it in a better state than you found it. Bad makes the system hard to work with and slows your team down. Examples include...

  • Confusing and badly written code
  • Bloated CSS
  • Tangled and complex dependencies
  • ... which are often caused by a lack of modularisation and/or poor abstractions

Sometimes you will run into a problem that does not have any effect on your customers but still needs to be resolved because it is slowing your team down.

Technical analysis

As well as understanding the impact of a problem on the customer, you also need to understand the techical issue. A big part of this is taking a moment to step back from the immediate symptom of the problem and looking at the system as a whole to find out where the best place to solve it might be.

Where does the immediate problem occur?

Which upstream systems might have caused the problem?

An "upstream" system is one that provides data or services you rely on. For example, if the problem occurs in a system that recieves a nightly dump of data from another system, the system that provides the data is upstream.

Which downstream systems are affected by the problem?

A "downstream" system is one that consumes data or uses a service your system provides. For example, if the problem occurs in a system that provides an API, then the systems that call the API are downstream.

Is the architecture correct?

Is the code well designed and easy to understand?

Deciding on a solutuion

What would be the optimal solution to this problem?

Is it possible?

Are there any other options?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment