views:

472

answers:

4

I've recently stumbled upon a site called CodeChef; I must admit that it has peaked my interest.

I'm wondering if spending time doing these puzzles (after all, that is what they are), are worth the time for a professional software developer? I'm defining software developer in the context of my current career track. Right now, I develop mostly websites, window programs or SQL to aggregate large amounts of data, move data, generate data files, load data and the alike. I (with a team) will develop UIs and data processing back ends to do different things with a large amount of data, including manipulation, display and file generation.

I've gone though some of the examples, I've noticed that the programs are smaller and it is more about algorithms then about software development. Software development being a complete functioning product which would consist of many algorithms and such.

I know this is a bit subjective, but are these sites worth the time and effort that one might put in to them?

Can doing these puzzles have a practical, positive influence on the skills and personal growth of a software developer? My alternative is open source projects.

Something else that I think is relevant is that I'm currently in a graduate program for a M.S. in Software Engineering.

+3  A: 

Are they making you think? Are you discovering new ideas and techniques? If so, it's a good thing.

Of course, there are other ways of improving yourself - contributing to an open source project, answering questions here, blogging, experimenting with other technologies and languages etc.

Do whatever you find most helpful. I would say though that investigating algorithms is likely to improve your sense of algorithms and complexity, and that will be more use than the individual algorithms themselves, unless you happen to have a problem which exactly matches one of the puzzles.

Jon Skeet
Frank V
+6  A: 

As far as developing your critical thinking skills as applied to programming, I think it's great.

Do you find yourself struggling more with logic versus language syntax and design? Then these puzzles can be a great way to develop your programming skills.

Certainly it's positive from a personal growth perspective, but do not expect to become a better software developer in general just from these puzzles. Personally (and this is REALLY just for me), I'd spend the time learning languages, learning techniques, and learning commonly practiced paradigms.

I must say though, the puzzles look fun.

AlbertoPL
I'm experimenting with one of the puzzles. I've found that it is making me reconsider my knowledge of C (my language of choice for these puzzles just because I'm not strong with it). One can also use these sites to get practical practice with a given language.
Frank V
A: 

I personally don't think that abstract puzzle-solving is a great use of time (unless you just find it fun).

What exercises like this can help you with is learning how to quickly translate your thoughts into code and then test it. If you already have that ability, then I'd say this is a waste of time, but if you are still developing that ability, writing lots of little programs is a great thing to do.

Kristopher Johnson
Aren't we always developing the ability you mention?
Frank V
No, usually we are reading and re-reading the same application code over and over again, trying to fix bugs or add features. That's a lot different from creating new programs from scratch and thinking of creative solutions. (As a grad student, you may not know what the real world of software development is like: It's boring and creativity is stifled.)
Kristopher Johnson
I also work professionally as a software developer.
Frank V
A: 

CodeChef is targeted more towards the student community as a way to engage them by providing a platform for practice, competition and improvement and more importantly all this while having fun. And certainly it has a very algorithmic focus. It hosts algorithmic contests and gives away prizes to the top performers every month. It also provides contest hosting to anyone wanting to host a contest, as well as employs great creative minds from all over the world to set and test interesting problems.

And though it is predominantly the student who form the core of the community on the site, there are quite a few working professionals out there trying to outperform the students and also succeeding at it. How a software developer can benefit from this is entirely for the individual to answer. Most of it is mentioned above. Problem solving to me is fun and now a challenge. Being myself in this industry for a little while now, I can only say from my experience that it does no harm and does help quite a few times to know those big O complexities for most common data-structures and knowledge of algorithms do serve like knowing design-patterns. :)

Disclaimer: I work with the CodeChef team and my opinions may be biased, but I speak with no such intent. Just could not stop my excitement to pitch in with my 2 cents :))

Anup Kalbalia