return to table of content

Three virtues of a great programmer

neilv
17 replies
2d16h

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.

bdjsiqoocwk
12 replies
2d7h

And then, python.

bamboozled
9 replies
2d7h

I love Python, but basically 96% of Python code and developers absolutely suck at everything, I'm fixing a shit python codebase right now. It's like a language which people love to use to write shit code.

tpmoney
1 replies
2d4h

Python has become my goto for anything more complicated than a 3 line bash script, but not so complex it need multiple files to logically separate the code. Argparse isn't perfect, but it lets you get 90% of the way to a nice functional argument parsing system, with auto-generated help output that mostly doesn't suck. It's also built in so I can rely on it being anywhere python is already installed. And python is ubiquitous enough in default installs now I can pretty much rely on it being present as much as I can rely on bash being present.

As a result, every command line bit of glue code I've written for the last decade or so has been in python. At a certain point, it does start to get unwieldy and you can indeed write some awful code in it, but then again, I've seen some pretty awful bash scripts too.

My favorite trick is the fact that you can tell python to

nomorecodehere8
0 replies
1d21h

It's evolution. I like Python, it gets love and support. And it's all about the data structures - really. With python all I have to do is figure out the data - the rich set of OO, functional or imperative approaches and APIs does the rest.

pif
1 replies
2d7h

It's the same as in Visual Basic: those who request programming languages for dummies, they have a tendency not to be the brightest software developers in the toolbox.

letitbeirie
0 replies
1d22h

Visual Basic as a language is just C# for people who want to type more to do the same thing.

Visual Basic as a tool for building Windows programs with GUIs was pretty hard to beat though.

Maybe there are tools that churn out fully-polished react just as easily nowadays, but I wrote a janky little data visualization app in 2 hours at my internship and they ended up using it for almost 15 years.

ndjdbdjdbev
1 replies
1d16h

Python is great for prototyping...

Then you write it again in a better language...

boringuser2
0 replies
1d14h

Or you could just write it the first time in the real language.

Python isn't appreciably faster than something like Typescript to someone with actual experience making programs professionally.

kamalhm
0 replies
2d7h

At least people still love it :D

bdjsiqoocwk
0 replies
2d6h

Because it's so easy the average quality of the user is lower. This isn't surprising to me.

bdangubic
0 replies
1d5h

shit code is proportional to number of people developing. on average, about 98.56% of developers don’t know what they are doing and with millions of them writing their shit in python you end up with…

kunley
0 replies
2d3h

I'd say rather - ruby.

Ruby has the syntactic power to write stuff very succintly, lot of good apis (and some crappy too), had since its inception a good repl which perl always ignored..

There was a time, just before the rails boom, when ruby had a lot of traction in admins and that-era-devops circles

boringuser2
0 replies
1d14h

Python isn't a serious language for programmers.

It's for non-programmers.

nomorecodehere8
1 replies
1d21h

'all the unix tools like awk...'

Not ad-hominem but where were you 95-2006 because Gawk, Sed and Burne shell were the answer to read only perl scripts. That is one of the reasons Perl is basically no longer used: it was used without discipline.

There was actually a progressive mode amongst those systems programmers I knew who knew what they were doing at the time.

* bash + sed for the easy stuff * bash + gawk or just gawk for the ETL stuff * TCL for systems glue + swig * C when you are bespoke or need performance

Perl was great in theory but I cringed every time I saw a script.

neilv
0 replies
1d20h

Agreed, Perl scripts were often write-only, especially when people get cute with the shorthands.

At the same time, it is rare for me to see a Bourne/Bash script without obvious serious defects in it.

(Many people don't understand the shell script textual substitution evaluation model at all. And even those people who do, the model gets very hard to reason about as soon as you try to do some data value handling that's absolutely trivial in most high-level languages.)

dspillett
1 replies
2d7h

> Perl […] incredibly terse (perhaps too much so)

I used to like Perl, but I found it hard work at times not to create something that, without ample commenting which arguably removes a lot of the benefit of terseness, even I wouldn't understand without some thought when looking at it a few months down the line.

