The task of learning how to program is a daunting one. There are also several myths associated with who a programmer is. For example “programmers are born not made”, this is misleading and wrong because any one ready to the pay the price could become a great programmer. The right mindset needs to be developed. Programming is a complex discipline involving science and art intricately woven together.

Just like in learning other crafts, the 10,000 hour by Maxwell Gladwell is applicable here. This rule suggests that it takes approximately 10,000 hours of dedicated and focused practice to become an expert in absolutely anything! Applying this rule to programming means you can become an exceptional programmer in the next 5 years if you can begin to practice for 5½ hours per day starting from tomorrow.

If you are still enthusiastic about becoming a programmer, then the seed of becoming great programmer is in you. Nurture it till you become an expert one day and always remember that “Rome wasn’t built in a day”. Consider the following, clues that can guide you in the becoming of an exceptional programmer.

Read up on some elementary computer science

Now don’t get scared because you saw computer science. The sad news is a major difference between great programmers and good programmers is their knowledge of computer science. The good news is that just the knowledge of rudimentary computer science can get you by for a very long time. Conventionally computer science is taught within ‘four walls’ and by boring lecturers but with the proliferation of educational materials provided by world-class university on the Internet, anybody with reliable Internet access can access these materials and learn what is necessary. Here are some of the things you should read up on algorithms and data structures, different programming paradigms, logic and a little knowledge about how hardware works would also be beneficial. If Internet access is a problem for you and you are low on cash then you can always borrow relevant books from your computer science major friends or better still sit them down over a couple of beer bottles.

Learn relevant programming languages

There are hundreds of programming languages that you can learn. Learning all these languages is surely a terrific idea but an unrealistic one. The better approach is to learn the language that is most relevant to you at a certain period with the aim of expanding your reach as time goes on. For example PHP is more relevant to a back-end web developer than Javascript and on the flip side; Javascript and CSS are more relevant to a front-end web developer than PHP while HTML is relevant to both front-end and back-end developers. However this doesn’t mean that as a back-end developer you shouldn’t learn Javascript or CSS, it means that if you are a back-end developer then you should focus on your business first (server-side languages) and vice-versa. It is also worth-noting that a programmer adept in a lot of languages is usually a top-ranked programmer.

Pick and master the right tools

Here is a simple analogy. A farmer using the most modern machineries (tractors) with the right set of skills has the potential of producing multiples of what a farmer using archaic tools (cutlasses, hoes) will produce given the same environmental conditions. As a programmer, you have access to a plethora of software tools. For example a programmer who wants to develop Mac and iOS native apps should rather invest in a Mac PC, an iPad and/or an iPhone than invest in a Linux-based PC. Although, there are great virtual operating systems like VBox, they are not really the same thing. This also applies to your choice of software tools. These set of tools include your workstation (Integrated Development Environment – IDE as they call it), browser plug-ins (for web developers) and even your graphics editing tool. Also when choosing your tools, note that most IDEs do not support more than one languages or platforms. For example Microsoft Visual Studio supports development of all types of Windows-based apps (PC and mobile) but useless if you want to develop non Windows-based apps like Andriod, iOS or Linux apps. A simple way around this is to have a wide range of software tools in your arsenal but most importantly use tools that you are most comfortable with

Work on a project

A typical likely response to this is “What the heck? I know just of elementary computer science, I barely understand a programming language’s syntax and I just finished downloading an IDE so how am I supposed to start a project?” Well don’t be discouraged because writing software is not rocket science and neither is it compulsory to write a complex software that hopes to compete with your favorite software or app. What is really important is the actually process of creating a simple but working software which will develop your understanding of software development generally. A good example of a project is a simple calculator or a simple text editor. It doesn’t have to be fancy but make sure you learn and apply the fundamental principles of good software design and development.

Join and participate in programming forums

Most good programmers only live in their heads; this often shuts them off to the beautiful world of collaboration. A great programmer is usually one that collaborates with other programmers with the aim of sharing knowledge and collaboration on projects. Also even though I don’t recommend this but since most programmers rarely socialize, forums could be also a place to do so. A forum could also be a place to ask technical questions relating to a project you are currently embarking on. Note that a forum doesn’t have to be formal or official; it could be you and four of your fellow geek friends. It can also exist on the Internet or at a physical location.