The Mental Stages of Programming

The other evening, I was figuring out how to implement something on a personal project. While I was working, I was also texting my thoughts to my significant other. In the span of roughly 30 minutes, I sent him a series of messages that demonstrated my mental stages of working through a programming problem in a humorous (and possibly dramatic) fashion, and I wanted to share them here.

The Five Stages of Programming

  1. “This is not as straightforward as I thought.” Even after the most thorough planning and research, it’s inevitable that some part of a project will be less clear than expected. This is the point at which I really get a better grasp on the challenge at hand. I call this stage The Sudden Realization. I promise this one has the most dramatic name.
  2. “This is confusing.” Now I know what I don’t know, but that doesn’t always mean finding the answer is easy. This is usually when I’m reading through documentation and tutorials, finding information that is close to helping me solve the problem, but I have yet to piece everything together correctly. This stage is appropriately named Confusion.
  3. “I’m losing faith that this can be done…” After some trial and error with little progress, I might start to question if my problem can even be solved with the tools I have. I don’t always go through this stage; it usually happens when I’m tired and at a point where I should take a break. This one is called Doubt.
  4. “Wait, I’ve seen it done. It must be possible.” This usually happens just moments after I question the feasibility of a solution. I realize it is truly possible, and probably less complex than I think. My morale gets a boost, and I’m ready to jump back in to find the solution. This stage is Determination.
  5. “Never mind; I got it.” Armed with a fresh supply of resolve, I am able to sit down and work my way to the end of the problem. Sometimes I feel a bit foolish when I get here, especially if my hurdles stemmed from accidentally overlooking something simple early on. With or without the foolish feeling, this is an enjoyable stage: Success.


While these are lighthearted interpretations of my mental process, they still provide some helpful reminders. First, The Sudden Realization can be minimized by spending the time to define your problem and research the tools you will be using.

Second, breaks are your friend. If you feel like you’re spending too much time in the stages of Confusion or Doubt, just walk away from the problem. Whether it’s a short walk or a chance to sleep on it, take the time to clear your head.

Lastly, when you achieve Success, remember to share some high fives, or throw your hands up in the air for a celebratory “Woo!” The more frustrating the problem, the better it will feel to celebrate your ability to conquer it.

If you’d like to share some of your mental processes or any other advice, I would love to hear from you below. Take care and happy developing!

  • Dapo says:

    Caught myself smiling while reading through this, many of us go through the stages listed and its a warm feeling to know we’re not alone.

  • Amir says:

    This is what I explain to new interns. You summed it up nicely. Sometimes it is the best to get away from the problem and let your brain do the process in backend.

  • deep says:

    bang on!!

  • Comments are closed.