At the tail end of 2023 I decided to start a software company1. While I had a good amount of experience with data science, machine learning, and scripting at the time, my background is pharma and life sciences, not software. I had never worked at a tech company before — but I had taught myself Python, solved some tricky project Euler problems, and we had LLM coding tools now. How hard could it be?
Well, as it turns out, software engineering is not like scripting at all. In fact, being good at writing little python automations is almost unrelated to the task of developing and deploying a stable software production system with paying customers.
But wait, we live in the glorious future with Claude and Cursor and Devin and Lovable and a hundred other code generation tools. Anyone can be a software engineer, right?
Not quite. Even though LLMs are extremely powerful tools for writing code, they are also simultaneously quite stupid. You cannot yet “vibe code” a production app, despite what the breathless Twitter threads say, and my startup’s demand for the marginal software engineer is as high as ever (more on this later).