别只会盖摩天楼:一位工程师为何劝所有程序员守住自己的“后院小棚”

开发工具 2026年4月8日
别只会盖摩天楼:一位工程师为何劝所有程序员守住自己的“后院小棚”
澳大利亚工程师 Dylan Butler 用“摩天楼”和“后院小棚”比喻企业开发与个人项目,道出一个被许多大厂工程师忽略的现实:真正让人保持工程感和创造力的,往往不是KPI,而是那些看起来“不务正业”的 side project。放在今天这个被流程、平台和AI工具层层包裹的软件行业里,这个提醒尤其重要——如果工程师失去亲手折腾的空间,技术能力未必立刻退化,但好奇心很可能先死掉。

当软件工程越来越像大型施工现场

Dylan Butler 这篇文章最打动人的地方,不在于它讲了什么新技术,而在于它把很多工程师说不清、但每天都在经历的职业状态,讲得非常准确:白天在公司“盖摩天楼”,晚上回家在自己的“小棚子”里敲敲打打。

所谓摩天楼,是银行系统、企业级平台、全球一致性数据库、层层评审和严格测试;所谓小棚子,则是家里的 homelab、一个周末写出来的工具、一个没人要求上线的模拟器,甚至只是你突然想验证的某种技术想法。前者规整、庞大、可靠,后者粗糙、自由、偶尔漏雨,但它是你亲手搭起来的。

这个比喻之所以成立,是因为今天的软件开发,确实越来越像土木工程。尤其在金融、云计算、医疗、政企这些领域,代码早就不是“一个聪明程序员一晚上写完”的浪漫故事,而是一套高风险系统的组成部分。设计文档、测试计划、架构评审、合规检查、回滚预案——这些流程常常比“写代码”本身还耗时。很多年轻开发者进入大公司后都会有同样的困惑:我明明是来写程序的,怎么天天在开会、画图、补文档?

可 Butler 提醒得很对,这些东西不是形式主义的装饰物,而是规模化的代价。你要处理的是银行级交易,不是 ToDo List;你面对的是跨区域、高并发、强一致,不是自己电脑上的一个 SQLite 文件。像 Cloud Spanner 这样的系统,本身就是“规模的物理学”——有些问题只有在真实流量、真实团队、真实故障里才会出现,根本不是本地起几个容器就能模拟出来的。

大厂教你造结构,个人项目教你做建筑师

Butler 的核心观点其实很锋利:企业工作教会你如何让系统活下来,但个人项目决定了你是否还想继续造系统。

这话听起来有点鸡汤,细想却一点也不虚。很多工程师在成熟组织里工作几年后,往往会掌握一整套“正确姿势”:如何拆分服务、如何做容灾、如何写基础设施即代码、如何设计观测性体系、如何避免一个看似聪明但未来极难维护的决定。问题在于,在大组织里,你常常只是一个巨大工程中的螺丝钉。你学习了蓝图,却未必有机会真正决定蓝图。

而个人项目的价值,恰恰就在这里。你终于可以把白天学到的结构纪律,带回自己的地盘上实验。Butler 提到,他的 homelab 从一台机器上的单个容器,慢慢演化成自动部署、集群化、基础设施代码化的系统。这是非常典型的工程师成长路径:最初只是“能跑就行”,后来开始在意失败场景、依赖关系、部署一致性、可恢复性。棚子还是那个棚子,但地基开始打实了。

这件事为什么重要?因为软件行业这些年有一个微妙趋势:工具越来越高级,门槛似乎越来越低,但工程师对底层结构的掌控感反而在下降。云平台帮你托管,框架帮你抽象,AI 甚至开始帮你写样板代码。你当然可以更快做出东西,但也更容易变成“会拼装工具的人”,而不是理解系统的人。个人项目就是少数还能让你从头到尾自己负责的空间。你得决定为什么选这个数据库,为什么这样做部署,为什么服务会挂,为什么日志看起来没问题但系统就是抖。这些问题没有公司同事替你兜底,也没有复杂流程替你掩盖理解上的漏洞。

真正的学习,往往发生在“瞎折腾”里

Butler 文中提到,他曾经用 Go 写过一个 Game Boy Advance 模拟器。世界当然不缺一个新的 GBA 模拟器,这个项目看起来甚至有点“无用”。但技术史上最有价值的学习,很多时候就藏在这种“不实用”的折腾里。

因为当你为兴趣而不是为业务指标做东西时,你学到的往往是文档不会教你的那部分。比如一门语言在处理底层状态时的别扭感,一个看起来很酷的工具在真实使用中的粗糙边角,一种架构在小规模下优雅、在中等规模下却开始拧巴的临界点。这些经验无法靠背面试题获得,也很难从公司的规范文档里直接继承。

