A lot of my viewers are programming beginners, and I still consider myself a beginner as well. But I have already learned some things along my way, made some mistakes and observed other developers. In this blog post I want to talk about 5 tips for starting programmers that I figured out on my own journey, and which will help you progress more quickly and make less mistakes than I did. For some of these points I have separate blog posts where I talk about a topic in more detail. If that’s the case, I will put links to these posts into the text.
1. Adopt a growth mindset
I already talked about this topic in this blog post, but I want to repeat it here, because it is very important. Learning programming is a hard, daunting and at times frustrating task, and the learning process pretty much never ends, because technology is evolving fast and frameworks change constantly. Programming can also be a lot of fun and the feeling when something finally clicks (or works) is amazing. Nevertheless it is important that you can handle a little bit of frustration and don’t lose your motivation when you don’t understand something right away. For this you have to adopt a growth mindset, which basically means that you don’t see your intelligence and skills as something that is fixed and can’t be changed, but rather as traits that can be developed and improved with practice and patience. It is easy to feel “too stupid” when you encounter a hard programming problem, but you are not too stupid, you just need some more practice.
I can tell you that from my own experience. A few months ago I couldn’t even look at a block of code written by someone else that contained more than 10 lines, without feeling totally overwhelmed. But now I can read different code examples on Stackoverflow, autonomously find similarities, differences, mistakes and things I agree and don’t agree with, compare it with my own approach and this way build something that I understand and that makes sense to me. This is really a skill that can be improved with lots and lots of practice. Not from books, but from real world examples. Which brings me to my 2nd point:
2. Start building things and do a little bit every day
I have separate blog posts on this as well here and here, but it is also worth repeating in this post. You can’t learn programming just by reading books or passively consuming any other form of content. You have to get your hands dirty.
The reason I decided to go for the app development route, is because it makes it so easy to build something “real”. You can literally create your own app and even release it to the Playstore with only a couple weeks of experience. Of course it will be a simple app without any complicated features, and it probably won’t make you rich, but it is a fun way to learn programming. When you experiment and see what works and what problems you run into and how to solve them, you learn much faster than by just reading about it in theory.
That being said, I still think it’s the best approach to start with a good beginner book to learn the basics, because it can be overwhelming to learn from Google with zero experience, and the fundamentals don’t change too much over time. But after that you should rely more on Google search, blog posts, videos and everything else that focuses more on a particular topic, and apply the concepts directly to a specific feature or problem in your own project. Books look good in a shelf or in a photo on Instagram (hashtag learntocode), but they are not really effective when it comes to learning up to date programming concepts.
Also you should try to at least practice a little bit every day, even if it’s just for 15 minutes. Feed your brain with some new informations and let it process this new input in the background afterwards. Incremental progress builds up very quickly and 15 fully focused minutes before you do something else is infinitely better than doing zero in a day.
Also I think it’s a good idea to use audio material like podcasts and audio books to use “dead” time productively. This is one of the few cases where I think passive learning is good, because you can’t do anything else in this time anyways. If you want to improve your general programming knowledge while doing the laundry or driving the bus, check my blog post on that topic.
3. Ask specific questions and search autonomously
If you are a beginner, please read this part carefully.
In Facebook groups, in video comments and in personal messages I often see people asking for help with a request like this:
“When I try XYZ, my app crashes, what should I do?”.
This is not enough information to help you. In something as complex as programming, there are countless reasons your code could fail to work and you have to show some self initiative and look at the error messages in the stack trace. If you use Android Studio, open Logcat and see what the red text is saying.
But please don’t just post your whole error log somewhere and request someone else to unravel it for you. In the past I had people on Facebook sending me 9 full-size screenshots full of error messages at once, and while I love to help you guys, I can’t read through all that in my coffee break. I know, Logcat can be a a bit confusing at the beginning, because of the way it shows the series of method calls that led up to the error, but somewhere in there is usually a pretty understandable english sentence that tells you what exactly in your code caused the exception. Check this Youtube Video where I explain how to read the stack trace in Logcat. You really have to get used to it (and it’s not as hard as it seems). The reward for this is the amazing feeling that you found a bug and fixed it. The same goes for any other coding problem that you encounter.
I often say this and I say it again: You don’t want others to spoonfed you with code solutions, because this won’t make you better as a programmer. It may help you momentarily, but if you practice how to figure things out yourself, how to read source code, documentation and other examples and how to connect the dots, you can work more and more autonomously. And this feels much better than getting a solution handed over to you that you don’t really understand.
4. Take tutorials and code examples with a grain of salt
Because of my videos I research very thoroughly for every topic and concept I talk about. To be honest, If I wouldn’t make these videos, I wouldn’t put half as much effort into it as I do now. If it works, it works, right? But because of this extensive research, I can spot a lot of wrong, outdated and redundant approaches and code snippets. There are wrong informations not only in online tutorials, but even in books and on the official Android training pages, and I noticed that a lot of not-really-correct code just get’s copied again and again without anyone ever correcting it.
Everyone makes mistakes, I make mistakes, and I don’t blame anyone here. I just want to say that it’s very important that you learn how to think for yourself. Put two and two together and figure out if things make sense the way they are shown in other examples. Of course this is almost impossible in the beginning, but it gets easier with time and it is a very satisfying feeling to spot errors and improve them with your own logical thinking.
This is another reason why you shouldn’t just copy code from others, but rather ask for hints and then figure out the solution yourself. It will benefit you much more in the long run.
5. Watch out for your body
My last tip here: Stay fit and healthy and use the correct equipment. It is so easy to wreck your back, shoulders, wrists and basically your whole body, if you sit in front of the PC for hours every day.
You already know most of the recommendations: Sit straight, eat healthy, do some sports. And I would say: find a balance that works for you. You don’t have to do any of these things to an extreme level.
But I also want to give you another tip without which I couldn’t do any computer work anymore: Get 2 different mouses (mice?), at least if you have some signs of wrist or shoulder pain. Have a normal mouse that you move around, and additionally buy a trackball mouse, which uses your thumb to move the cursor. I alternate between them and it really helped me getting rid of my wrist and shoulder pains.
I don’t understand why programmers have the cliche of being not so much into sports, because I think having such a cognitive demanding job goes perfectly hand in hand with physical exercise. Exhaust your brain until you think you can’t take any more new information and then go into the gym or go for a run. Your subconsciousness will process the new input in the background. I have my greatest insights and aha-moments after finishing a workout.
Those are my 5 tips for today. They will not only help you become a better programmer, but also make you enjoy the process more. And we all want to enjoy our work as much as possible, right? That’s the goal of Coding in Flow: To make learning programming as enjoyable and frustration-free as possible.