Software development: From amateur to professional

Tram Ho

These days, I accidentally read an article on a young facekbook named Huan, Huan is currently working for Elon Musk’s Tesla (very hot right?). I ask permission and she agreed to let me copy the article about Sun’s Viblo * to share it widely with everyone. Here I share the article of Huan.


Software development: How to turn from amateur to professional?

By the end of the 2010s, the world had changed dramatically, since the use of computers was an added skill, now it became a must-have skill to do anything. The story of writing computer software, understanding and writing code to automate your work is to some extent on the same path. Since it was an added skill, doing it because you like it, now it becomes a skill that should have, every job needs. I think many of my readers are computer-like, and are (or intend to) write software. Many people can at least write code, do the web, automate a certain company or project to some extent. If your desire is to become a professional software writer, then this is the article for you.

First of all, I think it’s important to realize that professional jobs are different from amateurs, and software making is no exception to that rule. Saying them differently is not an impersonal, important personalization. An example is going to sing: Our lives have a lot of people singing. Maybe you sing very good karaoke. Maybe you sing so well that your friend invites you to sing a wedding. If you agree that “I just want to sing wedding karaoke for fun” my whole life is no problem. On the other hand, it is wrong to think that a singer is just a karaoke or wedding singer but fortunately there are many listeners. Although many singers are discovered because they sing well at weddings, it would be better if we realized the distance between the two was very far apart. The fact that professional singers like My Tam and Taylor Swift, for example, have devoted dozens of years but still have new songs not just because people do it because they like it or they are lucky. I am sure one thing, most of those successes are not due to their inspiration or luck.

The similarity between singing and code is that many people do it because they like it, which is part of creativity and coming up from amateur work, making it fun. I personally wrote the first software when I was 12 years old. I wrote PCWorld newspaper about programming for fun from the age of 14 to earn pocket money. The first software I wrote “open source” was in those years and I generally wrote code up till now. Those are all play and amateur jobs. I now get paid by people to write software – that is, I have turned from playing to doing.

During that time, many times I wonder: When I know I like it, how do I know if I am doing the right thing or going in the right direction on that path? How to turn from play to real?

During that time, I had misconceptions about this that I thought I knew but didn’t. If I had known, it would have saved me a lot of time.

1. Should study at least to the university major

If possible, you should continue to study for a Master degree. You should not think that you can “learn” everything by yourself tinkering, and spend that time doing other things (for example starting a startup). Although “software” writing is new compared to many other jobs, it is not new. And when a road has been reclaimed by someone for a long time, you should go the way someone else already knows and has created, not need to redevelop. You may think that you can learn by doing it yourself, but it will be very time consuming, and you will face lots of questions that you don’t have the answers to (but others have, and if If you follow people, you will not be entangled there).

There will be many things you do not know that you do not know if you do not go to college. Nobody now goes to space research by inventing a telescope and looking at the sky to come up with a new law, even though famous people tell you so many people ( you are 500 years behind). In the same way, you should not think that you will understand the computer by sitting at home and studying by yourself: University, formal and serious training is always the best path, even if you have the capital. quite a lot of programming knowledge when going to university / master.

The truth for me is that I didn’t enroll in computer science when I went to college because I thought I understood how to code and then learn something else instead of learning computers. Later when I realized I had to study seriously because there were so many things I didn’t know, I moved on to study Computer Science.

If you want to be a startup, you should be a startup, but if you are not an outstanding person, you can only choose between starting a startup or making a software, not both. Many people will ask: So why are technology tycoons like Bill Gates or Mark Zuckerberg all dropping out? I’d like to quote from Bear: How many people are quitting school and becoming Bill Gates and how many are dropping out and becoming beggars?

2. Writing software, you need to focus.

Don’t be an artist, a social activist, a cunning person, or an arbitrary person working at the same time writing software. Making software is an innovative technical job, but a technical one first. Writing code is not about writing poetry or writing. Writing code is going to write a coherent command to make the computer do a clear job. Computer is to learn how to be an engineer, not an artist. So technically, writing code, writing documentation for software, writing comments for code, writing commit messages must be coherent, clear and get to the root of the problem. Each command line you write needs to have a specific and unique purpose. You will be very much wrong and you will have to be very straightforward about accepting your wrongs.

