There are huge numbers of programmers, especially juniors, who need good assistance in becoming professional.I've heard a lot of about books every programmer should read, etc. I have two years of programming experience, feel good in C++, but currently have a strange feeling, that I do not know anything about programming.I should read Algorithms by Cormen, Code Complete by McConnell etc., but I don't know the exact steps required to become a professional.What should we do? What should we learn? Operating systems? Computer organization? Algorithms? C++ in depth? How much time do we have to spend to become what we want?
What does a programmer really need to become a professional?
self improvement;knowledge
You don't become professional just by reading books, but by practicing.Write code every day.Like you can't learn how to play a violin without playing, you have to code in order to become a developer. Like any other domain, development requires years and years of practice.Read code of other people. Why are they writing something this way? Is it better than yours? If yours is better, how could you explain it?Anyone can come with a programming solution to most problems most developers have daily. The difference between a good and a less good developer is that a good one will solve the problem beautifully: just by looking at her code, you'll understand both the problem and how it is nicely solved. A less good developer will write lots of code which will be unclear, difficult to read, and while solving the problem, will do it in a confusing way.Ask others to review your code: if there is no full code review in your company, ask your most experienced colleagues to review your code. Don't feel insulted when they make negative remarks about your code, but consider it as an opportunity to learn and to improve your work.Actively participate to the meetings of your team.Code is not the only part of the job of a developer. You're not code monkey. You have to understand how the team is organized and lead, how the overall architecture of the project is done, etc.Be curious about the other team members and the people you work with: what is the job of your database administrator? Why is there a dedicated system administrator? Why every project need a visual designer? What is the difference between your job and the job of the lead developer in your team?Not only you will be able to learn lots of things, but it will also help you to work with other people later. If you don't know anything about a job of a person who writes HTML/CSS and you work daily with this person, providing her with code behind part of the project, problems will arise soon or later.Be curious about the projects themselves, aside the development. What happens inside the QA department of your company? How the project is pushed to production? Who writes bug reports?Understanding the context of the project helps you, as a developer, to have a broader look at the project and provide better code.Remember that:Programming in general doesn't become easier to read, write and understand as you gain experience,When, two years later, you'll read the source code you've written today, you'll find it awful. The rule remains valid through your whole career. That's a sign that your code improve over time.