I am not a big fan of learning programming through books, at least not the high-level stuff that we use in our day to day life. I think it’s a good idea to start with a book on the fundamentals if you’re just starting out, because the basic concepts don’t change very much, but after this initial phase, your approach to learning should be more autonomous and less spoon fed. When you read a programming book from cover to cover, you rely on the knowledge and opinion of one or a few people, and since technology advances very quickly, the information can be outdated in a matter of weeks. Of course the same is also true for blog articles and videos, but they are a lot shorter, so you can watch and read a lot of different ones, get input from multiple sources, see different approaches and quickly figure out which information is still relevant and what’s outdated. Also with comment sections, you have a place to discuss the topic with a lot of other people and you can usually reach the creator pretty easily.
But I am a big fan of self-help and personal development books. These are books that offer more general life advice and they are often still relevant even after decades. If you think that personal development isn’t important for technical jobs such as software developer, you are wrong. When you learn how your (and other’s) brain works, a lot of challenges in this profession become much easier.
When we grow up and go through school, we learn a lot about language, math and science and if we are lucky enough to have good parents we end up as reasonably functional social beings. But there is still so much we intuitively do wrong and the only way to evolve past this is with self-education. You have to learn things like how to cope with challenges and setbacks, how to stay motivated and focused, how to reach goals and how to really interact with other people so they deeply respect and like you (instead of just showing good manners). Those skills are rarely taught in school, but they are the real predictors of long-term success, even more than an A in math.
It’s your responsibility to educate yourself on these topics. How? Mainly through books. There are experts in each of those fields that have spent years researching and exploring one particular topic. They know what motivates humans, what makes someone likable or what predicts happiness, because they dedicated their careers to finding that out. We are lucky enough to be able to get their condensed knowledge and research results in form of books, and we would be stupid to not make use of that. In this post, we will take a look at some of them. Those are all non-technical, non-programming books, but I picked the ones that I think are particularly helpful with the challenges that we encounter as programmers. I will only refer to ones that I’ve read myself, so this list is definitely not complete. There are a lot of other great books that are worth reading, but you have to start somewhere, right?
However, I very rarely read textbooks. Not because I don’t like the experience of reading, but because they just can’t compete with the convenience of audiobooks, which you can listen to while doing other things like household chores, exercising or driving a car. Listening to audiobooks basically adds more hours to your day, which is invaluable in our busy lives. But of course it’s up to you what you prefer.
The best source for audiobooks is Amazon’s Audible and they offer a free trial where you get 2 audiobooks completely for free. So if you want to listen to some of these books mentioned here, you can use this offer:
The headline for each book in this post will be a link to the audio version if there is one available. If not, I will link to the textbook.
In my blog post about soft skills, I emphasized the importance of developing your communication and social skills if you want to work as a programmer, no matter if as a freelancer or as part of a company. In the post, I also mentioned this book and I want to list it here again because I think it’s one of the best self-help books ever written. It makes working with other people not only easier, it can even help you turn enemies into friends.
The book is so great because it’s very practical. It contains a ton of actionable tips and steps you can take immediately to get other people to like you more and cooperate with you. But it’s not about manipulation or shady techniques, it’s about actually becoming a better person yourself. It teaches you the importance of carefully listening to other people and hearing them out, admitting your own mistakes and showing empathy. There is so much we instinctively do wrong when we interact with other people. We focus too much on ourselves and what we want, we are too stubborn and we too often try to achieve our goals by sheer force and aggression. A lot of conflicts can be avoided and a lot of benefits can be gained by shifting our attitude a little bit and approaching the other person with openness, respect and a little bit of humility.
Something that I often mention in my blog post is the “growth mindset”, which is basically the practice of viewing challenges and setbacks as opportunities to grow, rather than obstacles that have to be avoided at all costs. The opposite of a growth mindset is the “fixed mindset”, which treats all mistakes and setbacks simply as “bad”, and sees skills and intelligence as genetically predefined and unchangeable. The reason why this way of thinking is so detrimental, is because it will make you avoid any challenge that could “prove” your incompetence and only do things that are easy. This robs you of valuable (learning) opportunities.
A growth mindset is absolutely mandatory if you want to achieve any difficult goal in life and still feel good along the way. And since intelligence has been proven to be malleable even at high age, there is no reason to be scared of mistakes. If you make a mistake, you learn something and get better. It’s as simple as that.
If you are trapped in a fixed mindset you can’t just flip a switch and suddenly have a growth mindset that welcomes all challenges. You have to adopt a better way of thinking step by step. The book will help you with that by providing the research together with various different examples and case studies.
If you ever wondered what my channel name is about, this book was the inspiration for it. “Flow” (also called “the Zone”) is this state of mind that you sometimes enter when you focus on something so intensively, that you forget the world around you and time just seems to fly. You are fully immersed in an activity and enjoy it for what it is, even if the task is not particularly easy or comfortable. “Flow” can turn tedious chores into intrinsically rewarding experiences.
Mihaly Csikszentmihalyi is a professor who not only studied this phenomenon his whole life, he is also who gave it it’s name. I described flow in a bit more detail in my 6 Reasons to Learn Coding Now blog post, but if the topic interests you, I highly recommend reading the book. It will help you understand how you can modify your tasks and environment to get into this state more often, which will not only make you more productive, but also happier. Programming is one of those activities that are predestined to get you into the flow state quite frequently, but only if the circumstances are right. If you are someone who works with his phone on his desk and who reacts to any little notification and message, or if you think that shallow focus is sufficient, please read this book, because you might unknowingly rob yourself from a more fulfilling experience.
This book has similarities to “Flow”, because it also emphasizes the importance of focused, distraction-free work. But instead of talking about the experience itself, it focuses on the benefits this brings to your professional life. The book explains the importance of being able to spend extended periods of time on a single project without giving in to any distractions, in order to create quality work and be prolific.
I personally like social media, but I am very careful about my usage. You have to separate Twitter, Facebook & Co from your working time, otherwise you just can’t really dive deep into a topic and you will always be inefficient in comparison to what could be.
This one is not so well know, but I think it fits very good to programmers.
A lot of people have some sort of “big project” in their head that they want to start “someday” and this is especially true for programmers. Maybe you have an idea for an app that you want to build, or maybe you want to start a blog, a website or a Youtube channel. But you keep putting it off because you are waiting for the perfect time and circumstances. Or maybe you already started something but you lost interest half way through and now you procrastinate on it. No matter what it is, starting something big and then actually finishing it is very difficult. I know it, because working on Coding in Flow is hard and throughout my life I have started and quit a lot of things.
It is ok to be afraid and procrastination is human. But if your idea – no matter what it is – seems important to you, you have to start it. If not, it will keep nagging you and one day you will regret not acting on it. And after you started, it’s equally important that you follow through and finish it (or keep working on it if it’s something in progress like a blog).
The book emphasizes the importance of starting your “big thing” and then provides tips and tactics that make it easier to cope with the stress and difficulties that arise. It talks about things like the correct posture or the best way of taking breaks. I think it goes very well together with my blog post on procrastination, so make sure to read it as well.
Ok, that’s it for my list. I would recommend reading all of them, because they really contain a lot of valuable information. Again, listening to audiobooks is much more convenient than reading, so here is the Audible trial link again:
Are there any other books you can recommend? Let me know in the comments below!