How to Think Like a Programmer – Tips for Adopting Problem-solving Mindset Pt.2

How to Think Like a Programmer - Tips for Adopting Problem-solving Mindset

Learning to think like a programmer can be challenging. Yet, it is something that can help you greatly improve your programming skills. This article will help you learn and master this important skill. Learn to think like a programmer and become better at your craft.

How to Think Like a Programmer Part 1.

See problems and challenges as opportunities to learn and get better

In the first part, you’ve learned about the importance of being persistent and patient. These two qualities are crucial if you want to learn to think like a programmer and to become a good one. One way to make this easier for you is re-framing. Stop seeing problems as problems, as something to be avoided.

Next, what you should do instead is see problems as opportunities, opportunities to learn, grow and get better. This is what problems are. Every problem is yet another opportunity for you to test your knowledge, skills and expertise and gain new experience. What if you fail? What if you encounter problem that is above what you can handle?

This means one thing and one thing only. It doesn’t mean you are failure or fraud. It doesn’t mean you are not good enough. It only means that there is something you can learn. There is a room for you to improve your skills and get better. It means you are not as good as you can be, yet. That’s it. Nothing personal.

Learn to deal with problem, the rational way

Every experienced programmer knows that feeling when you feel you are not getting anywhere. When you are stuck on some problem that seems to be well beyond your skills. However, that doesn’t mean you should give up. Nothing can be farther from the truth. Remember what you’ve learned about giving up in the previous part.

If you want to get from beginner to advanced or veteran programmer is to keep going. You will never become a better programmer if you always run away when you encounter some difficult problem. Nor will you learn to think like a programmer. This is not a solution. When this happens, when you encounter a difficult problem there is a better thing you can do.

First, stop. Take a few deep breaths to bring back your rational thinking self. Second, analyze and understand the problem. Third, break that probably into smaller and more manageable parts. Fourth, create a plan to tackle, and solve, each of these parts, one by one. Fifth, start executing your plan.

Always tackle one piece of the problem at the time

Tackle each part of the problem individually, only one part at the time, at least in the beginning. This is important for at least two reasons. First, it will help you cope with the problem. When you tackle all pieces at once it can be overwhelming. You may not know where to start or what to do next. The result? You will get stuck.

Second reason is that it will help you learn to think like a programmer. When you make this, solving problems piece by piece, a habit you will also make it a habit to break problems down into those smaller pieces. This is crucial for learning how to think like a programmer.

This is something we discussed in part one as well. Experienced programmers think in chunks. They always look for ways to split a problem, challenge, project or tasks into small chunks. Only then, they attempt to take the next step. Do the same. Split the problem into smaller pieces and tackle one piece at the time, no more.

Tackle bigger challenges to learn more and faster

As you’ve learned, problems and challenges can help you improve your skills. With time, they can help you become a better programmer. This is why you should stop avoiding problems and challenges, and actually start looking for them. However, this process can take time. It can take a lot of time.

There is a simple way to make this process faster, to get better and learn to think like a programmer faster. Start looking for challenges, and problems, that are and the edge of your current abilities. It has to be something really difficult. Remember this simple rule: the bigger the challenge the more you can learn in less time.

Small challenges will teach only a little bit. Maybe even nothing. This is why X-year experience is often actually 1-year experience repeated over X years. In other words, why you may not learn anything new even if you put in years of work. The problem is you are not stretching yourself, your skills. Solution? Look for harder problems.

Enjoy the challenge, see it as a game

When you are dealing with difficult challenge it is easy to allow yourself to be tortured by it. Don’t. Instead, try to enjoy it, no matter how difficult the challenge is. This may sound crazy, but it is not. Think about computer games. Do you win every time? No. A game you can win every time would be boring.

Game designers and developers know this. They know that every game has to create a challenge for the player in order to be good. They also know that they can’t make it too difficult. Otherwise, it would discourage the player from playing it. So, not too and not too hard, just at the edge of player’s skills. Sounds familiar?

This can be useful for learning to think like programmer. When you face a programming challenge, try to think about it as a game. Think about it as a puzzle to be solved. In the end, the only difference between programming challenge, or just anything, and game is in how you perceive it. So, why not to see it in the same way?

One more thing. When you are done, when you win, take a moment to congratulate yourself. You’ve just finished a good challenge and learn something new. So, why not to take pride in your work? Seriously. Rewarding yourself will help you create a positive feedback loop. It will help you see challenges in a positive way, even look forward for them.

