Writing code that’s easy to debug begins with realising you won’t remember anything about the code later.
Most of the programming I do — if you were to watch — looks very much like me sitting and staring suspiciously at my computer. Occasionally I sip a beverage. Occasionally I will rub my chin. Sometimes I will grudgingly type some code, knowing full-well I’m building something I’m going to curse about later.
And you know why I do it? I need that help, too. I get tired, angry, upset, emotional, cranky, irritable, frustrated and I need to be reminded from time to time to choose to be the better version of myself. I don’t always succeed. But I want to. And I believe everyone else – for some reasonable statistical value of everyone else – fundamentally does, too.
~ Jeff Atwood
He had me at the “to serve man” Twighlight Zone reference…
Having to do everything turned out to be a real benefit later on, I was comfortable with such diverse things as communicating with customers, designing UI, identifying and tracking plans, architecture, and other non-programming tasks. With today’s roles unless you are in a startup environment (sometimes not even there) as a programmer you rarely get to do anything but write code. People even joke about programmers doing other things like designing.
~ Andrew Wulf
I certainly didn’t do anywhere near everything. (Notably, it doesn’t seem I got very good at communicating via the years of my early experience.) But I agree with the general sentiment. It’s all the peripheral stuff that I had to sort out, figure out, build, do, etc. which I think turned out to be the keys to my later — dare I say it — “success”.
The aspiration to create formally verified software has existed nearly as long as the field of computer science. For a long time it seemed hopelessly out of reach, but advances over the past decade in so-called “formal methods” have inched the approach closer to mainstream practice. Today formal software verification is being explored in well-funded academic collaborations, the U.S. military and technology companies such as Microsoft and Amazon.
This is not your grandma’s “functional programming will change the world!” blog post: this list is much more esoteric. I’d wager most readers haven’t heard of the majority of the languages and paradigms below, so I hope you have as much fun learning about these new concepts as I did.
~ Yevgeniy Brikman, from Six programming paradigms that will change how you think about coding
Every friend I have with a job that involves picking up something heavier than a laptop more than twice a week eventually finds a way to slip something like this into conversation: “Bro,1 you don’t work hard. I just worked a 4700-hour week digging a tunnel under Mordor with a screwdriver.”
System administration sucks too:
… And if these people stop, the world burns. Most people don’t even know what sysadmins do, but trust me, if they all took a lunch break at the same time they wouldn’t make it to the deli before you ran out of bullets protecting your canned goods from roving bands of mutants.
~ Peter Welch, from Programming Sucks