How to Learn Coding P3

Posted in tutorials work -

This is one part of a multi-part post. To see other posts in the same series, please click below: Part 1 Part 2 Part 3 Part 4

6. Find something you’re interested in and start doing

This is an important point: Programming is not about remembering all the little detail about your language of choice, nor it is about reading a lot of books or watching several tutorial videos. It is about mastering some tools so that you can make things you want to make.

Some of my friends and families seem to have the impression that to be “qualified” to do something out of a new language or technology, they first have to learn everything about that language/tech. If you find yourself falling into the same thinking, I’ll have to be straight and tell you that is an incorrect solution that will take you nowhere: For one thing, you will never be done learning something: technology changes with time, and it changes freaking fast. If you expect to learn everything about it, you will not get there. Second of all, even if you are learning a “steady” technology that doesn’t change anymore (which is something I don’t recommend for majority of people), you won’t learn anything by memorizing every little detail. Instead, we, as human, learn mostly from actions and mistakes (and interestingly, that’s how we teach computers to learn too, you can check out the details from here).

Of course, that doesn’t mean you have to jump right in to do real jobs when you have no idea about the new tech/language you are about to tackle, by the point here is try to keep that “initial learning” minimal, i.e. learn just enough to get started. Surprise surprise, start writing some code doesn’t mean to take a closed book test with a time limit, so you don’t have to worry that you will forget something (if you do, just go back to where you see that information and re-learn it), it is instead a practice for your problem-solving skills: how will you manage to do something without knowing everything about it beforehand?

In short, aim to be doing something on your own. Be it a simple game, a mobile application, a website, etc. whatever it is that you feel like you want to do, and start break the project down to the base level. Basically, try to answer these following questions:

1. What are the basic elements needed for this application to work?

2. For each element: What kind of skills do I have to master to build up this element.

3. For each skill: Read books, watch videos, ask questions, etc. until you know just enough to get started. During the making, you may figure out that there are things you don’t know how to do. Come back and learn more.

Keep in mind, though that the more you know about the topic you want to do apps in, the little you need to figure out about the matter and the better you can focus on learning how to program. My recommendation is to find one favorite app of yours and make a clone of it. Btw, if you are learning Python and needs a jump start, you can check out my tutorials making a Flappy Bird clone here.

7. Find mentors (but “use” them properly)

Learning to program, just like any other kinds of learning, is likely to be smoother process if you have someone who you can guide you through the process, answer your questions and give you constant feedback on your progress. In this case we call them our “mentors”, whose help is very valuable to us, as they have the experience that can (at least) save you some obvious troubles that you’re likely to stuck on otherwise. They will teach you (or at least make you aware of) some good behaviors that most of newbies don’t care about (clean code, clean design, performance, etc.), all of which will become your own good habits.

If you’re lucky enough to have someone with experience at hands (a friend, a relative, etc.) to help you with the progress, that’s great; but even if you don’t, you can still find other kinds of “mentors” elsewhere. In fact, even if you do have a mentor of your own, you still shouldn’t immediately buy whatever they say or consider theirs the only source of information, for the following reasons:

  1. Your mentor(s) might not always be there: they have their own lives and schedules, so it’s not like they can be there all the time at your demand. Prepare yourself for the situation that you’ll have to look for information somewhere else.
  2. There are several matters in programming where everyone has a different opinion, and nobody is absolutely right. In these situations, one person can only give his/her view, so to understand about every aspect of the problem, you need to hear about it from several more. Since it’s unlikely that you have that many mentors with that many contradicting opinions, gathering information from people on the internet is needed.
  3. You shouldn’t mess up mentors and teachers: though mentors are generally have good knowledge, which enables them to be qualified teachers, there’s no reason to waste their time by asking them to teach you every knowledge there is to learn. That’s exactly why we have things like books, videos and tutorials, so that one person can teach ONCE and several other people can learn over and over. Besides, it’s very unlikely that you have a mentor whose teaching style suits you in every situation, so even if they tell you that you shouldn’t learn from anywhere else (which I highly doubt if any mentor ever says), do learn the same matter from several sources to compare.

All in all, whether or not you have a mentor who you know personally, it is still crucial to be able to find “remote” mentors from the internet. Here is some advice from a fellow learner:

  • Most of the questions you’re likely to have as a newcomer has likely been questioned by someone else, and chance is, it has also been answered by some guru, so the first thing you need to do is try to google it (by googling, I mean to search the information on Internet using any search engine, not just Google Search). If you can’t find a solution, try asking a question on popular sites like StackOverflow or Learn Programming subreddit.
  • Information and knowledge are nowadays freely shared over the internet, and thankfully, IT is not one of those fields where the teachers and students have to be in the same room for the learning to happen. You can find several books, tutorials, articles, etc. written by gurus/experienced developers. Some of my favorite sites for these learning are Coursera, Udemy and Youtube.
  • For feedback and reviews on your code, you can try sites like Exercism. Though the site only provides supports on your code if you solve its challenges, not your own projects, the feedback you get from the site’s mentors are very still valuable. If you really want some feedback for your own personal projects, submit everything you write onto a Git repo and ask as many people you can ask to have a look.
  • Last but not least, remember that you don’t have to be perfect from the start. While production code is likely to require more, having some code that runs is good enough for starting.

This is one part of a multi-part post. To see other posts in the same series, please click below: Part 1 Part 2 Part 3 Part 4

Written by Huy Mai