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?

95 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…

272 Likes

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

129 Likes

richard buckland(amazing lecturer) answers: Lecture 45: What makes a good programmer? - Richard Buckland UNSW - YouTube

5 Likes

what if i dont have any other options and i have to do programming

1 Like

My case was same as you @msehgal. I studied in a CBSE school where I got introduced to C++ in higher secondary class and I accept it I was not good at it. I didn’t even understood the applications of OOP (Object Oriented Programming) in real life situations because I am a person who understands things from visuals. I was not even sure I will pursue this line further. I started looking online, talked to my seniors, wrote the problems I was facing in on private blogs and institutional websites, I practiced a lot too and the results motivated me.

From loops to pointers this was my journey, I started getting solutions to the problems, and after a time I looked at the programs I was hardly able to create and what the did this time was I wrote all the programs again and not only was I able to complete it in less time but the amount of codelines had also reduced. So basically, as it is said that you learn new things from life everyday and grow as a Human Being you learn from the programs you come across and grow as a programmer. Programming had become a passion for me. Software Development is a very huge field, no matter where you go you will always find people having more knowledge than you. Don’t get discouraged of the knowledge you have, just look how much far you have come and keep pushing forward. Keeping pursuing your passion and never let that hunger for knowledge die. Stay Motivated!

20 Likes

@msehgal @rockster
Give Long contest, Try ,never give up and trust me those green ticks are amazing.
after the contest try upsolving,
search the algorithms related to the question and try to implement by yourself.
read topp programmer’s solutions .
that’s how will you improve .Thankyou.
P.S : upvote my answer :slight_smile:

44 Likes

Learning a computer programming language is very easy compared to writing good programs and using the language effectively. For a beginner, it might take 4-5 months to learn a new Programming language where as perfecting the programming skills including the design, debugging and maintenance might take more than 3 to 4 years. To become an excellent programmer Go here : How Can I Be A Good / Excellent Programmer

hllo kuruma i am a girl n i too like programming. i wanna know tht wht is this competitive programming ??are the y the program which professionals make or …??
n i wanna knw ur approach to ur programs i mean how you solve it??
n are u interested in other things except programming like everyday science,machines,computer n all??
if yes then plzz give me some tips to make me motivated towards these things too. i too wanna be like u:-interested in evrything. plzz…

Want to be a good programmer?

  1. Don’t copy others code.
  2. Be lazy and find the easiest way to everything.
  3. Look for trouble and find your own solution to them.
    The syntax,indentation etc. comes later.
    The main thing lies in how you confront and solve a problem.
    Good luck.
17 Likes

YOU WILL BE A GOOD PROGRAMMER WHEN YOU HAVE A GOOD IMAGINATION POWER TO IMAGINE PROBLEMS AND CONNECT WITH YOUR REAL WORLD PROBLEMS.A GOOD PROGRAMMER HAVE GOOD KNOWLEDGE OF ALGORITHM TO MAKE YOUR PROGRAM IS MOST EFFICIENT IN CASE OF TIME AND SPACE COMPLEXITY.

1 Like

yes after learning this coding i will be a good coder

1 Like

I have some observation and i maybe completely wrong here. I have seen people (who had started from zero knowledge in algorithms) getting orange rating in an average of 1.5 year, and most everyone has solved approximately 600+ questions. So, consider solving 50 medium level questions of a every topic eg Dp. After this you will able to find the paradigm of the solutions quickly at least and be able to calculate the complexity using meta gaming.

  1. get your basics right. basic DSA, complexity finding and maths like number theory, combinations.

  2. solve medium level questions and read other solutions as well.

  3. try advanced topic and try implementing them. And learn all Advanced DATA STRUCTURES.

  4. of you find some cool trick try to remember them and moke notes. apply them whem you find them again.

write more on paper and write less code on editor.

10 Likes

xml version=“1.0” encoding=“utf-8”?>
Answers to: Approach to become Good Programmer.Approach to become Good Programmer - tutorial - CodeChef Discuss

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?

<atom:link href="https://discuss.

xml version=“1.0” encoding=“utf-8”?>
Answers to: Approach to become Good Programmer.Approach to become Good Programmer - tutorial - CodeChef Discuss

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?

<atom:link href="https://discuss.

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

#include<studio.h>
#include<condo.h>

#include<studio.h>
#include<condo.h>

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:

1 Like

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

1 Like