向商务人士解释为什么软件开发依然困难
Explaining to business people why building software is still hard

原始链接: https://www.manager.dev/newsletter/cursing-the-day-lovable-was-born

在构建智能推荐系统“HoneyCrew”的一场高压黑客马拉松中,团队遭遇了危机。在利用“灵感编程”(vibe coding)工具取得初步进展后,项目在最后几个小时陷入了漏洞频发和不稳定的困境。这种混乱凸显了非技术利益相关者与工程复杂现实之间常见的摩擦——前者往往将软件开发视为一项简单、静态的任务。 作者用房屋翻修的类比来解释这种复杂性:正如盖房子需要地基设施,如果事后补救成本高昂,软件开发也需要规划和“基础设施工作”来确保长期稳定性。“在漏水屋顶下放水桶”的方法或许能提供暂时的快速修复,但它忽略了根本原因,最终会导致崩塌。 最终,团队不得不放弃狂乱的节奏,放慢速度,有条不紊地修复系统,从而制作出了可运行的演示版本。这段经历提醒我们,好的软件永远不会真正“完成”;它是一个活生生的结构,需要人们在其中居住的同时进行持续、用心的维护。

这篇 Hacker News 帖子探讨了向业务利益相关者解释软件开发工作时所面临的持续性难题。 核心主题包括: * **软件永远没有“完成”之时:** 参与者认为,主要的挑战在于软件迭代的无限性,即使在初步部署之后,工作仍在持续进行。 * **人工智能与“氛围编程”的鸿沟:** 用户讨论了现代 AI 工具(如 Claude/Lovable)的影响。虽然 AI 可以快速生成原型(即“氛围编程”),但开发者指出,将这些原型转化为生产级系统需要复杂的、耗时的后端集成,而 AI 目前还无法完全实现自动化。 * **认知与现实的偏差:** 一个长期存在的观察结果是,业务领导者往往会误判项目的复杂性:他们认为“简单”的任务通常难度极高,而他们预期复杂的工作往往反而微不足道。 * **未来展望:** 一些贡献者认为,AI 工具将在几年内取得显著进步,可能缩小快速原型制作与生产部署之间的差距。然而,另一些人则认为,无论使用何种工具,根本的困境在于业界内部对软件工程本质的误解。
相关文章

原文

It’s 1 pm on the final day of the Hackathon, 5 hours left. For the last 2 hours, we made ZERO progress. I’m cursing the day Lovable was born. As soon as I fix one problem, another one appears, and our app is barely usable.

The start was very promising. I joined 2 engineering friends and 3 recruiters to build ‘HoneyCrew’, a smart referral system (the goal was to send a weekly summary to every employee with potential candidates from their network for our open roles. Here’s an open source version). We decided to go with Lovable so the recruiting team can maintain it themselves later.

On the first day, we just FLEW, completing 90% of the project. Scraping, scoring, Slack integration, admin - things looked almost ready.

On the 2nd (and final) day, we worked on some minor improvements, and things just… Completely broke. Endless bugs everywhere, slowness, everyone super stressed.

The recruiters on our team couldn’t understand what went wrong. We were on the path for an amazing product, and now we were in danger of not having anything ready for the demo.

An allergy to ‘infra work’

I used to work with a senior leader who loved to say that he has an allergy to the words ‘refactor’ and ‘infra work’. He couldn’t understand why we couldn't build it right from the beginning, and why we were always so slow. After LLMs appeared, it became even worse. He constantly asked: “Can’t you just give this task to ChatGPT? What’s the problem?”

To his credit, he at least asked this to our faces. I know many non-technical leaders who think engineers always exaggerate and work too slowly. It’s a flavor of the same old software engineering war I talked about last week.

A coworker (and a good friend) once framed it like this: “You write code, which is just words in a language I don’t understand, right? With fixed meaning. And you know what you want to say, as you have the specs you need to follow. How come it always gets more complicated?”

I’ve been struggling to explain this, until I almost bought a house:

Imagine if your software was a house

Last October, we saw a house for sale near my parents-in-law. It looked like a great deal - good location, nice neighbors, a garden like we wanted, and very affordable. It was small and 30 years old, but the low price left us extra to spend on it.

So we asked a contractor: “How much would it cost to renovate it and expand by 2 additional rooms?”

I couldn’t stop laughing at his response:
“I wouldn’t recommend it. It’s too old. It’d be much simpler and cheaper to destroy it and build from scratch”.

He could have been a great software engineer…

We passed on it, but since then I’ve been using the house analogy quite a lot when talking about software.

The house-building process has been known for thousands of years, and still every new one has different problems. And everyone lives in one, so it feels relatable. For example:

Why can’t you just fix the issue fast? Why does it always get bigger?

Your roof leaks. You can either put a bucket on the floor, or find the root cause. If it’s your own home, what would you do?

Yeah, a bucket might be ok for a couple of days, but you need to constantly empty it, and you risk the real issue becoming worse.

Why can’t you just solve this specific use case, without all that “infra”?

Let’s say you build a new house for your family. You have enough budget for only the first floor, but you have a big family, and you know you’ll want a second one in a couple of years.

Adding the infrastructure to support a 2nd floor is MUCH cheaper right now than it will be when you actually want that 2nd floor.

The house you never finish

So it’s 1 pm on the final hackathon day, and everything feels broken.

We didn’t really have any other choice. We stopped our vibe coding frenzy and carefully went over one area at a time until we had a simple demo-able flow working. Understand, plan, implement. Much slower than our day-1 pace, but we at least ended up with a working demo-able flow.

This process is how good software is built, but it gets so easily forgotten, just rushing forward. And unlike a house, you never really finish building it, so you constantly need to update the facilities while people already live inside.

My favorite reads of the week

  1. Stop being the code review bottleneck. A very interesting and practical take on handling code review fatigue differently (hint: not doing them faster, and not delegating everything to agents).

  2. What being "inspiring" actually means. You are not Viggo Mortensen rallying men to fight Sauron. You are an Engineering Manager in tech. Here's what it means to inspire in this context.

  3. How tech workers are feeling in 2026: a workforce splitting in two. A very interesting survey in Lenny’s newsletter. Takeaway #9 is especially relevant for us:
    Workers with an extremely effective manager report roughly 65% higher job enjoyment and dramatically lower burnout than those with an ineffective one. Yet only 25.5% of tech workers rate their manager as highly effective, while 36.5% rate theirs as ineffective

联系我们 contact @ memedata.com