Approach to become Good Programmer.

I really want to know that whats the ideal approach for becoming a good programmer? Whats the secret to solve the Codechef questions?
Any External links, online tutorials, e-books are welcome.
ANY help will be appreciated.
I also want to know whats the X-factor that your resume must have in order to be shortlisted for Software Developers post.
What is actually required?
Is it theory, is it just practice or something else?

16 Likes

See I will answer each of your query one by one…

First of all, for being a “Good Programmer” comes from the mental capabilities of a person… for writing and understanding good programs you need logical understanding and implementation capabilities…

Now how to attain these capabilities, the key to this is “PRACTICE”… we all here are capable of coding awesome codes, but these codes are written with huge analysis and finding the deepest logics behind question… sometimes this takes more than a day or even 10s of days… and this is secret of solving Codechef questions…

Yes, you need to refer to external links, tutorials, books, research papers, etc. on various topics like for Data Structures and Algorithms you need to study Greedy Approaches, Divide and Conquer, Constructive/Iterative Algorithms, Graphs, Trees and other Data Structures… and some of the tuff ones like, Ropes, Segmentation Trees, etc. which you will eventually learn after much of your efforts… apart from this you need to build your mathematical basics to the best, to utilize your capabilities, including series(Fibonacci, Catalan, AP, GP, HP etc.), formulas, Probability, Permutation, Combination etc… Sometimes there is a requirement some other subjects(like Physics) but most of relevant information is provided in the question itself…

And for your purpose of being a “Good Programmer”… dont ever try to copy codes… even if you are looking some editorial or research papers… try to study the logic and then write the code yourself… Try to study the codes of other coders… if you cant understand them… just try to print the intermediate results to understand the logic behind each line… One thing which may effect you during the competitive programming is cheating… to overcome this you can take a print out of the relevant resources and try to solve things by hand… for more purposes use discussion forums to solve your problems, there are so many awesome coder and top performers like @bugkiller, @kuruma, @junior94, @vineetpaliwal, @anton_lunyov, @betlista, @cyberax etc etc etc here which are thirsty of solving and advicing your doubts :stuck_out_tongue: …

For your Resume purpose, first you need to decide whether you want to enter this field or any other… you must not force yourself into competitive programming if dont like to become a coder… just follow your passion and your resume will have any X-factor you desire…

I think this can help you in deciding what you need to do, with this long answer I will end typing and will love to see you on leaderboard charts soon… all will come with passion and patience… well anyways for now welcome to codechef community…

49 Likes

that was an excellent answer… yes i want to be a programmer. I ignore my grades in other subjects for coding. I like to devote time but was not getting the guidelines. Thanks @devanshug. I was waiting for answer since I posted it. :slight_smile:

@devanshug : well said, it was very useful. Even i feel the same as @msehgal. good question and a great answer :slight_smile:

1 Like

@devanshug This is indeed a great answer and I hope that @msehgal can get the extra motivation he needed from it :smiley:

1 Like

thanx everyone… for such a wonderful response, I just meant to motivate @msehgal and provide him some instructions in competitive coding… Its good that it is useful to all of you… haven’t thought that the answer will be so acceptable… jst wanted to listen thoughts of other coders @bugkiller, @kuruma, @junior94, @vineetpaliwal, @anton_lunyov, @betlista, @cyberax, @bit_cracker007(Sorry, I forgot to mention your name) to this question, but I dont knw why this question is closed and I dont knw how to start it again… :frowning:

1 Like

now it is open again @devanshug

Now its open :smiley:

Hello @all and @msehgal in particular,

I am not a top performer for starters… Faaaaar from it… I would define myself as a very interested and somehow dedicated “noob”. In fact, I shall write a longer post this time and sort of describe my story with programming and then provide some of the tips I have been providing over my participation so far in Codechef Discuss.

I started programming when I was around 8/9 years old. But, it was a short journey. My father, who is a Civil Enginner that recurrentely uses Visual Basic and MATLAB/Fortran to deploy some of its research results over the form of data analysis/graphics, showed me my first program ever:

A rectangle drawn inside a Visual Basic Window!! How exciting can that be?

It turns out, that for a 9 year-old, that’s really pretty boring actually…He then gave me a book called: “Programming with Visual Basic 6” (it is a portuguese book, I translated the title) and he encouraged me to work troughout it and see some examples… I swear to God I tried… I tried very hard!! I lost all my cartoons for that afternoon in an attempt to do a Drop-down menu and I had to program inside it, a new command to draw the above rectangle as I clicked on it.

(Obviously, I know now that what I was doing was using a framework that relied on Visual Basic programming language and I was actually doing event-driven programming which is a subset of OOP, that falls a bit out of ambit of Codechef… Nontheless, this was my first contact with a computer)

After that very bad experience, I totally lost interest in programming for ages… I kept acing at secondary school, always with good grades on Maths and Physics school subjects… And from say, 10 years old until I was 17/18, I never even thought about programming for a single second…

Then, at the age of 17, I joined a Physics forum, from a famous Portuguese University, called: “Universidade de Coimbra”… That forum could be compared to an hypotetical IOI forum, that is, it was a forum whose main goal was to prepare students from secondary school to do very well on IphO (International Physics Olympiads)… However, I didn’t compete at them (I wasn’t selected), but I stayed in touch with those people using those forums for quite some time (almost 2 years), and it was on one day, when I knew that the forum administrator was the 1st person in Portugal to have learnt Python!!!