On the job, you need to have discipline and work professionally rather than arbitrary. You need to recognize what is working effectively and what is done to get leisurely with others (in which, doing without moderation, staying up all night are typical tasks of amateur workers).

When writing code, amateurs often make mistakes that they think they are “intelligent.”

For example, the first time I realized that I was not as smart as I thought was when the professor of Computer Science taught me to catch errors like unsigned {} when the if statement had only one line like this:

if (condition) doSomething (); return 0;

The problem with unsigned writing is that when someone else working on their code wants to do something else, write like this:

if (condition) doSomething (); doSomethingAfterwards (); return 0;

Thus, encountering an error is difficult to realize where the problem lies. A professional worker not only knows to do an effective job, but also knows how to work so that others can understand him, succeed in his work and be least surprised, not the smartest clever man . If you want to be the smartest, you need to be in game shows, not writing software.

A specific example of a system that does not show professional work is a project of exchanging, storing (large?) Money with very odd commit messages, sometimes just a “n”. . ” When the next person continues to succeed as a developer for such a company, they will not know why that change happened, what it happened to do, what the problem is, what the result is. . So as the project gets more complicated, people get crowded, what an instruction does does is out of hand and can have unfortunate consequences.

3. Don’t be a loner

There are many people in this world who are better than you and you will learn very quickly when working with people who are better than you. A problem of people who like it is to see that they can do many things on their own. So people do it because they like to do lots of things by themselves in the dark. You how you have fun. You can confine yourself in a room 24/7 without contact with anyone, without talking to anyone, with no one knowing what you are doing, and you think you still learn something new every day. You still have your creations everyday and find it very good. The problem with working alone is that you don’t see your blind spot and get buried in something not worth doing, or if someone just showed it a lot faster. This is especially true for high school students or college freshmen, because you find yourself alone when you have your own unique and strange hobbies and cannot play with peers.

To solve this problem of self-recording by self-posting on Youtube, the solution is to learn from a teacher and a friend. When you have people who are at least as good as you, you’ll realize what you need to do very quickly. To do that, the best thing is that instead of doing a project of your own or working in small groups, you should learn and participate in a professional software project. These projects must have a serious team. All projects that have many people working in professional software companies (such as Google, Facebook, Redhat) involved in operating and sending the source code are “standardized” projects. Projects like this are not difficult to find on the Internet, reputable projects can be listed immediately such as Debian, Linux Kernel, Buildroot, OpenWRT, KDE, GNOME, OpenSSL, Python are all very professional projects and they are always looking for participants. When you commit code into those projects, the people who go ahead will quickly show you gaps in your knowledge and skills. Plus, when contributing, you can always tell people that you have contributed the code to those projects.

Smaller projects for individuals who make web, like web frameworks or javascript libraries or small applications on Github, unless there is a clear reason, I think it will not be effective for personal development. The reason is that people who make small frameworks or projects are just amateurs and they will not have the time and effort to correct you if you are wrong.

If you want to participate in research, reputable labs in large universities will be better than labs with fewer people in smaller universities. Labs with more students studying Computer Science will have more people to learn from. There are many cases, like my own, that I have worked in Computer Science in a lab where I was the only person trained in computers. During that time, I did not develop much of my good software skills.

4. A lot of money or fame is not the problem

I think a big trap of young people (teen) is thinking that your job is very good, very important if you make money or attention of someone. You will build Microsoft or Facebook because you make a thousand dollars a month because you think of something that people need. I think that superficiality will diminish over time as each person grows up, and if any parent with a child persuades his or her parents like that, then don’t worry too much. But having just a little money is not the reason for not wanting to go to college, not to expand your horizons. On the other hand, that might be the stupidest reason not to continue studying.

At the same time, if you release free software then you will not make the world better. That’s how you think about society, but each person in society has his or her own concerns and choices, and don’t make others “owe” you because you decide not to sell your software.

Hacking to make money or serve the purpose of others is always wrong. That is without a doubt, and if anyone thinks he or she is majestic because he can hack, it is someone who is not only incompetent, amateur, childish but also a person who is toxic to life.

The above points are not easy to do in a day or two, not easy to change in a day or two and that is why I wrote this article: If I knew it, it would have been easy to save many years. already. But I hope that whoever reads it, maybe I can save a few years unlike myself.


Share the news now

Source : Viblo