1. 18

    If you haven’t clicked the article already, it essentially boils down to: if you’re not a proponent of CSS in front-end design, you’re a misogynist.

    1. 8

      That’s definitely a strawman.

      1. 5

        That is very much not what it says. The argument is “both technical choices are valid in some situations, so many of the people who are arguing one side are doing so for sexist reasons.” You may disagree with that claim, but your summary is just plain wrong.

        1. 0

          definitely a good faith reading of the article, please continue to add more substantive insights like this.

          1. 0

            I usually peek at the comments before reading the articles, this time I didn’t and I paid for it… (with neurons)

            1. 2

              Derek! This post is super interesting and I hadn’t seen it until now. I’d worked on a similar idea about a year ago with a bitcoin-paying npm proxy server. The idea was basically the same: package developers could include payment information in the metadata and folks that use the projects would automatically payout to those projects.

              Although, I think OpenCollective’s BackYourStack has done a better job at creating a user-friendly system (centralized, over the traditional payment system).

              I’m not sure this fulfills OPs criteria for a compelling use case, but it’s great to encounter someone working on similar ideas.

              1. 2

                At the time there was push back from blockchain people complaining about blocks being filled up unnecessarily. These days Etherium might be a better, if somewhat more complicated solution.

                Traditional payment systems are designed o be confidential, which for this use case is a disadvantage.

              2. 2

                The argument seems to be “PayPal doesn’t have an API for this.” So the issue isn’t the centralized system, it’s just a missing API, and if they had it PayPal would suffice?

                1. 2

                  The point of the blockchain approach is that proof of purchase is publicly visible; removing the need for the software developer to spend time any time confirming the sale.

                  1. 10

                    You dont need a blockchain. You just need a log, crypto, and 3rd-party checking. Schemes for “blockchain” functionality that just used logs with crypto have been around a long time.

                    1. 5

                      More specifically I guess, Certificate Transparency. Every time someone wants a “blockchain” to publicly prove something, they actually want CT.

                      1. 1

                        I think this is correct. Although it’s very hard to trust Google on this specific instance.

                        1. 3

                          You don’t have to trust Google for anything. I mean, you can adapt the general scheme/protocol for any content (not just TLS certs) and trust whoever you want to host servers.

                        2. 1

                          That’s another good example of logging + crypto + checking.

                          1. 1

                            A CT is half the solution. A blockchain performs payment and public record keeping in one transaction.

                            1. 2

                              It does but it’s unnecessary. Fire off two transactions: one updates a key-value store that audit pages are generated from; one goes through payment system. Both are so efficient that similar protocol operations are done on 16-bit MCU’s in smartcards.

                              It’s also not clear that you want the payment and log handled by same systems with same privileges and admins. Splitting them up can mitigate some risk.

                  1. 1

                    I think that’s an abuse of Pool. The point of it is to avoid forking off a process for every task.

                    1. 1

                      The while loop is just to make the race condition happen consistently; in real code you wouldn’t loop, so you’d only get the deadlock intermittently.

                    1. 2

                      tl;dr: deflect and avoid saying “no” to superiors

                      1. 2

                        It’s more like, deflect and avoid an automatic “yes” to superiors.

                        Obviously you need to weigh input from organizational heads differently, they have a different context then you do (otherwise what’s the point of em’). They tend to have a broader context, you tend to have a more narrow and detailed context.

                        The superiors’ version of this advice is, don’t automatically override the decision making power of your subordinates, they probably have details that you don’t have. This article is full of good advice.

                        1. 1

                          That is very much not what I’m suggesting.

                        1. 2

                          I’m going to be honest here: I’ve been working around 35-40 hours for the last year and I am still incredibly burnt out. I think it’s the context in which I work right now, but I cannot seem to shake it. I’ve tried long weekends and I have a week off in about a month, but the workplace itself is slowly killing me.

                          I work for a huge company with very little ownership and a ton of politicking. I’m not cut out for that type of work.

                          1. 2

                            Time for a new job?

                            1. 1

                              Yes, I would tend to agree

                          1. 16

                            Option #4: Start a product business (the right way)

                            Did the author ever run a business?

                            The most realistic chance of working less than 35 hours is slacking off somewhere as a salaried employee.

                            1. 5

                              Slacking usually requires you to be in n office, so you’re still working

                              1. 15

                                This is where it gets philosophical. Sure you can’t go hiking or do parenting in that time. However people playing games, reading books, solving puzzles and even building entire parallel careers in their nominally work time aren’t unheard of.

                              2. 3

                                Exactly, when I ran my own startup, it was like working at 2 jobs. Always something to do, fix, research, discuss, plan, etc.

                                1. 2

                                  It depends on the business, though. I know people with couple moderately-successful iOS apps where yes, they do some support nd bugfixing, but can do it on their own schedule and the money comes it “on its own”.

                                  Startups are a particular kind of product company that is high-pace. But small-businesses can also exist.

                                2. 2

                                  He did found a startup in the early 2000s.

                                  1. 1

                                    And it failed! Because we did it the wrong way. But Amy Hoy has done it the right way, and teaches how, which is why I linked to her stuff.

                                    Also note that VC-backed startups are very definitely NOT the way to get decent working hours as a founder. It’s totally possible to work decent hours (<40) as an employee, as I’ve done at last three jobs.

                                1. 1

                                  My visceral hatred for unpaid overtime helps make me a productive developer.

                                  1. 3


                                    Of course, now I’m imagining a software development methodology where the planning phase is called “The 2 Minute Hate”…

                                  1. 6

                                    Are you familiar with https://software-carpentry.org/? Lots of material you can use or reuse (and people you can track down and talk to).

                                    1. 2

                                      I am not yet; thank you!

                                    1. 3

                                      I’m sure I’ve mentioned this before, but I’ve bought several books because of your reviews. Keep up the good work :)

                                      1. 1

                                        Haven’t bought any yet, but really enjoying the reviews, yeah.

                                      1. 2

                                        Being able to work independently is much more important than technologies you know. If you can demonstrate:

                                        1. That you can go and work unsupervised and come back in a week with something good. (This is important in all jobs, but even more so in remote jobs.)
                                        2. That you can learn new technologies quickly.

                                        Then it matters much less if you know the language at hand (for good companies).

                                        You ought to be able to explain both of these decently in cover letter/resume, with examples etc.. (Long version, not specifically targeted to remote work: https://codewithoutrules.com/2018/01/23/job-with-technology-you-dont-know/).

                                        1. 1

                                          Then it matters much less if you know the language at hand (for good companies).

                                          This certainly should be true. It has definitely been true when I have hired people. However, I rarely see this attitude in job ads.

                                          1. 1

                                            People who write job ads aren’t usually very thoughtful about what they write. It’s just rote regurgitating of the standard format for job posting. (Lynne Tye is person who is trying to improve this from company’s side - see my interview with her - https://codewithoutrules.com/2017/12/01/interview-lynne-tye/ - and her job site - https://www.keyvalues.com/).

                                            If you pitch yourself in way that actually meets their needs, you can get the job regardless, because they’re like “oh right we do need that” even if they can’t consciously articulate it.

                                        1. 10

                                          Meh, I find this line of argument unconvincing… certainly using a specific toolset, could serve as a good basis for experience. Would you hire someone who has only done web development (and maybe has some experience with algorithms) to maintain a legacy COBOL system, optimized and written exclusively for some 40 y/o mainframe? It might not be a common example, but is is a kind of ad absurdum refutation in my eyes of the generality that the author makes. A more everyday example would be if you need to write some efficient system critical component on, let’s say a unix system, it’s certainly better to someone who has read alot about unix, has already wirtten utilities, knows the system calls and the advantages and disadvantages of libraries. Writing a physical simulation? I would guess that a stable background in mathematics, computational science and small hardware optimisations (eg. ++i vs i++) would come in more in handy than knowing how to position images on a website. And to not insult web developers, they have a tremendous advantage agains all the previous examples, and if one is already making the economic argument (think about the jobs!), speed and efficiency certainly seem important.

                                          All in all, one might not be ones tool, but one has ones experience, expertise and is probably more fit for some tasks than others, even if it’s only because of ones interests.

                                          (and the editor question seems to be quite perpendicular to this issue. This is a tool, but you can prefer one over another without making this an issue about identity. You just might be more used or find it more comfortable to write dd vs C-a C-k. Seriously levating this to the level of identity shows nothing more than a personal “shallowness”)

                                          1. 2

                                            I’ve worked in multimedia CD-ROMs. Then websites. Then software for airlines, with a lot of distributed systems stuff. Then just distributed systems. And now I’m doing image processing for gene sequencing, and dredging up memories of math classes I haven’t used in 18+ years.

                                            I’ve written production code in 6 different programming languages along the way.

                                            It is easier to stick to things you know, yes, but you don’t have to if you don’t want to.

                                            1. 1

                                              If you don’t mind me asking how’d you get into writing software for airlines?

                                              1. 3

                                                Got a job at ITA Software, which built the flight search engine powering many (a this point most?) airline websites, Orbitz, and these days Google Flights. We also built an airline reservation system, which was launched and then canceled by Google a few years after they bought ITA.

                                                There’s a still a whole team at Google working on this.

                                                Other companies are the big GDSes: Sabre, Amadeus, etc..

                                          1. 5

                                            I don’t believe I can disagree more. Tools matter, because some tools are better than others on some axis or axes. ‘Tools don’t really matter’ is the only argument one can make when one can’t argue ‘my tools are better.’ I don’t think any particular tool is better on all axes, but certainly some aren’t the best on any axis (e.g. pico).

                                            And I don’t think it’s inappropriate for someone who recognises a tool’s actual excellence in a world which incorrectly fails to do so to make that recognition part of his identity. It’s part of how an oppressed minority perpetuates its existence.

                                            1. 7

                                              This is a good point, but it’s also an argument against strongly identifying with your tools. If tomorrow you encounter a new tool that does something better than your current tool, it should be as easy as possible for you to abandon your current tools and take up the new ones, and that’s harder to do if being a user of a particular tool is part of your self-identity.

                                              1. 3

                                                “Oppression” seems like an overly strong word here, maybe…

                                                1. 1

                                                  If you’ve ever been an emacs-user on a team of vim-users, you’d know what I mean. Or a Linux-user on a team of Mac-users …

                                                  No doubt the other way ’round is the same, too …

                                              1. 3

                                                Don’t have experience with formal verification specifically, but some general advice:

                                                1. Adjacent roles is good. Companies with more obscure technologies are often more willing to train, since they have no choice. And small startups will hire for much broader positions than the actual job posting, e.g. I was hired for backend skills but in practice I’m learning image processing as applied to gene sequencing.
                                                2. Learn and blog is a fine thing too… if you have the time. I don’t, so tend to go for adjacent jobs if I’m interested in particular skillset (in this case, I wanted to learn scientific computing).

                                                If you don’t have skills upfront, you also want resume that stresses your ability to learn quickly.

                                                (Longer writeup here: https://codewithoutrules.com/2018/01/23/job-with-technology-you-dont-know/)

                                                1. 1

                                                  Thanks! The tip for resumes is a good one. Sounds like you’re having fun learning in your new role.

                                                1. 21

                                                  @itamarst it’s not really clear to me what a resume looks like to you. My resume’s have never had paragraphs in them, although they might have a some sort of opening sentence that sums up my ambition.

                                                  I would argue that you aren’t really emphasizing the right thing. My resume’s are target-specific but tend to be a list of work experience with the important things I did listed in there, like “Lead a team solving X”, or “Designed interview structure” (with more filler words).

                                                  It’s also unclear to me if this blog post comes from your experience being a hiring manager for hundreds of candidates or if you are just pulling out of your butt what you think would make a good resume. This is another post which feels like you’re aiming for IT Guru status rather than dispensing useful evidence based information.

                                                  1. 2

                                                    In case you too aspire to guruhood—

                                                    Cons of being IT Guru:

                                                    Pros of being IT Guru:

                                                    • Get to share what I’ve learned over 22+ years of working as a programmer.
                                                    1. 17

                                                      Not trying to sound harsh, but this is a low quality response. Setting aside the IT Guru stuff I think @apy had some good implied questions.

                                                      What does a resume look like to you? Does it contain paragraphs with narrative description like a cover letter? My resume and most I’ve seen in the U.S. have sections with lots of short bullet points, not paragraphs per se.

                                                      Are you drawing this advice from your experience on the hiring manager side or the applicant side or both? I’ve found that the Software Clown style posts which use concrete examples are much better at conveying your message. Are there times you’ve had direct feedback on your resume? What about times you’ve passed on a candidate because of their resume?

                                                      1. 2
                                                        • Paragraphs or bullet points is besides the point. You can have bullet points too, it doesn’t matter. It’s the content and location that matters, so long as it’s professional looking and readable.
                                                        • This is based on decade plus of reading resumes and then interviewing people (as developer, usually, not manager) and seeing how much was missing from resume.
                                                        • I’ll see if I can add a concrete example.
                                                        1. 8

                                                          And most importantly, do you have any evidence that doing the change you suggest actually affects one’s success in the hiring pipeline rather than just being your preference of how resume’s should look? I could write an opposing article that says the most important aspect of a resume is that it uses exactly 3 distinct colors, how is a reader to judge the quality of such advice?

                                                          1. 1

                                                            Yes, I would like to see some evidence as well, basically where I live, hiring managers will ask you about technologies, usually with a programmer/developer/team member of sorts with them, to evaluate you. It will also be frowned upon if you at least don’t list something in your resume, and if you have phrases like the ones described in other comments in this thread, devs won’t particularly like your resume. Last guy we hired had a simple latex based resume, that was clean, listed his experiences, how he worked with others in the relevant projects, his known technologies, working projects (github/git repo), and today he is invaluable to the team. (edited for grammar and another point)

                                                            1. 3

                                                              Where are you from? Different places have different hiring cultures, yes, and what I’m writing is mostly broadly focused on US market. In the US approaching your skills as a list of technologies is asking to be treated as a commodity: easily replaceable if someone comes along with same list at lower pay. You can do it, but you don’t want to. If an interview involved a manager with a checklist of technologies I’d probably just walk out, because I’d be pretty sure pay would be vastly lower than what I can get elsewhere. And if developers were annoyed by focusing on solving problems, rather than churning out code, working with them would be unpleasant.

                                                              Notice, however, that your coworker mentioned how he worked with others, not just technologies.

                                                              Likewise, Apy’s resume starts by listing actual work he did not, not a list of technologies.

                                                              1. 1

                                                                Yes, things are different here, I’m from South America. I guess the difference here is that we rely more on the interviews that we perform, in my opinion anyone can write about how they did something, they may be lying or may not, and we want to feel that in the actual interview.

                                                                It seems to me now that here, we want to feel how you say things in an interview, we want to see you do it, explain how you’ve worked, which in my opinion you can easily spot who was trying to fake something. Obviously sometimes you get interviews in which the candidates were not who they said they were, and that’s disappointing, but when you get someone who knows what he’s doing, you feel it then and there by talking/coding/solving problems.

                                                                In my opinion anyway, writing something in a resume is easy, actual talking/coding whatever process you might wanna choose to evaluate them, is the real deal

                                                  1. 7

                                                    There’s two sets of issues:

                                                    1. The job requirements listed in most job postings are technologies, even though that isn’t really what the company is looking for.

                                                    2. Most resumes omit huge amounts of relevant information, and again often overfocus on technologies.

                                                    To become a senior developer you need some technical skills, but also to be able to work independently. That means being able to scope a project, know when to ask for help, prioritize, learn new technologies on your own, etc.. Almost no one puts this on their job postings because they can’t quite articulate it; instead they put years of experience or random list of technologies they use, conflating “knows this technology” with “will get started on this quickly/can operate independently”. Not the same thing at all.

                                                    On the resume side, often it’s “I did a thing!”. You also need to give context, why this thing was needed, and outcomes, why this thing was useful. And also there’s some stylistic stuff like, yes, no one reads the resume, they skim it at best.

                                                    So you need to make really sure it shouts INDEPENDENT WORKER YES I CAN WORK INDEPENDENTLY at the top, and it’s not buried 3/4 down the bottom of the page as an implied side-effect of a project scope that isn’t actually clear because the person interviewing doesn’t work at your company and so has no idea how impressive the thing you did actually was.

                                                    If you can share:

                                                    1. The skills you’ve seen listed, where you’ve said “I can do this!”.
                                                    2. Your resume.

                                                    then can probably give specific advice.

                                                    (I write a little bit about this here - https://codewithoutrules.com/2017/07/16/which-programming-skills-are-in-demand/ - but I should probably do a “here’s how you write a resume” blog post, since I have Opinions.)

                                                    1. 2

                                                      Yeah I subscribe to your website, really enjoy the articles :) I’ll PM you my resume info. I was hoping to learn other’s experiences in this thread, not ask for unsolicited career advice.

                                                      1. 1

                                                        BTW, from your blog post:

                                                        Learn the problem solving skills that employers will always need. That means gathering requirements, coming up with efficient solutions, project management, and so on.

                                                        Learning these skills is one thing. Demonstrating that you’ve learned them is another. Hiring managers don’t just want to see “project management” listed on your resume, they want to be sure that you can actually perform those skills (after all, their hiring decision is a multi-thousand-dollar bet on you, they want to be sure that their bet pays off). Could you speak to some techniques one could use to demonstrate these skills?

                                                        1. 2

                                                          I’ll try to write a some more when I have time, but here’s a quick example on the resume level. Let’s say you’re applying to a job where you don’t know the technology stack. And sadly it’s a cold application with no one to introduce you. You’re sure you can do the job, but you need to convince them. So:

                                                          • You probably want to say “I can learn new technologies quickly” in the first paragraph or two of the resume, because otherwise they might just skim your list-o-technologies, miss the thing they think they need, and drop your resume in the trash.
                                                          • You also want to give a concrete example.
                                                          • You want to demonstrate that the skill had real business value.

                                                          So e.g. you can have opening paragraph or bullet list at the top of the front page that has bit saying “I can learn new technologies quickly, as I did at a recent project where I fixed a production critical bug on day one, even though I hadn’t worked in Java before.”

                                                          1. 2

                                                            As someone who is at a startup that’s currently hiring, I when I’m skimming a resume, I’m looking for experience, not skill lists.

                                                            You can say “Project management” on your resume. But it’s far better to say “Was project manager for project x, successfully handling cross-team portions y and z. Project x shipped early and under budget”, and show me that you’ve managed projects.

                                                            If you want to convince me that you’re a senior developer, your resume should reflect that you’ve been doing the kind of work that people expect from a senior developer. Leading projects, mentoring more junior colleagues, shipping major features, etc.

                                                        1. 30

                                                          I’ve worked part-time for about six years of my career. I started it because I’d repeatedly burned out of full-time jobs. Working 3 days/week was great for me, far more rewarding than the added salary I passed on could have been. Aside from lower work anxiety, I had time to write two books, give three conference talks, get engaged, get married, take up several hobbies, and enjoy life thoroughly. My work has been overwhelmingly better: I stay out of rabbit holes, I recognize deep patterns, I prioritize ruthlessly, I deliver the things my users didn’t realize they need. It’s not magic, it’s just downtime for my unconscious to noodle around with problems without pressure.

                                                          I think working part time is a hugely valuable experience for anyone who doesn’t have a pressing need for dollars in the door (eg to pay off US medical bills or student loans). There are plenty of blogs out there on frugal living + investing (I recommend MrMoneyMustache and Bogleheads wiki), so developers can easily live comfortably and still save significantly towards retirement.

                                                          1. 5

                                                            I’m trying to pull back my working to part-time as well. Unfortunately many companies seem to want full-time or nothing. I’ve switched over to consulting to give me more freedom, we’ll see how that goes. I’m taking around 1.5 months off from work right now which is great. For the first few weeks it felt awkward to have no reason to do anything at any particular time, but after awhile it’s become really pleasant.

                                                            1. 12

                                                              About a year and a half ago I stopped working full-time, and it’s been really wonderful. I found I can work 2 months on a SF salary and live for a year in Berlin pretty comfortably. Sometimes I pick up more consulting work when I want structure, and sometimes I think about moving back to NYC where I would have to work a little more regularly, but I wouldn’t change anything about how I’ve spent my time up until now. I’ve been able to dive really deeply into a bunch of things I would never have had the time or energy to pursue if I were still a wageslave. The things I’ve built in my free time have also turned into tons of job opportunities, and I’ve stopped doing technical interviews now that people can just look at work I put on github and stuff. So, it can lead to lots of nice career things, too. I don’t want to stop engineering, but I am quite happy to live life outside of a shitty startup office a bit more.

                                                              Almost no jobs will appreciate it when you tell them you’d like to work less. But if you go into a new thing with clear expectations set, I’ve found it to be much easier.

                                                              1. 6

                                                                This is awesome! How do you go about getting consulting work - do you look for clients, or do they approach you? Did you have a ramp-up period before you felt comfortable that you’d have enough consulting work when you need it?

                                                                1. 3

                                                                  I think most opportunities come my way because I genuinely enjoy talking to people about systems and engineering, and when I don’t have a full-time job I can spend more time communicating about those things. It’s networking, but for something that doesn’t feel gross to me. I am lucky to have this alignment between my personal interests and what businesses currently value. My current gig came from a comment I made here on lobste.rs ;)

                                                                  A key to being comfortable is having enough runway where I know I will be OK for a while if I don’t find any work. This means being careful about burn rate. I consider potential purchases and recurring obligations in terms of how much life without work I’m giving up to have them. When my friends from work were increasing their rent to keep up with 30% of their salaries (or more) I was building the buffer that would keep me calm without work. They are worth a lot more money than me now, but I’ve been able to grow in ways that I’m extremely grateful for. Also after quitting my last full-time job I went through a period of intentional “unlearning of engineer-in-a-fun-city spending habits” which gave me a lot of peace of mind, by tripling my runway.

                                                                  When I decided to stop working full-time, I didn’t know if it was going to just be a long break or a whole new arrangement. After getting over burnout from the SF startup I was at, I cold-emailed a company doing interesting work to me, and they enthusiastically agreed to a 10 hour/wk contract. That showed me that I might be able to keep it going.

                                                                  When you pay 1/7 the rent, even a small trickle of engineering work feels like a geyser.

                                                                  1. 1

                                                                    Thanks, this is an excellent approach.

                                                              2. 3

                                                                Unfortunately many companies seem to want full-time or nothing. I’ve switched over to consulting to give me more freedom, we’ll see how that goes.

                                                                While this is true, as Mike points out in the interview it’s possible to convince some companies some of the time to hire you part-time anyway. It’s much more effort, and you need to be willing to push back much harder. But it can be done. Since it’s not the default, you really want to only mention part time bit after company has committed to hiring you.

                                                            1. 2

                                                              https://landinstitute.org/ are working on perennial grains (with some initial successes), which would massively reduce the ecological impact of grain farming.

                                                              1. 2

                                                                Book on networking: “Silence on the Wire” is a strange and wonderful book. Each chapter is half intro to some basic topic in networking, half essay on the passive surveillance opportunities implicit in the design. Starts with Ethernet and moves up the stack, if I remember correctly.

                                                                1. 20

                                                                  Interestingly, you can replace the technical content of this post with almost anything related to good human behavior. That’s because at it’s core, the post is arguing against deontological ethics (the idea that whether something is good is determined by whether it adheres to a specific set of rules). However, I find the argument against the terms “good” and “bad” misplaced.

                                                                  As an alternative, you might try viewing things through the lens of virtue ethics, which argue that “good” and “bad” are useful terms, but are always relative to some particular goal. In human behavior overall that goal might be called “human flourishing.” And in the case of code, that would be something like “achieving it’s organizational purpose without causing excess detriment.” Or more concretely, “taking online orders with an acceptable failure rate.”

                                                                  Edit: The virtue ethics view is thus that any time you call something “good,” it means good for some particular thing, even if we aren’t always explicit about what that thing is.

                                                                  1. 3

                                                                    Thank you! Another entry for my “why programmers should study humanities” list.

                                                                  1. 13

                                                                    Clickbait title.

                                                                    Also, there is bad code. Can we stop with moral relativism in a field where we can actually measure how shitty code is? Where we all have direct personal experience with mudballs (often of our own creation)? Where we’ve all had to pay the price for badly-written code that badly performs while doing a bad thing badly?

                                                                    I’d rather read a “Your code is probably bad and you should probably feel bad. Here’s how to write less bad code.”

                                                                    (And before you ask, yes, all code is varying degrees of bad.)

                                                                    1. 6

                                                                      There are plenty of non-programmers who write “bad” code that created something useful for them. Telling them they should feel bad is the attitude I don’t like. Certainly you can teach them some of the skills you have that they don’t, but that means explaining why they should do better… and that ends up being tied to specific circumstances. You’re not going to tell someone writing Excel macros about formal verification methods: they don’t care and they don’t have time.

                                                                      Software is just a tool. If the tool succeeds at its purpose, then it’s a useful tool.

                                                                      1. 2

                                                                        non-programmers who write “bad” code that created something useful for them. Telling them they should feel bad is the attitude I don’t like

                                                                        No one suggested doing that?

                                                                        Code that does something useful can still be bad code, and its badness can even turn out to be costly to whomever wrote it no matter how adorable that person is.

                                                                        You’re not going to tell someone writing Excel macros about formal verification methods

                                                                        No one has suggested that either. I don’t feel like looking it up to confirm, but this smells like strawmanning.

                                                                        Bad code does actually exist. Whether it achieves something useful in the real world is irrelevant to that.