不要自称为程序员

作者: 阮一峰

日期: 2011年10月31日

珠峰培训

每年都有无数年轻程序员,加入软件行业。

他们在学校里学过编程,但是对这个行业的现实一无所知。

Patrick McKenzie 是美国一家小软件公司的老板,他写了一篇长文,介绍这个行业的一些实际情况。我看了以后很感慨,有些地方很受启发。我选择了一部分,翻译如下。

一、90%的编程工作来自内部软件

计算机专业的学生,可能有一种印象,觉得大部分程序员,都在编写公开出售的软件或者通用软件。

这种看法是不对的。大部分程序员,实际上编写的是不公开的企业内部软件,比如追踪费用的软件、优化装运成本的软件、帮助记账的软件、设计新部件的软件、计算保单价格的软件、识别恶意订单的软件等等。各种各样的商业公司,开发内部软件,解决它们自己的问题。市场上对程序员的大部分需求来源于此,只有极少数程序员直接编写面向外部顾客的软件。

内部软件的开发,通常非常乏味,令人厌倦。因为它们的技术复杂性低、技术决策非常保守、预算很少、缺乏长远考虑。但是,世界上大部分编程工作都是这种。

二、别人雇你的目的,是让你创造利润,不是让你编程

商业公司最关心的(或者说唯一在乎的)事情,就是增加收入、降低成本。因此,它们实际上需要的不是程序员,而是能够帮助它们增加收入、降低成本的人。

开发优美的软件,解决技术难题,编写没有 bug 的代码,这些都不是商业公司的目的。它们雇佣你,是为了让你帮它们完成某个可以增加收入、降低成本的项目,而不是为了让你追求个人的软件成就。

你对于公司的唯一价值,就在于能多大程度上为它们增加收入、降低成本。

三、不要自称为程序员

很多公司的经理不懂计算机,在他们心目中,程序员就是一群高成本的劳动力,只会在一台复杂的机器上干一些难懂的事情。

如果你自称为"程序员",当公司需要压缩成本的时候,某些经理首先就会想到解雇你,因为你的工资高。有一家公司叫 Salesforce,口号是"没有软件",意思就是如果经理们购买了他们的服务,就不再需要别的软件管理销售业务了,也就是说,不再需要自己雇佣程序员了。

正确的做法是,你应该把自己描述成与增加收入、降低成本有关系的人,比如"xx产品的开发者"或"改进者"。有一个 Google Adsense 程序员的自我介绍,是这样写的:"Google 公司97%的收入,与我的代码有关。"

四、不要限定自己

年轻学生经常会问,应该选择哪种语言或平台?Java 是不是比 .NET 容易找工作?

过分强调某一种语言或平台,都是不必要的。如果你把自己限定为 Java 程序员或 .NET 程序员,你就已经输了,因为首先你不应该自称为程序员(理由见上一点),其次这种限定使得你自动被排除在世界上大多数编程工作之外。

现实生活中,学会一种新语言,只需要几个星期,然后再过半年到一年,你就会变成老手。那时,根本没人在乎你以前用什么语言。

天才程序员是很少的,可是需要天才程序员的工作机会却很多很多,大多数场合都是需求远远大于供给。这意味着,即使你不是天才程序员,只要你是一个优秀工程师,那些招聘公司也会立刻录用你,因为它们知道招聘到天才程序员的机会微乎其微。(重复一遍,所谓"优秀工程师",就是你的履历上有一连串增加收入、降低成本的记录。)

某些公司的人事部门,会根据某个关键词(比如 Java 或 .NET)过滤简历。虽然这样的公司根本不值得去,但是如果你真的想过这一关,也很容易:投入几个晚上和周末,在你当前的项目中设法用到这个关键词,然后再把它写进简历就行了。

五、如何提高求职时的谈判能力?

(1)记住你不是在求职,不是在展示编程技巧,而是在推销某种商业问题(增加收入或降低成本)的解决方案。

(2)面试时,要有自信,要平等的对话。你要的是一个互利的录用合同,不要每次对方提出要求,你都说Yes。