Perl was (is? - I assume it is still used a fair bit) often referred to as a write-only programming language for this reason.

tvink
0 replies
1d11h

I'm curious about the usage. I've seen it mostly replaced with ruby, but wonder if this is a bubble phenomenon.

zbentley
13 replies
2d23h

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).

lexarflash8g
10 replies
2d22h

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

amarant
7 replies
2d22h

As someone currently recovering from burnout, that is indeed my greatest weakness, and it's anything but a brag!

Working too hard means you're liable to disappear for 6+months, no sane employer should want that!

elvis10ten
4 replies
2d21h

As someone who has worked hard for years (at some point I had three con-concurrent jobs), I’m not sure working hard is the variable that causes burnout :thinking_face:

I will say tho, it gave me persistent back problems and RSI for two years :). But that again is not just “working hard”. It was bad posture, lack of stretching, breaks and exercise, I think.

Edit: Perhaps it’s the nature of the work or working hard unhealthily (physical and mental?) or the person’s characteristics.

tommica
3 replies
2d20h

I remember hearing about burnout, that it becomes more likely to happen the less meaningful work you do.

amarant
1 replies
2d20h

What's the equivalent of "victim blaming" for sick people?

Because this is that.

tommica
0 replies
2d13h

Really, you think it sounds that?

actionfromafar
0 replies
2d20h

Not sure about that.

multiplied
1 replies
2d21h

Do you work too hard or spend a lot of time on work? (before downvoting me, please consider that those things maybe different)

amarant
0 replies
2d20h

A bit of both I suppose. In my case I think taking on too many responsibilities and stressing out too much over any production issues that arose were the main ingredients for disaster.

But there were others as well. Burnout is complicated.

pompino
0 replies
2d21h

Are they still asking that ridiculous question?

hirvi74
0 replies
2d15h

"That I have no strengths"

layer8
0 replies
2d20h

That kind of cuteness in an interview would be a red flag for me. OTOH, I also wouldn’t ask that question.

akavi
0 replies
2d21h

I've never been asked "my greatest weakness" or "my greatest strength" in an interview. What sort of jobs have asked you those questions?

