Live data from Hacker News

Three virtues of a great programmer

thethreevirtues.com

21–30 of 141 posts

Re: Three virtues of a great programmer

#21
post #19

I would also like to add one more thing: hesitation. From my own experience, in my programming career, the most time my team wasted was on redoing something from scratch. Why redo it? Because the previous design was not comprehensive enough to meet subsequent requirements. If everyone could spend more time researching and discussing the plan before starting, and get things right in one go, in my view, this is much mo…

> Because the previous design was not comprehensive enough to meet subsequent requirements.

YAGNI.

Hesitation to avoid unnecessary work, sure. But not to anticipate future requirements.

The number of times I've had to fight a fancy design that left expansion points / abstractions for future features that were never needed (or not in the form the designers expected) enormously outnumber the times any such thing was useful.

Just make the code do its current job in the simplest way possible. That's the easiest design to expand later.

Re: Three virtues of a great programmer

#22

Oh Larry, never change. I often give a similar list as a glib answer in interviews when asked "what are your greatest strengths?" Mine are usually: I'm stupid (not smart enough to overcomplicate), lazy (prefer turning MVP in on time rather than adding too many bells and whistles), and forgetful (document everything because I won't remember what I was doing the next day).

What is your biggest weakness: "I work too hard" -- humblebrag

Re: Three virtues of a great programmer

#23

I'd add a variation on that third one - it's all they've got going for them. The really great coders I've worked with live and breathe the work, and come 5pm on a weekday they just continue on coding only this time for fun at home themselves.

If you come at 5pm or past to work on an OSS project or your own side project more power to you. For a corp job why work longer than you need to when you are not paid for it? Bragging rights?

Re: Three virtues of a great programmer

#25
post #19

I would also like to add one more thing: hesitation. From my own experience, in my programming career, the most time my team wasted was on redoing something from scratch. Why redo it? Because the previous design was not comprehensive enough to meet subsequent requirements. If everyone could spend more time researching and discussing the plan before starting, and get things right in one go, in my view, this is much mo…

> Because the previous design was not comprehensive enough to meet subsequent requirements. YAGNI. Hesitation to avoid unnecessary work, sure. But not to anticipate future requirements. The number of times I've had to fight a fancy design that left expansion points / abstractions for future features that were never needed (or not in the form the designers expected) enormously outnumber the times any such thing was us…

There's "simple" and there's "naively simple". I agree 100% with YAGNI, but you can also wedge yourself into a corner with a design that allows no room for growth unless you scrap it and start from scratch.

Re: Three virtues of a great programmer

#26
post #19

I would also like to add one more thing: hesitation. From my own experience, in my programming career, the most time my team wasted was on redoing something from scratch. Why redo it? Because the previous design was not comprehensive enough to meet subsequent requirements. If everyone could spend more time researching and discussing the plan before starting, and get things right in one go, in my view, this is much mo…

Hindsight / survivorship bias affects this viewpoint. You will never get it "right" the first time as much as you can avoid doing it "very wrong". The key is to have enough experience and taste to appropriately break down problems into pieces that encapsulate the volatility of the various domains. Then you can refactor easier which should be the real goal. Prune and tend to the garden.

Yeah. It's easier to not do something stupid than it is to do something smart. Take the time to avoid doing stupid things (which takes somewhat more time than you expect!) and don't take the time to try (and usually fail) to be overly smart.

Re: Three virtues of a great programmer

#27
post #14

I've never really liked his inclusion of hubris here. Hubris is often defined as unjustified arrogance. Justified confidence, even if you're a jerk about it, was never the fatal flaw of a Greek hero. So I've always substituted arrogance for hubris: the belief that you better understand, and can better address, the requirements than any off-the-shelf library/program/ecosystem.

When you learn programming, you are told to never roll your own crypto, or to always use the ready-made libraries, or to avoid manual memory management - and you can have a perfectly fruitful career following rules like that.

But you don't get big changes or ambitious intellectual growth without spotting that - if you did choose to break those sorts of rules - you could build something really new and exciting.

Anyhow that's how I've always taken the "hubris" part - knowing when there's an opportunity to achieve something in a way that someone will tell you is too risky.

Re: Three virtues of a great programmer

#28
I'd add Curiosity instead of Impatience. Impatience is related to Laziness. In both cases we want the computer to do the work instead of us.

But Curiosity is orthogonal and important. The best programmers I know were always curious: Why was it built that way? Why does it give that output? Why did she say that? Curiosity is the beginning of knowledge. If you're not curious, you will miss out on a lot of opportunities for learning and improvement.

Re: Three virtues of a great programmer

#30
post #16

Earlier quoted context omitted.

You're only dunking on yourself here, the page is four sentences long. Being proudly ignorant is still just ignorance.

You missed the joke. Should I diagram it for you?

In UML, the joke would be much longer. And is the punch line solid or dotted?
Post reply on HN