If You Want To Be A Programmer, First Develop The Mindset Of One

Nam Nguyen
6 min readOct 3, 2016

--

Do this? For a living? Are you serious?

Introduction

So you want to learn to code? Congratulations! Should you stick with it and show your mettle, this discipline will prove rewarding — creatively, intellectually, and financially. It may not make all your dreams come true, but software development is a good enabler for many people and I hope it will prove to be one for you.

My goal here is to give a description of “the development mindset” and how it will look as you become a developer. I won’t touch here on the concrete details of what to learn as a software developer(that’s for another article); the intention instead is to describe how your thoughts will evolve as you progress in your development career from neophyte to professional.

A Learner’s Mindset

Having a learner’s mindset is one of the greatest assets you can have in software development. This mindset is an asset that will benefit you in various ways in the long run, and it is the cornerstone of a career in software development.

What, exactly, is the learner’s mindset, especially when applied to software development? The mindset consists of the following qualities:

  • A willingness to experiment
  • An acceptance that you will make mistakes
  • An understanding that your improvement will not be linear
  • Knowing that perseverance pays off

A Willingness To Experiment

Experiment! Part of learning requires the willingness to experiment with concepts you don’t quite understand. When you encounter these concepts in programming, write some code to improve your understanding. Write code that tests the boundary cases and the normal expected case of the concept that you’re trying to understand just to see what will happen. As long as you don’t do the equivalent of an “rm -rf /” in UNIX(delete everything on your computer), you will be fine. And even if you do, you’ll just have to do a reinstall of the OS. All that means is that you should have a backup of everything important on a separate thumb drive before you start experimenting. Once you’ve done the backup, be willing to take the risk of wasting time; it’s better to take 5–10 minutes to be certain than take no time and spend all the time in the world not sure of the answer.

An Acceptance That You Will Make Mistakes

Another important part of the mindset is touched on above but elaborated further here— accept that, while you’re experimenting, learning new things, and refining your understanding of pre-existing things, you’ll probably make mistakes. In fact, know you WILL make mistakes. Nothing is wrong with that, so long as you learn from those mistakes. Even though you may mess up the first try and the dozen that follow it, accept it and move on. Thankfully, life, as a developer, will keep throwing you into the same situations until you learn how to move beyond or avoid them. As long as you’re accepting of the mistakes you make, you can learn and grow from them.

An Understanding That Your Improvement Will Not Be Linear

The general path of mastery is not linear; the path is first filled with plateaus and then filled with moments of improvement, slight dis-improvement, and then settling on a plateau higher than one you were on before. Because of this path, you shouldn’t chase after immediate victories nor get discouraged by immediate failures; in the long run, you will be better. Just keep practicing and learning.

An Unwavering Commitment To Perservere

Software is hard. Really hard. You will fuck up. Sometimes badly. Millions of dollars badly(hopefully not). You must keep trying if you choose to be in the game. Bad things will happen, but you must keep going. At one point, someone working on Crash Bandicoot for the PlayStation took SIX WEEKS to find the source of a bug within the game; turns out, the issue wasn’t even in the game, it was in the hardware. Sometimes, you have to have that same level of commitment if you’re going to get anywhere. Also, sometimes all you need is a different approach. However, at the end of the day, you still must choose to approach.

The Programmer’s Mindset

In addition to a learner’s mindset that a developer must have, one must develop a triple faceted mindset specific to development; honing these three aspects of your mind will help you go far in your journey as a developer.

  • Reading And Understanding Code
  • Attention To Detail
  • Problems Solving

Incidentally, the order in which I mentioned the above aspects is also how you should expect your mindset to develop specifically in regards to being a developer.

Reading And Understanding Code

First you need to learn to read and understand code. To an untrained person, this is difficult; code can look like gibberish. To make the transition, you must understand that code is simply instructions for a computer. Once you understand this, find a book in your language of choice and start reading for an example. Typically, the book will present the simplest instructions possible: code that is generally read top-to-bottom, left-to-right. Look at it slowly until it clicks. Personally, it took me about a week of reading simple code before I could understand what the program did.

Paying Attention To Detail

Then you need to start paying attention to detail because details matter with computers. Computers are simple machines. As a result, simple minutia mistakes are still mistakes you have to deal with. There will be moments where your logic is in the wrong order, or, even simpler, you have indentation or a semicolon missing.

Problem Solving

Last, you need to learn how to solve problems in a logical, coordinated fashion. There are a variety of problem solving methods; for example, there is divide-and-conquer, there is the technique of solving a similar, but easier problem, small-chunking, and so on. Regardless, you learn by observing how other problems similar to the problem you are working on are solved, much like in math; innovation is incremental.

If you get stuck, I suggest Free Code Camp’s algorithm: Read-Search-Ask. If you’re stuck, read the error and related documentation. Still stuck? Search for information online. Still stuck? Find a mentor online or in person and ask.

A Crafter’s Mindset

Software development is a skill, a craft; like every skill, every craft, this means one can learn it, and one best learns it through consistent practice. As a result, you should take a long term view towards your journey into software development and make software development practice your mental home. I’m not saying it has to be your favorite thing in the world; however, if you’re doing it to pay the bills, you should be happy to be developing software, be willing to do it on a consistent basis, and try to improve at it.

In addition, throughout your practice, do not revel in the victories you achieve or the failures you suffer. Learn from both, but don’t revel because both are simply part of the process. Appreciate the beauty that a sunrise and a sunset brings, but don’t get hung up on it, for they are normal parts of the day and they will come again. Likewise, with a breakthrough you make or a setback you encounter; both will happen again in some form and you have to move on as part of your practice.

Conclusion

That’s it for this article, I hope you gleaned some insight into how a software developer thinks, and now have a roadmap as to the direction in which you should transform your own mind so that you may become an effective developer.

--

--

Nam Nguyen
Nam Nguyen

Written by Nam Nguyen

Former web developer and self help enthusiast. Then diagnosed with Schizoaffective Bipolar disorder. Now trying to rebuild my life.