Problem solving is a key aspect of software engineering. There are always multiple solutions. Each solution has strong- and weak points.
When discussing which solution is the best, other details pop up. At that point it’s can be very useful to ask the following questions:
- Is the problem that you’re trying to solve even a problem?
- Should the problem you’re trying to solve even be solved?
- Is the problem that you’re trying to solve the real problem?
Today I had an interesting challenge when commuting back to my house. The start of my journey was perfectly normal. My train was waiting for me at the expected platform, went at the expected time in the expected direction. Once we passed the second station the train stopped. There was a big disruption and all the trains in the province had stopped.
So, what to do? Wait until the trains are allowed to depart? Go to my house through an alternate route? The quickest alternative was to take a bus back to the train station I left from (45 minutes), and then take the bus to my house (54 minutes)*.
Neither option was very attractive. To wait at the train station without knowing how long I would have to wait, or to take a very long ride with the bus. At that point I realised, the problem was not getting home. The problem was how to still have a nice night.
So, I went to the cinema. Saw a nice movie. Once I got back at the train station, the disruption had been fixed and there was a train waiting for me. I love it when a plan comes together.
* Normally my train ride takes 31 minutes. So that’s a lot of time.