It feels self-evident to say this, perhaps, but learning to be a programmer will mean understanding what it feels like to think like one. Everyone comes to this realization on their own, but eventually they do – there is something different to approaching the world using a “programmer,” or more generically, “an engineer’s” mindset, compared to how you might usually do things.

When asked, many programmers will say one or more of these things:

  • I look for ways to automate tasks, that I do frequently.
  • I break problems down into their smallest components, so that I can find a solution by solving each piece in isolation.
  • I ask myself, what is the computer thinking right now, and are my solutions (code) expressed in way that a computer can really get it?

It isn’t just about how you find solutions to problems, but the emotions you experience when you do find one – or many! If you find yourself cherishing the moments when you see a problem in a different light, or find a solution that is quicker to run on a computer and easier for others to understand, then you can you say that you have adopted a “programmer mindset.”

Part of that emotional journey will involve noticing “meta problems” – that is to say, problems that are related to, but are not the same as the original problem. It could be a problem about the way a problem is initially stated, or observing problems with how you are thinking about solutions, or noticing that while a solution does work sometimes, there’s a possibility that under certain circumstances, those solutions might not work as quickly.