职业与工作方法danluu.com
开发者的薪酬正在变得双峰化吗?
Is developer compensation becoming bimodal?
2016 — 2021,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
Dan Luu 在这篇文章里追问开发者薪酬是否正在变成双峰分布,并把它和化学工程等职业的能力与薪酬分层放在一起比较。文章讨论了入行门槛、招聘筛选、移民与市场壁垒等因素,也使用了关于程序员薪资的有限样本数据。评论里有人质疑样本代表性,也有人认为双峰是把不同岗位混在一起造成的。
为什么经久不衰:它触及科技行业薪酬分化、招聘门槛与数据代表性的长期争议,多年来反复被讨论,今天读仍能帮助理解“高薪程序员”叙事背后的分层。
HN 评论精选
样本过窄且特殊,不具代表性,招聘启事可能更可靠。
多数 IT 应届生赚 15 万美元?这不可能是美国的代表性样本。数据来自 2015 年“Hackathon Hackers”Facebook 群里约 100 个数据点。分析这么狭窄又特殊的样本有什么意义?关于程序员薪资数据,我建议去看招聘启事,它们通常会写公司给多少。
ffjffsfr查看英文原文
Majority of new IT grads earning 150k? This can't be representative sample for US. > this is from about 100 data points, members of the “Hackathon Hackers” Facebook group, in 2015. What's the point of analyzing data from such narrow and unusual sample? RE: how to get data about programmers salaries, I'd say try to check job postings, they usually say how much company offers.
双峰可能是把不同岗位和地区混在一起统计造成的。
如果双峰分布很明显,最大驱动因素似乎是把各种程序员专业混进一个大桶。两个子桶大概是:1)10 万美元或以下:软件本身不是所售产品的后台程序员,也叫非硅谷的企业级/业务线/CRUD 开发者,例如堪萨斯州银行做房贷服务软件、年薪 8 万的程序员;2)15 万美元或以上:硅谷“科技”公司的程序员,例如苹果、Facebook、Google 年薪 15 万+ 的程序员。把这两组全国合并,图上就会出现两个峰。
jasode查看英文原文
If there's a pronounced bimodal distribution, it seems like the biggest driver of it would be the lumping of various programmer specialties into one giant bucket. It seems like the 2 sub-buckets would be: 1) $100k or less: backoffice programmers where software itself is not the product sold. Also known as enterprisey/LOB/CRUD developers working outside Silicon Valley. (E.g. programmer working on mortgage servicing software for a bank in Kansas earning $80k salary.) 2) $150k or greater: programmers for a "tech" company in Silicon Valley. (e.g. the programmers at Apple/Facebook/Google earning $150k+) If you combine those 2 groups nationwide, you'd end up with 2 humps in your graph.
高利润公司设招聘下限,限制供给并抬高顶尖薪酬。
我怀疑编程和法律的雙峰分布有相同解释:一批高利润公司只瞄准行业中的一小部分,实际设定了招聘门槛、限制供给,从而抬高工资。Cravath 涨薪时,85% 的法学院毕业生只能拿到其旧薪级一半或更少,因为它不会雇低于均值至少一个标准差的律师;其需求高,每名律师平均创收 130 万美元,供给却只限符合筛选的 10-15% 市场。我怀疑科技业也一样:Google、Facebook 等不只招“能干这活”的人,而要招比竞争对手程序员更聪明的人,把招聘池限制在均值一两个标准差之外;其他公司则愿意雇中位程序员,不觉得多付钱让人干得更快更好是值得的。
rayiner查看英文原文
I suspect the bimodal distribution for programming and law have the same explanation: a group of highly profitable firms targeting a subset of the overall industry have imposed a de facto hiring floor that limits supply, raising wages.[1] Why is Cravath raising salaries while 85% of legal grads are taking jobs making half or less of its old salary scale? Because it has a hiring floor. It won't hire lawyers that aren't at least one standard deviation, if not more, from the mean.[2] Their demand is high--each lawyer generates on average $1.3 million in revenue--and supply is limited to the 10-15% of the market that meets the hiring filter. I suspect the same is true in the tech industry. Google, Facebook, etc. don't hire candidates who can "do the job." Like in law, there is this idea that it's important not just to have competent programmers, but programmers who are smarter than your competitors' programmers. These firms limit their pool of hires to those who, by their metrics, are one or even two standard deviations away from the mean.[3] Meanwhile, everyone else is willing to hire the median programmer. They can do the job, and there isn't the same idea in that segment that it's worth paying much more to have people who can not only do the job, but do it faster/better than your competition. [1] How this group of highly profitable firms continues to exist despite market competition is outside the scope of this post. [2] Cravath measures that as a function of law school rank and class rank. No comment on the validity of this model. [3] Again, no comment on whether going to CMU and acing interview puzzles makes you a top programmer. What matters is that these firms think it does.
编程有真实且非人为的入行门槛,不能简单归因于人为壁垒。
对文章有个半较真的异议:编程绝对存在入行门槛。编程很难!这些门槛也许不是人为的,但确实存在。用非软件例子说,即使在无政府状态下,建芯片厂和电厂也有门槛:晶圆厂极难建,电厂极难建。积累计算机知识和技能也很难,尤其我们的基因似乎并不引导我们高度逻辑地思考。编程难,是因为要理解一堆模块化系统以及它们底层的系统,一路向下,有时一路向上,然后还要理解各模块组成的整体系统。不是所有编程问题都这么难,但这类问题确实存在。我在团队里有时是唯一理解操作系统、CPU、网络在做什么,或某个分布式组件为何停掉的人。多数队友似乎喜欢编程,但不想成为整台计算机的专家。我有个顶级商学院毕业的朋友说编程没那么难、我们都是抱怨鬼;他确实聪明。如今他自己在客户端写 JavaScript,我是朋友所以帮他,但他遇到的问题……
foamflower查看英文原文
One (semi-pedantic) quibble with the article: there absolutely are barriers to entry for programming. Programming is hard! These barriers may not be artificial, but they are real. To use a non-software example, there are barriers to entry to chip manufacturers and power companies even under anarchy. Fabs are tremendously hard to build. Power plants are extremely hard to build. Building up knowledge and skills about computers is also very hard, especially when our genes don't seem to guide us toward thinking highly logically. And programming is hard because it requires us to understand a bunch of modular systems and then the systems they're built on, all the way down, and in some cases, all the way up. Then, we have to understand the whole integrated system of the individual modules. Not all programming problems require this level of difficulty, but these problems do exist. I've been on teams where I'm the only one who understands what the OS is doing or the CPU is doing or what the network is doing or why some other distributed component might have stopped working. Most of my teammates in these cases seemed to enjoy programming, but didn't care to become overall experts in computers as a whole. I once had a top-tier business school grad friend claim that programming really isn't that hard and that we're all whiners. He is a genuinely smart person. Today, he himself is trying to code in JavaScript on the client side. He's a friend so I help him, but the problems he has are junior-level or even entry-level. Suffice it to say, I haven't heard much more about how programmers are "whiners" when we say programming is hard.
历次讨论
同类还值得读
用十年时间自学编程(1998)
Teach Yourself Programming in Ten Years (1998)
Peter Norvig 1998 年的经典文章,回应“21天/24小时学会编程”一类速成书,主张真正精通编程需要约十年持续、有意识的练习。
职业与工作方法上首页 11 次 · 2007–2025norvig.com编辑精选如何成为一名程序员:简短、全面而个人的总结
How to be a Programmer: A Short, Comprehensive, and Personal Summary
一篇广为流传的程序员成长指南,作者以个人经验系统总结了成为优秀程序员所需的各项技能——从调试、测试、沟通到团队协作与身心健康。
职业与工作方法上首页 6 次 · 2008–2015samizdat.mines.edu编辑精选不要自称程序员
Don't Call Yourself a Programmer
经典职业建议文章劝软件工程师不要把自己局限在“程序员”这个标签上,而要从公司业务角度说明自己创造的价值;文中讨论了成本中心与利润中心、头衔、求职与职业选择,也顺带批评了学术界的价…
职业与工作方法上首页 5 次 · 2011–2021kalzumeus.com编辑精选创作者的日程与经理的日程
Maker's Schedule, Manager's Schedule (2009)
Paul Graham 在这篇文章里把时间表分成两类:管理者的日程以小时为单位,会议可以填满一天;创作者(程序员、写作者等)的日程则以半天为单位,需要长时间不被打断的连续块。
职业与工作方法上首页 5 次 · 2009–2021paulgraham.com编辑精选为什么程序员的薪酬不与生产力成正比
Why programmers are not paid in proportion to their productivity
讨论为什么程序员的薪酬往往不随其生产力成比例增长:生产力难以客观量化,薪酬更多受组织预算、岗位定价和个人议价能力影响。
职业与工作方法上首页 5 次 · 2009–2022johndcook.com