(I've worked (and interviewed) as a programmer at VC backed startups and FAANG in SF and NYC over the past 12 years)

petsfed
11 replies
2d22h

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.

mattbee
4 replies
2d22h

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.

bluefirebrand
3 replies
2d21h

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

I've always taken this sort of advice, such as "never reinvent the wheel" to mean "inventing the wheel is time consuming so give yourself an advantage by using already existing wheels", which really has nothing to do with hubris.

I never took it as "Don't bother trying to reinvent the wheel because you aren't capable of it"

eloisant
1 replies
2d21h

You can build a better wheel if you want to focus on that.

If you want to build a car however, focus on building the car and not creating a new kind of wheel.

shiroiushi
0 replies
2d8h

If you want to build a better car than everyone else's current cars, you might need to create a new kind of wheel.

Look at the Apollo moon rovers, for instance: they couldn't use off-the-shelf wheels for those.

ben_w
0 replies
1d5h

My take on that was that rolling your own crypto is hubris, but for all other ready-made libraries it's just about saving time[0].

There's only one person I ever met who thought manual memory management was a good idea, and their code was terrible in lots of other ways besides that, so I can't say I've ever thought about that particular example.

But after a decade or so of "don't roll your own crypro", I've also heard that if you specifically want to get into cryptography, the only way to do it is to research existing crypro libraries and work your way upwards, starting from "can I find bugs someone else already found, without reading the full details of their report?" and eventually rolling your own.

[0] That said, I'd now also add that libraries serve as Schelling points to make it easier to find jobs and to find workers.

francisofascii
4 replies
2d21h

I read hubris here as...you want to be the best, you don't want to be criticized, so you will work hard and be super motivated to make your program work very well, handling all the various edge cases, making it better than the competition.

graemep
2 replies
2d21h

Yes, but that is not what the word hubris means. It means pride in the seven deadly sins sense. The pride that comes before a fall. Hubris would not mean working hard to reduce the scope for criticism. It would mean not accepting valid criticism because you think you are better than the critics.

He could have just used the word "pride" (which is far broader and has positive meanings too) instead. In some ways "ambition" might be a better fit.

clayg
1 replies
2d20h

Ambition might stand out in the same list as laziness. Plus I'd be reticent to tell programmers to "be more ambitious!" - I see greenhorns esp just trying to do too damn much at once.

In the context of "code that is going to be reviewed" maybe even "vanity" might have been closer to what he was getting at? (did you even RUN this?) Except us old neck beards obviously don't care about how WE look ;)} - just how our code reads.

I think "take pride in your work" would have substituted well; but given the options, maybe hubris was fine - he explains what he means in a couple of sentences.

graemep
0 replies
2d6h

Or just "pride" and then an explanation.

Using a word and then redefining it seems very humpty dumpty "a word means what I want it to mean"

agumonkey
0 replies
2d18h

so they try to describe a balanced sense of pride and values

W3cUYxYwmXb5c
0 replies
1d19h

He gives his meaning for hubris. Seems silly to disagree based on a different definition that he's not using.

lr4444lr
11 replies
2d16h

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 one or more of these attributes of good code way out of proportion to the actual importance of the code.

And "readability"? Don't get me started ... there's hardly a linter rule that I haven't seen turned into a caricature of what it was intended to do.

What devs do is part art and part science, and there's hardly consensus on which part is which.

dt3ft
3 replies
2d11h

I especially love it when these people turn code which can be debugged (breakpoints can be set and hit) into one-liners for no reason which you have to rewrite in order to even set breakpoints. Well done, I hope you’re proud.

ruined
2 replies
2d11h

you can't debug within a line?

dt3ft
0 replies
2d7h

Good luck debugging linq one-liners in VS.

db48x
0 replies
2d9h

Yea, if you cannot set a breakpoint on an arbitrary expression, then your tools are bad and you should feel bad. On the other hand the dev tools in the average web browser lacked that capability until relatively recently, so it’s not an uncommon experience.

xarope
2 replies
2d15h

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.

sverhagen
0 replies
2d7h

Write code "that other people won't want to say bad things about" sounds like using the hubris (arrogance?) to throw up walls to be left alone. Maybe in some organization you might be the star player that can do this to the benefit of the greater good, but in most places collaboration of some sort is paramount, and the hubris thing doesn't sound good. Wouldn't want to hire this archetype.

RangerScience
0 replies
2d8h

“audacity” might be a better word for you for that :)

(To be clear: I mean this as a good thing. Audacity… seems pretty important, and very nice to have, at the right times and places)

hirvi74
1 replies
2d15h

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.

tacitusarc
0 replies
2d13h

I recommend this talk on that subject:

https://youtu.be/CmIGPGPdxTI?si=vOxiooCemwR7CygI

I found it incredibly interesting.

Izkata
0 replies
2d14h

Yeah, "pride" fits better with his description.

Idiot211
0 replies
2d7h

My interpretation of hubris in this context is actually "pride" and it's what I've chosen to substitute the word for.

Having pride means that I want to write code that others view as good code and won't look at in the future as a mad hatter's ramblings.

GMoromisato
8 replies
2d22h

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.

woooooo
6 replies
2d19h

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

kweingar
1 replies
2d12h

Curiosity is a classical vice, I think it works

bryanrasmussen
0 replies
2d9h

yes but not one of the seven deadly sins https://en.wikipedia.org/wiki/Seven_deadly_sins although impatience isn't one I think it should actually be wrath here.

GMoromisato
1 replies
2d18h

You're right! I didn't catch that.

Maybe Snooping? Nosiness? Meddling?

dkz999
0 replies
2d15h

Disruption? "Fixing what isn't broken"?

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

simonkagedal
0 replies
2d11h

I was thinking that something about having communicative skills should be added to the list, but struggled to reframe that as a flaw… any ideas?

Izkata
0 replies
2d14h

Kinda works anyway: "curiosity killed the cat"

softfalcon
0 replies
2d21h

Seconded, and I’d add this is a quality of a great human being.

