If one has an aim of being a good and successful programmer, what should one prefer – contributing to open source projects or developing algorithmic skills by solving codechef , topcoder problems, and participate in various coding contests?
What Do u mean by good programmer??
It Depends on ur relative interests. Some times U require algorithmic skills in developing a software. I suggest developing algorithms skills coz more or less U need these skills in developing a good software.
@sumanth232 >> The question you have asked is like comparing apples to oranges.
Contest programming and contributing to open source projects are different leagues and should not be mixed or compared.
Next, contest programming teaches you to code - efficiently, new algorithms, fast implementations etc.
Contributing to open source projects are subject to one’s personal choice whether he/she wants to or not.
Of course you should be at least at a good level of programming to contribute there, and for that you can use competitive programming as a tool to practice.
That said, there is no general rule that a good contributor in open source software will also be good at competitive programming and vice versa.
I understand your dilemma, and I would suggest to focus on building knowledge first. If you are enjoying competitive programming right now, just enjoy it, enjoy it to the fullest. You will find it automatically paves paths for you. Hard work never goes in vain. Have fun!
Well, as it was said here, it all depends on where you want to go and also, it depends on how further your brain allows you to go, really.
Actually, I’m actually trough a hard phase on my “coding career” at the moment, as I’ve lost a very close coder friend due to some personal reasons, and without a motivation or without the support to learn, things get harder for me.
Also, there will be a time where you will have to learn Discrete Maths if you want to improve. Only very few problems on coding competions rely solely on “knowing how to code” and they do require some Mathematical insight to get you on track… If you don’t have it, you’ll have to devote some time to it and I tell you this because I don’t feel myself very motivated to continue competing, both because of the above reasons and also because my Discrete Maths background is basically 0 and so is my time due to University…
Nontheless, if you want to build a successful career over any Algorithms related field, do be prepared to invest A LOT of time (say 2 years, maybe more) to learn some very strong Mathematics Background first… If that’s your passion, go for it!!
The case of contributing to Open Source projects is totally different… Usually you will be working either over existing code, possibly more object-oriented code than the one you find here and especially there will be the logistics/human component which is obviously much stronger… I would say that up to a point both fields can help eachother mutually as they allow you to put some things in perspective, but, ultimately, it will be dictated by your personal interest
I found a nice article by Co-founder at HackerEarth regarding this .
Have a look at it .
Do we often use such complex algorithms , while developing applications , softwares on a common basis… or are algorithms confined to only some particular hi-fi areas?
I must admit we won’t often use such complex algo’s
but the approach we learn while tackling problems in codechef etc will enhance ur ability in designing some complex software
I think this Helps
well, I always prefer algorithms over any other stuff. This particular field interests me a lot, due to some quality logic involved in it, and yes, I am very fascinated about mathematics…