导读
This article shares a software engineer's personal experience as an independent contractor, exploring the contradiction between being a generalist and needing to brand as a specialist to get clients. It explains how he built a personal brand around Rust expertise while still leveraging his broad skill set across diverse projects, and concludes that specialist branding serves as a trust signal to unlock generalist work opportunities eventually. It offers a super practical career strategy for freelancers and tech workers confused about personal positioning.
这篇文章是一位自由职业软件工程师的真实职业感悟,戳中了很多全栈/通用型技术人找工作时的痛点:明明能搞定各种领域的问题,却因为标签不够明确被客户拒之门外。作者分享了自己靠打造「Rust 系统开发专家」的专精标签快速获得客户信任,同时又在实际项目里继续发挥通用能力解决各种跨界问题的经历,最后得出了一个很有意思的结论:用专精身份敲开客户的门,才有机会让对方看到你作为通用型人才的价值,非常值得自由职业者和迷茫于职业定位的技术人参考。
Since starting out as an independent contractor, I’ve always felt a tension between being a generalist software engineer, yet having to market myself as a specialist. I’ve been wanting to write about it for years and even have kept some notes for that purpose. Recently I came across an article that gave me the last bit of inspiration I needed, even though his article only indirectly touches on the topic.
自从成为独立开发者以来,我一直陷在一个矛盾里:我本身是个通用型软件工程师,却必须把自己包装成专精人才才能获得客户。这个话题我琢磨了好多年,还特意记了不少相关笔记,最近看到的一篇文章刚好给了我最后一点动笔的灵感,尽管那篇文章只是间接提到了这个主题。
Below follows an account of my struggles, hoping it might be useful for other adventurers out there. Note that my words are closely tied to my own experience, so take them with a grain of salt!
接下来我会分享自己的这段纠结经历,希望能给其他同样在探索的朋友一点参考。不过这些都是基于我个人的经历,大家不用完全照搬哦。
{{image_1}}
I find the following formulation by a HN user to be spot on: “in theory all companies like adaptable people. In practice I find most job descriptions prefer specialists”. This means that, even if you are a generalist, you might have to present yourself as a specialist when looking for work!
我觉得黑客新闻上一位用户的话特别准:「理论上所有公司都喜欢适应性强的人,但实际找工作的时候,绝大多数岗位描述都想要专精人才」。这就意味着,哪怕你是个什么都能搞定的多面手,找工作的时候也得先把自己包装成某个领域的专家。
It took me a while to accept this reality. Since I started programming, I never felt the need to frame my skills within a specific category. I considered myself a hacker, in the original sense of the word, and that was enough for me. I even had the luck to start my programming career at a company that shared this perspective and actively hired curiosity-driven generalists. Those were great times!
我花了好长时间才接受这个现实。最开始学编程的时候,我从来没想过要把自己的技能归到某个特定分类里,我觉得自己就是个传统意义上的黑客,能解决问题就够了。我刚入行的时候运气特别好,入职的公司也认同这个理念,专门招好奇心强的通用型人才,那段时间真的太舒服了。
Presenting myself as a generalist started showing its limits after I became an independent contractor, however. Prospective clients wanted to hear something that fit their mental categories, instead of vague claims like “I’m a computer wizard”. They asked questions such as: are you a front-end or back-end engineer? Do you program in .NET or in Python? Do you specialize in AWS or in Azure? And so on and so forth.
但等我成了独立开发者之后,再对外说自己是通用型人才就碰了壁。潜在客户只想听符合他们固有认知的答案,根本不接受「我是个计算机万能选手」这种模糊的说法。他们会追着问:你是前端还是后端?用.NET还是Python?擅长AWS还是Azure?诸如此类的问题一个接一个。
I don’t blame them… I guess it’s difficult to assess the value of hiring a generalist problem solver, when you need (or at least think you need) an expert in a specific set of technologies. While I did manage to find a few customers who valued me as a generalist, I knew something had to change in my communication strategy.
我其实特别理解他们:当你觉得自己需要某个特定技术栈的专家时,确实很难评估雇一个通用型问题解决者到底值不值。虽然我也找到了几个认可我通用能力的客户,但我清楚知道,自己的对外展示策略必须改改了。
{{image_2}}
By the end of 2022 I started branding myself as a specialist: an expert Rust developer with a focus on systems programming and open source development. Be it luck or genius, it worked right away and kept the contracts coming during the whole of 2023!
2022年底的时候,我开始把自己包装成一个专精人才:专注于系统编程和开源开发的Rust资深工程师。也不知道是运气好还是选对了方向,这个策略立刻就见效了,2023一整年我都没缺过项目。
The choice for this branding was driven by a bunch of factors: I’ve been using Rust for years and, though I’m not a famous Rust person, I can say with confidence that I deeply know the language. Participating in the Rust community brought me significant open source experience, which I thoroughly enjoyed. It felt natural to look for professional work in open source. I love developing what I call “foundational software” (creating building blocks, instead of gluing APIs together) and Rust is commonly used for this purpose. I genuinely enjoy Rust as a language, even though it isn’t perfect. Rust’s usage in the industry has been growing steadily in the last decade, so doubling down on it seemed like a good bet.
选择这个方向做个人品牌也是有很多原因的:我已经用了好几年Rust,虽然不算社区里的知名人物,但我确实对这门语言了解得很深入。参与Rust社区也给我积累了很多开源经验,我本身也很享受这个过程,找开源相关的工作对我来说很顺理成章。我自己特别喜欢做「基础软件」——也就是造轮子而不是拼API,而Rust刚好是这个领域常用的语言。哪怕Rust不是完美的,我也确实很喜欢这门语言。而且过去十年Rust在行业里的使用率一直在稳步增长,All in这个方向看起来是个稳赚不赔的选择。
It might look like that from the outside, but once you look under the covers you can see I’m secretly still a generalist. First of all, each Rust project I’ve taken required use of my broad skillset and hacker mindset. I’ve had to jump into completely new problem domains and codebases, where the only common denominator was that the projects were implemented in Rust.
看起来我好像真的成了Rust专家,但其实私下里我还是那个通用型选手。首先,我接的每一个Rust项目都需要用到我广泛的技能储备和黑客思维,我得跳进完全陌生的问题领域和代码库,这些项目唯一的共同点只是用Rust实现而已。
Here are a few examples: Enhancing quinn, the community-made Rust implementation of the QUIC protocol: I implemented a missing optional feature and fixed a tricky bug. Developing a dependency resolution algorithm for the Python / Conda ecosystem: I wrote a prototype that ended up becoming the official resolution library. This was the first time in my career that I got paid to read academic papers. It felt a bit like going back to university… And it was great! Creating a performance benchmarking system for rustls, the popular Rust implementation of the TLS protocol: I drew inspiration from the benchmarking approach of the Rust compiler and, after lots of research, built a customized benchmarking framework for rustls.
举几个例子:我给社区版QUIC协议Rust实现quinn补了缺失的可选功能,还修了一个特别难搞的bug;给Python/Conda生态做依赖解析算法,我写的原型最后成了官方的解析库,这是我职业生涯里第一次有人花钱雇我读学术论文,感觉好像回到了大学,特别有意思;还给热门的Rust TLS实现rustls做性能基准测试系统,我参考了Rust编译器的基准测试方法,做了大量调研之后给rustls搭了一套定制化的基准测试框架。
Next to the wide range of Rust projects I’ve taken, there’s an additional reason to still consider myself a generalist, which is that I’m also working on totally unrelated stuff. Consider, for example, the following professional projects: Developing and maintaining a desktop software package for a non-technical team of chemists (C# / .NET). Developing and maintaining a web application to help a non-profit with their bookkeeping (C# / .NET). Taking on a leadership role at a startup for one day per week (the stack is Python, but I do almost zero programming).
除了这些五花八门的Rust项目之外,我还在做很多完全不相关的工作,这也是我觉得自己还是通用型人才的原因。比如这些商业项目:给非技术背景的化学家团队开发维护桌面软件,用的是C#/.NET;给非营利组织做记账用的Web应用,也是C#/.NET;每周抽一天去一家创业公司做管理工作,他们的技术栈是Python,但我几乎不用写代码。
{{image_3}}
Paradoxically, it looks like presenting yourself as a specialist is a requirement to get generalist projects! How is that possible? Let’s start with the non-Rust projects I mentioned last. All three came through people who knew me personally and were looking for a “trusted computer wizard”. These people were oblivious to my internet presence and simply wanted to get something done, regardless of the underlying technology. From that perspective, I’d say my branding as a specialist didn’t have any influence. All they cared about is that we trusted each other and that I was good at software engineering.
说起来有点矛盾,看起来你得先把自己包装成专精人才,才有机会拿到通用型的项目?为什么会这样呢?先说说我刚才提到的非Rust项目,这三个项目都来自认识我的人,他们就是想找个「靠谱的计算机能手」,根本不知道我在网上的Rust专家人设,也不关心用什么技术,只要能把事做成就行。对这些客户来说,我的专精人设完全没起作用,他们在乎的只是我们之间有信任,而且我确实擅长做软件开发。
For the Rust projects, however, branding did make a difference. Customers didn’t know me well beforehand, and they wanted some assurance that I was able to deliver. It seems like my “Rust identity” served as a source of trust. They could see that open source maintainers valued my contributions, that I once authored an RFC for the language, that I had received recommendations by people respected in the ecosystem, etc.
但对Rust项目的客户来说,这个人设就非常有用了。这些客户之前根本不认识我,他们需要一些能证明我能交付的背书,我的「Rust身份」刚好就成了信任的来源。他们能看到开源维护者认可我的贡献,我给Rust语言写过RFC,还有生态里有影响力的人给我写的推荐,等等。
Considering all this, my current theory is that focusing on your experience with a specific technology, and on your involvement in a particular community, makes it easier to establish trust with people who don’t know you well. And, as trust grows, there’s more and more room for the undercover generalist to come to the light of day!
结合这些经历,我现在的结论是:聚焦你在某个特定技术领域的经验,以及你在对应社区的参与度,能帮你更快和不认识你的人建立信任。等信任足够深了,你这个「潜伏的通用型人才」才有机会展示自己的全面能力!









