4 ms·
Here's my view on this: 1. There is a law of diminishing returns when it comes to effort spent vs reward. I think we can take that as axiomatic; 2. Different
by cletus 14y ago
Here's my view on this:
1. There is a law of diminishing returns when it comes to effort spent vs reward. I think we can take that as axiomatic;
2. Different skills are naturally harder or easier for different people. Call this affinity;
3. Given the effort vs reward curve and the different affinity levels different people have you will find that with any given skill people will tend to plateau at a particular level.
This isn't simply a question of intelligence or innate ability. More than anything it comes down to motivation. Priorities vary. Perhaps someone is particularly keen on their social lives, families, hobbies or whatever and whatever skill from which they derive their livelihood just needs to be sufficiently good for them to get by.
For example, I was an OK chess player. Not great. Not even particularly good but I did reach a point where I recognized that if I wanted to get better it was going to be a serious amount of effort. Nowadays I tend to play Euro boardgames simply because they have a nice effort vs reward curve and aren't (potentially) demanding mistresses like, say, Chess, Go, etc;
4. The more time you spend in any particular field the more you will master it and begin to see problems with it; and
5. Certain environments will tend to make you more or less likely to succeed. For example, if you want to get better at pretty much anything, hang around with really good people who are really good at it.
Many people don't get that far because they either plateau or the effort vs reward curve gets too flat and they move onto other things.
So what I tend to think of as "super programmers" combine the traits of:
- some level of natural affinity;
- the dedication to stick with something; and
- they care enough not to simply to just enough to get by.
The last I think is particularly key. When I assess an engineer one of the things I'm looking for more than anything is that they care about their craft. They can assess what they see and what they do critically and recognize where it falls short, what works and what can be done better.
It's part of the reason I'm a strict pragmatist and prefer other engineers who are like-minded. Ideologues (IMHO) tend to have judgement clouded by dogma and preconceived notions.
Woody Allen famously said "80% of success is just showing up". If you care about your craft and keep plugging away at it good things will happen. Those programmers we tend to think of as "super" or "rock stars" I think tend to combine all these traits with the timing and luck of having that flash of insight at the right time and following through with it.
Like they say, good ideas are cheap. It's execution that matters.
- edwinnathaniel 14y agoVery thorough explanation that I definitely agree. I love watching Soccer and Basketball. In those two fields, the best players are those who dedicate themselves to the game. Lionel Messi, Christiano Ronaldo, Michael Jordan, LeBron, Kobe. The list goes on. They have the same trait: passion and dedication. Some may have born with the skill (Ronaldo, LeBron). Some takes time to develop (Jordan, Messi). Having said that, our field is a little bit strange because there's a divide between being good at a particular set of skills and being jacks of all trades. For example: we tend to argue and discuss the topic of how learning new programming language can change the way you think about a particular problem and hence make a conclusion that those who put the effort and time to learn niche language such as Erlang, LISP dialect, Ruby, Lua get this automatic recognition as a "better programmer". (They may be a "better" programmer if we compare it to John Doe Programmer, but are they truly a better programmer?) On the other side of the coin, we have people like James Gosling, Bjarne Stroustrup, John Carmack, Dennis Ritchie, Joshua Bloch, Guido von Rossum, Kent Beck, Martin Fowler, etc. that are pretty much sticking with one or two languages but truly focus on their problem domain (as oppose to the languages that they use). There seem to be a group of people who are good at plumbing different technology and get something out of it and there are another set of group of people who specialized in specific technology but they're just... awesome at it. Example: A typical blog article explaining the full-stack of technology => "We use Rails as front-end, MongoDB as our back-end, memcached for our caching layer, ActiveMQ for our queueing system" vs "Here's the architecture of Mailinator: Java and Tomcat" (http://paultyma.blogspot.ca/2006/12/architecture-of-mailinator.html http://paultyma.blogspot.ca/2006/12/architecture-of-mailinat...) PS: Kent Beck and Martin Fowler may not have the "proper" HN street cred but they are definitely put their sweat, effort, and time to get better at what they do (OOP, software design/development, software process).
- excession 14y agoOut of curiosity why would Kent Beck and Martin Fowler have "proper" HN street cred? I would have thought it safe to say that they had both have had revolutionary insight into their areas of focus.
- 14y ago