Friday, January 2, 2009

Programming, Programming, Programming...

Aah!, The word has a merry ring to it!, but alas, not all people think alike!!!. I would like to share a few thoughts of mine about programming in this post.

We have all heard the phrase "Programming is an Art and not a Science". I, for one, feel that it should be "Programming is an Art and not a Science, BUT it becomes a Craft with experience". It is very true that when one starts out initially, everything is a challenge, and hence programming is perceived as an Art, but this is only half the picture. As a person gains experience, he gains the mental facility to express his ideas in a programming language with ease. Hence, programming becomes a craft.

If you are a keen reader, you would have noticed something about the previous paragraph. I gave some insight into what separates average programmers from the so called "Virtuosos". They very fact that I used the word "Craft" and "Experience" says that excellent programmers mostly aren't born with the ability, instead, their skill is a result of a lot of hard work. I can give an example here. It is a common fact that a person can learn to play the Guitar to any skill level he/she desires. The only catch here, is practice, and practice translates into experience. The same is true for programming. I've been wanting to avoid the cliche, "Practice makes Perfect", but please, do not be mistaken, these words are very true indeed!!!

So, you might be thinking, "Cool!, so What can I do to improve my skills?". Well, I have a few pointers that I found very helpful when I was starting out.

  • Don't think of programming as a burden, think of it as a recreational activity.
  • Pick a language you are comfortable with. Note that this post isn't about learning a language. I feel anyone can learn a language. Its how you translate your ideas into the language. Logic matters!!!
  • Start off by solving relatively easy problems. Don't pick anything too hard.
  • Remember how you solved earlier problems. You should be comfortable with the idea of resuing the ideas you used to solve earlier problems. With time, one almost gets a feeling of deja-vu "Hey, I think i've done this before!!". This will greatly help your abilities related to intergration of solutions.
  • Try to read the book, "Structure and Interpretation of Computer Programs", by Alan J. Perlis.
  • If you choose to program in C initially, read the book by Kernighan and Ritchie and the book "Programming in C" by Venugopal Prasad.
  • Listen to music while you program!!!. Well, I don't know whether this will be helpful to everyone, but it sure as hell helps me out.

Well, I would like to end this post by saying that it doesn't matter how many languages you know. What matters is whether you are able to express your ideas in the language effectively and Nothing Else Matters!!!

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."
--Brian Kernighan

No comments:

Post a Comment