Live data from Hacker News

How To Become A Better Programmer By Not Programming

codinghorror.com

81–90 of 121 posts

Re: How To Become A Better Programmer By Not Programming

#81

Earlier quoted context omitted.

Maybe true, but "knowing how to learn" doesn't completely cover it. It's absolutely possible to make middle-of-the-road developers into good developers through training and mentorship. It's just that many (possibly most) developers don't get opportunities for good training. They're expected to use their "talent" to figure things out on their own, which in most cases means Googling or trial-and-error experimentation.…

I agree, it's sad that not everyone gets the opportunity to have a great mentor. But somehow, when it's meant to be, most will still push through.

You sound like my manager, refusing all requests for training, and saying 'HANG IN THERE BUD' all the time.

Re: How To Become A Better Programmer By Not Programming

#82

Programmers are not born. They're made. You may have a certain aptitude or talent for software development. However talent without discipline fizzles out or produces wildly varying results. Talent is like that. What makes a good programmer, mathematician, sports player, etc is discipline. The love of the craft/sport/etc that pushes a person to believe that all the discipline and hard work is worth it. People are natu…

I completely agree, but at the same time, discipline alone doesn't make a good programmer. You need the other half.

I think you can become a great programmer without any natural talent for it at all. I just don't think you'll find it that interesting... so staying disciplined will probably be very masochistic.

Re: How To Become A Better Programmer By Not Programming

#83
post #16

From what I've seen, there's just no crossing the skill chasm as a software developer. You've either got it, or you don't. No amount of putting your nose to the grindstone will change that. What a scary thought. Good thing it's not true. One of the many reasons I became a programmer was that the sky was the limit. Still is. Want to learn something new? Learn it. Want to build something cool? Build it. The only real l…

True. And not. Continuing with the sports analogy I think the comparison of sprinters and marathon runners is an apt one. It's been found (http://sportsmedicine.about.com/od/anatomyandphysiology/a/Mu...) that sprinters have a muscle metabolism that is much more anaerobic than normal from birth (you never exhale during a 100m dash), so good sprinters are pretty much born rather than made. On the other hand, although good genes do help (why are marathon winners generally from Africa?) you can train your muscles to have more efficient aerobic metabolism and be a top-notch marathoner.

So Gates is right in that top talent is probably born, there's nothing you can do to attain that level (which is true for most things, btw). But you can become a damn good programmer by practice.

Re: How To Become A Better Programmer By Not Programming

#84
post #16

From what I've seen, there's just no crossing the skill chasm as a software developer. You've either got it, or you don't. No amount of putting your nose to the grindstone will change that. What a scary thought. Good thing it's not true. One of the many reasons I became a programmer was that the sky was the limit. Still is. Want to learn something new? Learn it. Want to build something cool? Build it. The only real l…

Why isn't writing software like chess or sport? The highest ranked player in the world is twenty years old. Any local chess club is full of people who have studied the game for years but failed to break 1400. I've taught people who were just incapable of the most rudimentary strategic thinking and people who just naturally saw things that it took me years to learn. The evidence is clear that there are people in the w…

"Why isn't writing software like chess or sport?" ... "There are obviously natural geniuses in our field, why not natural dunces?"

Precisely because 5-standard-deviation-above-average natural talent isn't required for success in our field. There's only one chess champion in the world and a handful of grandmasters, by definition, and those are gonna be the ones with talent and hard work. But to succeed as a programmer requires more work than genetic luck. An average person can probably do it with enough work.