He actually introduced Python on the forums and that was when my spark for coding lit up again! After struggling with the syntax of Python for weeks (no shit, it took me three weeks to figure Python used white-space as identation! :stuck_out_tongue: ), I then successfully wrote my second program ever:

Ask user to input two numbers and print the result of their sum!!! :slight_smile:

This, however, for being away of the OOP paradigm of Visual Basic, got me more motivated, and, as I had been recentely introduced to Project Euler, I immediately started expanding my Python knowledge and started solving as many PE problems as I could!! :smiley:

Some of them were trivial in Python, some I hacked, some I always brute-forced and waited for days to see output and other silly stuff any un-guided begginer would possibly do.

After solving around 40 problems (some of them with copied solutions sadly…) I started to see that all the remaining problems were too theoretical and too hard for me to solve… So I searched for other websites and discovered Codechef!!! :smiley: But, all problems here apart from TEST were very hard… I got demotivated ans lost interest in programming again… And, as the following year I would enter university (I started in the Civil Engineering Course only then I switched to CS) I had more on my mind than coding…

In Civil Engineering, during the 3 years I stayed on that course I only had 2 programming related subjects…

I had a subject called Introduction to Computation and Programming, where I basically learnt the C++ syntax and nothing else… I learnt how to use temporary variables to swap 2 variables maybe :stuck_out_tongue: you know, advanced stuff a Civil Engineer would need to know… :stuck_out_tongue: Nontheless, afterwards I was armed with a powerful knowledge, I knew C++ syntax :slight_smile: Maybe I could use it to some more Project Euler problems (I did one or two additional problems in C++)…

Then, on the second year I had a subject on Numerical Analysis, where I leanrt the Bissection Method to find roots of equations eheh :slight_smile: It was an interesting subject which took me back to project Euler, and where I managed to solve my first Dynamic Programming problem (Problem 81). I then came to Codechef and OMG I was such a pro… I solved so many problems from the PEER section… Like 15 or so… I got excited again… But I was lacking the time due to my univ course… and I stopped for a while…

Then my life gave a twist… A big twist actually… One day, when I entered Facebook… I saw an announcement for JULY12 long contest… User kuchumova_mary had commented on that status something like: “Can’t wait for contest!!”… I was in awe!!! How could a girl so much younger than me know about a programming contest??? Bruno thinks: “WTF is a long contest?? They have like live programming contests?”

So I added her on FB… We chatted for a while… and she introduced me to Codeforces and to the world of competitive programming (note, that by now I was aware of google code jam and other contests, but saw them only for… geniuses, not for me) and I introduced her to how Codechef worked and etc… So, we became “coder friends” (we still are today :smiley: with some broken hearts in the middle… :’(, but, I felt like if I wanted to learn more, Codechef was the place, and she was the person who would guide me), and discussed problems on Codeforces and on that contest via FB… I had TONS of fun… Even though I only solved one problem… I felt like programming and algorithms were much more appealing that what I had realized when I was 8 years old… But, as you can all see now, my experience in competitive programming is basically 0… I just have the curiosity and the will to learn a lot more than what I know today, which is very little.

Today, as time passed by and as I attended several contests here and on Codeforces over the last months and as I switched to Informatics Engineering I consider myself to be a better programmer than the one I was before, but, I also know I still have a lot to learn and that I will never, ever be able to pay back to this community for what they all did to me and helped me in terms of my interest in programming… :slight_smile:

I hope my story isn’t too boring, or too long… But, this was in general terms, the path I walked to become who I am today as a coder and as a person as well!!

It is with pleasure and hope that I see the rest of this path may be done by walking alongside every friend and every person I have met here… And it is a wonderful feeling!!

Best regards,

Bruno Oliveira

34 Likes

three things really amazed me about your story… 1. you first coded at an age of 8/9 year… I just saw some Visual Basic Programs at that age but never tried to write one… I actually started coding at an age of 14 in Java… I never studied C++ (though my college heavily focus on it)… 2. it was Python which brought u back in programming world… which is my favorite… its actually because of Game Programming, I first learned Python… 3. last but not at all least, A “girl” introduced you to competitive programming… 1 in 100 cases that would ever happen

10 Likes

@devanshug, and about 1/10000 she would love me back… Nontheless, she means a lot to me and she knows it, and, as I said, it’s amazing what codechef can do… Also… Hope is the last thing to die :smiley:

4 Likes

I also owe a lot to codechef, codechef gave me a purpose and motivated me to go even further… I can’t express how much I love coding, I put a lot of heart into everything I write, no matter how small or insignificant it is… Being able to share that with other people is something that I will be always thankful for…

3 Likes

@devanshug there’s nothing I can add besides what I’ve said a lot of times, even if I did, your answer is detailed enough…

thank you guys some wonderful replies… @Devanshug and @kuruma

I’m glad you found it helpful @msehgal :slight_smile:

some amzaing answers here… hope to see more from the community.

richard buckland(amazing lecturer) answers: http://www.youtube.com/watch?v=s9ADu4ErYzM

learn java …get cool tutorials…
learn java click here… http://goo.gl/gpdP3K

@kuruma, Where is she now? What happened to your love story?

@haccks sometimes it is best not to learn that both Romeo and Julietta committed suicide for their love. just keep in mind that they would commit suicide if it is necessary :wink: