From Problem to Solution: A Software Engineer's Workflow
A few months ago, I went on a trip. While sitting on the train, I kept thinking, "What if I had a diagram for solving problems in general?"
My career revolves around solving problems on a daily basis, and most of the time, I use a similar process for different problems. Below is a simplified version of the diagram illustrating how I solve my day-to-day problems.
This diagram can be applied in many different ways, even in personal life (though some parts may need modification).
Key Elements:
- I Have a Problem: Identify a single, specific problem to address, rather than tackling a batch of problems at once.
- Collect: Gather relevant information and feedback through various means such as calls, chats, emails, or face-to-face conversations. This step is crucial for understanding the problem from different perspectives.
- Idea Validation Process: Enter what I call the R&D mode. This involves experimenting with different ideas and approaches to find the right combination of solutions. It's a hands-on phase where trial and error play a significant role.
- Document It: Keep track of your findings and ideas using tools like whiteboards, Notion, or any other documentation method. This helps in ensuring nothing gets forgotten and you have a clear record of the process.
- Clean Document: This step is about distilling all the noisy data collected into concise, one-liner bullet points. It helps in clarifying the core issues and potential solutions.
- The Solving Part: Once the right problem is defined, finding solutions becomes more straightforward. Often, problems can be deceiving, and the main challenge is identifying the root cause.
Conclusion:
The rest of the solving process becomes easier once the right problem is defined. Solutions are usually quite deterministic once the root cause is identified.
💡
Most of the time, problems can be deceiving, and the key to solving them is finding the root cause.