(But I would point out there is, by necessity, a floor of base talent required somewhere. But it isn't necessarily as high as commonly supposed.)

Re: How To Become A Better Programmer By Not Programming

#85

"I agree with Bill. From what I've seen, there's just no crossing the skill chasm as a software developer. You've either got it, or you don't. No amount of putting your nose to the grindstone will change that." This is a very condescending look on humanity and I did not know that Jeff had said such things. To anyone thinking the same, let me introduce you to the concept of deliberate practice (how to really improve a…

The author of that also uses a great deal of selective evidence, flat out ignoring genetic research in relationship to music, for example. Specific genetic sequences have been linked both to perfect pitch and to success in classical music. If you can't find it via a quick google search, I'll be happy to provide citations. Evidence for the role of genetics in running, swimming and a variety of other sports is equally…

You are right: genetics can certainly give you an edge and this is briefly mentioned in the book.

But do you mean that someone without the right genetic sequence can't play music? Or do you mean that someone with the right genetic sequence but who never does deliberate practice will be better than someone who has practiced 6 hours per day for the past 20 years under the best masters?

I think you don't mean that and the book did not mean that everyone can be star.

I'm sure some programmers are advantaged by their genes, but saying that all the bad programmers don't have the right genes and should look elsewhere is another thing. I would prefer to look at their learning practices and motivations before studying their genes. I'm sure I would have a lot more success than a geneticist in this case.

Re: How To Become A Better Programmer By Not Programming

#86
post #16

From what I've seen, there's just no crossing the skill chasm as a software developer. You've either got it, or you don't. No amount of putting your nose to the grindstone will change that. What a scary thought. Good thing it's not true. One of the many reasons I became a programmer was that the sky was the limit. Still is. Want to learn something new? Learn it. Want to build something cool? Build it. The only real l…

Many of these reasons are the same: inability to pivot and adapt to adverse circumstances. For example, you cited "they had to build on top of pre-existing shit and couldn't do it right" as a creator of bad programmers. You sound like a college student on this one, because this is the norm in the software industry. Every programmer (good and bad) has faced this one several times. The difference between bad and good programmers is that good programmers make the extra effort to learn the lessons that no one will explicitly teach them (i.e. figure out why the "pre-existing shit" got all fucked up in the first place) whereas bad programmers just accept it as-is or, worse yet, learn the wrong lessons and conclude that the pre-existing shit is how it should be (i.e. people who believe that C++ or Common Lisp, warts and all, are infallible languages, immune to reproach or change).

Having mentors, supportive management, and interesting work is great. But these are not the norm anywhere and they're certainly uncommon in the first few years in the software industry. A career average of 25% on these, for one's first 10 years, is probably about par. The good programmers are those who figured out how to get better in spite of these setbacks.

If I were going to put it into simple terms, the problem with the worst of the bad programmers (the deserving underclass) is that they don't expect much of themselves. They're happy to chug along at 100 lines/month on uninspiring work, and they do just enough not to get fired, but they don't achieve enough to offset the complexity load they create by modifying code while not knowing what they're doing, and by imposing resistance-to-change on the organization they inhabit. That's Class #1 of bad programmers, the ones who've been powerless for too long and are now just passing through. It probably comprises 65% of bad programmers out there.

Class #2 is the do-the-wrong-thing-well type. These are the ones who are generally very intelligent but narrow-minded. For example, they optimize for runtime performance at the expense of code readability, or who use the wrong languages, or who eschew databases because "SQL is a mess; let's just use the filesystem". They tend to be really, really good at some small subset of programming and tend to want to use that set of tools and skills even when not appropriate. These are the people who annotate an O(n^2) sorting algorithm as "WRONG!!" even when it's sorting a collection of 20 elements, because to them, not optimized == wrong. Their learning rates were too high, and now they're stuck at suboptimal local maxima. That's 15% of bad programmers.

Class #3 of bad programmer (15%) is the rock star, the kind who writes lots of code quickly, uses fancy "metaprogramming" features, but no one can understand the code (much less the rock star) a week after it's written. They tend to be parasitic, appearing highly productive but actually generating lots of unpleasant work (externalized costs) for the rest of the team. The call sign of the rockstar is the tendency to change interfaces willy-nilly and expect everyone else to adapt to his changes.

Those numbers add up to 95%. I'm going to leave 5% open to acknowledge that there are species of bad programmers I haven't met yet.

Re: How To Become A Better Programmer By Not Programming

#87
Well, I may not be a great programmer, but after programming for 30 years, I'm a hell of a lot better than I was after programming for three or four years. The story of my evolution as a programmer is at http://lists.canonical.org/pipermail/kragen-tol/2007-March/0....

Even after 25 years, I was doing things that I didn't have the knowledge or skill to do five years before. (On the other hand, sometimes I look at kragen-hacks posts from ten years ago and say, "Whoever did that must be a lot smarter than I am ---" before remembering it was me.)

Re: How To Become A Better Programmer By Not Programming

#88
post #16

From what I've seen, there's just no crossing the skill chasm as a software developer. You've either got it, or you don't. No amount of putting your nose to the grindstone will change that. What a scary thought. Good thing it's not true. One of the many reasons I became a programmer was that the sky was the limit. Still is. Want to learn something new? Learn it. Want to build something cool? Build it. The only real l…

Why isn't writing software like chess or sport? The highest ranked player in the world is twenty years old. Any local chess club is full of people who have studied the game for years but failed to break 1400. I've taught people who were just incapable of the most rudimentary strategic thinking and people who just naturally saw things that it took me years to learn. The evidence is clear that there are people in the w…

[deleted]

Re: How To Become A Better Programmer By Not Programming

#89
post #16

From what I've seen, there's just no crossing the skill chasm as a software developer. You've either got it, or you don't. No amount of putting your nose to the grindstone will change that. What a scary thought. Good thing it's not true. One of the many reasons I became a programmer was that the sky was the limit. Still is. Want to learn something new? Learn it. Want to build something cool? Build it. The only real l…

Why isn't writing software like chess or sport? The highest ranked player in the world is twenty years old. Any local chess club is full of people who have studied the game for years but failed to break 1400. I've taught people who were just incapable of the most rudimentary strategic thinking and people who just naturally saw things that it took me years to learn. The evidence is clear that there are people in the w…

"Why couldn't mental stamina be as genetically ingrained as physical stamina? There are obviously natural geniuses in our field, why not natural dunces?"

Are there really natural geniuses? To me a natural genius is someone who from the start performs at a high level, and I don't know of any such programmers. Maybe it's just that some people can move faster on the growth curve than others, but everyone can reach the same high echelons with perseverance?

Re: How To Become A Better Programmer By Not Programming

#90
post #16

From what I've seen, there's just no crossing the skill chasm as a software developer. You've either got it, or you don't. No amount of putting your nose to the grindstone will change that. What a scary thought. Good thing it's not true. One of the many reasons I became a programmer was that the sky was the limit. Still is. Want to learn something new? Learn it. Want to build something cool? Build it. The only real l…

I'll add one real reason:

  - Explaining why code is "sub standard" is hard.
Post reply on HN