Category: General Commentary

Generally commentary on tech-related issues.

  • Who’s going to end up holding the flashlight?

    Have you ever been asked to help with something, agree to do it, only to find out your job is to just stand there and hold a flashlight while someone else does all the work? Then, when they’re done, they thank you for the help? When you’re a kid and get relegated to flashlight holder, it’s the most depressing feeling in the world. You did literally nothing, and the other person had the gall to thank you. Then you get older, and have to do some job that requires a third (or even fourth) hand, and all of a sudden having someone there to just hold something in place for you actually is a really big help. I get the impression that the whole trend of AI development is a bit struggle to figure out who’s doing the work, and who’s doing the minor, but still very helpful, assisting.

    (more…)
  • Why I’m shifting my programming vocabulary

    Yes, I know I missed the peak on renaming software terms, like changing the default trunk branch name from “master” to “main,” or the trend of renaming “whitelist” and “blacklist” to “allowlist” and “blocklist,” but I’m also not trying to change how I talk because people are capable of stretching words until they get offended. That’s always going to be an issue, and I don’t have nearly enough patience to indulge it. What I am trying to do is avoid terms that have developed connotations that lead to bad programming habits, and replace them with ones that are clearer about what I’m trying to accomplish, and don’t invite people into fixating on the wrong pieces and losing sight of the point.

    (more…)
  • Product management really does matter

    Not too long ago, Joel Spolsky’s blog post about architecture astronauts hit my various consumption feeds, and it serves as a good reminder that, as fun as it is to make fun of product managers (and it is a lot of fun), they’re also probably the most important people in software development. That may seem a bit over the top, seeing as how QA engineers are the ones who ensure that what’s shipped actually works, developers like me actually write the applications and services in the first place, and then there’s the operations teams that build and run the production infrastructure the code actually runs on. It sure sounds like there’s a lot of other people with a lot more direct connection to the actual engineering bits. The truth is, we’re all important, but without good product management, it’s entirely possible for everyone else to do a perfect job…and the release still fail.

    (more…)
  • The checkboxes are everywhere, and once you notice them you’ll never unsee them

    I’ve lost count of the number of times I’ve had to sit through some sort of motivational, life lesson-style speech. I have not however, lost count of the number of lines from those speeches that actually stuck with me, because it’s literally “2.” Most people trying to write 1 of these speeches would be better served by rolling in a TV and playing the song “Everybody’s Free to Wear Sunscreen” instead. But there is another idea, from talk about sales and marketing strategies for a company I used to work for, that has so subtly stuck with me and now pops up with frightening regularity.

    (more…)
  • A case study in peak overemployment

    If you see tech updates on Twitter (never X), you may have heard of the strange tale of 1 Soham Parekh. Apparently the young man has taken the trend of overemployment to a level that can be best described as caricature. For a recap on what’s happened and the initial fallout, as well as Parekh trying to defend himself, here’s a video covering the incident. While it’s easy to grab a snack and enjoy the drama, this Parekh character seems emblematic of a lot of issues going on right now, and it’s worth talking about.

    (more…)
  • The myth of “enterprise software”

    We don’t talk about uncategorized software all that often. We almost always include an adjective to indicate something about the code we’re discussing, usually as a means of describing the problem domain. As a few quick examples, there’s e-commerce software, marketing software, educational software, or inventory management software. That clarification is handy, since it provides context about the code being discussed. The problem (and I would not be at all surprised if Java people – and I largely write Java at my job – did this), is when we over-generalize how we categorize software in a way that adds no value. For example, “administrative software” or “enterprise software.”

    (more…)
  • Abstractions are hard to get right

    Abstractions are 1 of those things that are fairly easy to understand the basics of, but hard to really do right. They’re a tool used to simplify code by using a simpler-to-understand proxy (like a database record or a class/interface), but that doesn’t really scratch the surface of how to use them well vs. just tossing in them into code because you’re supposed use them. Done well, abstractions let you move forward while keeping just the right level of detail in your head. The problem is that almost everything we do in programming is just layering abstractions over real-world processes and behaviors. That makes it deceptively easy to have software that feels like it’s in the way more than it is actually helping anything.

    (more…)
  • The AI pitfall

    I really wanted to call this “The AI trap,” but I try not to ascribe to malice what I could explain with ignorance, apathy, and/or stupidity, and given that I generally don’t ascribe the level of foresight and deliberation needed to execute a “trap” to the types of people running large public companies, “trap” isn’t the right word. But even so, this push to start using AI to do as much as humanly possible has already generated content about the plight of junior devs. What I’m worried about is senior developers (yes, I am technically considered a “senior” dev, so there is some self-interest here) are about to walk themselves into a nasty setup they’re never going to recover from.

    (more…)
  • You can just run the code

    So I haven’t made as much progress on the actual gift registry I wanted to write this year, although I do have a Go web application that connects to a Postgres database, with an endpoint that gets the database stats, collects telemetry data, pipes it all to an OpenTelemetry stack, and returns an HTML page with the health check results (server-side rendering is a much more pleasant experience than trying to wrangle Javascript frameworks). I also have tests that confirm this is working. That took a lot longer to set up than I anticipated, but I’m really happy with what I’ve been able to do.

    (more…)
  • I don’t think the problem is that the job market is broken

    If you hear anyone say anything about the jobs market these days, odds are the word “broken” comes to mind. Hundreds of resumes sent out, and in the best case scenario people have been getting tens of calls in response. Not job offers, not in-person interviews, just the company in question calling back to start the potential interview process. Given the auto-rejections coming far too quickly for a human to have made a decision on the resume, the silence about whether or not the company is moving forward with candidates, and ghost jobs, it’s easy to see why people think there’s a fundamental problem with the process. From the employer side, given the fact the software industry has a bloodbath lately, there’s far more applicants than openings, and by all (public-facing at least) indications, every posting is getting flooded with applications. All of this is leading to a situation where people in software are going unemployed for months, even years, after losing their jobs. All of this certainly sounds like a system that fundamentally isn’t working, but I’ve come to a more disturbing hypothesis – the job market isn’t broken, it’s been optimized.

    (more…)