How to get there: A skilled Programmer

Posted on 2006-04-28
Last Modified: 2012-08-14


I will sincerely want to find out, from the experts what will be needed to be a good programmer?. Some school thought believe you need to have studied and gone through books on algorithms, data structures e.t.c. What will you recommend as an essetila foundation towards a progressive learning curve for a beginner?

Are there books out here which are well planned with hands- on exercises that help mould the fundamentals needed for a seasoned programmer? if there is please let me know. Are there books as well that help mould good programming logic? please is there is any please let me know.
Question by:buddhie2
    LVL 16

    Accepted Solution

    Hi buddhie2,

    IMHO The book stuff is useful but I think the following might be a good start:

    1. Be patient.
    2. Be Lazy but not Idle.
    3. Listen.
    4. Think.

    LVL 11

    Assisted Solution

    LVL 48

    Assisted Solution

    There are two types of programmers: pure programmers, these are guys that just feel well sitting near computer and making programs. There are also programmers who know a lot of things except programming language: algorithms, math, physics, electronics etc.
    I belong to the first type (and trying to improve learning additional things). Though there is always a lot of work of such type, pure programmer is restricted to simple coding. Real power of programmer is good programming skills and good math, algorithms and some additional knowledge.
    Learning programming is pretty easy if you understand programming logic and like it. Just choose programming language and start working with it. Every language has a lot of beginner tutorials and you can get first results in a few days.
    LVL 32

    Assisted Solution

    I think to be a good programmer you must really like to do it. It is definitely not for those who like to work 9 to 5. You must be able to think of everyday problems and see how a program might be written to solve that problem.

    Yes, I would recommend a few courses in the basics that you listed. If you already have some background you may be able to get by with reading books instead of courses. Try to focus on good books, i.e. check the reviews.

    But a very important thing is to write as many programs as you can, i.e. learn by writing programs that actually do things that you find interesting, whether it is solving science problems or playing games or music.

    The actual language is not that important from the learning perspective, though it may have an important bearing on your ability to be employed.
    LVL 24

    Assisted Solution

    What makes a good painter? What makes some one good at hand crafts?
    What makes someone a "good" writer.  

    So IMHO the here mentioned points are valid. But let me ask. What *is* a good programmer?

    Is someone good knowing every trick in whatever language to squeeze out the "smallest", "fastest" whatever from a program?

    The answer is may be. But may be it's just the wrong approach for a program you know will change over time.

    So you have to define to yourself what you think makes   a good programmer.

    I guess some thingsa are quite useful
    - knowing a bit from many areas (have an idea on what approaches are out there to "do" progamming.
    - be patient
    - be flexible
    - be curious
    - be willing to learn new things
    - be sceptical

    However it's difficult to tell, because the question still remains.
    Do you think the guys here are "good" programmers?

    I'd argue a few here are, but even with grades does that mean really that they are good? Unfortunatly the only "grades" you can gave are A,B,C, so what does it mean to get a grade of A?



    Author Comment

    I want to thank you guys a lot for taking out time to answer my question.
    I am truly grateful.
    LVL 9

    Assisted Solution

    I like to think of myself as a programmer, even though I have very little formal training.  A big part is just tenacity and ability to learn.  I think the field of programming has changed in that fewer programmers can get away with being versed in one language.  In one job you may be programming in C#, VB, PERL, and configuring Apache.  And then you may have to port something from Python or Java.  In other words, it pays to have tenacity and a desire to learn.  

    There are many fundamentals for programming for any language, i.e. algorithms.  A basic history of programming might help you to put some things into perspective:

    First there was the early days.  Code was 100% procedural.  Step one, do this, step two, do that.  No code reusability.  Imagine stacks of puch cards.  This is one method of programming.  Useful when there is no reusability to be had, especially with small, quick scripts.

    Second, somewhere along the lines looping was introduced.  Do this 20 times.  Gotos would probably fall into this category(try to avoid goto at all cost).  Some reusability.  Every language has some kind of looping mechanisms.  The basics are for, while, do, foreach.  This begins the quest for reusability.

    Third, we have gosub or functions.  You can define a function in one place and call it from several places without losing your place in the execution of the code.  Lots of reusability within a script.

    Fourth, add modules and libraries.  Now we can add lots of functions and share them accross many scripts or programs.  Lots and lots of reusability!!

    Fifth, object oriented programming.  With OO you can create abstract things and make more defined things from them.  You can create several instances of a type of object and manage them separately.  This is by far the greatest leap, IMHO.

    Anyway, I think this creates a great strategy for learning and advancing.  Also, you will find that the more complicated the programming project, the more planning it requires and the more reusability you will want to incorporate.  To that extent, this is also a good breakdown for deciding how to approach your programming projects.  The bigger the project, the more modern the method.
    LVL 4

    Assisted Solution

    Programming itself is just a mean to an ends.  Any idiot can program! (see for examples of things NOT to do!)

    What is important is defining abstractions.  Designing software that can do complex things whilst writing the code in the simplest way possible.  Your goal as a programmer is to produce code that is clear, easy to understand and solves the stated problem.

    To focus on solving the problem you should learn alternative programming languages, where you can focus on pure problem solving.  Learning a different paradigm of programming will make you appreciate and comprehend different ways of doing things.  I recommend learning a functional language (like Haskell) or even a language such as LISP / Scheme (see, because you really get a handle on the essence of problem solving.

    MIT do a very good course called How To Design Programs, which uses Scheme and lets you learn by example.  Very much worth a read (see  This course will teach you programming logic and has plenty of hands-on exercises.

    MIT also has a video based lecture course, called the Structure and Interpretation of Computer Programs (  The lectures are excellent, if somewhat akin to a bad 70's cop drama :)

    I'd say if you worked your way through these you'd be well on your way to being an excellent programmer!

    LVL 9

    Assisted Solution

    Practise makes perfect. But speaking German fluently doesnt mean you are German, you need to live and breathe and make time to learn more about the bigger picture (like excessive beer and sausage consumption)
    You must be willing to learn about the whole world of computing to ensure that you are doing things correctly in the first place. Theres no point writing an enormous XML/SOAP application if a web page would have done the job in 1/10th the time and hassle....
    LVL 1

    Assisted Solution

    Programming isn't hard, but you have to ask yourself, "will it keep me interested?" No sense starting if you won't finish!

    You will also have to be a bit of a perfectionist, you will HAVE to be able to rewrite big parts of your hard work.

    And yeah, books are useful, but I still prefer open courses, or if possible: college!
    LVL 9

    Expert Comment

    Extortioner, agree thoroughly with your other comments but 'College', youve gotta be kidding. In 2 years of college i learnt almost nothing compared to what i have taught myself by pure experimentation and language and syntax research over the years.

    I started coding back, way back before the internet was even conceived, now it is my primary resource for help, advise and research. I do buy the odd book, especially when major language shakeups like .net happen or i want to learn a new languasge for basic usage but theres just no substitute for hard work, persistence, enthusiasm and a genuine interest - oh and a big dollop of common sense goes a long way too..

    LVL 9

    Expert Comment

    Good call!

    Featured Post

    6 Surprising Benefits of Threat Intelligence

    All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

    Join & Write a Comment

    Suggested Solutions

    Title # Comments Views Activity
    TVirtualStringTree  search using TEdit 7 68
    sum28 challenge 31 82
    fix34  challenge 9 70
    sumDigits  challenge 7 40
    Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
    When we want to run, execute or repeat a statement multiple times, a loop is necessary. This article covers the two types of loops in Python: the while loop and the for loop.
    The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.
    This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.

    734 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    22 Experts available now in Live!

    Get 1:1 Help Now