(3)雇主可能会问"你的上一份工资是多少",他们其实在说"给我一个理由,压低你的报酬"。你要想好如何适当地回答这个问题。

(4)要还价。这里不仅仅指钱,还指其它你关心的方面。如果你无法要求更高的薪水,那就试着要求更多的假期。

(5)在对方决定录用你以后,才开始讨论薪水。因为那时,他们已经在你身上,投入了大量的时间和金钱,产生了一定的成本,此时他们可能觉得一些小问题已经不值得再纠缠了,比如每年的工资增加几千元。

六、创业公司是否适合应届毕业生?

如果你一毕业就加入创业公司,最可能的结果是,接下来几年你都工作得非常辛苦,然后公司悲惨地失败了,你失业了,不得不又去另一家创业公司工作。

如果你真的想去创业公司,应该首先找一家大公司干上两年,攒一点钱,积累一些经验,然后精心挑选一家创业公司,再去实现自己的梦想。

在创业公司工作,一般情况下,你遇到的都是创业者。他们大多数人没有能力在两年后雇佣你;而在大公司工作,你遇到的都是其他大公司的人,他们中很多人将来有能力雇用你或者帮你介绍工作。

七、沟通技能是最重要的职业技能

前面说过,工程师被雇佣,不是因为会编程,而是因为能够创造商业价值。所以,你得让人们相信你能创造价值,这是帮助你找到工作的最重要的能力。这种能力与你真的能创造多少价值,实际上联系不是很紧密。

我认识的一些最优秀的程序员,往往拙于表达。因此,别人不是不想与他们一起工作,就是低估了他们的价值。相反地,如果你看上去很会编程,并且很善于表达,别人就会真的这样看待你。

(完)

一灯学堂

优达学城

留言(74条)

阮先生,这篇文章优化了我和老板的关系模型。
那么,您将因此提高一点点收入(笑~)

让我们重新思考我们在公司中的位置

很讨厌这种文章,把本来够浮躁的年轻人引导地更浮躁。

年轻人都按这个思路去中国人什么时候才有自己的John McCarthy或者松本行弘?

诚然有些人只是想要面包,不想别的,这无可指责。但终究有些人是真正热爱编程且适合静下来研究怎样设计更好的代码而不是去想怎样让自己更适合老板的口味。

世界顶级程序员不是如此炼成的

我毕业后第一家公司是创业公司,有很多的不愉快,但是从老板的角度来想,他们那么做也有他们的理由。

自认为是一个程序员,可以保持职业的乐趣,尽管现实问题也不能忽视。

一个人如果做一个目标单一,努力就能实现的工作,那么他可以只需要金钱和物质的激励;但是如果他要做有创造性的工作,那么就不能仅仅局限在商业价值之下。

这一类文章很需要技巧,一不慎就容易输出糟糕的价值观。

引用zicjin的发言:

很讨厌这种文章,把本来够浮躁的年轻人引导地更浮躁。

年轻人都按这个思路去中国人什么时候才有自己的John McCarthy或者松本行弘?

诚然有些人只是想要面包,不想别的,这无可指责。但终究有些人是真正热爱编程且适合静下来研究怎样设计更好的代码而不是去想怎样让自己更适合老板的口味。


其实也没必要讨厌,个人建议:
1.学会有成就感的心态做事情;
2.学会为自己而工作的心态;
3.学会静心投入自己敢兴趣且可能可以突破的方向,若是能跟公司业务发展有帮助就更加;

国内主要是大多数公司,尤其销售型人员,觉得没我们,你们程序员写的东西就是垃圾思想严重,尤其老板就这么觉得,不过国内没有多少人会觉得没自己的coding,公司就会死掉,主要大家都明白自己是廉价且可替代的人,而国外不一样,人家程序员可是高新,排名第一,第二的.....所以需要纠正点心态....

与阮推荐的paul的这篇文章,你不必非要给自己找个老板

http://www.aqee.net/you-werenot-meant-to-have-a-boss/

放一起阅读很有意思。

好吧,文章标题的“程序员”更好的中文翻译应该是“代码民工”。
前几天刚在 CSDN 一贴中迸击了这样的想法。
但您不可否认,有天才的程序员,他们热爱自己的职业(而不仅是目前这份工作),有行业理想,并以此为荣。

