Recently, I have been asked by students for advice about how to think about their future, especially on how to become a good programmer. Here I offer some answers to that question based on my own experience. You can build your own path rather than follow the direction of others; however, I hope this article will give you more knowledge to choose the right path for you.
What should students learn?
Knowledge is always useful and necessary. Whatever you learn, it will be useful at some point in your career and life. For example, when I was a student, I thought that I would never use my knowledge of accounting, sales or presentations. But now, when I make products, I use and even expand that knowledge.
But it is also important to remember that it is possible to study too much. Going too deep into a subject can leave you too specialized and unable to perceive the larger scope of your work and the context it falls into. It is difficult to say exactly where the balance point is between depth and breadth of knowledge. It depends on each person’s situation and judgement.
Four subjects I recommend for learning to be a good programmer and developer are, in order of priority, English; Object-oriented programming language; data structures and algorithms, and databases.
English is the most important. In order to learn and work in the IT industry, especially as a programmer, you will have to regularly read and learn the technologies, background, and information on the Internet and in English. The information available in Vietnamese is often not recent enough or even extremely old, and not current enough for the constantly changing world of technology. Not to mention, when you go to work, you will often have the opportunity to communicate with customers and foreign working groups. Therefore, poor English will limit your ability to work in the field.
If you are good at English, you have the opportunity to get a job at a foreign company or at least work with a foreign client. This often means a roughly 20% higher income with the exception of some outsourcing companies working with Japanese customers.
Object Oriented Programming Language: Java or C ++?
As a programmer, of course you must know how to program, right? The question is why should you choose one of these two languages?
Later in your career as a programmer, if you work on the front end, you do not need to use Java or C ++. If you are programming on the Web, it is enough to know PHP. Therefore, choosing a programming language has a direct impact on your future path.
Generally, I recommend C ++ or Java for students because I think these two languages express quite fully and properly the nature of a high-level programming language. Proficiency in these two programming languages can easily gained and then transferred to another programming language. In addition, these two languages are also on the list of the most popular and widely applied programming languages.
Data structures and algorithms
Most programmers ignore this subject and do not take it seriously. In some vocational training centers, this subject is not taught at all. It is because it is difficult.
I have another post on the importance of algorithms, so here I won’t say much except that if you learn them well and have a feeling for algorithmic thinking, you will make better and more accurate software than others.
It is true that when my friends interviewed at big companies like Google, AWA, or Grab, they had to present and solve very highly algorithmic exercises. You may not need to remember how to install an algorithm in your work, but you should be aware of it, and be able to use it flexibly when your software needs it.
When I went to school, I admit that looked down on this subject and did not study it as seriously as I should have. That was really a mistake.
Today, every software product uses databases. Whether it’s a mobile game or a sales website, you need to store user information. Especially in large systems, the database is an inevitable and extremely important part. The database will be simple when your software has only 10 or 100 users. The number of operations is tiny and as simple as the type of student’s record or the working time of an employee. But if you have to create a large system with millions of users, the number of records generated per second quickly rises into the tens of millions with overlapping relationships and business. How will you do it?
Many colleagues, including myself, know how to write a query to get the information needed. But we can’t necessarily solve the problem when the data is big because one query can take tens of seconds. If you learn and understand the nature of databases and query statements, you can really become a good programmer and build a product with lots of users.
There are many subjects worth studying, such as Computer Networking, Computer Architecture, or The Principles of Operating Systems. I do not recommend that you skip these subjects, but focus on them within the framework and time available to you. In short, I personally think the above four subjects are the most essential to becoming a good programmer.
And my last piece of advice?
The last word of advice I want to give is about initiative. Learning to code, as a programmer, you need to maximize your initiative. Proactively learn. Go to the website to search for and buy textbooks.
Actively ask questions. Go to forums, participate in offline discussions and seminars. Actively experiment. Think of projects to do on your own and do them. Tinker with things on your own and see what happens.
And if possible, apply for an internship with a software company as you near graduation. It does not matter whether the company is outsourcing or has a product, if it is big or small. Regardless of the company, you will learn so many things that the school does not teach you. There are places where you will learn about technology or about processes. There are places that will inspire your passion and creativity. Nothing is in vain.
And, if you really want to become a good programmer, and you want to practice sooner rather than later, you can contact me at any time. If you qualify, I think it will help you get an internship at the software company you want.
I wish you success!
Comments are closed.