What Makes a Good Programmer

  • Comments posted here are about the content posted at http://www.sqlservercentral.com/columnists/jchan/3000.asp

  • I am new to the software development. This article impressed me very well. Will try to become a good programmer...

    Thank you very much for your valuable thoughts...

    Good wishes to you

  • I am not a guru, hopefully I am a good programmer, but this article sure encourage me to keep on trying to work for good programming and a  satisfying execution of my job.

  • "And then there are developers who just know how to do sweet talk and pretend they know everything, in fact they do nothing right, you just do not know how they can stay in the business."

    Beware of these people when they're really good at it, because your boss(es) may never have any more insight in your products than what they can see when they use it. It's even possible those in charge know nothing of technology.

    So the sweet talkers may never be revealed. I've worked with people like this, and they seem very professional. Any time they make a mistake, they also make it sound like you in fact made the mistake by thinking they had done that in the first place. In fact, they make it sound like they were about to do what you suggested all along.

    And we end up doing their jobs for them, because we will get in trouble if they make the whole group fail.

    But I have also met people who are good programmers. They may not have a great sense of logic, but if you've got technology in your blood, you can do well with little.

    I have creativity and logic in mine, and this in itself has bred my sense of technology, even if I don't have the same natural ways with programming languages, linux console system handling, etc, as many people I know. But this line of buisness takes all sorts.

    People say I'm a good programmer, though I am utterly inexperienced so far. I hope to live up to it.

  • Two proverbs here:

    1) Anything worth doing is worth doing well.

    2) Beauty is in the eye of the beholder.

    I think anyone who has ever written code, has tried to make it work good.

    But what is understandable and sufficient for those who write code merely to solve a problem, may be absolute horror to those who regard writing code as an art. It depends on your standards and point of view.

    Whenever I need to write code, I like to name variables for what they are, for example if goal() set score = score +1. It makes the process more transparant for me. If professional programmers will never regard me as anything more than an amateur for that, so be it.

    Opinions are like assholes: everybody has one...

  • The newbies were impressed by this post because it was written to impress newbs. This said little that hasn't been said (often) before...and by people who write a lot better than this. As for Gates, Gates is all about marketing. Microsoft does the very thing they decry so much...Push programmers to write for production, not quality. For proof, you need look no further than every single product they ever released. Gates loves to come off as a 'guru' himself, and maybe he is, but certainly not a tech guru. No, Gates strong point has ALWAYS been in marketing, certainly not in innovation. The only innovation M$ has EVER brought to market is that which they first purchased (or simply robbed) from someone else. But I digress.

    A 'guru, from a programming perspective, doesn't, in fact, need ANY interpersonal communication skills...It's ridiculous to assert otherwise. If he has them, well that's just gravy. It makes him (or her) a LOT easier to get along with within a team work environment, but has NOTHING to do with his/her 'guru' status.

    Gurus are NOT, although the label 'guru' would indicate otherwise, in ANY sense a teacher, or a mentor. They don't NEED to teach, because they are more than capable of DOING. If they CHOOSE to teach, again, that's just more gravy.

    Gurus are the ones that not only KNOW five ways from Sunday how to accomplish a particular coding task, in multiple languages and on any platform, they ALSO know (and much more importantly) the OPTIMUM way that said task SHOULD be done.

    They also are ALWAYS thinking 'outside the box'...In fact, they don't even acknowledge the box's existence for the most part.

    The poster also mentioned how humble and unassuming this hypothetical guru is. In my experience (ESPECIALLY during my 4 years at Microsoft), that's simply not true. They are TOTALLY assuming and oftentimes downright prima donnas...and with good reason. They realize their worth to their employer. They know the savings in time and money their presence on the work force represents, and they expect management to recognize it as well....and to compensate them accordingly.

    Merely 'good' programmers on the other hand, are a company's bread and butter. They ARE the ones that simply 'git 'er done'!...And Management loves them for that fact alone.


    Regards,

    Cyberian

  • The one thing that separates the good from the bad is their ability to test their own work.

    A programmer who thinks about everything that they will need to test for covers all of the possible outcomes and sends out code that is cost effective.

    A programmer who focuses only on the primary goal does not cover all eventualities and turns out code that has holes in it. This is expensive. If code with flaws get out to the testers it is far more expensive to fix.

    Of course the latter can eventuate when management concentrates on cost instead of quality and of course this ends up being far less cost effective.

  • Very good article which motivates one towards learning new technologies and  implementing better coding.

  • Your criteria:

    1."First the real gurus don't advertise their expertise."

    2."gurus ... try to make it easy for others to understand"

    3."And of course, the guru has kept up with technology"

    4."Finally...A good developer spends a lot of time talking to the users to understand what they need"

    You're specifying the criteria for a good teacher, not a code guru. And 4 is totally left-field, a good programmer does not need to be a good analyst, they just need the support of a good analyst.

    Of the two people I've met who I think of as gurus, they fit but one or two of these criteria (usually just keeping up with the tech).

  • This is quite a good article for the fact that it opens up conversation and opinions.

    I'm going to be a bit pedantic in my opinion by saying that you have to be careful of the terms that you use.  The only communication skill a programmer needs is the ability to communicate with a computer.  A programmer will not design a system, they will be given a design that they have to program.

    The one thing that I do agree with 100% from this article is the description of those who talk about what they can do etc.  I think I have worked with at least 2 of these in every job I've had, it's a part of life that we can't get away from.  We just have to take comfort in the fact that it doesn't take long for these people to be exposed.  The same goes for those who refuse to learn new technology.  These people won't be in jobs for long and most likely don't have a very fulfilling life at all.  I feel sad for these people more than anything.

    The description of a GURU according to this article is something that I don't think I have every seen and I don't think I ever want to see one.  Mr Gates certainly is not a GURU.  This is the man who predicted (something like) the internet would come to nothing and that we would never need any more than 256 or 512 MB of memory in a computer (these are not exact quotes).  I must be in a dream now where I am posting this to the internet on a laptop with 2GB of memory.  Mr Gates is a specialist (he certainly is very valuable to his company).  His speciality is knowing what purchases to make and he has the ability to very quickly exploit new technology.  I am not saying this is a bad thing, I think that he is good at what he does and that without him much of the technology we have today would either not exist or not be so widely used.  I don't think he robs people though.  This is a very careless accusation to make!

    "When you read their programs, they already have comments and their code is easy enough to understand."

    This is not enough to be correct.  It should be that their code is easy enough to understand and has the need for very little comments.  If code needs a lot of comments all over the place, the programmer feels the need to explain their work.  A good programmer should write self explanatory code.

    Yes it is true that a good programmer should test their work etc. but they should NEVER be the last person to test.  Do authors proof read their own writings before it goes to print?  No, they do not and neither should a programmer.  Testing is a specialised function within a production line and for it to be performed to any level of acceptance needs someone with a different way of thinking than any programmer that I know.  I am not good at testing, but this does not make me any less of a "programmer".

    I don't even claim to be a good programmer, I just claim to be good at what I do.  I don't know if technology and programming is in my blood, but I have been told by many people that it is.  I never even new what a PC was until I was 18, a keyboard was something that you could play music on.  By the time I was 19 I had learned enough through books to get my first job as a programmer.  10 years later and I am still learning and I have only been on 1 course, which my employer insisted I attend so I had to.  I can write (100% working) code when I am sleeping (this has been witnessed many times).  For these reasons, people say that it is in my blood.  As a legendary Scottish footballer once said "mibees Aye, mibees Naw".

    If you're a bit confused with some of the terms in this answer, then in Scotland NAW means No, AYE means Yes, and Mibees means Maybe. If you're still confused try this link.

  • Nice article. In addition to its competence, I'm impressed with its ability to tease out a lot of first time posters.

    I think one poster got it correct when he was talking about a good programmer being one who covers all eventualties. It parallels my take on programming (and implicitly programmers):

    A bad program just works.

    A good program fails correctly.

  • I think you can have gurus in many different ways. Some people here take the track that a guru programmer is a hardcore programmer who writes code while they sleep, and probably chugs on Mountain Dew all day long, haha. Of course the article's author takes a broader track and includes the ability to relate to other people in an effective manner. Guru is, of course, in the eye of the beholder. If a person excels in a quality you admire then they're a guru to you.

    I personally look at programming as more of an art than a science. I work at a university and one CS student who was working here asked me how I know to make a piece of code into a class versus just leaving it as a bunch of functions. I really couldn't answer him because I didn't really know, I just knew. After thinking about his question some more I did begin to spot some tell-tale indications that code needed to be promoted to a class, but that I never objectively realized this makes me think programming is as much of an art than science. There are many ways of writing a program and some are just cleaner, nicer, and more harmonious than others.

  • Where are these guys coming from that they have system analysts to design systems for them? In my company we actually have to understand the business for which we are developing a system. This is called having the domain knowledge of the business. We have to go from a business requirement clear through to user acceptance testing and then support it. That means the job must be done correctly or you will spend much of the time supporting the systems you have created in the past. Of course we don't let ourselves be the sole testers of the system that would be stupid and really asking for trouble. You do need some interpersonal skills in order to work with the users to obtain requirements. In terms of having comments in your code I agree that they should be looked upon as a secondary but important measure with the first measure having it understandable with out them.

  • This was a great article. I am guessing that the negative posters haven't actually read the book. Perhaps they saw themselves at a less-than-guru level and are reacting to that. I did read the book, and it is excellent. There's a lot more in there than merely the four levels discussed in the article; it covers the overall approach to good development. But I digress.

    Programming is not just a matter of writing "good code" it needs to meet the specific needs of the customer, within the scope of the requirements, be documented so that he / she who follows can easily understand & maintain it, and be flexible enough to be extensible without major rework. This requires not only technical skills but also the interpersonal skills to discuss the WHY a particular piece of code needs to be created. It also requires real-world experience which cannot be learned from a book.

     

  • My point was that most of us are a lot more than programmers and that programming is one of the tasks that we perform in our jobs.  I also have to understand the business, communicate with customers (internal and external).  I have to test to a certain degree and I also have to document my work.  Our jobs are much more than being just programmers.

Viewing 15 posts - 1 through 15 (of 41 total)

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