What Makes a Good Programmer

  • I've been programming for over 25 years not counting the year I did COBOL after college before a 12-year stint in a non-IT capacity.  I've worked with, worked for & supervised a number of developers over the years.

    There are some people who just shouldn't be professional programmers.  I know I shouldn't be a professional athlete, singer, or dancer.

    I've had the pleasure of working with some truly outstanding developers - no one famous, yet top notch. 

    What has troubled me is those people who are excellent developers and actually have OK people skills who could care less about the business purpose of the application.  Programming end-user applications is much more than just satisfying a list requirements - it's using your knowledge, skill, experience & "soul" to provide the best solution for the client.

  • Commenting should be a description of what the code is doing.

    Good code makes it easy to understand how it is doing it.

    These are two distinct objectives.

    And no, a programmer should not be the last person to test but a really good programmer should give the tester no reason to send it back for rework.

  • If a really good programmer should give the tester no reason to send it back for rework, then there must be no "really good programmers".  Unless you count those who write a "hello world" application as these are about the only ones that have no bugs in them.

  • This is what business wants and sometimes I can give it to them. One of the main things to obtaining this goal is to get customer buy-in as early as possible. In my experience the old adage that the customer doesn't know what they want until you show it to them is pretty true. So I show them prototypes until they are happy with the system. When it reaches user acceptance testing they already know what they are getting and so will be happy with the system. Systems are getting easier and easier to program these days but the complexity keeps on going up and up to compensate as business system get more and more automated and many of the easy programming tasks are gone because they have been automated away or are COTS.

  • Thanks for sharing your thoughts with the rest of us and for getting the ball rolling. It seems like a good article invites responses. We all strive to be the best that we can be within our limitations. It really is good to aspire to be better, no matter where we are in the spectrum.

  • This is a pretty inspirational article. I am not a developer or a DBA... I am an admin (no flames please), and I absolutely believe that this content is true for us as well...

    Thanks so much!

  • the one that got me chuckling was the Star Wars variable names...


    Everything you can imagine is real.

  • I think the conversation has brought up some key points. People use words like Guru and such with their own view of what it means.

     

    I have friends who call me a Guru and I think they are nuts. Sure I know I am competent at the things I do and I adapt fairly quickly to new things.

     

    But the label is so vague and is many times generalized on perception.

     

    I think the key to McConnell's view, which is many times overlooked, is accountability and not really performance. Many times what he labels a level 4 person is someone who can demonstrate the skills and is confident enough that others feel they hold a high degree of accountability in their work and are willing stand behind every line written even if an error appears. Read his work After the Gold Rush: Creating a True Profession of Software Engineering and you will get a better sense of what I mean.

     

    The issue is that you have people who code for a living but if something goes wrong they spend more time stating why it wasn't their fault rather than taking accountability and moving things forwards as fast as possible. The problem with this is software is in so much we do and use that many areas do need maybe a licensed profession to work in areas such as medical and other higher risk areas where more weight applies to the job they are performing. Just because you can code and accomplish great things doesn't mean you have reached that level where someone would stake their life on your work.

     

    In addition I think those we view as Guru's should be able to teach those who want to perform the same type of tasks and be able to accurately express what is going on (the whys and wheres of the code). I understand most of the wheres of SQL but not enough of the whys to feel I have achieved enough to feel comfortable being called a guru.

     

    Then I run into people who have degrees and can program in many languages but their understanding is more rudimentary than what I have as they just focus on the how to and have no real understand of what they did but that it just works if they do it that way. Downside I have found is many get stuck in the style of coding they do and as improvements occur they never move on to a better way as theirs still works, so as they say "If It Ain't Broke Don't Fix It". Many times it is ok but in a few instances I found the old way so much harder to read and debug that it was quicker to rewrite hose areas and find a new person.

     

    But again until someone defines exactly what a Guru is there will always be varying opinions and many debates.

  • Yes i think there are two type of programmer one who knows the technology and the other who doesn't,but if they given a chance to improve can do better.And some of them are lazy bugs they just join the profession to get those lavish paycheks these type of people depend on others and get done their work with help of others and never try for themselves,they take others for granted and ask them to do the work assigned to them.. I think these fellows should be taught a good lesson that they should be monitored from time to time and terminated if they are not upto the performance mark.

  • What Separates a programmer from a some one with a compiler ?

    Re-factoring for performance, readability, extensibility and development effort.

    A common misconception of poor quality and efficiency is due to assumptions about the quantity to which

    these should be implemented.

  • It's interesting that many posts in this thread have shifted from what makes a good "programmer" to what makes a good "program" (e.g., descriptive names, regression tested, etc.). I submit that one quality of a good programmer is the she/he has a very high tolerance for boredom

  • There are so many reply already.

    I think "Everyone, as long as not stupid, can become a good programmer", but if someone want to be a better then "Good" programmer, there is talent.

    A program is good or not was not judged by someone see the code behind, it is by user who love it.

  • Very encouraging words. However, the programmer is the low man on the totem pole. He gets all the blame, the least pay, very little of the glory, and can always be replaced (usually by someone in India). In order to become indispensable to their company, they should strive to become analysts or project managers. These positions do require a general knowledge of current technologies but, creativity and strong interpersonal and managerial skills are much more important.

  • My two pence. I have read most of Code Complete and have worked through Project Survival Kit by the same author and adapted most of the techniques mentioned. My company thinks mean and lean is the answer, do things fast and furious. Until the day of reckoning....! No documentation, no proper comments except such as //this is a counter.

    I think we have to distinguish between a coder and a developer. The code just writes code from the top of his head - the developer put some effort into a logical design on papaer. The guru in short needs to have the skills to envision, design and code the application. There are very good programmers that can write an entire application without any design on paper (or even a whiteboard), all OO based - the complete design up in the head. The application will work as intended, but do not try to debug, enhance or maintain such an application. Long coded modules, included code, no OO, no breakdown into smaller functional pieces for code reuese- nada of those - here and there an ijk or an xyz.

    The guru must have the ability to mentor as well. He must be able to take control in a team and lead the way. Guru's are not always wizkids. They are real people with real skills which the DO apply. I was once a coder, progressed to a developer/programmer en strive to be a guru. Eish!

  • Lavish paychecks?! Man am I in the wrong company...

    I think what makes a good programer is someone who is always willing to learn new processes and new technology. I'm a department of one, and I am constantaly looking for ways to make my processes reusable and streamlined; if not for the sake of my company, than for my own personal gain in knowledge.

    One person posted that a Guru shouldn't be a mentor, I disagree. I think a Guru is a master at their craft, and is willing to pass on that knowledge to those that are coming up in the ranks. There are people who come to me because they know I know the answer to their question, in that reguard I am a Guru to them; but I know that I still have a lot to learn, and I will still be learning until the day I die, and in that respect I do not see myself as a Guru.

    The more I learn about technology and programing, the more I realize there are things I don't know and maybe never will...

    Imagination is more important than knowledge.

    – Albert Einstein

Viewing 15 posts - 16 through 30 (of 41 total)

You must be logged in to reply to this topic. Login to reply