Curious people are curious about others too, not just systems.

It’s related to caring. You have to care to be curious and we could use more people taking care in their lives.

samatman
7 replies
2d23h

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.

dgfitz
2 replies
2d23h

I'd even go so far as to say !hubris

Pride often leads to unintentional blindness and irrational defensiveness. Humility is where the fun is.

mr_toad
1 replies
2d17h

If you’re too humble you might listen to all the people telling you it can’t be done, and later that it shouldn’t be done, and then finally that you did it wrong.

dgfitz
0 replies
1d5h

If someone is “too anything” they’re going to have a bad time. I didn’t state a level of humility.

mcbuilder
1 replies
2d23h

I'd say wisdom should be the third, but that in turn often leads to hubris.

ludston
0 replies
2d23h

Wisdom is to know yourself. Hubris is the belief that your accomplishments and skills are greater than they are. Are these not mutually exclusive?

scj
0 replies
2d15h

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.

Enk1du
0 replies
2d20h

Hubris was really about building the community. It encouraged you to build things that you would want to share, so that we could all benefit from your Laziness and Impatience.

hyperhello
7 replies
2d23h

I don’t have the time or want to read the page, but I’m sure I’m already as good as him.

amiantos
5 replies
2d23h

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

petsfed
2 replies
2d22h

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

drewcoo
1 replies
2d22h

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

slowmovintarget
0 replies
2d13h

Self-composite diamond for recursive association.

teach
0 replies
2d22h

whoosh

stacktraceyo
0 replies
2d21h

Yikes

artemonster
0 replies
2d8h

Maybe someone can do a quick TL;DR; version of it? :)

HermitX
6 replies
2d22h

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 more effective than rushing into development work.

leetrout
2 replies
2d22h

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.

hinkley
0 replies
2d16h

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.

AnimalMuppet
0 replies
2d22h

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.

quietbritishjim
1 replies
2d22h

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.

twh270
0 replies
2d22h

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.

hirvi74
0 replies
2d15h

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

pugworthy
4 replies
2d23h

If you're not familiar with Larry Wall's style this might seem a bit off putting.

The first time I ever saw him speak was the 1997 first annual O'Reilly Perl conference. I remember thinking, "This guy is a jerk" while also thinking "I love this guy"

iamcreasy
2 replies
2d23h

Is there any publicly available talk of Larry Wall that might evoke it today?

cratermoon
0 replies
2d22h

Any of his "State of the Onion" talks. https://www.youtube.com/watch?v=a1SEt_-QMDo

Enk1du
0 replies
2d20h

A quick explanation of the Three Virtues by Larry and then an impromptu explanation of why Hobbits would make good programmers

https://www.youtube.com/watch?v=G49RUPv5-NU

UncleOxidant
0 replies
2d21h

By all accounts he's actually a really nice guy.

augustk
4 replies
2d22h

I think programming is an basically an exercise in effective communication. Edsger Dijkstra said that

"Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer."

This means being able to write down a description of a problem or a solution in a clear and concise way. This is the test I would use if I hired people (not only programmers). At my job I have noticed that quite a few people cannot write proper sentences or are way too verbose in their writing.

soneca
3 replies
2d21h

”… an exceptionally good mastery of one's native tongue …”

Does that imply that one cannot be a competent programmer if working on an environment where the spoken tongue is not their native one?

jdbernard
0 replies
2d21h

I don't think so. I think the core of Djikstra's thought is that mastery of your native tongue coincides with strong communication skill and ability to logically organize and present thoughts. You can articulate your thoughts and do so in a way that others can understand. Working outside your native tongue may add hurdles, but from my experience having worked with brilliant people who's native tongue is not English, those hurdles can be overcome. The skills still translate.

ineptech
0 replies
2d21h

No, I'm 90% certain both Dijkstra and OP meant that what's critical is mastery of any tongue. In context, he was talking about what makes someone good at programming, not about the need to contribute to a team or communicate ideas.

https://www.cs.virginia.edu/~evans/cs655/readings/ewd498.htm...

RugnirViking
0 replies
2d8h