Adopt a growth mindset

This is very closely related to what you’ve learned so far. It is also important for learning to think like a programmer. So, what is growth mindset about? In short, it is about believing that your abilities and even intelligence can be developed. It is about believing that you can improve your skills if you put in the time and effort.

Adopting a growth mindset is important if you want to learn to think like a programmer. Why would you continue working on your programming skills if you believed you can’t improve them? Why would you continue solving challenges if you believed you can’t learn and get better? You wouldn’t. You might actually do the opposite.

This is what people with fixed mindset, the opposite of growth mindset, usually do. They are afraid of problems. They try to avoid them. They don’t like to be challenged. Why? They are afraid of failing. That would mean they are not smart enough. Since they believe they can’t get better, such a failure could be devastating for them.

Unfortunately, this is not true. It has been proven again and again that people can learn and improve their skills, at any age (see neuroplasticity and neurogenesis). Just because you don’t know something or you are not good at something doesn’t mean you can’t learn it, you can’t get better at it. You can.

Whether you want to learn to think like a programmer or not, adopt growth mindset. This attitude can help you get better in anything. So, don’t be afraid of challenges. Don’t try to avoid things you don’t now. Remember, you don’t know something? You can learn it. You are bad at something? You can get better at it. All you need is to put in the time and effort.

Become a lifelong student

Become a lifelong student. Or, as Steve Jobs said: “Stay hungry, stay foolish.” Having a thirst for learning will not only help you learn to think like a programmer. It will also help you keep up with the latest technologies and trends. This is something every programmer has to deal with, constantly work on his or her skills and learn new things.

The question is, how? First, make it a habit to continuously work on your skills. Don’t wait until someone tell you to do that. You are not a child. You are adult. So, be independent and do it on your own. Remember that there is always something you can get better at. Find it, find the best learning resources and learn it.

Second, explore new topics learn new things. Don’t wait until someone shows you something new. Do it yourself. Explore and try new things, frameworks, methodologies, approaches, etc. Third, look for projects that will test your skills. If you can’t find any create your own side project that will help you work on your programming skills.

Fourth, learn more programming languages. If you know only JavaScript try to learn PHP, Python, C++ or Java. Or, if you know some low-level language learn a high-level, or the other way around. These new programming languages will help you in a couple of ways. First, they will help you broaden your knowledge of programming in general.

Getting a deeper understanding of programming paradigms will help you become learn to think like a programmer. It will make you a better programmer regardless the programming language you choose. Second, learning more programming languages will make you more attractive and marketable to clients and employers.

You might not be looking for a new job now. However, this can change in the future. Even if not, it might give your employer a reason for promotion, or give you higher wage. Third, it can help you make your work fresh and interesting again. It is easy to lose enthusiasm after time if you work with the same tools.

New programming language can help you find your lost enthusiasm and passion for programming. It can make your work fun again. So, whatever your goal is, become a lifelong student. Develop a thirst for learning and always aim to level up your abilities.

Ask for help

It is just as important to know when to push yourself and keep going as to know when to stop and ask for help. When you face a programming challenge give yourself time to research it and come up with ideas to solve it. If it’s been more than few hours, and you still can’t figure it out, it might probably a good time to ask someone for help.

Many programmers believe they have to solve every challenge by themselves. This is true especially about beginners. The less experienced the programmer the more often he or she is afraid to ask for help. The problem is that you may not have the necessary knowledge or mental models to solve that particular problem.

As a result, you can’t see the solution. You don’t even think solution like that is possible. How do you want to come up with it? You almost certainly can’t. This is why it may be better to ask for help, especially if you are new to programming. Asking for help can help you learn the knowledge and mental models you need.

Be willing to ask for help, but don’t rush it

That said, asking for help immediately is not always good idea. Chances, that you may figure it out, if you give it enough time. And, if you do that, if you stick with it and don’t give up, you may learn much more than just following someone else’s instructions. I am speaking from personal experienced.

There have been times, especially at the beginning, where I would have spent hours trying to figure out a problem, sometimes even days. No matter how long it took, I persevered. Thanks to that I learned a lot of things, things I may not have learned otherwise. So, be okay with that. Be willing to struggle for hours even days.

Remember that as long as you’re still learning, and applying what you’ve learned, then you’re making progress. And, eventually, you will find the solution you are looking for. It may just require a little bit more time. So, keep going, keep trying.

