Today we learn How to become a good programmer?
If you search online for how to become a good programmer, you will see several books of the Teach Yourself Java in 7 Days type. Writers actually try to reassure you that programming is a very simple thing. Hmm, that’s really easy unless it’s really programming. On one of the forums, I saw the question “How to become a programmer in one night?” a humorous programmer replied, “Go to the North Pole with your laptop and net connection.” There are six months of night. Learn in one night!” How to become a good programmer?
The inherent nature of man is the desire to go to the peak of success by eating the air ‘in a short time, with less difficulty, at home’. Like any subject, it takes hard work and proper practice to do well in programming. Peter Norvig wrote an article called Teach Yourself Programming in Ten Years about becoming an expert in programming. In fact, it takes a long way to establish yourself as an expert programmer.
How to become a good programmer?
Lukáš Poláček in one of his articles has focused on motivation by combining 7 points training programs and 3 points to do well in programming, especially in programming contests. I’m going to explain that article below in his speech.
Training Program
Training Philosophy
Until the age of 15, I was involved in orienteering. It’s a kind of competition to reach a specific place first by looking at the map in the forest. I did a lot of training. I ran 1,700 kilometers a year in the mountainous area. After that, however, it had to be dropped due to some health problems. After dropping the orienteering, I got a lot of free time on my hands. Then I used this time to do math and programming. I used to apply some of the systems of training athletes in the training of contest programming.
To me, in some ways, the training for the programming contest and the training for the orienteering seemed almost the same. As such, the movement of the players is of different types. The focus is on where their weaknesses are found.
Suppose you are a striker on the football team. You can run and score goals. You’re an expert on it. But you’re weak when it comes to penalty kicks. But the coach will make you practice on penalty kicks with regular practice.
This same thing should be followed in the training sessions of contest programming. You can’t just solve on one side. If you are weak in geometry problems but quite good at DP. Then it will not be right to be that you will only solve the DPE throughout the contest life. The problem of geometry should also be solved even after the contest is over. That is, you have to increase the scope of your knowledge about different topics a little bit.
In fact, your training philosophy will be “The training must be varied and you should focus on your weaknesses”.
Learn data structures and algorithms
When a student wants to do well in the contest, he starts learning data structures and algorithms. There is a beautiful book on algorithms written by Cormen. There are also many other blogs and tutorials to study them. In the university, the course of algorithms is also done with practice.
However, in the case of contest programming, the name of the data structure algorithm seems to me a little more and more than it sounds. The idea that only knowing these two topics can be a good contender is a bit wrong. To be a good programmer, data structure-algorithm is one of the most important topics, but this is not the end. In addition to knowing many data structures and algorithms, you can be a good programmer.
Let’s give an example. Your hobby is mountain biking. You bought a book on mountain biking after watching the video of jumping on a bicycle on a broken road, hills, and mountains. Seeing more videos, he started learning all the tricks. You don’t know how to ride a bicycle, though. After studying for two months, you go to the mountains on a bicycle and see that “life is not so simple!” Because you do not know the basic knowledge that you should have known beforehand, you can not do anything here even after knowing the theory. If you were an expert in cycling on the same road, you could go to the mountains and drive at least some distance. That’s a lot of programming, too. You have to do well, so instead of sitting down to learn so many algorithms right now, you should slowly understand how an algorithm is working, why, and when? What is the profit loss of different algorithms to solve this problem? Many times the tendency to collect too much information causes harm. You keep solving your range of problems, as well as learning and practicing them. You can learn to make mistakes. Because people learn from mistakes.
Before learning any topic from anyone, both teaching and learning are great if you do a little bit of research on your own. Let me give you another example. Sir in your algorithm class, sir, let you program to find the shortest path of an unweighted graph without giving an idea of the data structure and time complexity. If you have a light idea, you somehow made a program. It wasn’t that efficient. In the next lecture, Sir showed how to implement the queue and how to calculate the time complexity. But the method of teaching this is more effective than the system of ‘theory first, practical later’.
Increase the capacity of problem-solving
It is very difficult to do this work. Increasing the skill of problem-solving actually means ‘increasing your intelligence further’.
And the way to do this is to solve difficult difficult problems regularly. Again, it is not so difficult that frustration comes. If you have a problem a little harder than your ability, you can use your brain. If you solve simple problems all the time, you will see that you are not making mistakes, but your brain will be a match for those simple problems. If you keep the brain idle without working (if you solve the simple problem all the time), it is not possible to think of increasing intelligence.
That’s why it is best to solve by looking at the level of the problem regularly in online jazz. Divide the whole problem into small parts and solve them one by one. In this case, an example can be a large table in a house with a small door. You bought a table and kept it in the drawing room on the second floor of your house. The door is much smaller than the table. In that case, the only thing to do is to carefully cut the table and put the pieces back in place. Problems will also have to be broken down in this way and solved and then combined.
Enhance programming skills
In the previous point, it has been said about ‘problem-solving’. Here’s talking about ‘programming’. Two things, but two things. When you can come to a decision about the solution to a problem in your mind, it is problem-solving. And programming is to be able to code according to this process that you have in mind.
Just as problem-solving is needed for the contest, programming is also needed. That is, it cannot be that “I understand what to do but I do not understand how to code!” Solve the simple problem if necessary. But regular coding has to be in it.
Code in the ledger and debug
However, at the present time, it does not seem that anyone codes in the book. Even then, if you can practice writing code in the book, it will work very well for you. Because when you sit down to code in the IDE, it is in your head that if there is a mistake, i can fix it immediately. But when writing on paper, your brain will work much faster before writing to write as accurate code as possible. Because it’s hard to write code on paper.
And in the case of onsite team contests, you can get more benefits due to this quality. Because there is only one PC for 3 people. So if another teammate is coding on the PC, you may have to write the code in the book. Make it a habit to write code and debug on paper for different inputs.
Participating in regular contests
You may be able to sit at home and solve or code a good problem slowly. But during the contest? While solving at home, there is no thought of ending at a certain time. There is no pressure that is in the contest time. Therefore, to get used to how to complete the task under the stress, and under pressure, you should also participate in as many contests as possible.
And if you contest more and more, you will have an idea about what to do or what kind of decision to take at that time. For example, in the last hour of the 5-hour contest, it is probably not a good decision to start a new problem. When you have 2-3 unsolved problems submitted. Whether to start a new problem or not, should i give more time behind one or not? It is easier to make these decisions if you participate in more contests.
Increase the quality of the code
Don’t solve a problem and give it an end. Also, look at how others or good programmers have solved this problem. For this problem, maybe none of their solutions will be useful to you anymore, but later some other time may work.
Think about whether the efficiency of the code can be increased. Work on how to complete the work in a little less time or how to save the memory a little more.
Programming is an art. There is beauty in wearing it. The beauty or readability of the code is a very important thing.
Take care of your body
Back pain is a national problem for programmers. Sometimes it seems that “if there is no back pain, what else is the programmer!” although many do not have back pain. However, programmers usually stay with the PC all day, so various physical problems can be seen. The number of programmers who have lost or pain in the back or spinal cord bone is huge all around. There is also insomnia, and eye problems!
For this reason, it can be done to sit on the PC for some time, taking a break for some time, eat water-pulled in the middle, look at zero, look at the green plants or blue sky, etc. This will reduce the fatigue of the eyes, brain, etc. Work productivity will increase.
Motivation (motivation)
The programming contest will greatly increase your programming skills. You can’t imagine how much push your skill is after every contest! Yes, many people will tell you that these problems are not needed for software development in real life. It really is! If you are very lucky, you may be able to implement the data structure algorithm you have learned in 5-10% of the work on a project of your company. Or you can use your contest skills. Because the contest area is different from the real world. But as much as contesting your skills will increase, it is difficult to achieve it in other ways. Think of one thing, when we were young, we were taught mathematics. Does that mean we all have to be mathematicians? We are taught poetry, we are taught to write. Are we all going to be writers? Mathematics is taught so that we cannot calculate in a person’s life, but can do a good analysis of a subject. The reason for teaching writing is that you can express your feelings about anything beautifully. The programming contest is just the same. It will help to build your fear of the future.
You can compete only when you take it as a game. As a child, if you get the pleasure you got here while playing cricket in the afternoon or after playing, then the contest is for you! But if you do not think, “Such and such a brother contests and now does a big job in such a place.” I’ll contest too” Then I don’t think it’s possible to go too far. In addition to the contest, there are many good programmers. There are many big programmers who are not interested in the contest. If you’re not interested, there’s no need to force it. Because you know there’s no forced love!
If you enjoy contesting, do it. If you do not get pleasure, then do some other productive work. If you spend time playing games or Facebooking without programming, then think about yourself once more. Think again 5 years from now. Be an expert in any one sector. Be it programming or networking! Anything! Don’t go out and say to a senior person, “Brother, I can’t do anything! What do I do now?”
Failure
There will be obstacles in the post, there will be disappointment. The problem that such a junior solved in half an hour took me four and a half days!!! There will be no programming with me anymore!!! Don’t think about that.
It’s not found in everyone’s life. There is a failure. Even as many successful people as I see. They also have stories of failure in everyone’s life. Everyone knows that success will come only if you push yourself forward by learning from failure or mistakes. But not everyone knows exactly how to do this! Be self-critical, talk to yourself. Tell the mind or heart to be careful about your mistakes, and apprehend yourself for the good aspects.
Stick to it, no matter what you do, if you enjoy it. Success will come!