Live data from Hacker News

What Makes Great Programmers Different?

drdobbs.com

11–20 of 62 posts

Re: What Makes Great Programmers Different?

#11
post #6

Earlier quoted context omitted.

I would hope your identity was more closely linked to friends, family and hobbies than your career, regardless of how much you enjoy what you do.

I can by the friends and family portion, but why would it be better to have your identity linked to your hobbies than to your career?

I think most people are more likely to work at a job they dislike and spend their weekends on their own endeavors than the other way around, that's all.

Re: What Makes Great Programmers Different?

#13
> The other group, the reckless, consists of those who have the skills but don't have the discipline. They are the cowboy programmers of yore. They code according to their own desires, do nothing to integrate their work with that of others, scrimp on basic discipline, and cause work for other team members.

It is worthwhile to note that Steve, Linus, Feynmann (last one in physics, not coding) all belong to this category. These are the people who do programming (or whatever else they like) for their own pleasure - to derive fun out of. They are unafraid to challenge the status quo - and they are exactly the ones who cause disruptive changes in the world.

If at all, the slowness with which their reputation is dying makes me happy - because though they are capable of having highest success rate in creating start ups, unfortunately not all of them will succeed in building their own company. And it will be a sad world if these people are not allowed in established companies to make the changes that can swing the world in the organization's favor.

Re: What Makes Great Programmers Different?

#14
I would phrase it slightly differently. I would phrase it as "able to consider multiple levels of abstraction simultaneously".

When I see code execute I almost unconsciously understand what the code is doing at a procedural and sometimes assembly level, as well as what it is doing at an architectural level. It's the skill you need if you are going to work on intentionally undocumented code. It means when I encounter a bug, I know what construct I'm looking for: "ah, yes, there it is." When I architect something it is as simple as it needs to be to do the right thing and I don't have to put any extra effort in to have it communicate meaning through structure. My challenge is to provide guide posts to other programmers coming later to help them swap between those levels, because I don't need them myself, or do what I do now and work with other people who's minds also work this way. If I come back to code I wrote five years ago I still grasp exactly what is going on, and the chances are pretty good I remember the exact code.

I'm still not one of the greatest programmers I know, though. Those can both simultaneously consider multiple levels of abstraction and leave that aside to consider tiny pieces. I can sit down and carve away marble to leave a program; they can sit down and merge tiny chips of marble into something that looks exactly like I would have created out of whole cloth.

For them, unit testing is easy. For me it is challenging and a necessary chore.

On the other hand, at least 40% of my job doesn't benefit from this, mostly because of missing tools. Moving into CMake was fantastic, because finally I could apply the same approach to release engineering I applied to writing code. There are definitely roles for which this is massive overkill, and lots of people who work this way spend all their time building tools to support it rather than producing software used by consumers.

Re: What Makes Great Programmers Different?

#16
I've found that just about everybody, myself included, thinks they're at least a good, if not great programmer. Obviously a lot of us are wrong!

I tend to think that being great can be a relative term as well. There's different needs. A great programmer who is a genius at coming up with innovations can't always focus to actually get any real work done. A programmer who isn't very creative may plow through tasks like a steamroller. One may be great at intuitive designs, another is great at hard-core algorithms. Which one is the greatest? Depends on what job they're supposed to be doing. Of course a terrible programmer can wreck any of these scenarios.

Re: What Makes Great Programmers Different?

#17
Ayn Rand's opinion on genius was similar. She said that what was unique to genius was the ability to very easily shift between different levels of abstraction.

I would not refer to this as "memory", but as understanding. Memory is of course involved in understanding, but it is not sufficient for it, and does not by itself enable the ability to shift.

Re: What Makes Great Programmers Different?

#18

> The other group, the reckless, consists of those who have the skills but don't have the discipline. They are the cowboy programmers of yore. They code according to their own desires, do nothing to integrate their work with that of others, scrimp on basic discipline, and cause work for other team members. It is worthwhile to note that Steve, Linus, Feynmann (last one in physics, not coding) all belong to this catego…

Steve who?

Re: What Makes Great Programmers Different?

#20

I've found that just about everybody, myself included, thinks they're at least a good, if not great programmer. Obviously a lot of us are wrong! I tend to think that being great can be a relative term as well. There's different needs. A great programmer who is a genius at coming up with innovations can't always focus to actually get any real work done. A programmer who isn't very creative may plow through tasks like…

You're spot on about different needs. I used to work for a guy who was a genius at managing programmers and providing an environment for them to thrive (at least he did that for me). He once told me that for an innovative multi-year software project, he needed a small team of really good programmers to spend several years building and refining the core system (on R&D dollars). Then, several years down the road when the contract dollars started coming in, he'd need a much bigger group of average programmers to handle all the humdrum tasks of moving the right bits to the right places, supporting the right formats and protocols, etc. He understood that the average programmers wouldn't be capable of the former, and the great programmers wouldn't enjoy the latter. It was a significant realization for me.
Post reply on HN