说实话无法苟同本文这些说法,依照咱现在在公司的位置,咱也素给公司内部的设备做软件开发,并且用来证明这些设备是有用的并且能够对铁路运作起到安全保证的。那么,在一个平均年龄不到30的开发队伍里面,咱负责各种新技术的引入和消化使用(不限于软件、编码)——那按照本文说法咱和一堆算法人员算公司最耗资本又没有价值的人员(呜……随便搞一个设备几万十几万啊喵……)怎么没有见到老总想要第一个裁员裁我呢喵?

PS:只是一个小公司而已,200人+级别……

感觉 好现实啊

对,不要把自己先到一个圈子里面不出来
应该从各种人员角度考虑问题
若只是考虑从工程角度那么很有可能有些时候并不是很好的决策

从美国一家小软件公司的老板Patrick McKenzie的角度看,编程只是挣钱的手段。不过,不要排除了那些在编程上创造的乐趣,有的人不只是为了挣钱生成而编程的!
总的来说,这个老板是以商人的角度看问题。很明显的:一切以钱为中心,都只是为了公司或者自己获取最大的利润。
问题是:任何问题都不是单一的问题。

引用非鱼的发言:

从美国一家小软件公司的老板Patrick McKenzie的角度看,编程只是挣钱的手段。不过,不要排除了那些在编程上创造的乐趣,有的人不只是为了挣钱生成而编程的!
总的来说,这个老板是以商人的角度看问题。很明显的:一切以钱为中心,都只是为了公司或者自己获取最大的利润。
问题是:任何问题都不是单一的问题。

你是不是为挣钱而编程并不重要,重要的是你老板是。这就是这篇所说的。

最重要的是,别去做内部软件开发,那样你会废掉的。

阮先生此文令我茅厕顿开啊,为了表示感谢,我决定付费~~~

这是在告诉我们,如何协调我们和公司的目标达到一致.天才可能并不看重这点,但是天才毕竟很少啊.

引用zicjin的发言:

很讨厌这种文章,把本来够浮躁的年轻人引导地更浮躁。

赞同

也不是很赞同作者这篇文章,倒不是因为对里面的观点不认同。
主要是觉得,作者是在统一人们的价值观,难道老老实实一心只想做个程序员有错吗?可能以后这样的人不会拥有多少财富,但是,并不是所有人都需要很多钱活着。

虽然说得是软件行业,但是对其他行业也有指导作用。
虽然说得现实了点,但是能让人少走一些弯路。

我先后在10万人、1万人、3千人的公司待过,深知委身大公司的缺点。在大公司,每个人只负责产品的某一部分,公司最希望是让员工在自己负责的一块区域做得很深,这样个人效率最高,由于很少涉及其它部分的工作,离开自己的专业就跟新手差不多,这样个人就更依赖于公司所提供的平台了。如果自己想出来创业,一片茫然。

一个回应,我是程序员。

http://www.jacquesmattheij.com/I+am+a+programmer

大哥,你为什么不用新浪微博呢?我想把你的一些好的文章一键分享到我的微博给朋友们看

既然程序员像他说的那样,从事这么没劲的活儿,何必赚这么一份工资呢?程序员都是聪明人,世界之大,何必做这么无聊的事。商业上压低成本,抬高利润谁不懂,为这种无趣的老板和事情打工,no ,no ,no .

