The basis is taken from my
blog , but here I offer a more advanced version that will be more useful for beginners.
How to become a good programmer
When I was little and just started programming, I started going to circles. I remember in one of the first circles were Sharp computers with a tape recorder in one block. (More precisely not a tape recorder, but a device for storing information on a magnetic tape). Later there were classes at school.
In the first circle, we solved problems far from practical application. At school, the tasks were already closer to reality - we began to solve Olympiad problems. I still have two books at home with such programming tasks of those years. They helped me to achieve good results at one of the competitions.
Now everything is much simpler and more practical. To learn how to program the necessary “things” in the market, you can look at the websites for freelancers and choose a task to your taste, interest, complexity and focus, as well as in the programming language of interest.
')
But I do not urge to immediately take work. I'm talking about what you need to see, what is required, and try to do it yourself. To oneself - this means not asking friends, acquaintances, in forums, but looking for missing knowledge on your own. This will help you learn to find the right information faster and more correctly.
Learn how to think through a task before you begin to implement it. I understand that this is easy to say, but not easy to do. But learning to think through a task you get +1 to experience and +1 to the speed of the implementation of the following tasks.
Break the task down into smaller ones to speed up thinking and implementation. For example, if you want to write Habr, then divide the task into, for example, the following:
1. create user registration
2. creating a record
3. creating a comment
etc.
Visualize the task. Make simple block diagrams for each small block and a general block diagram for the entire task.
Record the interactions of the small task blocks with each other. For example: block "A" receives from the block "B" the parameter "C". Accordingly, we make a change in the description of the block “B”, that it gives the parameter “C” to the block “A”.
(By the way, can you tell the program to automate these actions?)
Record your progress. Each task has a version and a date. And there is a file for each task in which the dates are painted what I did. It also helps to roll back to the working version if you broke something in the current =)
And do not forget to save the task changes. If you do not have CVS, you can simply create date directories and copy files there. Together with the previous paragraph, this action will help you quickly return to the working sample. And it’s best to back up anywhere else on another medium.
By the way, sometimes I have several different copies per day. I make them if I am going to make global changes that can make the version of today unavailable. As a result, I get the following folder structure:
project / 300408-1
project / 300408-2
project / 300408-3
Write down all the ideas that came to you in the process of creating the next version. These ideas can be implemented in the next versions. And if the idea “But this could be done like this ...”, then it can be useful in a completely different task.
Write down somewhere else all that you have learned new. For example, you learned how to work with a new (for yourself) jQuery plugin - write it down right away. In notepad, notebook (paper or electronic) or blog.
If the solution of the problem depends not only on you, then also write down who is responsible for what and how and when it should be done.
And the last point. the most difficult, I guess.
Bring the above actions to automatism - habits . Take the time to record all actions and interactions. In the future, this will help you save a lot of time when you have to go back to an old and forgotten task or solve a new one using existing developments.