(Written in 2008 for "IT Glimpse 2008", a magazine published by the School of Computer Science, M.G. University, Kottayam, Kerala)
In Hollywood action movies, there is usually one actor who plays a computer hacker. Although each movie has its own plot and there are different actors, the role of the computer hacker is almost the same. It is usually a male in his early 20's who lacks any grooming or discipline, doesn't know anything else apart from computers and usually knows how to hack into a system by guessing passwords in less than three tries.
This is a stupid caricature that is incredibly far from the reality of what good programmers actually are. Many people, influenced by this popular image, think that to be a computer programmer, you have to be born extra brilliant and have skills that ordinary human beings don't possess. They also think that computer programmers have no social skills or life, and have to sacrifice the good things in life.
The truth is that becoming a better software developer is very similar to becoming better at any other activity such as becoming a better electrician, or plumber, or cook. You can become better at programming because it is a learned skill, that improves with more learning and more experience.
For example, no one is born knowing how to cook. It has to be learnt. Also, most people, even good cooks, don't learn to cook until they are several years old. In the same manner, no one is born a programmer. You don't have to start programming (or even how to use a computer) when you are young. You could be a late starter and still become a very good programmer.
In fact, because there are so many rapid developments in programming, past knowledge can quickly become obsolete. So the advantage of having more years of experience is less when compared to other jobs. For example, languages like Cold Fusion and databases like FoxPro, which were very popular just a few years ago, are now in rapid decline. New frameworks like .NET and Ruby on Rails are catching on in a big way.
Programming is a skill that you can learn yourself, even if you have never learnt it at school or college. All you need is a computer and a programming book or Internet access. Today, across the globe, there are many self-taught school-age programmers who go way beyond what they are taught at school.
But that doesn't mean that a college education is useless. On the contrary, a formal computer program and degree is invaluable on many levels. Foremost (and this is an obvious point), it provides you with the necessary credentials to apply for software jobs. Most companies will not hire someone who does not have a computer science degree and many will not even consider those without a good academic record.
You also learn the necessary fundamentals to apply your knowledge to different computer science problems. One of the drawbacks of being self-taught is that you only learn "how" to code something. Only in college will you learn the "why". You will use the lessons learned in a course like "Computer Algorithms" in solving computing problems years later.
A formal degree is usually your first introduction to like-minded friends, who are also interested in learning software development. You will find that many of these friendships last a lifetime unlike those friendships formed in school, because the career path of your college classmates will be similar to yours. They will work in similar projects in similar companies.
As you progress through your career, you will add more such friends, both whom you meet in person and others whom you meet online and know only through a virtual relationship. This community of software friends is one of your most important assets. Through them, you will learn tried-and-tested solutions, latest industry trends, and tips and tricks that will help in your continuous improvement.
The reason I call this a community is that these friends and acquaintances are not a bunch of contacts in your Address Book, but instead form a group that derives its happiness from sharing ideas and information. To participate in this community, all you need is a thirst for knowledge, a curious mind and, most importantly, the ability to leave your ego and complexes behind.
One of the great revolutions in recent years has been the explosion of Web 2.0 websites which has dramatically increased the amount of information available for any topic. Just a few years back, if you wanted to learn a programming language, you would have to rely on either a book or somebody to teach me. Today, not only the number of books and websites has increased, but you can simply go to YouTube and actually see videos of programming examples. You have access to high-quality classroom material, such as the audio and PDF slides of MIT (Massachusetts Institute of Technology) lectures. You no longer have an excuse for not learning.
We have left out the most important aspect of learning, which is practice. It is simply not enough to read, listen or talk. It is important to do. Going back to our initial example of cooking, you will never know how to cook a dish until you actually spend time cutting vegetables, adding spices and using the stove. Until then, everything is in your head. You have to practice so that it becomes a reality.
To become a great programmer, you must spend time in the front of the computer, trying out different techniques and examples. Take real projects or classroom problems and try to find solutions for them. One of the best ways to learn is to attempt a project for a subject that appeals to you. For example, you could do a project to keep track of your friends' birthdays or addresses.
Ultimately, learning is about your personal inclination. It boils down to one single question: Do you like solving problems? Because that is what software development is about - It is an entire career of taking on and clearing challenges. If you like doing that, then you will also enjoy the rest of the learning activities that will make you better at them.
Copyright © 1999-2010 Krishna Kumar, All Rights Reserved. Disclaimer