如果是5年前,我会对这篇文章的观点表达我的疑惑,因为那时候我是一名在小公司工作了好几年的程序员,能自由的去做自己想做的事,并以自己的工作为豪;今天我看到这篇文章时,对作者的观点表示赞同,因为现在的我已经踩着现实的土壤踏实的前行。
观点本没绝对的对错,无妨让我们去衡量下,是否可以理解对方的观点是从哪里出发的。
站在公司老板的角度,确实如此,无论程序员的能力有多强,写出来的应用无法满足市场的需求,公司的利益就不能保证,公司就无法持续发展,就会有更多的人饿肚子,更多的人失业,更多的人没法实现每天坐在格子间里写代码的理想。
从程序员的角度出发,有自己的理想,目标和职业诉求,希望能纯粹的做一个与机器打交道的人,从某种程度来说,写程序也是一种信仰,但每天却被人灌输着除了写代码还需要沟通,交流,甚至是更多程序员认为是与己无关的与用户妥协,与销售妥协的事。所以一看到从违背自己信仰,从现实出发的观点就觉得比较抵触。
如果我们从2边出发,会发现还是有可能使得矛盾化解的,比如早期,网上到处都有google的办公环境如何适合程序员的言论,还有很多让人觉得舒适的照片为证,可后来呢?一样有人说这是为了让人多加班,多以公司为家多创造价值而已的言论。但至少说明,有那么一段时间,老板和程序员是互相理解过。有时,老板给程序员更多的自由,程序员多从现实的角度考虑下,反倒是能调解这些矛盾。如果真的只是愿意和机器打交道,可以去研究所,大学进行研究工作,当然这个就是比较理想了,因为当你进了学校之后,你还是会发现,想单纯的做编码还很会很难。
呵呵,所以最终,从多方面来看问题,会发现跟人沟通真的很重要,而互相理解更重要。
看到大家的讨论,一堆废话,愿共同分享自己的感受:)


大致就是说:A、B、C三个差不多优秀的程序员,善于表达的B,更能获得机会。

人是社会关系的总和,沟通的重要无处不在,不单IT行业。

----------------------

10000个程序员,大数法则,1000个具备知道怎样做才是最好的、最符合市场和老板的口味,类似这样的人到哪里都是人才。但是一个行业注定剩下的9000个只能是程序员,无论你怎么讲,扑朔迷离的市场和聪明睿智的老板都不会信。

或者:知道自己是谁,踏踏实实做回自己,比本文原旨更重要。

文章说的是事实.大公司的技能要求也不是很过分,的确能带来很多收入.
小公司,又辛苦,又没钱......
而且做产品的企业,一个产品线会涉及很多技术,涉及很多部门,要和很多人打交道.
并不是很时髦的技术...
简单的说:"技术没有价值",只有技术能够带来利润,才有价值.
跟马克思说的:商品的价值需要在市场上实现...一样的道理.
写软件,,其实也就是一份工作而已.
而且天才程序员没有任何意义,你叫比尔盖茨到支付宝去做UI?有意义吗?
找到合适的人,用最低成本的完成需要的软件.

我觉得,程序员人生应该考虑两部分道路, 第一部分无疑是培养自己, 提高自己, 不能以商业为动机,做到真正的自我修养, 当自己能独当一面了, 能挑起大梁了, 这时候就要考虑这篇文章中所谓的商业信息了, 能为公司带来多少利益, 就好比目前好的大公司招人, 我也是新人, 我觉得, 新人最重要的事情是努力提高自己, 在技术上把自己武装起来, 等可以为公司做事了, 再考虑这些东西。 当然, 每个优秀的程序员都应该以geek为目标, 秉承技术第一的原则, 这才是做技术的人的真正的贞操!

从来搞不明白这个世界上为什么有一心只想跟机器跟代码打交道的人!

现实的社会,需要的只是真本事...... 没有人会同情或怜悯你,这就是商业战争......

程序员只是一个过程

这大概便是就职于银行等企业的数学专业程序员烦闷要死的原因……

这便是这个职业出现的缘由和之所以存在的本质。

前几天在HN看的,您还真翻译回来了...

知识是卖给资本的。

好吧,程序员也是社会的人,所以需要社会交往的技巧。把自己限定于只和机器打交道,本来就是自我隔绝于社会的生活方式。不过每个人的价值取向不同,自己选择就是了。

翻译有错误“Working in a startup is a career path but, more than that, it is a lifestyle choice. This is similar to working in investment banking or academia. Those are three very different lifestyles.”
这句话的意思你完全翻错了………

学成文武艺,卖给帝王家,古今皆是如此啊

我认为它所说的是,如何避免被压榨。手段而已,不见得要改变自己的热血目的或恬静目的,两者不见得必定相违逆。

不想在这说太多废话