Presumably the point is not the specific emphasis on your native tongue exactly, but rather a mastery beyond what might be regularly implied by mastery of a language (able to converse like a local) and rather mastery unique even among native speakers (able to convey ideas many different ways with a particular glibness that others can easily understand)

pompino
3 replies
2d21h

One missing virtue is never impart programming advice or wisdom on the internet - Because 10 other programmers who know nothing about you or your job will tell you in detail all the ways in which you're doing it wrong.

marssaxman
1 replies
2d20h

This is essentially Cunningham's law, eh? Perhaps you want to learn how you could do it better!

pompino
0 replies
2d18h

Yeah, good point.

hansvm
0 replies
2d12h

The internet is famously hostile. If only two other people complain about my methodology I think I must have done something right.

dang
2 replies
2d20h

Related:

The Three Virtues of a Great Programmer - https://news.ycombinator.com/item?id=32487944 - Aug 2022 (2 comments)

Larry Wall's Three Great Virtues of a Programmer - https://news.ycombinator.com/item?id=24107571 - Aug 2020 (1 comment)

Develop the three great virtues of a programmer: laziness, impatience, and hubris - https://news.ycombinator.com/item?id=11516215 - April 2016 (72 comments)

The Three Virtues of a GREAT Programmer - https://news.ycombinator.com/item?id=10942079 - Jan 2016 (4 comments)

The Three Great Virtues of a Programmer: Laziness, Impatience, and Hubris - https://news.ycombinator.com/item?id=9788088 - June 2015 (67 comments)

nickm12
0 replies
1d11h

Interesting that the title bounces between the "virtues of a great programmer" and the "great virtues of a programmer", which have two very different meaning. I can get behind these "virtues" as being part of the psyche that drives programmers to do what they do, which is what I think was Larry Wall's original point. These have nothing to do with what makes someone a great programmer, though.

AtlasBarfed
0 replies
2d16h

The most reposted four lines ever?

picometer
1 replies
2d21h

I’ve had a variety of responses to this list over my programming life (~10 years hobby, ~10 years professional).

When I first encountered them as a hobbyist, they were surprising, as perhaps intended, due to the framing of classic vices as virtues. On some reflection though, it made sense, and shaped my understanding of programming as somehow _inherently different_ than other types of creation.

When I got started with a professional career, they functioned to soften the edge of anxiety. It meant that the community of programmers who came before me - which presumably included Larry Wall - would understand that these patterns in coder behavior were ultimately beneficial and that I would maybe fit in with a corporate programming environment. (Now I know that this isn’t always true; sometimes coworkers, both programmers and non-programmers, don’t always realize these unintuitive points, and in some special cases, those programmer instincts aren’t actually valuable.)

At some point, I disagreed with the framing. As others have pointed out, the patterns can be reframed as classic or functional virtues such as curiosity. Then I backpedaled and realized that the framing is important because these are unintuitive patterns and it makes us re-think habitual incentives that reward, e.g., work that is more productive but not more effective.

How did it hit me now? I realize that it’s also related to power dynamics. Programmers are assets to their employers but they’re also potential disrupters. The traditional “virtuous” framing of potentially-less-effective behavior, like patience, is related to the organizing and taming of a workforce.

It’s also related to the types of problems we encounter. When we work with computers, Larry’s list does usually lead to more effective outcomes. But when working with other humans, who have their own agency and idiosyncrasies, the traditional virtues are better-adapted behavior. This is also more true for the complex technical systems we deal with nowadays. So, as our careers transition from programming to system engineering and/or management, the traditional virtues become more relevant.

Anyhow, this is an evergreen and thought-provoking nugget of wisdom. Thanks to Larry Wall and those who have preserved it.

h0l0cube
0 replies
2d7h

The main annoyance I have with Larry’s take is that efficiency is confused with laziness, which are entirely different things. Laziness, at its extreme, is to delay doing something until absolutely necessary, or even avoid entirely, efficiency is to optimize for the least possible effort, which is sometimes the same as being lazy

donatj
1 replies
2d11h

