Well, you need to be a genius then ... but I am absolutely wrong.
You have to make your own way by yourself. You need to learn some (more) tactics, make the google feel tired and be a bibliophile. There is a long list of TODO's you need to follow. I will share some tips here that will help you in improving your coding skills.
- Practice as much as you can:
It sounds hard to keep practicing for hours but once you get addicted to it, believe me, you will enjoy it more than anything else. You must have heard that practice makes a man perfect. This is very very true for programmers.
A question arises here. What to practice on? Good question. Social media is a big source of practice resources. Join groups and pages where novice programmers share the problems they face. Go and help them. There are too many and too good case studies in almost every book. Never skip the exercise at the end of chapters. Observe real life problems and try to solve them.
As mentioned above, social media can give you a lot if and only if you want it to give. There are large dedicated communities.Some are very popular such as StackOverflow and MSDN. Highly skilled programmers are there always ready to help you and others waiting for you to help them. Sign up (which is mostly free) and expand your social circle.
- Join developer communities:
Allow others to read your code. If they criticize something in it, thank them. It will help you in finding vulnerabilities in your code, improving code quality and logic. For some people, it is hard to accept criticism and they take it in wrong sense. I was one of them but soon I realized that critics are free testers of my code.
- Always welcome critics:
I used to solve programming puzzles when I was a novice and still I look for some puzzles and enjoy solving it on weekends. It stimulates the brain and keeps the mind in shape.
- Solve quizzes and puzzles:
The same question arises again. Where to find puzzles and quizzes? Here's is a list of websites.
Participation in code challenges either at a low level such as colleges or international level such as Google Code Jam makes you able to think like a pro. It let you know how good you are and makes you able to determine your own speed. If you won the challenge, you will be rewarded which is a motivation and an encouragement but if you lost, it is stimulus, a wake-up call, an alert message which tells you to get up and strive.
- Participate in code challenges:
If you are practicing then skip this point. But if you are working on a project then it is for you. It is possible that the project you are working on is done by many others and the whole code or a snippet is open source. Just borrow that code, read it and modify it if needed. Never reinvent the thing which is already invented. This can really increase your productivity.
- Never reinvent the code:
The first point on this post is practice as much as you can.
- Do not try to memorize the code:
Q: Why do you need to practice? Why not memorize the code?
Ans: I have seen some beginners memorizing code and syntax. It seems easier and quicker than practicing. Doesn't it? But things are not always #000000 and #ffffff. Actually, nobody needs to memorize any code for a particular problem or code syntax because we have storage devices for that and search engines for easy retrieval. Problems are getting complex day by day and today's code becomes invalid for tomorrow. So you need to build muscle memory and developing your mind not just feeding it.
I don't remember a single line of my previous code, not even a single variable name because I really don't need to. I comment my code which helps me understand my own code when I revisit it after a long time.
Deprecated APIs are those APIs which are old and newer version is available. New things come with new features, an improvement in old features and compatibility etc. API developers try to make it relatively easier for users to use. So keep your skills up to date and avoid using an old version of an API if you don't need to use it.
- Avoid using deprecated APIs:
For all programmer either pro or naive, one of the most annoying parts of coding is debugging. It happens very very rarely if someone writes a hundred line code and run it successfully without any bug. Debugging is the process of removing bugs from code. Debugging a single bug might take either 1 minute or days depending on the bug and your debugging skills. However, you can boost debugging process by using some tools. Fortunately, every IDE contains debugging tools. All you need is to learn how to use those tools and use it everytime in debugging process. It really helps.
- Master debugging tools:
Does it make sense? Lemme clear it. In your journey, you will have to cope with a tough situation. But what do I mean by a tough situation? By tough situation, I meant the time when you have found a lot of bugs in your code or you are striving to figure out a way to do something. Most probably you will not be the first one in this situation. Hundreds if not thousands of people may have been in the same trouble. How did they escape from it successfully? Google will give you a lot of answers. All you need is to search some queries.
- Be a Googler:
Google (the search engine, not Google.Inc) is just smart, not intelligent. It works on keywords. So to get the best answers for your questions, you need to know how to ask Google in a smart way. For this, learn SEO basics. This will make you able a little bit to think like Google and consequently will improve your search skills.