我想到了2个办法

也就是所有的开源代码可能被拦截了,因为一些人以为拦截了就可以自己获有

但中国人的技术不可能达到这么高的高度

所以老外会先获胜,从外部攻破中国,我看这个日子很快就要来临

内部的中国程序员因此被收编

间接得到解放。

技术领域被收编剩下的屁民,我看不出有什么能力能突围

程序员,跟其他的工作,有什么区别呢?呵呵

这篇文章有很多观念不赞同:

例如:
90%的编程工作来自内部软件 , 如今web时代,90%这个数字是不是太高了。。。

为什么不敢自称 程序员 , 兴趣是第一要素

为什么建议去大公司, 创业公司未必不好 。



引用zicjin的发言:

很讨厌这种文章,把本来够浮躁的年轻人引导地更浮躁。

支持这个观点

我的第一份前端开发的老板就是这么教导我的。我很理解他的说法,离开主要是因为,我看不到做下去的前途。那时我看不到公司的前途,同时,和管理层关系又很紧张,令人备感莫名其妙,不让解释(据说因为如果让我解释他们就是傻子),而且无法缓解的那种紧张。离职那天才了解到,这种紧张关系似乎直接来自于我的直接上司对我的评价。
那是厦门的一家创业公司,恐怕原因就是我经常被评价的那种,不懂礼仪和心理学、处事不周吧~后来就去了大公司,贪图的东西和本文的观点类似。

引用zicjin的发言:
很讨厌这种文章,把本来够浮躁的年轻人引导地更浮躁。

我也赞成这种观点。
不过事实这文章也给了我很多的启发
如何定位自己与他人的关系,可以让自己过得更有价值,更充实,更快乐一些

引用大头龙仔的发言:

我也赞成这种观点。不过事实这文章也给了我很多的启发如何定位自己与他人的关系,可以让自己过得更有价值,更充实,更快乐一些

不支持,工作和爱好是可以分开的

"选择创业公司,就是选择一条职业道路,而不是选择一种生活方式。"
原文是:
"Working in a startup is a career path but, more than that, it is a lifestyle choice."
翻译反了吧?"更是选择一种生活方式"才对?

一、90%的编程工作来自内部软件

千万别相信这个 否则会废掉的,国内干内部工作是没前途和钱途的(干好是本分,没干好是失职)

大家也不必纠结,文章只是引发人们的思考,每个人的思考方式都不一样。
根据自身条件、周围环境,择其善者而从之,其不善者而改之。

很受启发

读罢此文,感触良多。

引用小罗的发言:

我先后在10万人、1万人、3千人的公司待过,深知委身大公司的缺点。在大公司,每个人只负责产品的某一部分,公司最希望是让员工在自己负责的一块区域做得很深,这样个人效率最高,由于很少涉及其它部分的工作,离开自己的专业就跟新手差不多,这样个人就更依赖于公司所提供的平台了。如果自己想出来创业,一片茫然。

认同...就找工作而言,如果N年只做自己会的东西,对个人的发展肯定是不好的,但是也不能以秀技术的心态去玩技术,一定要有自己的强项,而且真正把编程看成生活的程序员是不会容忍自己止步不前的...

其实核心就这么一条法则:我们追求的是个人的牛逼,但如果我们个人的牛逼对他人没有用处的话,这个牛逼对他人就没有价值。 商业社会讲求的是你对他人的价值。

引用5555555的发言:

你是不是为挣钱而编程并不重要,重要的是你老板是。

这就是这篇所说的。

这篇文章觉像晨钟暮鼓,面试时候有几个老板是真正懂得编程的呢,他们看中的是价值而不是其他的东西。所以展现价值比展现技术来的真实。
还有就是工作关系应该和生活关系分开这点我感觉文章说的很正确,不要想着和老板交朋友因为你们的利益不是相同的。
有些年纪稍大的人说年轻人浮躁我感觉他们所说的浮躁是年轻人想达到目的时候用的方法有很重的火气,少了些手腕。而不是指年轻人不懂得知足。

