defining the problem to solve

As a programmer, you have a unique perspective. In your work life while you’re coding, it absolutely benefits you to define exactly what it is that you’re doing, or at least how you’re spending your effort. You can really scope this down with time management tools too, if that works for you and I bet it will. Plan and execute things like figuring out your edge cases, and the MVP version of what you’re trying to do.

refining your approach, and path to solution

Then once you’ve made some headway towards your goal for the afternoon or for the day, it pays very well to now refine your efforts and make changes in smaller, more subtle, and more powerful ways. Figure out how to pin down where you’re at with:

  • solving the problem,
  • solving the problem better,
  • solving the problem more easily.
  • solving the problem more fully, and/or on a grander scale.

Once you do, you’ll be able to stop, look at everything and decide how you want to go back and solve things a different way, hopefully better, more easily, and more simply.

iterate! define and refine again

As a programmer, it’s a natural thing to have an iterative approach to things. In my opinion, this is a pretty huge advantage in life and in the pursuit of the achievement of your goals.

In my experience, an iterative approach spares me from most of what other people describe how failure feels, which sounds kinda rough; all that self-blame and instant de-motivation. When you iterate over a solution to a problem, you

  • take the current situation for granted,
  • in that moment cast no blame and instead think beyond the glaring obstacles,
  • and then solve it a better way.

it’s almost ALWAYS a cleaner and simpler solution in several respects.

what kinds of problems can you aim this towards?

You can apply this “define and refine” approach to ANYTHING in life: learning a new subject, physical fitness, being more social and connecting with others, your mental well-being, ANYTHING. Literally, all you do is:

  • define the problem,
  • figure out at least one discrete, provable end result of effort,
  • then put measurable and recordable amounts of effort towards the end goal,
  • so that you can see what sticks.

I dare you to try this approach! I promise that you’ll do better in it than if you just tried to “get better naturally” without focused effort. Imagine if you could fix bugs in your code from just console logging different values and refreshing the browser… you see? It’s not just gonna happen by itself.

Happy problem solving!