Sunday, September 4, 2011

Learning Resources for n00bs: Coding & Problem Solving

Although a quick search would fetch you tonnes of learning resources. Here, are the recommended for absolute beginners like me, into the realms of problem solving;

The best part about both these online resources is that they are sorted in the increasing order of difficulties which is key to learning incrementally at one's own pace. 

Also, codechef.com runs a monthly code competition which looks really interesting.

Do share your feedback/suggestions.

Saturday, September 3, 2011

Cosmic Link


Now that free lunch is over the onus now lies on us (read Software Engineers) to gainfully utilize the computing resources available to us. It is now therefore imperative for us to develop and hone our fundamental skill sets and may be stop(OK, pause)  running after the next 'big' thing (read technology/framework).

For those of you who have not yet hit the 'dead-end' be warned. It would help you to develop your skills on;

  • Problem Solving because no matter what 'flashy' thing you know there will always be some thing new hitting you every now and then. Learning to solve problems not only makes you more employable but also makes you more confident and inspirational for others (think thought leadership)
  • The choice of Data Structures and Algorithm you employ in your applications may be all that you need to optimize their non-functional needs and nothing is more satisfying than making your application perform better.
  • While argumentatively speaking I do agree that frameworks are making us dumb but that is largely because we are always in a hurry to just complete the task without really understanding the framework internals. In not so distant past, I found it difficult to solve a bug which creeped into my code because of my incorrect understanding of java.lang.String#split(String regex) method. The problem was later identified and was mixed in matter of few seconds by merely reading (after everything else failed, and I decided to raise a bug!! ) the associated javadocs and saved myself from the embarrassment. 
  • Writing concurrent code is both error prone and difficult and till recently I didn't really face a performance issue, may be the free lunch was still available to me... but no more. Work on it.

The above piece is not only relevant to java developers for us all. Think about it knowing your DB internals(say join algorithm) will help you optimize your queries or may be if you write shell scripts knowing the correct order of filtering might put your script on steroids...

Please do not get offended by reading the above, the tone might sound prescriptive.. but is really a result of my reflections on my recent mis-adventures and is put to public notice lest you repeat them yourself.