我是个快毕业的学生,现在在一家创业公司实习。我现在的目的是提高自己,感觉也还不错。我觉得人是社会人,为社会创造价值也为彰显自己的价值才是最好的。
当然,也有很多人有完全不同的想法。
所以,世界才会如此多彩,如此平和与极端

这样的程序员和工人没有什么区别,挺无聊的

很有道理。 任何时候都是去算经济账。成本和收益。然后才是人文关怀和社会价值。

我个人比较赞同这篇文章的看法.
我认为这篇文章并不是针对那些天才程序员,或者在自己岗位上有着不可或缺存在的程序员,而主要针对的是求职者,对于求职者来说,满足生存需要才是第一要务,其他东西都只能排在后面,如果生存都成问题,谈何编程?
而对于非求职者来说,让自己同样的工作得到更大的价值不更好吗?

优秀的程序本身也是具有商业价值的.
"内部软件"这个说法也并不准确,这里应该指的是非ui,或者是用户看不到的,在电脑里悄悄运行的程序(子程序,函数),相比这些的数量,90%这个数据还显得略少

引用Pray的发言:

这篇文章觉像晨钟暮鼓,面试时候有几个老板是真正懂得编程的呢,他们看中的是价值而不是其他的东西。所以展现价值比展现技术来的真实。
还有就是工作关系应该和生活关系分开这点我感觉文章说的很正确,不要想着和老板交朋友因为你们的利益不是相同的。
有些年纪稍大的人说年轻人浮躁我感觉他们所说的浮躁是年轻人想达到目的时候用的方法有很重的火气,少了些手腕。而不是指年轻人不懂得知足。

我认为这里的浮躁是指不认真学习技术,总是想从其他方面(通常是不正当的)而不是通过自己的知识来解决问题

如果一个人既有精湛的编程技术,有善于表达,那他一定会被认为是一个技术天才。

两年前刚来上海时,我几乎无时不刻在思考,如何让自己成为一名优秀的程序员。
两年之后的现在,我思考最多的是,如何做好自己有能力有意愿做好的事,让工作变得更好,让生活变得更好,让自己变得更好。成为一名优秀的程序员,只是达到目的一种方式。

我有一个项目马上就上市“就缺一个写代码的啦”!

(ps:你的博客没有“回到顶部”不开心)

引用okool的发言:

我有一个项目马上就上市“就缺一个写代码的啦”!

(ps:你的博客没有“回到顶部”不开心)

Ctrl+Home

看完这篇文章让我有一种茅塞顿开的感觉。其实很多时候都思考过这些观点,但没那样的总结过。其实话说回来这篇文章一直在说的一个事情就是价值评定。老板对程序员的价值评定,程序员对自己的价值评定,以及行业对程序员的价值评定。无论你是做内部软件,商用软件,还是开源软件,无论你是在大公司打工,创业公司打工还是自己因为兴趣在写软件。你的输出价值是否得到认可,以及合理的报酬是你最应该关注的问题。试试着用文章中的观点去回答这个问题。

有幸拜读了此文,话说的很实在,如果程序员写的软件不能为老板带来价值,被开除的首先可能就是你。

看最后一句就够了

我是程序员!

别人的观点只能做参考,当有共鸣的才会产生认同感!反正我赞同~~~

一篇文章,即使里面有一两句话给我启发,也是值得一读;
不错。

文章的思想和本人的想法大概都差不多。

评论里对文章求职部分的反对深有体会,身边的朋友都一心专注于编程,几乎不想着编程之外的事(有点夸张),不过我一直认为这样活着挺累的;现实一点想的话,别人会低估你的价值,而事实上表达能力,办事能力也是比较弱的,也就意味着可能以一个developer的身份工作很多年而得不到晋升,简单说,就工资涨得少,职位升的慢,甚至不升职。所以我个人觉得,程序员不应该只专注于编程,行业动态,项目管理也应该是要去学习的重要知识点。

老师讲得有道理,我要关注你!

感悟挺深的,转发一下公众号。

是的,不好说自己是程序员。看到由招聘写XX程序员的这种公司就不要去。

赞同这篇文章观点的人,基本都已经可扯的成熟了,
我承认我也赞同了

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接