Ask for advice, not a solution

When you decide to ask someone for help, ask for advice. Asking for complete solution is not a good idea. When you ask someone to solve the problem for you, when you let someone do the majority of hard work, you will almost certainly not learn much. Yes, struggling with some challenge is not something one would see as comfortable.

However, it is precisely this type of situation when you learn the most. So, when you get stuck on some problem for hours or days ask others on advice. Ask them for some tips and clues that can help you find the solution. However, don’t let them give you the solution right away. If you want to learn something is you who has to do the hard work.

Also, remember that there will be situations where you will have no one to ask for help. What will you do then? If you get used to always getting help from others, you will never be able to solve difficult challenges on your own. You will stay beginner forever. To progress, to become senior programmer, you have to become self-sufficient.

So, yes be willing to ask for help, but only for advice, tips and clues. Don’t ask for solutions. Remember, it is you who has to do the thinking and the work. Don’t let others do the hard work for you. The same applies to searching for help online. Search for tips, advice and clues, not for solutions.

Also, when you reach out to other programmers and developers, ask them for advice on how they approach challenges. This will help you learn to think like a programmer. It will help you learn new approaches, methods and mental modes. You can then apply these “tools” to various challenges, not just specific cases.

When you ask for advice, be specific

Believe it or not, most people are more willing to help. This especially true if they see you have a lot of effort and time into figuring the problem out yourself. People will be less likely to help you if they feel you are wasting their time. Relatively simple way to avoid this is by being specific.

When you ask others for help, make sure you give them good context. Remember that they can help you only if they understand what problem are you dealing with. Explain the problem, the steps to reproduce it and what you expected to see. Give them many details as you can, but keep it short and to the point.

If you’ve already written some code, share it with them. They may notice something you’ve overlooked. You might be on a good way. There might just be some small bug or typo or you missed. Or, you just need to finish or polish some piece of code and you have the solution. So, don’t be afraid to show what you have.

Lastly, be polite. When you ask for help you’re taking someone else’s time. So, be grateful and always say thanks, no matter if that person is able to help you or not. That person was willing to give you her time. This is what matters.

Enjoy what you do

Learning how to think like a programmer is easier when programming is something you enjoy. This also makes learning faster. So, look for ways that will help you make programming something you are excited about. Fr example, work on projects that you enjoy and you can have fun doing. These can be project where you are a contributor.

If you don’t have any, or don’t feel ready for it, create your own side projects and work on them in your free time. Personal projects are one of the best ways to improve your skills and also to learn new things. They can also help you experiment with different paradigms, methods and approaches to problem solving.

All this will help you learn to think like a programmer, and get better at it. What’s more, it will help you keep your creative juices flowing. In the end, as much as coding is a tool to solve problems, it is also a tool to express your creativity. This is the essence of programming, creating something from nothing.

So, set aside time to work on side projects and various experiments. Try things and tools you find interesting and play with them. All this tinkering is not a waste of time. It can help you learn new things, improve your programming skills and also get inspiration for projects you work on, or you want to start. Just have fun and enjoy what you do.

Epilogue: How to Think Like a Programmer

What are the next steps? Apply what you’ve learned today, at least one of the tips we discussed. You can start by changing how you see problems. From now on, see problems, and challenges, as opportunities to learn and get better, not something to avoid. Combine this with adopting a growth mindset.

Remind yourself that you can get better in anything if you put in the time and effort. When you get stuck on some problem, be willing to ask for help. Asking other, more experienced, programmers and developers can help you learn a lot and faster. That said, never let others do the hard work for you. Ask for advice, tips and clues, not for solutions.

Everything is easier when you find joy in doing it. So, find a way to make programming interesting for you. Work on projects you find interesting and that will challenge you. Remember that you learn the best at the edge of your current skills. So, make sure it is not too easy but also not too hard.

Lastly, develop a thirst for learning and become a lifelong student. No matter your age, stay curious. Remember that it doesn’t matter how much you known. There is always something more to learn. So, keep your mind open and always be learning. Your knowledge is your biggest advantage. It is also something no one can take away from you.

If you liked this article, please subscribe so you don't miss any future post.

If you'd like to support me and this blog, you can become a patron, or you can buy me a coffee 🙂

By Alex Devero

I'm Founder/CEO of DEVERO Corporation. Entrepreneur, designer, developer. My mission and MTP is to accelerate the development of humankind through technology.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.