Question

You know who they are. They are the rock stars of programming:

  • They code 10X faster.

  • Their code just works.

  • They not only know their primary language inside and out, but they also know how it works under the hood.

  • They know the answer to most any question before you ask it.

  • A few of them invented the programming principles we all use.

  • And they tend to be uncharacteristically humble, as well.

What is it about these folks? Is there something about their thought process that is fundamentally different from the above-average programmer? Or are they simply very talented people that work hard?

To put it another way: How can I be like them? I know what I think I need to learn to be that good, but it seems like it will take me the next ten years to learn it, and then my knowledge will be obsolete.

Was it helpful?

Solution

  • Humble: An exceptional programmer will never claim their code is the best, in fact they will always be looking for a better way (Every chance they get.).

  • Patient: An exceptional programmer will have boundless patience (This does not mean they will waste days on a problem. See: Troubleshooter).

  • Troubleshooter: An exceptional programmer will be able to solve a problem in minutes that may take days for your average programmer.

  • Curious: An exceptional programmer will be unable to resist trying to figure out why something occurs.

  • Engineer: An exceptional programmer will engineer systems rather than hobble together a mishmash of frameworks (This does not mean they won't use frameworks.).

OTHER TIPS

You hit on a lot of it in your very last bullet point:

"And they tend to be uncharacteristically humble, as well."

I think it's a combination of humility -- not just outward but also inside their minds. They accept being wrong, making a mistake, and have a very quick turn around from frustration. A lot of programmers will try something, fail, and then get very emotionally wrought pretty quickly, a state that is anathema to writing good code. You have to accept that you're not perfect, and that you're going to screw up (often!), and that the best thing you can do is learn how to quickly recover when you do screw up. It's a humble confidence, like "I know I'm going to mess up, but I also know if I keep trying, I'll get there eventually."

There's a saying in NLP, "There is no failure, only feedback." To be a rock star programmer, I think you have to embrace that. There is nothing you can't code. You might be slow at it, at first, but if you just keep trying and refuse to stop when you fail or screw something up, you'll deliver. And in that process you'll learn all the mental tricks you need to become one of the best.

Advice is, of course, only as good as its source, so... all just my opinion.

They care deeply about their code.

Personally, the best programmers I know/knew understood the basics and were NOT the expert in any given language. They simply had sufficient experience on just about everything. The canonical "Jack of All Trades."

It is more than foundational science, there is significant value in experience in actual operations. Examples, those that understand the Unix Philosophy and thus could solve unknown problems with various tools given (IOW they knew where to look) far out-value the Java expert who coded a threaded and parallel solution.

The outstanding programmers also respect those who came before them. They don't hate relational data models or cringe when they see SQL as a formal API, nor balk at FORTRAN in maths. They know that OO is not the end-all, and above all else understand that programming is an ART, not a science.

When I first started, I was working with this guy who I thought was absolutely brilliant at everything he did in terms of programming. He quite possibly still is, but he's moved up to be the director of a company in SE Asia now.

Anyways, he kept things simple, and the simple stuff works. Never wanting to write more lines of code than necessary, everything he did just worked. I was playing catch up for a year just to get near his level. The other thing though, is time. He had been doing things for a lot longer than I had at the time, and he'd had the chance to ask these exact questions over and over, until he knew (seemingly) all the answers.

He wasn't afraid to ask questions either. I think that's the biggest thing.

Programmer Competency Matrix

Many topics to help identify what's your level on programming topics.

I learned the answer to this question in a book about Texas Hold'em poker, but it applies to all frustrating endeavors. The best coders never go on tilt. Going on Tilt is the time when something doesn't work as you expected, and you respond in a way that creates exponential mistakes in the overall application. In tournament poker it causes you to place bad bets and get knocked out.

In programming, tilt causes you to pull out your hair and write ridiculous patches of code that only work in certain instances of your application. Tilt causes programmers to ignore the needs of the project as a whole, grasping for instant gratification to solve the immediate problem now. Often times the problem gets solved today, but the application suffers tomorrow.

The best coders take the tilt concept and manage it in a way that allows them to look at problems from an outside perspective, always. If that fails drink some caffeine.

Exceptional programmers:

  • Care about their code
  • Care about the users who use their code
  • Care about the people who will maintain their code
  • Care about productivity
  • Care about the process, not just the product

Two things about the "10x" factor:

  1. It has to be applied end-to-end. It is no good writing code 10x faster if it takes 10x longer to test, rework and maintain.
  2. I believe the "10x" factor is a reflection of how poor a high number of programmers are rather as opposed to how good a small number of programmers are.

most of them look reserved and nothing special.. some of them look super-smart.. they prefer to check/debug things twice from all possible points of view, their software is the bugless in world :p IMO some programmers may be slower, but the quality is better, even ordinary people can understand how their software works!

i have a friend who wrote his first ASM program at the age of 10, now he is 24, didn't finish university, but that didn't stop him from creating his own company, making millions :) but from what i see he is dexterous in everything :)

