Live data from Hacker News

Ask HN: What did the really successful programmers do differently?

news.ycombinator.com

141–150 of 178 posts

Re: Ask HN: What did the really successful programmers do differently?

#141
post #37

How to be an Excellent Programmer for Many Years (Excellent==Successful. Money & fame are more difficult to control.) 1. Choose a small subset of available technology, learn it intimately, and embrace it. Then evolve that subset. 2. Understand the pros and cons of various data structures, both in memory and on disk. 3. Understand the pros and cons of various algorithms. 4. Understand your domain. Get away from your c…

I like the last point..

Re: Ask HN: What did the really successful programmers do differently?

#142
post #37

How to be an Excellent Programmer for Many Years (Excellent==Successful. Money & fame are more difficult to control.) 1. Choose a small subset of available technology, learn it intimately, and embrace it. Then evolve that subset. 2. Understand the pros and cons of various data structures, both in memory and on disk. 3. Understand the pros and cons of various algorithms. 4. Understand your domain. Get away from your c…

"Never use early exits" is exceedingly bad advice, in my experience. What has led up to your claim that early exits are bad? As I've gained experience, I find myself writing code like this more and more:

    if (UnexpectedOrUnhandledCondition(x)) {
      ...
      return false;
    }

    if (OtherError(y)) {
      return false;
    }
and so on. Serial code like that is trivially easy to understand when reading; more importantly, six months later, it's far more explicit and easier to comprehend than the comparable single-exit version.

The alternative to early exits is nesting, and nesting is the readability killer. My experience has apparently been just the opposite of yours: that avoiding early exits is a sign of a junior programmer, and returning early whenever possible is a sign of an experienced programmer who knows that understands code maintenance.

Re: Ask HN: What did the really successful programmers do differently?

#143

Earlier quoted context omitted.

He lives from selling his own software... isn't that quite an achievement in itself? Unfortunately, his software isn't open source so I don't think we'll get a chance to take a peek.

Patio11 makes some of his software, A/Bingo, available as open source. A/Bingo is a Ruby on Rails A/B testing framework, available at his Bingo card site.

The question you should be asking yourself is, why did patio11 make A/Bingo available as open source.

Clues:

1. It's called A/Bingo

2. It's hosted on his bingo card creator site, not on github or kalzumeus.com (his personal site)

3. People tend to link to interesting open source projects

4. The text they use in the link is usually the title of the project

5. Google uses the number of links and the link text to rank sites on keywords

This is what he means by using his coding skill against his competition in ways orthogonal to programming.

Re: Ask HN: What did the really successful programmers do differently?

#144
post #55

Earlier quoted context omitted.

Could you please elaborate on No. 11? "Never use early exits". Could you please elaborate what you mean by that? PS. I'm not trying to unintentionally start a flame war. Just trying to understand.

Excellent question that is difficult to answer. I'll give you a short response here and then write a blog post with example code when I have time. Put your email in your profile and I'll make sure to let you know when that's ready. A little background: I have gotten many calls when legacy code has a bug or needs a critical enhancement and no one in-house is willing or able to figure it out. I'm no smarter than anyone…

> And the first thing I always do is look for early exits. This has always given me the most bang for my buck in making unintelligible code understandable.

Ouch. It will be kind of amusing if we ever work on the same code - I frequently start a bug fix by refactoring to introduce as many early exits as possible. I find guard clauses so much easier to understand than nested conditionals that sometimes refactoring it like this is the only way I can understand the code at all. I would love to see a blog post where you compare different styles.

OTOH, If you're talking about things other than guard clauses then I think we might have a much more similar viewpoint.

Re: Ask HN: What did the really successful programmers do differently?

#145
When studying a musical instrument, it is important to spend your practice time trying to improve. Do not waste time playing parts you are already capable of. Practice must be difficult and push your limits. This is true of many aspects of life, including becoming a better programmer. You should be trying to write programs that you don't know how to write, not yet another client/server database application.

Re: Ask HN: What did the really successful programmers do differently?

#146
post #143

Earlier quoted context omitted.

Patio11 makes some of his software, A/Bingo, available as open source. A/Bingo is a Ruby on Rails A/B testing framework, available at his Bingo card site.

The question you should be asking yourself is, why did patio11 make A/Bingo available as open source. Clues: 1. It's called A/Bingo 2. It's hosted on his bingo card creator site, not on github or kalzumeus.com (his personal site) 3. People tend to link to interesting open source projects 4. The text they use in the link is usually the title of the project 5. Google uses the number of links and the link text to rank s…

Ooh, that's clever.

And a little more greyhat than I've come to expect from patio11

Re: Ask HN: What did the really successful programmers do differently?

#147
post #146
post #143

Earlier quoted context omitted.

The question you should be asking yourself is, why did patio11 make A/Bingo available as open source. Clues: 1. It's called A/Bingo 2. It's hosted on his bingo card creator site, not on github or kalzumeus.com (his personal site) 3. People tend to link to interesting open source projects 4. The text they use in the link is usually the title of the project 5. Google uses the number of links and the link text to rank s…

Ooh, that's clever. And a little more greyhat than I've come to expect from patio11

Naming a project "A/Bingo" and hosting it on his own site is "grey hat"?

Re: Ask HN: What did the really successful programmers do differently?

#148
post #146

Earlier quoted context omitted.

Ooh, that's clever. And a little more greyhat than I've come to expect from patio11

Naming a project "A/Bingo" and hosting it on his own site is "grey hat"?

Naming it "A/Bingo" and hosting it on his own site?

Nah.

Naming it "A/Bingo" and hosting it on his own site for the intent of garnering linkjuice while at the same time presenting the name choice as simply a guileless, clever pun (as he does in his announcement of the project [1]) and within the context of his normal policy of broad disclosure?

A little bit. Perhaps "grey hat" is too strong a word. Swap in "a little discomfiting".

[1] http://www.kalzumeus.com/2009/08/15/introducing-abingo-rails...

(To clarify, my discomfort is due to the tying together of two orthogonal axes, ie, the quality of Bingo Card Creator as a result for the keyword "Bingo" and the quality of Bingo Card Creator as a source for an A/B testing framework.)

Re: Ask HN: What did the really successful programmers do differently?

#149
post #37

How to be an Excellent Programmer for Many Years (Excellent==Successful. Money & fame are more difficult to control.) 1. Choose a small subset of available technology, learn it intimately, and embrace it. Then evolve that subset. 2. Understand the pros and cons of various data structures, both in memory and on disk. 3. Understand the pros and cons of various algorithms. 4. Understand your domain. Get away from your c…

"Never use early exits" is exceedingly bad advice, in my experience. What has led up to your claim that early exits are bad? As I've gained experience, I find myself writing code like this more and more: if (UnexpectedOrUnhandledCondition(x)) { ... return false; } if (OtherError(y)) { return false; } and so on. Serial code like that is trivially easy to understand when reading; more importantly, six months later, it'…

Agreed. Same for using goto in C for error handling (e.g. http://www.xml.com/ldd/chapter/book/ch02.html#buierr) I found this used often in Linux kernel and I absolutely love it how clear it is.

Re: Ask HN: What did the really successful programmers do differently?

#150
post #148

Earlier quoted context omitted.

Naming a project "A/Bingo" and hosting it on his own site is "grey hat"?

Naming it "A/Bingo" and hosting it on his own site? Nah. Naming it "A/Bingo" and hosting it on his own site for the intent of garnering linkjuice while at the same time presenting the name choice as simply a guileless, clever pun (as he does in his announcement of the project [1]) and within the context of his normal policy of broad disclosure? A little bit. Perhaps "grey hat" is too strong a word. Swap in "a little…

Baffling.
Post reply on HN