Live data from Hacker News

Three virtues of a great programmer

thethreevirtues.com

81–90 of 141 posts

Re: Three virtues of a great programmer

#81
Laziness, Impatience, and Hubris were especially clear/obvious in Perl at the time.

Perl was a gazillion times more powerful than Bourne and C-shell (including all the Unix shell tools like `awk`), much more rapid than working in C, incredibly terse (perhaps too much so), and also portable (to all the oddball systems you might have).

And the purposes to which Perl was put were often to automate things you'd been doing manually, or that you couldn't do without Perl.

You'd be quietly doing big things with Perl. And there were sayings about how you'd automated your job, and presumably spent your time writing more Perl scripts and reading Usenet. And the occasional joke of replacing someone else with a one-line Perl script.

Also, note that not only was this before the dotcom boom (when programmers suddenly were no longer nerds but getting rich and fashionable), but also-- a lot of the programmers using Perl professionally weren't even professional programmers, but actually sysadmins or random university researchers, who happened to have the power of Perl. The majority of professional programmers on Unix actually didn't know Perl.

So, Perl people speaking of Perl people in terms of vices could be seen as a self-deprecating, joking spin conscious of the unusual power that they wielded.

Re: Three virtues of a great programmer

#82
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.

Reversible decisions are a simple enough concept to grasp, but a difficult one to really comprehend.

Some people see effective people making 'bad' decisions and miss the bit where there were eight bad ways to accomplish something and they rejected 6 as being more work overall. Then they take their misreading of the situation as justification for YOLOing decisions to avoid analysis paralysis.

Re: Three virtues of a great programmer

#83

That last one ("hubris") I'm going to call out. Maybe the author means another word, for what he describes, but the actual "hubris" I'm seeing among my colleagues is the belief that lots of people out there don't know how to write code, but that their own $%^& doesn't stink. It's the utter subjectiveness of "best practices" that aren't tied to actual issues of performance, security, or flexibility, or worse - blowing…

I interpreted this "hubris" to mean that I believe I can make a difference, rather than feel that I can't contribute.

You can understand why I, personally, would think this is a virtue.

Re: Three virtues of a great programmer

#84
post #70

Earlier quoted context omitted.

It doesn't work as well rhetorically as having all 3 virtues be typically thought of as flaws.

You're right! I didn't catch that. Maybe Snooping? Nosiness? Meddling?

Disruption? "Fixing what isn't broken"?

Im going with: Making perfect the enemy of the good.

Re: Three virtues of a great programmer

#85

That last one ("hubris") I'm going to call out. Maybe the author means another word, for what he describes, but the actual "hubris" I'm seeing among my colleagues is the belief that lots of people out there don't know how to write code, but that their own $%^& doesn't stink. It's the utter subjectiveness of "best practices" that aren't tied to actual issues of performance, security, or flexibility, or worse - blowing…

I just look at popular Github projects and ask myself why doesn't my code look that nice?

I completely agree with your take though. There is so much "distraction" in what are best practices, readability, etc.. It's all so subjective. Best practice for what? Readability for who?

I feel like software engineering : engineering :: psychiatry : medicine.

Re: Three virtues of a great programmer

#87
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…

> Why redo it?

Is a reason like, "being built like shit by the cheapest contractors that won the bid" ever a good reason?

My work is huge on what I call, "fire, forget, then rewrite." Basically, we have tons of legacy apps that have lifespans of like 10 - 20 years, many of which never receive a single update. So, they eventually get old and unsupported enough that it's honestly just easier/quicker to rewrite them.

And in case you were wondering, yes, I work in Gov..

Re: Three virtues of a great programmer

#88

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

"That I have no strengths"

Re: Three virtues of a great programmer

#89
post #3

I would say that the character arc of Perl, and the profession generally, leads me to this observation: laziness and impatience are virtues. Be careful with hubris.

I'd argue hubris is balanced by laziness and impatience. Where I don't believe the three are equal.

I'd add a conditional lesser virtue when working on certain codebases that should have been accounted for when making perl6: Fear.

Re: Three virtues of a great programmer

#90
post #65

My whole life I have been called lazy. In filmmaking as an assistant this was a weakness, work harder not smarter and all that. I still feel insecure about it sometimes but over the past few years of transitioning into coding full time I have learned that this is my best trait. Life is short, you must demand to live your life how you want otherwise you will be convinced that working hard for someone else makes sense.

Congrats on the jump, changing careers is hard!
Post reply on HN