Dividing Problem into Smaller Pieces
Real life scenario@work. Short summary on how performance bottleneck was eliminated to enable the global deployment of handheld application.
The thought process to solve a problem, which seemed to be too big in the beginning, and no one had ideas on how to proceed. A non-technical write-up.
#1 — Problem Statement: Response time of handheld application is >1 sec, definitely not production-ready
- Big problem. The proprietary library is just not able to perform within <1 sec.
- All possible optimisations are implemented, but to no avail.
- Proprietary library is a black box, no idea what’s going on in there. It just cannot meet the performance expectation. What else can be done?
#2 — Stop looking out, look into the library instead. Don’t you realize that the library actually consists of many smaller components?
- Yes. Break it down to smaller components, and analyze each of them.
- Identify the redundant components, and remove them.
- Build your own custom library with only the required components, without the redundant ones.
#3 — Done! Bottleneck eliminated
- Response time reduced by 500ms, it is <1 sec now — ready for global deployment!
#Summary
- Understand the problem statement, and identify the root cause before trying to solve the problem.
- Breaking down problem into smaller units can help figure out the root cause.
- When we eliminate the root cause, we solve the problem.