《守护你的“后院小棚”》阅读笔记:别让打工耗光你做技术的热情
导读
This article uses the metaphor of "skyscrapers vs backyard sheds" to compare the two sides of a software engineer's work: large-scale enterprise projects and personal side projects. The author shares his 6 years of experience, explaining that while enterprise work teaches engineering at scale, personal projects are the core that keeps engineers passionate and continuously growing. It also tells how the skills learned from these two scenarios complement each other, and reminds developers to protect their personal creative space to avoid burnout.
这篇文章用“摩天大楼vs后院小棚”的比喻,对应软件工程师的两类工作:大型企业项目和个人业余项目。作者分享了自己6年的从业经历,说明企业工作能教会你规模化工程能力,但个人项目才是让工程师保持热情、持续成长的核心,还讲了两类场景学到的能力如何互补,提醒开发者要保护好自己的个人创作空间,避免职业倦怠。
Constructing a skyscraper is a massive undertaking. You need architectural blueprints, council permits, and safety audits before the first piece of steel is even ordered. It requires hundreds of people coordinating over months or years. You can’t just throw up some drywall and hope the building holds weight.
建一座摩天大楼是项极其庞大的工程:还没下单买第一根钢材,你就得先准备好建筑蓝图、拿到市政许可、做完安全审计,还需要上百人协调几个月甚至几年才能完成。总不能随便糊几块石膏板,就指望整栋楼能撑住重量吧。
Then there is the backyard shed. No blueprints, no permits, no audits. You just grab some timber, a saw, and start hammering. It might be a little drafty, and the roof might leak if it rains too hard, but you built it yourself in a single weekend.
但后院搭小棚就完全不一样了:不用蓝图、不用许可、不用审计,拎上点木材、拿把锯子就能开始钉。可能会有点漏风,雨下大了说不定还会漏水,但那是你自己花一个周末亲手搭出来的。
For the last six years, my life as an engineer was split between these two modes. By day, I was building banking systems at enterprise scale. By night, I was in the shed, building whatever I felt like. Side projects that sometimes went somewhere and sometimes didn’t.
过去六年,我作为工程师的生活就一直在这两种模式里切换:白天在企业做大规模银行系统,晚上就窝在我的“小棚”里,想做什么就做什么——这些业余项目有时候能做出点成果,有时候就不了了之。
It is easy to view these as two separate lives: the work you do for a paycheck and the work you do for fun. But looking back on this chapter of my career, I’ve realised something fundamental. The enterprise work taught me how to engineer at scale, but it was the personal projects that kept me an engineer.
大家很容易把这当成完全割裂的两种生活:一份是赚工资的工作,一份是找乐子的爱好。但回头看这段职业经历,我才意识到一个最核心的道理:企业工作教会了我怎么做大规模工程,但让我真正能一直做工程师的,反而是这些个人项目。
I’ve always told younger developers that maintaining side projects will do more for your career than any amount of interview prep and LeetCode will.
我一直跟年轻开发者说,坚持做业余项目,比刷多少面试题、刷多少LeetCode对职业发展的帮助都大。
Learning the physics of scale
学习规模化的底层逻辑
Early on, what stands out is how much of the work isn’t actually writing code. There are design documents, test plans, architecture reviews. It can feel like the actual building part is a fraction of the job.
刚进大厂的时候最明显,大部分工作根本不是写代码:要写设计文档、测试计划,还要过架构评审。感觉真正敲代码的环节,只占工作的很小一部分。
But that surrounding work is what makes the building possible at scale. When you’re processing the volume of transactions a major bank handles, you can’t skip the design phase or cut corners on testing. Each of those steps exists because someone before you learned the hard way what happens without it.
但正是这些周边工作,才让大规模系统能稳定跑起来。你要处理的是大型银行的交易体量,根本不可能跳过设计阶段,也不敢在测试上偷工减料。每一步流程的存在,都是因为之前有人踩过坑,付出过惨痛代价才总结出来的。
Working in that environment gives you access to unattainable scale. You get to work with tools like Cloud Spanner, a globally distributed, strongly consistent database that you simply cannot simulate on a laptop. You learn defensive design. You start thinking about failure modes before you think about features.
在这种环境里工作,你能接触到个人根本碰不到的规模:比如能用Cloud Spanner这种全球分布式强一致性数据库,这东西你在自己笔记本上根本模拟不出来。你会学会防御性设计,想做功能之前,会先考虑可能出现的故障模式。
But that scale comes with a cost: rigidity. You are a single worker on a massive site. You don’t often get to choose the materials, and you rarely get to experiment with the foundation.
但这种规模是有代价的:太僵化了。你只是巨型工地上的一个工人,很少能自己选要用的材料,更没机会在地基上做实验。
Taking the blueprint home
把蓝图带回家
The shed is where you take the blueprints you learned on the job and actually get to play with them.
而你的“小棚”,就是你把工作上学到的蓝图拿回家,真正能上手玩的地方。
In the early days, my personal projects were messy. Architecture was an afterthought if it was a thought at all. Classic shed behaviour. But over time, the patterns from work started bleeding in naturally.
最开始做个人项目的时候,我的代码乱得一塌糊涂,架构根本就是后考虑的事,甚至完全不想——就是典型的搭小棚的思路。但时间久了,工作里学到的模式自然而然就渗透进来了。
You spend enough time designing systems that need to handle failure gracefully, and you start doing it on autopilot. The homelab is probably the best example of this. What started as a single container on a single machine turned into a managed cluster with automated deployments and infrastructure defined in code.
你设计多了需要优雅处理故障的系统,做别的时候也会自动这么想。我自己的家庭实验室就是最好的例子:最开始只是单机器上跑一个容器,后来慢慢变成了有自动部署、基础设施全用代码定义的托管集群。
That’s taking the structural discipline from the skyscraper and applying it to a space where I had total freedom. The personal projects stopped falling over. They were still built fast and on my own terms, but they were anchored. The enterprise taught me the rules of structural integrity, but the shed gave me a place to actually be the architect.
这就是把建摩天大楼的结构规范,用到了我完全自由的空间里。我的个人项目再也不会动不动就崩了,还是能按照我自己的节奏快速搭建,但现在有了根基。企业教了我结构完整性的规则,但小棚给了我真正做架构师的地方。
The freedom to break things
拥有搞砸东西的自由
When you’re building for yourself, the cost of a bad decision is a wasted evening. At work, choosing the wrong approach affects real teams and real customers.
你给自己做东西的时候,做错决定的代价最多就是浪费一晚上。但在工作里选错了方案,影响的是实实在在的团队和客户。
That rapid feedback loop is what makes the shed so valuable. You are the developer, the reviewer, and the user. You can tear something down and rebuild it just to see how it feels.
这种快速反馈循环,就是小棚最有价值的地方:你同时是开发者、评审者和用户,想把东西拆了重建试试手感都行。
I built a Game Boy Advance emulator in Go not because the world needed one, but because I wanted to understand how hardware works at that level. I’ve stood up services using tools I’d never touch at work just to understand their tradeoffs. You can try a tool you’ve never used before without writing a proposal for it.
我之前用Go写过一个Game Boy Advance模拟器,不是因为世界上缺这个,而是我自己想弄明白那个层级的硬件是怎么工作的。我还用过工作里根本碰不到的工具搭服务,就为了搞懂它们的优劣权衡。你想试没用过的工具,根本不用写申请提案。
Most of these experiments don’t turn into startup ideas, but they all leave something behind. A new pattern, a lesson in what not to do, a broader sense of what’s out there.
这些实验大部分都变不成创业点子,但都会留下点东西:一种新的设计模式,一个“以后不能这么干”的教训,或是对技术边界更广的认知。
More than anything, the shed is where the curiosity stays alive. Enterprise work is highly valuable, but it can wear you down. Sprints blend together, the ticket queue never shrinks, and the problems start feeling repetitive. Personal projects are where you go to remember that building software is actually fun.
最重要的是,小棚是你保持好奇心的地方。企业工作价值很高,但很容易消磨人:迭代周一个接一个,工单队列永远排不满,问题都开始变得重复。而个人项目能让你想起来,写软件原来其实是件很有意思的事。
Bringing the hammer to the skyscraper
把锤子带到摩天大楼工地
Earlier in my career, I was new to containerisation and cloud infrastructure, and the learning curve at work was steep. But because I was standing up containerised systems and running them on GCP at home on my own time, the concepts landed faster. I was getting reps in from both sides.
我职业生涯早期刚接触容器化和云基础设施的时候,工作里的学习曲线特别陡。但我私下在家自己用GCP跑容器化系统,两边都练手,概念反而理解得更快。
This pattern repeated throughout my career. You try something in the shed on a weekend because you’re curious. You learn the tradeoffs, the rough edges, the things the documentation doesn’t tell you. Then months later, when the team at work is evaluating that same tool or approach, you’re not starting from zero.
这种模式在我职业生涯里反复出现:你周末在小棚里因为好奇试了个新东西,搞懂了它的优劣、坑点,还有文档里不会说的问题。几个月后,工作里的团队刚好要评估同样的工具或方案,你就不用从零开始了。
Because you’ve already broken things in your own environment, already evaluated tools on your own, and already felt the pain points, you can show up at work and make informed calls instead of guesses.
因为你已经在自己的环境里踩过坑,自己评估过工具,亲身体会过痛点,工作里就能做出有依据的决策,而不是瞎猜。
Protect your shed
守护你的小棚
The trap of software engineering is thinking that your day job is the entirety of your craft.
软件工程行业最大的陷阱,就是觉得你的本职工作就是你技术能力的全部。
The engineer who only builds skyscrapers eventually burns out. The problems become repetitive, the process becomes suffocating, and the creative spark starts to dim. You stop building things because you want to, and start building them because the business says so. You lose your edge.
只会建摩天大楼的工程师最后一定会倦怠:问题变得重复,流程让人窒息,创造力的火花慢慢就灭了。你不再是因为想做东西而做,而是因为业务要求你做,你就慢慢失去了竞争力。
Protect your personal projects at all costs. It is where your curiosity lives, where you experiment, and where you define yourself as a builder rather than just an employee. The enterprise will teach you how to write code that survives, but the shed is what ensures you actually still want to write it.
不惜一切代价保护好你的个人项目。那是你好奇心存放的地方,是你做实验的地方,是你定义自己为“创造者”而非“员工”的地方。企业会教你怎么写出能稳定运行的代码,但你的小棚,才是保证你还愿意写代码的根本。