Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

Since there will never be a consensus on the definition of "great programmer" you really cannot argue this point.


With maybe 100 exceptions ever, there is no universally great programmer, there is only "great programmer for the job."


I would argue it is the exact opposite. On day one name a programming language, important libraries and whatnot and hand out a stack of documents explaining the problem domain. The new guy hasn't necessarily seen or heard about anything of that before. If he can compete with your other good developers after a month, you have found a great programmer. I mean of course if he can do this repeatedly, not that he just was a pretty good fit for the requirements by sheer luck.


I think there is a rough consensus of what "great" means in "a great X" and that it means something like: generally accepted to be significantly better than the vast majority of their peers. Otherwise the adjective becomes meaningless.

You will not meet such people very often unless you are in a truly extraordinary situation, which means you may well never work with one.

My argument is that such people, whatever the field of endeavor, do not ever become great through training alone. You can only develop the conditions for people to reach their full potential, and hope that some (small number) of them truly become great.


> "I think there is a rough consensus of what "great" means in "a great X" and that it means something like: generally accepted to be significantly better than the vast majority of their peers."

You've not really solved the problem by stating that, all you've done is swap one subjective term (great) for another (better).

FWIW, I don't think everyone is naturally suited to programming, but I do know I've met a number of people, with a diverse range of backgrounds, who I am confident would be employable as programmers with the right guidance. The two biggest traits they all share is attention to detail and an openness to learn. I'd argue that's all you really need, everything else is just a matter of effort and experience.


Well, sure, we are deeply into an inherently subjective area.

But I believe you are being obtuse here. I've never met a large group of programmers who wouldn't have rough consensus on their "better" colleagues. Begrudgingly, perhaps, but it is there. Human beings naturally self-organize this way all of the time, the metrics are definitely imperfect but pretending they don't exist or are somehow meaningless is just perverse.

Nothing I said claims that diverse people cannot become perfectly competent programmers, this is certainly true.

The claim was more that "greatness" in part, at least, necessarily comes from within.


> "The claim was more that "greatness" in part, at least, necessarily comes from within."

That goes into the whole nature vs. nurture debate, and you can probably find arguments for both. Playing Devil's Advocate, I'd suggest there are traits that help you become a great programmer, but those can be learned traits. For example, "thinking like a machine". You're a much more effective programmer after you can build a mental model of how the programs you write are working at a lower level of abstraction than the one you're programming in. That's something it's undeniably possible to learn, the main barrier for most people is a lack of interest. You have to be prepared to learn a bunch of supporting material that may not pay off in the near future, but will help you in the long run. That's my experience of what it takes to become good/great/better at nearly anything.


In my opinion what you are referencing is necessary but not sufficient, but we've probably taken this as far as it is useful (if not further)


In other words, greatness as Arete:

https://en.m.wikipedia.org/wiki/Arete_(moral_virtue)




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: