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…
Ask HN: What did the really successful programmers do differently?
141–150 of 178 posts
Re: Ask HN: What did the really successful programmers do differently?
#142How 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…
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?
#143Earlier 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.
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?
#144Earlier 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…
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?
#145Re: Ask HN: What did the really successful programmers do differently?
#146Earlier 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…
And a little more greyhat than I've come to expect from patio11
Re: Ask HN: What did the really successful programmers do differently?
#147Earlier 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
Re: Ask HN: What did the really successful programmers do differently?
#148Earlier 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"?
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?
#149How 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'…
Re: Ask HN: What did the really successful programmers do differently?
#150Earlier 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…