HOWTO Learn Programming

Posted by: Rea Maor In: Programming - Sunday, May 13th, 2007

So, have you figured out the answer to “What programming language should I learn?” Here’s a hint: Pragmatic Programmer recommends learning one new language per year!!! They call their concept LOTY (Language Of The Year) and the pace is literally that hectic in IT technology.

In the real world outside of school, technology changes so fast that you have to learn at a ferocious rate just to keep up. Especially for career viability. A scan of the requirements for jobs will reveal what we call “skill inflation”. “This job requires five years experience with Java, Oracle, SQL, AJAX…” The list goes on for two paragraphs, a list of buzzwords that the manager himself may not even know what they mean, but then somebody walks in and says they know ALL of that… and Haskell, too! What’s Haskell? They don’t know, but it sounds important, so they call up human resources and tell them to add Haskell to the list just in case.

But for practical purposes, things really do change fast enough that about every five years, you have to update your skill set or be left behind. We have wireless access points for Internet now, but in the past fifteen years we’ve blurred through ethernet broadband, cable modem, 56K telephone line modem, and acoustic modems that you used to use to dial up bulletin boards. Only ten short years ago, HTML and Perl were about all you needed to know to be a web developer. But since then we’ve added XHTML, CSS, Javascript, Actionscript (Flash), PHP, Ruby on Rails, and AJAX. AJAX hype is now dying down, because the IT world is gearing up for the next big hype platform. I predict that somewhere by the end of this year, a new buzzword will storm the web developing field and suddenly everywhere you go, people will ask if you know it. It’s getting about that time again.

At the minimum, soaking up one new language per year will just keep you breaking even. But the good news is, once you’ve learned your tenth language or so, they start coming easy. To the point where you can pick up a new language syntax in a day, and be competent in it by a week, and if you code in it for a month solid, you own it! You can also forget languages at a rate of about one per year, but wait to start that until ten years from now. If you remember anything about Basic, Pascal, or Cobol, it’s safe to forget it, now. That’s almost the case with Lisp, but there are so many Lisp derivatives right now that maybe it’s good to keep a cheat sheet saved just in case.

The purpose of the list of languages presented in this article series has not been to have a comprehensive list of all programming wisdom. This is why we have skipped over some of the really obvious “big” languages. The purpose, instead, has been to show ten languages that are very different and fulfill ten different purposes. Each language is like another tool in your toolbox.

Here’s the steps to teach yourself a new language:

  1. Obtain your tools. That can be either a compiler or interpreter, and some base libraries. If you want a flashy IDE for development, be my guest, but really I urge keeping to a simple text editor. Clicking and dragging elements in a build-by-pictures environment will *not* teach you to program; it will only teach you the interface to that application. Pick a free tool every single time possible, so you have less invested in case you discover you don’t like it.
  2. Arm yourself with documentation. Search the web for your language; free ebooks abound for every language known. You can also check your local library; most of them have every major language. If they don’t, then order one through them; that’s your tax money at work anyway!
  3. Be quiet. By this, I mean do not immediately post in chats, forums, and mailing lists begging for hand-holding help on every little thing. Learning to code is a complex skill; if you aren’t good at it, there’s little anyone can do to help you. You should be able to learn everything you need to know from the documentation. Learning to program will involve a *lot* of reading. Later on will be the time to post; after you already know enough to help others, but have a question that isn’t obvious from the first paragraph of a chapter in the book.
  4. Pace yourself. Take it a day at a time. Don’t jump around in the documentation; the concepts are presented in order of easiest to hardest, and later concepts will build on earlier ones. Code one example per day. Play with each example and change little things and note what works and what doesn’t. Save your old work in files, with comments! Comment the code as if you were teaching someone else what it does; you will be amazed how much code you will forget years from now.
  5. Lurk in forums and web sites that discuss the language. Become good at finding places where other people asked the same question you have; if you search for your question, you’ll find places where it was asked and answered before. Also, search the Internet for source code; this is another reason to stick to languages which are affiliated with Open Source.
  6. Don’t give up! Keep your hand in; putting the second half of learning a language off until later is the best way to forget the whole thing.
  7. Set learning goals. After studying programming languages for a while, you should have a decent idea of what to expect of yourself. Try writing simple games or even silly tricks; if you find yourself playing with the language in your free time as if it were a toy, you know you’re cut out for programming! One benchmark I have for a general-purpose language is Conway’s Game of Life: it’s an amusing application (a cellular automation simulator), easy enough for the novice to understand, requires an understanding of the basic concepts of coding, and is a challenging enough work-out to test your skills in the language. Once I’ve done Life in a language, I figure I’ve at least become proficient in it.
  8. Now participate in the Internet community surrounding the language. By all means, become active in forums and mailing-lists about it. Find an open-source project using that language and consider joining the team; if you are interested in coding for a living, working on a team for an open-source project will give you some real-world experience programming for a living. You will learn how to co-operate, how to apply standards, how to test and debug, and best of all, you will get some experience collaborating on code. Being good at reading and editing somebody else’s code is an entirely different experience from writing it yourself.

Perhaps we can build a better future. Right now, we currently live in a world where computing technology surrounds us, and yet surveys show a shocking lack of general knowledge the public has about how computers do what they do. Learning to program, even if it’s just a hobbyist interest with one language, will make a person more able to deal with technology for the rest of their days. You learn that the device uses logic and behaves in a predictable manner; you will learn that every device more sophisticated than a microwave oven has it’s own internal syntax and rules. Best of all, technology will make more sense.

Good luck, and happy learning!

Related Posts:

2 Responses to “HOWTO Learn Programming”

  1. webjourneyman Says:

    How much do the Samurais of Code earn these day’s? I.e. how valuable is the craftmanship of stringing together commands and syntaxes on a company computer?

  2. Rea Maor Says:

    Well, if you talk about programming, it’s usually in the very middle of the company hierarchy. experienced programmers earn these days anything from 60k ‘

Leave a Reply