Software essays that shaped me

refactoringenglish.com

276 points by mtlynch a day ago


marc_abonce - 19 hours ago

I just read "I've locked myself out of my digital life"[1] and it explains a concern that I have and sometimes struggle to explain.

> In the boring analogue world - I am pretty sure that I'd be able to convince a human that I am who I say I am. And, thus, get access to my accounts. I may have to go to court to force a company to give me access back, but it is possible.

> But when things are secured by an unassailable algorithm - I am out of luck. No amount of pleading will let me without the correct credentials. The company which provides my password manager simply doesn't have access to my passwords. There is no-one to convince. Code is law.

Everyone should understand this problem before they advocate to remove the in-person version of a process. The article's example sounds unlikely at first, but the same consequences can happen with any natural disaster or a robbery.

[1] https://shkspr.mobi/blog/2022/06/ive-locked-myself-out-of-my...

chrislh - 20 hours ago

The Grug Brained Developer is one that always sticks in my head, but didn't make the list (to be fair, maybe more because I already agreed than because it transformed my thinking).

https://grugbrain.dev/

smartmic - 15 hours ago

Concerning Fred Brooks "No Silver Bullet", I disagree on this conclusion:

> Modern AI has thrown a wrench into Brooks’ theory, as it actually does reduce essential complexity. You can hand AI an incomplete or contradictory specification, and the AI will fill in the gaps by cribbing from similar specifications.

The essential part is still not adequately covered by Generative AI, and probably never will be. Here is my detailed write-up about it: https://smartmic.bearblog.dev/no-ai-silver-bullet/

AdieuToLogic - a day ago

The "Parse, don't validate" paper is classic IMHO.

I disagree with "Don't put logic in tests", with the example provided being a problem with using strings where a URI type is needed instead. Perhaps the source of my disagreement is I hold that test code is production code due to test suite failure(s) during an automated build stops desired deployment.

Still, each are definitely worth delving into and determining applicability for oneself.

thangalin - 19 hours ago

1. Nancy Leveson's Therac-25 investigation and review.

* An Investigation of the Therac-25 Accidents

https://cse.msu.edu/~cse470/Public/Handouts/Therac/Therac_1....

* The Therac-25: 30 Years Later

https://ieeexplore.ieee.org/document/8102762

2. Charles Fishman's They Write the Right Stuff

https://www.eng.auburn.edu/~kchang/comp6710/readings/They%20...

jeberle - 18 hours ago

My favorite in this vein: The Parable of the Two Programmers, by Neil W. Rickert. Sums things up nicely.

https://c00kiemon5ter.github.io/code/philosophy/2011/10/30/T...

zem - an hour ago

"slumming with basic programmers" is one i think about a lot, as a programming languages person

https://prog21.dadgum.com/21.html

smj-edison - 4 hours ago

Perhaps a bit more of an unorthodox blog post, but Gilad Bracha's Ban on Imports really changed the way I think about module systems: https://gbracha.blogspot.com/2009/06/ban-on-imports.html

He talks about how imports and exports are global state, and that they have all the issues that global state brings. It's made me appreciate dependency injection a lot more.

ChrisMarshallNY - 21 hours ago

This was a watershed for me: https://stevemcconnell.com/articles/software-quality-at-top-...

McConnell isn't especially popular, hereabouts, though.

AngeloAnolin - 16 hours ago

Not sure if can be considered a software essay, but a goldmine (imho) is Patrick McKenzie's - Don't Call Yourself A Programmer, And Other Career Advice:

https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pr...

imron - 14 hours ago

Semantic Compression [0] had real impact on me.

0: https://caseymuratori.com/blog_0015

unsungNovelty - 10 hours ago

From my end, it was this - https://blog.codinghorror.com/falling-into-the-pit-of-succes...

Changed the way I think software.

chrisweekly - 20 hours ago

Tangent: It's more than an essay, but I have to mention https://every-layout.dev as an absolute game-changer for my perspective on CSS.

never_inline - 12 hours ago

I have creatdd a readings page on my blog to serve a similar purpose. The theoretical intention is to update it from time to time.

https://mahesh-hegde.github.io/readings/

cadamsdotcom - 17 hours ago

> Test code doesn’t have its own test code, so the only way to verify correctness is by inspection.

This is about as incorrect as it gets.

The only way to verify correctness is to change the production code in a way that should cause the test to fail, then watch it fail. In TDD this is done by writing the test before you write the code that would make it pass, then watch it fail. Only then are you allowed to write the code that makes it pass.

Otherwise you have no proof the test can EVER fail - which means no proof it adds value to your codebase.

matt_daemon - 20 hours ago

    “Choose Boring Technology” by Dan McKinley (2015)

    This is an odd essay to include in this list because I’ve never actually read it.

    People have quoted this essay to me, and once I understood the idea, it felt so intuitive that I didn’t need to read it.
This is such a strange thing to include and obviously a lie as he goes on to describe the essay in detail.