exceptional programmers would most likely say this code can be coded in another- better way rather than saying its totally wrong an lower other programmers reputation :)

"What is it about these folks? Is there something about their thought process that is fundamentally different from the above-average programmer? Or are they simply very talented people that work hard?"

i think they are born that way, its inside their DNA :p i don't know about their thought process, but the best programmer i ever knew had epilepsy

Few things differentiate an exceptional with a typical.

Exceptional:

  1. Highly passionate about his work and strive to deliver a master-piece.

  2. Performance and quality is the big picture in their mind even before coding starts.

  3. They think of continuous improvement after each release.

  4. They keep strict vigil on the alternatives and are early adopters.

  5. Their theme in professional life is: "Write less convey more".

  6. They keep thinking about logical perspectives even when not coding.

Typical

  1. Sometimes somewhat passionate but strive to deliver because it is a job after all. If it is not a masterpiece, its OK. At least delivered on time.

  2. Will think of the performance later, anyway PCs are fast enough these days.

  3. Improve only when there is no option left to save a job.

  4. No time to dig into other technologies. Stick to what your job demands now. Will learn other things when the need arises.

  5. Their theme is: "Do what is asked and reach home in time".

Exceptional programmers apply Spartan Principles.

Attention-grabbing image:

enter image description here

This article: http://willcode4beer.com/design.jsp?set=codeReduction

And this quote:

Any fool can make things bigger, more complex, and more violent. It takes a touch of genius - and a lot of courage - to move in the opposite direction. - Albert Einstein

Self-promotion, and I mean that in the best way possible. Having a job like programming, especially in a team, means it's not immediately obvious where your personal contribution fits in to the large picture, or who was responsible for which bit. The people we hear about and learn about as "great programmers" are IMO those who have mastered the art of making their contributions known without sounding egotistic or self-centered about it. In many cases, this is by creating the tools, libraries and software the rest of us rely on to earn our daily bread.

1st - They know what cut off when face the dead line.

Very good related article: The Free Electron (from randsinrepose.com)

I apologize for not summarizing the article here, but the points are not easily separated from the prose.

They program purely on intuition. No need to think it just flows.

Exceptional coders have influence on a project beyond the scope of their own code and spot problems before they happen because of their experience. They make everyone on the team better and save their projects from bad design and management.

They've actually created something that is exceptional.

but it seems like it will take me the next ten years to learn it, and then my knowledge will be obsolete.

It will. You've already established that these guys are 10x faster, which is why they learn it in 1 year and it takes you 10. For the serious part of the answer I think it's that they're already super smart (could be very successful at anything), they love coding, and they for some reason have (or find) an abundance of free time to practice coding or work on personal projects.

If you're asking this question here you probably don't have what it takes (don't worry I'm answering here so I probably don't either). Don't fret though you can still get to be crazy good if you love coding.

There are lots of well intentioned posts here about Humility, Engineering, Passion, Patient, Troubleshooter. IMO these are all required. However, they describe the top 30% of programmers.

I think you're asking about the truly exceptional programmers, the top 1%.

One of the things that I envy about the occasional very rare talent I work with is their ability to keep a very large amount of detail about a complex system in their head at one time, and to be able to recall it quickly. I think that I can do this on occasion, maybe once a month, when I'm truly in the zone. This feeling is wonderful. The developer I'm thinking of seems to be able to be in that zone most of the time.

It is this one trait, IMO, in addition to the Humility, Curiosity, Engineering, Passion, Patience and Troubleshooting ability that make them truly exceptional.

Having the quality of self motivation and self determination as well having the willingness to go into an abyss of the unknown and being comfortable with being absolutely confused as part of the process is huge. Its not so much about initial smarts as you would think because the brain becomes much better at things its always doing and thinking about. I came from nothing in college and then became very well off just by sheer persistence, never giving up, being that guy that kept at a problem when all others got tired of trying to figure it out. After that type of persistence, problems became easier and easier and coming from being the noob in college to putting most of them to shame at this point. Sheer talent is not enough and can sometimes lead to resting on your laurels.

Also, to Robert Harvey, you keep doinking my posts when I mention anything to do with my CMS that I wrote from scratch. You see several others listing links that they may or may have not written. You are pushing people down that are self motivated which is ironic that you posted this. You are "the man" in this small universe and not reading things on their merit, rather just doinking and deleting at your whim. You also love Star Wars way too much and probably wave your hand at the automatic opening doors at the grocery store kind of believing you have the force.

Licensed under: CC-BY-SA with attribution
scroll top