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.
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.
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.