软件工程师的疯狂
The Insanity of Being a Software Engineer

原始链接: https://0x1.pt/2025/04/06/the-insanity-of-being-a-software-engineer/

软件工程是一个充满挑战的领域,需要持续学习。新开发者必须掌握多种编程语言、像Rails或Django这样的框架以及CSS。JavaScript是不可避免的,通常还需要掌握React、TypeScript和Redux之类的状态管理工具。开发者还必须配置Webpack之类的构建工具。 这个角色已经扩展到包括Docker和Ansible之类的DevOps任务,这些任务传统上是由系统管理员处理的。现在,像AWS这样的云平台和像Terraform或Pulumi这样的基础设施即代码工具也成了预期掌握的知识。 即使晋升到管理层也需要新的技能:估算截止日期、分配任务、编写规范和提供反馈。尽管复杂性日益增加,但专业化却在下降,迫使工程师身兼数职。作者认为,AI辅助应用程序开发的想法或许还不错。

Hacker News上的一篇文章《软件工程师的疯狂》引发了热议。首条评论认为软件工程师的工作其实轻松舒适,养尊处优。其他评论跟帖,一些人同意,与航空飞行员训练或体力劳动相比,软件工程师的工作确实轻松许多。一位评论者指出,技术、API和开发方法的不断变化是压力的来源,甚至会导致健康问题。这位评论者还提到,有些团队比其他团队好,而一个好团队的标准因人而异。另一位评论者正在考虑离开这个行业,因为他们感觉这份工作失去了意义。一些人指出,缺乏稳定性和持续学习的需要也是一个挑战。一位用户认为这篇文章更侧重于Web开发。最后,一位评论者提到了其他高压力、关键性工作,例如眼科手术和儿科,暗示软件工程师的工作相对来说压力较小。
相关文章

原文

Is something I think about often because I can’t help but wonder if most other jobs are like this.

Being a software engineer is tough. You need to know a couple of programming languages and tools right from the get-go. But that won’t cut it. Companies expect you to know whatever particular framework they use. That might be Rails or Django or Laravel or something else. You’ll also need CSS. It’ll take you a lifetime to learn — and you still won’t know why the layout’s breaking — but knowing just enough to get by is feasible.

It’s unlikely that you won’t have to deal with JavaScript. Maybe you’re lucky and you just need to sprinkle in the occasional jQuery in the legacy app you’re maintaining. But things change.

At some point, the people at Facebook built React. Turns out that company with tens of thousands of engineers had two specialties all along: front-end and back-end. The programming hive-mind collectively decides that React is now the right way to build software but, at the same time, companies decide they can’t afford more engineers. Lo and behold the full-stack engineer is born and you’re it. Get to learning React and building REST APIs on top of the back-end tech you already know.

It won’t stop there. You know you need types, right? Add TypeScript. Are you really going to be managing state in React like a pleb? Add Redux. Feeling smart because you dodged both of those? Have fun figuring out to how to configure webpack/esbuild/rollup, plus Prettier, plus ESLint.

“Ok”, you say. “But I can keep doing things the way that I’ve been doing them. It worked fine. I don’t need React”. Of course you can. You can absolutely deviate from the way things are done everywhere in your fast-moving, money-burning startup. Just tell your boss that you’re available to teach the new hires — who’ve only ever heard of React — about the joys of server-side rendering.

Oh and, turns out we were just getting started.

Back when dinosaurs roamed the earth there was a type of professional called a System Administrator. Their whole job was to make sure that your backend was working nicely. They handled infrastructure changes, upgrading the database, system upgrades, keeping the daemon running, restarts, everything. Then came DevOps. Some cash-strapped company somewhere decided that now all of this would be handled by the engineers and everyone agreed. Now you need to learn Docker. Oh, your whole app is just a single statically linked binary and you don’t need Docker? Learn Ansible and I hope you have fun figuring out the options you need to pass to SystemD.

And you’re not even halfway there. Now you gotta learn AWS. You won’t be using the GUI to configure your infrastructure like a peasant so you better learn Terraform or Pulumi or whatever.

You do a good job. You’re promoted to manager. You need to learn a whole other job. But that’s ok because it’s the end-game. Bliss. Here’s some of the stuff you’ll need to do:

  1. Guesstimate deadlines
  2. Assign tasks to teammates
  3. Spec tasks
  4. Participate in annual reviews
  5. Provide valuable feed during product meetings

You better hope your company has quadrupled in number of employees by this point or you’ll be doing management plus all of the above.

And it can always get worse. A recruiter reached out to me a couple of days ago about an engineering position for a secret company. They decided that they required senior level skills in Rails, Hotwire and, incredibly, native mobile development. Why not add kernel and compiler development in there as well for good measure?

Software gets more complicated. All of this complexity is there for a reason. But what happened to specializing? When a house is being built, tons of people are involved: architects, civil engineers, plumbers, electricians, bricklayers, interior designers, roofers, surveyors, pavers, you name it. You don’t expect a single person, or even a whole single company, to be able to do all of those.

Maybe a future where we can build a whole app with a couple of prompts isn’t so bad.

联系我们 contact @ memedata.com