A lot of people don’t really know how to start learning programming. They don’t know if they should read books, watch Youtube videos or buy online courses for money and they often seem to get stuck.
Now, people have different learning styles and what works for me obviously won’t work for everyone, but I will also try to take general recommendations, that I read often, into consideration in this post.
So this is what I did as a complete beginner, and what I would do again if I had to start over:
1.Read a good beginner book for the basics (or buy a beginner course)
Books are not dynamic, not interactive and they get outdated, whereas on the internet you can find up to date results to specific questions if you search properly. But when you know absolutely nothing about programming, I think it’s a good idea to pick a beginner book with good ratings and read it through. That’s what I did. But I did NOT do all the exercises in there, if I felt like they slow me down or if they simply were to boring (which would also slow me down, because I would procrastinate). I don’t know if that’s a good approach, but my thought process was, that I had to get to get through a beginner book as quickly as possible, to get an overview over the topic and then build upon that. I knew that I wouldn’t remember a lot of it anyways. At least not enough to actually apply it. But it would help me to get to know all the important basics. There are so many nice things to build, especially in Android development, that you don’t have to waste your time with boring examples.
The book I bought back then was “Head First Java” and i really liked it, because it explains concepts in a more playful and fun way and really knows how to use different resources to make it stick as best as possible. They also have an Android version of their book.
Alternatively you could also buy a beginner video course. I think its worth it to spend a few bucks on a good book or course when you just start out, because searching everything yourself could overwhelm you as a beginner and there is a ton of outdated and wrong information out there. And especially in the beginning this can be very overwhelming. In books and courses, someone else did the work to condense the important knowledge for you and sort it in an understandable way.
2. Start building things, google a LOT and ask (good) questions
This point overlaps all the remaining steps and you don’t ever stop doing this. But it is important that you start early. Build actual little projects, like apps. It’s simply the best way to learn. Reading something in theory won’t stick in your head, you have to apply it. And especially in Android programming it is so easy to build something “real”. Something you can put on your phone, your mother’s phone or even on the Playstore and people can actually use and interact with it. 2 months after I started learning Android programming I had my first app on the Playstore. Of course it wasn’t very good and the code was badly written, but it felt amazing nevertheless. On the way to finishing your project you will go from one problem to another and you will have no clue how to get your code to do what you want. But you can basically find all the answers you need on Google and especially on Stackoverflow. And if not, you can ask the question yourself. But watch out, Stackoverflow is very painstaking about their question and answer quality. You should only ask there if you can’t find your answer after extensive search. There are some places to ask more basic questions without people complaining, like the Weekly Question Thread on reddit.com/r/androiddev. But your questions should not be too general. Don’t ask how you can build “app xy”, ask about specific problems you encountered while trying to add a feature.
And this process of facing a problem, searching for the answer, solving the problem and then getting to the next problem is what makes you learn so effectively. You don’t look for theoretical concepts, you want answers that you can actually apply in real situations. And you will remember these things much better than what you read in books. When I see a question somewhere for which I know the answer, then it’s always about something I have actually used before and never about something I just read somewhere.
What I also love so much about learning by doing is, that it is so easy to immerse yourself in the process. If you are like me, you can read a book for like 15 minutes before you start getting tired or distracted. Maybe even less. But when you write actual code and search for answers, hours will fly by. And those are effective, well spent hours. The thirst of solving an actual “real” problem that you have right now is much bigger than the motivation for “just learning something new”, which others predetermine for you. You have a clear goal in mind which you want to solve as effectively as possible.
Now you probably wonder what you should build? Build something you would use yourself. Something that would make your life easier or better. Are you not happy with your to-do list app? Does your grocery list app miss a feature? Try to build them yourself. These are good projects to start, because you have to learn about important concepts like data persistence.
However, when you use Google, pay attention to the release date of posts and answers. They could be outdated too. After I ran a normal Google search I usually do an additional one with a filter to the last 1-2 years, so I can get a better overview, if anything important changed. You have to get an eye for what kind of old information is still valid. Core Java concepts like what can you do with an array usually don’t change too much with time, so you can rely on older posts here.
3. Watch Youtube videos
Watch Youtube tutorials to get an idea about a topic. However, I would not rely on them alone. They are often pretty slow and contain mistakes and parts that are not of interest for you at the moment. I usually watch a Youtube video first when I am interested in a new concept or feature, because they are so easy to consume, but then I almost always dig deeper using Google to search for information in text form, with special attention to the official documentation and everything that comes from Google directly. Text resources have less mistakes in them, because they can be edited and corrected, while Youtube creators mostly go freestyle and don’t cut out mistakes and errors. And texts are much faster to consume because you can skip parts more efficiently. I basically use videos to supplement my learning process. To get an overview and see different approaches from different developers.
I have some principles for my own video tutorials: I only make a video about a topic after I feel like i did enough research to confidently explain it, I cut all mistakes, waiting times and unnecessary stuff out and I try to explain everything as clear as possible, without missing important stuff. At the time of video release the information I give should not contain any outdated information. Of course I make mistakes and you shouldn’t take everything I say for granted, but all in all I think I can confidently recommend my Youtube videos. So take a look at them if you haven’t yet.
To summarize it, I would:
- Start with a beginner book/course with good ratings, but get through it as quickly as possible
- Start building actual projects as soon as possible
- Use Google, Stackoverflow, forums and the official documentation extensively
- Supplement the learning process with Youtube videos