Skip to main content

Sharpening the saw with online competitions

Some time back Jeff Atwood wrote about Sharpening the saw on his blog. He defines sharpening the saw as (which is rightfully attributed to Steven Covey):

Sharpening the saw is shorthand for anything you do that isn't programming, necessarily, but (theoretically) makes you a better programmer.

There are several things developers can do to sharpen their saw. One of them is participating in programming competitions. There are several websites which host online programming competitions, and I really like this concept. Participants can work on these competitions at a time of their convenience, and those who do not have "real world" competitions hosted in their cities and towns, can also participate.

Code Chef publishes online competitions which can be solved in any one of 35 programming languages. I like the fact that they give developers freedom to code in their favorite language. Many other online competitions do not give this freedom, and impose a particular programming languages on participants.

All the problems published thus far on Code Chef seem to be mathematical in nature. That's fine and also understandable. Such problems have a definite output and can be easily judged for correctness. It can be a bit difficult to objectively judge programs which are more design oriented.

My math skills have really depleted since high school, so I am looking forward not only to sharpening my saw but also my math skills.

Comments

Vasudev Ram said…
Interesting post, Parag.

TopCoder is another programming competitions site. IIRC it's only for Java. They also pay good amounts of money in prizes to the winners, and those who do well in the contests get chances to get commercial projects from clients, with whom TopCoder has tie-ups.

- Vasudev
Vasudev Ram said…
Re. TopCoder - forgot to mention - the level of the contests and the quality of the participants seems to be very high. Also UML is used heavily. There are often lots of Russian and other East European developers among the winners - I think it's partly due to their highly developed math and computer science skills. Pretty interesting site, overall, IMO.
Parag said…
TopCoder is also a nice website for online competitions. I have not yet checked it out, but I should.

I believe they also have several algorithm competitions in C and C++.
Vasudev Ram said…
>I believe they also have several algorithm competitions in C and C++.

Didn't know that - thanks. Useful to know ...

Popular posts from this blog

Running your own one person company

Recently there was a post on PuneTech on mom's re-entering the IT work force after a break. Two of the biggest concerns mentioned were : Coping with vast advances (changes) in the IT landscape Balancing work and family responsibilities Since I have been running a one person company for a good amount of time, I suggested that as an option. In this post I will discuss various aspects of running a one person company. Advantages: You have full control of your time. You can choose to spend as much or as little time as you would like. There is also a good chance that you will be able to decide when you want to spend that time. You get to work on something that you enjoy doing. Tremendous work satisfaction. You have the option of working from home. Disadvantages: It can take a little while for the work to get set, so you may not be able to see revenues for some time. It takes a huge amount of discipline to work without a boss, and without deadlines. You will not get the benefits (insuranc...

Testing Groovy domain classes

If you are trying to test Grails domain class constraints by putting your unit test cases in the 'test/unit' directory, then your tests will fail because the domain objects will not have the 'valdate' method. This can be resolved in two ways: Place the test cases inside test/integration (which will slow things down) Use the method 'mockForConstraintsTests(Trail)' to create mock method in your domain class and continue writing your test cases in 'test/unit' What follows is some example code around this finding. I am working on a Groovy on Grails project for a website to help programmers keep up and refresh their skills. I started with some domain classes and then moved on to write some unit tests. When we create a Grails project using grails create-app , it creates several directories, one of which is a directory called 'test' for holding unit tests. This directory contains two directories, 'unit', and 'integration' for unit and ...

Creating an Eclipse web project using Maven and Struts 1.x

I am doing some Struts work after a long time. Interestingly it is for a Test Driven Development training. A client wants me to do a hands on session, using Struts 1.x, and EJB's. They also want to do the hands on sessions with a small but production project. It seems their developers are tired of Calculator and Shape projects :-) Well I can't really blame them. I have been planning to create some micro applications around diycomputerscience.com . I hope to create each application using a different technology, so I can have several reference points for teaching. For this session I am going to make a web application which will store and display my slides. I am sure you are thinking ... but why not just use SlideShare ? Well besides the fact that I think this makes a great application that is small, but also production quality. Ideal for using to teach. But there are other reasons as well. It is very hard to embed code snippets on Slideshare. Slideshare also does not support co...