这也是为什么很多技术圈老人一直强调 side project 的意义。开源世界本来就是从这种文化里长出来的:Linus Torvalds 当年做 Linux,并不是企业级路线图驱动;Docker 早期流行,也离不开开发者在工作之外不断试错和传播;甚至不少后来的创业项目,最初都只是某个人为了“我想试试看”而写的小工具。绝大多数个人项目确实不会变成公司,也不会变成明星产品,但它们会变成能力、直觉和审美。

在今天这个 AI 编程助手盛行的时间点,这个话题又有了新的现实感。Copilot、Cursor、各种代码代理让“把东西做出来”变得更容易了,但“为什么这么做”依然无法外包。AI 可以帮你快速搭起棚子,却替代不了你作为建筑师做判断。某种意义上,越是工具强大,越需要一个属于你自己的试验场,去分辨哪些是表面的效率,哪些是扎实的理解。

从后院回到办公室:个人项目并不“业余”

Butler 还谈到一个很实际的好处:你在家里先摔过跤,到了公司就更敢做判断。

这几乎是每个优秀工程师都会经历的正循环。工作中第一次接触容器、云基础设施、自动化部署时,概念往往很陡峭;可如果你已经在自己的环境里装过、配过、弄坏过,那么这些名词就不再只是 PPT 上的术语,而是你手上有过温度的东西。你知道哪里会卡,哪些默认配置不可信,哪些“最佳实践”只在特定条件下成立。

这类经验在团队里非常值钱,因为它不是纸上谈兵。真正的技术判断,从来不只是“官方文档说可以”,而是“我知道它在什么场景下会翻车”。很多公司在评估新工具时,最缺的不是会念参数的人,而是用过、踩过坑、理解权衡的人。个人项目在这方面像一个低成本训练场:你承担的代价只是一个周末,换来的却可能是未来几年里的判断力。

当然,这里也有一个值得讨论的问题:是不是每个程序员都必须靠下班后继续写代码,才能算得上好工程师?我的看法是,不该把 side project 神化成道德义务。行业过去常有一种危险倾向,仿佛“真正热爱技术的人就应该下班继续编码”,这对有家庭负担、身体压力、照护责任的人并不公平。不是每个人都能一直在深夜守着自己的“小棚子”。

但这不妨碍 Butler 的观点依然成立:工程师需要一个不完全被业务定义的空间。这个空间未必非得是个人产品,也可以是开源贡献、硬件折腾、树莓派实验、写技术博客、研究某个协议、甚至系统性地拆解一款喜欢的软件。重点不在于“额外工作”,而在于保留自主探索的能力。

在流程越来越重的行业里,别把好奇心外包掉

为什么这篇文章放到 2026 年看,格外有现实感?因为软件行业正在经历一种两头挤压。一头是企业系统越来越重:合规要求更严、云成本更敏感、组织流程更复杂、可靠性要求更高;另一头是开发工具越来越自动化:AI 生成代码、平台工程屏蔽底层、低代码和托管服务吃掉大量重复劳动。夹在中间的工程师,最容易失去的不是饭碗,而是“动手理解世界”的冲动。

如果一个工程师长期只在企业流程里移动工单,很容易把自己训练成一个熟练的执行者:能交付,能对齐,能维护,但慢慢不再提问,不再试验,也不再对技术本身感到兴奋。久而久之,职业疲惫感就来了。冲刺一个接一个,需求一轮接一轮,待办列表像永远下不完的雨。你会写代码,但那种“我想造个东西看看它会不会跑起来”的快乐,悄悄不见了。

Butler 说“保护你的棚子”,其实是在说,保护那块还允许你犯错、允许你胡来、允许你追问“为什么”的地方。企业体系会奖励稳定和可预测,个人项目则奖励好奇与冒险。前者让你成为可靠的工程师,后者让你别变成一台只会出活的机器。

我很认同这个判断,而且想再往前推一步:未来工程师之间真正拉开差距的,未必只是编码速度,而是对系统的立体理解力,以及持续生长的兴趣密度。那些长期保有“小棚子”的人,往往更能跨越技术周期。因为他们不是只会使用某一代工具,而是在不断训练自己的实验能力。工具会换,平台会变,今天流行的框架明天就可能退潮,但会自己搭棚子的人,总能找到下一块木板和下一把锤子。

Summary: Butler 这篇文章表面上是在鼓励程序员做个人项目,实际上是在提醒整个行业:别把工程师训练成只会遵循流程的施工队员。企业系统当然重要,它塑造可靠性、纪律和规模感;但真正决定一个人能否走得长远的,往往是那块不受KPI支配的试验田。我的判断是,随着AI编程工具继续普及,个人项目的价值不会下降,反而会更高——它会成为区分“会调用工具的人”和“真正理解系统的人”的关键分水岭。
side project软件工程Dylan Butler企业开发个人项目homelab工程师创造力KPIAI工具流程化开发