If I asked my mum what a software engineer was, she'd be able to put two and two together: they engineer software. If I repeated the question but asked what a vibe coder was, I'd be met with confusion. "They are coding vibes?" Not really. "They are vibing the code?" Closer, but what does 'vibing' even mean? The term 'vibe coding' has become too vague and too difficult to understand. There's a noticeable gap between well-built and badly-built vibe coded software, and the term tells you nothing about which you're getting, unlike traditionally engineered software, where the gap is far easier to measure. I have no interest in opposing vibe coders here. Instead, I want to shed light on a possible new branch of an informal discipline that I like to call DIY software development, a term that lets us discern development that follows best practices from code written willy-nilly.

The rest of this extract assumes you know what a software engineer/developer is and what a vibe coder is. It also assumes that you agree (or at least understand) that a SWE can be a vibe coder and a vibe coder can be a SWE, but that it would not always be true. For us to gain an understanding of what DIY software development looks like, we'll be looking at the idea of DIY itself.