Our three weapons are Laziness, Impatience, and Hubris… and an almost fanatical devotion to the pope.

donatj
0 replies
2d9h

And of course python ... Monty Python

baerrie
1 replies
2d20h

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.

cloverich
0 replies
2d15h

Congrats on the jump, changing careers is hard!

annoyingnoob
1 replies
2d22h

How did that work out for Perl?

IvyMike
0 replies
2d22h

They had a good run.

Simon_ORourke
1 replies
2d22h

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.

lexarflash8g
0 replies
2d22h

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?

tmaly
0 replies
2d22h

One could have also titled it Three Virtues of ChatGPT

throwawaymaths
0 replies
2d15h

Discernment:

The virtue of not thinking you're building something great when you're building something awful

rlv-dan
0 replies
2d22h

Hobby programmer perhaps. But a professional systems developer in a larger corporation? Not so sure...

phantomathkg
0 replies
2d17h

Hugged to death by HN again. Here's the archive version. https://archive.is/yS4op

librasteve
0 replies
2d19h

i always thought that the Laziness virtue was a tacit reference to lazy evaluation of arrays (LISP-like) ... I get the feeling that most ML languages have quietly dropped this aspiration (Haskell, ML, ELM, I'm looking at you) ... meantime Larry's opus magnus "raku" (renamed from per6) is still lazy at heart

lacoolj
0 replies
2d21h

I found my new bible

komodus
0 replies
2d21h

Curiosity, we waste time learning a thousand useless 'shiny' things at the same time, then we apply all we learnt solving problems easily

henryreynolds
0 replies
2d23h

Impatience also makes you write more performant software because you can't stand waiting on build/test/run cycles.

golergka
0 replies
2d19h

I would add stupidity. I know I'm stupid, that's why I write types, tests and documentation.

glouwbug
0 replies
2d13h

The best programmer saves their earnings and retires early

from-nibly
0 replies
2d18h

This aligns well with ADHD. As someone who has ADHD and is also a programmer this is why I love programming so much!

forinti
0 replies
2d18h

You can't mention these without explaining false laziness, false hubris, and false impatience.

I think Larry Wall gives us some great insights wrapped in great humour.

djaouen
0 replies
2d22h

Perl. Lol

boringuser2
0 replies
1d14h

How about making a static website that doesn't require extensive hosting lest it crash for a few thousands of visitors?

Serving static blog content should be trivial if your code isn't absolute lunacy.

W3cUYxYwmXb5c
0 replies
1d19h

Oldie but a goodie

RustyRussell
0 replies
2d19h

I always said the fourth virtue is fear (of complexity). Keeps the others in check, particularly hubris:)

Enk1du
0 replies
2d20h

It was kind of a thing at the time. In the Afterword of Æleen Frisch's Essential System Administration (also 1991) subtitled "Don't Forget to Have Fun", there are listed _seven_ virtues of a system administrator:

* Flexibility: being able to wriggle out of tight spots and escape when irate users seem to have you cornered

* Ingenuity: realizing that you can use syslog to send messages to your friend on another system

* Patience: remaining capable of waiting until the final sendmail bug is fixed

* Persistence: the compulsion to try just-one-more-thing to fix a problem before going home

* Adherence to Routine: insisting on real milk and sugar-in-the-raw in your coffee (which is Kona or nothing)

* Attention to Detail: noticing that the clock on one of your systems is using Aleutian time, and changing all the others to match

* Laziness: writing a 250-line Perl script to avoid typing 15 characters

I took the last one to heart and have admired those who could utilize the first one, because I never could.

ChrisArchitect
0 replies
2d22h

(1991)

65
0 replies
2d18h

It's funny, I can't get myself to do many other creative activities I think I should enjoy (illustration, leather working, cooking) because of the tedium of doing the same thing over and over inherent in those activities. Programming is great because every single thing you're doing isn't tedious. It's the opposite of tedium.

Maybe it's not so much laziness, but more so a hatred of tedium.

01HNNWZ0MV43FF
0 replies
2d2h

"Laziness, impatience, and hubris" ~ "Lean manufacturing, short iteration cycles, and ?"