3 Pillars of Learning Programming – Part 2: The Practice & The Project

the art of practicing

This post is part 2 of the 3 parts posts that will describe this method of learning programming. You can see the full 3 parts here

III. The practice

Programming is a practical subject. You do not go to a Software company to just write: “Hello World” don’t you? As a result, so far you have only had theoretical knowledge. The follow along is hardly any practical value. This is the time to get your hand dirty and start to practice to solve problems. This part I cannot address too detail because each type of subject (for example: programming language, game engine… ) will have different ways to practice. However I have some general tips as below:

  • You can and should think of ways to practice your subject. However, of course, you don’t have much experience with the subject so thinking your own way of practicing is difficult even to the point of impossible. As a result, now is the best time to rely on others. You can and should google about this and/or use websites such as hackerrank, codefight (now is codesignal) , codewars…..
  • There is another way that you go to websites where people ask questions such as stackoverflow and choose a question about your subject. Then do not see the answer of others and try to fix the question yourselves. Only when you finished the problem or take at least 10-30 minutes trying to solve it then you can read the answer of others
  • You should choose to practice well-known problems because only then you can read a lot of other’s way of solving the problem. For difficult enough problem, every programmer can have different ways of solving it. And it is very interesting to read it so you can both practicing reading other code and gain more insight on the problem itself. Make sure to comment who and how it is best to solve the problem.
  • Use open-source projects for your practice. Some people advised me that contribute to open-source projects is a valuable way to practice. However, I don’t like this way very much and found it is quite inefficient especially when you are a beginner of your own subject. I used this method instead:
    • First, find a good open-source project to your interest (I advise you start with small projects firsts)
    • Then read the project code or documentation to get a good idea of how it was made. Be sure to comment as much as possible what each line of code (or each step) is doing
    • Then make the project again from scratch. It is even better if you make it differently or solve the project bugs in the process or make an improvement for the project
    • If you make some improvement or fixing some bugs successfully be sure to contribute it back to the original owner if you can
  • If you feel confident enough after days of practicing, then it is the time to move to the project

IV. The project

Now it is the final moments of truth. Please consider this as the final test for your knowledge. And the project can serve both as the qualification for your subject and a way for you to showcase your skill. As a result, having a project is a must to finish a subject. I even recommend more than 1 project for each subject because this is actually the best way for you to learn and it will be the closest practice for a job. Some Notes below:

  • You should make a project that solves others’ actual problem (for example:  your friend needs a website)
  • You can google for a project to do or ask what projects you should do
  • You can make a project from scratch without even looking at the source code. The original project will be served as detail requirement only
  • At this point, I recommend that you learn more about “Agile Software Development” or “Software Development” in general. However, if you are too lazy to learn then I have some tips for you :
    • At first, write down what your project wants to achieve. How is the end projects(the final version)? What are the requirements for the project?….
    • Break the project to many small versions, the smaller the better(for example : when making a calculator for Android. the 0.1 version I will make button and interface. The 0.2 version I will write code for each number button. The 0.3 version I will write code for the “+” button … and so on)
    • Each time focus on the current version only and nothing else. You should not concern anything about the future version if the current version is not done
    • Test frequently and as much as possible because even when you write a line of code it could contain more than 1 bug. If you have just started, then you should even test every line of code if needed
    • When finishing each of the version, be sure to test to make sure the version works like it should. Only then you move to the next version and repeat the processes
    • If the next version requires you to modify the previous version, it is fine and it will happen. Don’t worry about this, each time you will learn more
    • Repeat the processes until the project is done
  • If you have problems with your projects. It is fine and it should be. You can try to google or ask others about it
  • However, if you found yourselves lost or asking others too much then it can be either you move too quickly from the practice step or there are related subjects that you did not understand well. As a result, you should either move back to practice or learn more about the related subject
  • After finishing the projects, if possible try to have experienced people to review on your project . They can be valuable in pointing out hidden problems of your projects
  • Also, you should consider uploading your projects to open-source (for example: git). It will be both easy to show your project and get feedback in return.

After this step, congratulation please consider yourselves graduate from a complete beginner to becoming an advanced beginner.

What? You thought a small project can make you a master already? It won’t work like that especially programming. Actually the more projects I have completed the more I realized that I don’t know. But It is fun to know that you will never lack things to learn

Leave a Reply

Your email address will not be published. Required fields are marked *