I finally opened by RSS reader for the first time this year. I don’t have a lot of subscriptions but the number of unread posts was a lot.
I haven’t gone through all of them, but came across this one that was interesting. This post is a follow-up on a piece of news that had come up on Slashdot a couple of weeks ago, about a report that criticized the way Java had superceded C leaving students unable to understand concepts like pointers, memory management and recursion. Essential concepts in computer science.
The author has proposed that people start making a distinction between programming and computer science. Programming should be treated as an art. In a way the author is right.
In my opinion, there are two things that are required to be successful in Art. One, talent. Two, Practice.
The same logic can be applied to programming. You need to be talented to write good programs. An intuitive feel on looking at a problem and figuring out a pattern, and then applying the logical steps to solve it. That is talent. The practice part in programming is looking at different people’s code, studying them, and observing the patterns, building a repository of those patterns, and then, when required, applying those patterns in creative ways.
My own personal experience has shown that my intuitive grasp for problems is somewhat limited. So I compensate that deficiency by continuously practicing. It takes longer, but occasionally, I’m successful.