现在的位置: 首页 > 综合 > 正文

不要自称为程序员

2012年06月04日 ⁄ 综合 ⁄ 共 9037字 ⁄ 字号 评论关闭
文章目录

作者: 阮一峰

日期: 2011年10月31日

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

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

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

==================================

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

(90% of programming jobs are in creating Line of Business software)

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

这种看法是不对的。大部分程序员,实际上编写的是不公开的企业内部软件,比如追踪费用的软件、优化装运成本的软件、帮助记账的软件、设计新部件的软件、计算保单价格的软件、识别恶意订单的软件等等。

各种各样的商业公司,开发内部软件,解决它们自己的问题。市场上对程序员的大部分需求来源于此,只有极少数程序员直接编写面向外部顾客的软件。

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

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

(Engineers are hired to create business value, not to program things)

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

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

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

三、不要自称为程序员

(Don't call yourself a programmer)

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

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

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

四、不要限定自己

(You are not defined by your chosen software stack)

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

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

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

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

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

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

(How do I become better at negotiation?)

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

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

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

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

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

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

(Are startups great for your career as a fresh graduate?)

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

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

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

七、在创业公司工作是否值得推荐?

(So would you recommend working at a startup? )

选择创业公司,就是选择一条职业道路,而不是选择一种生活方式。可惜很多人把这两者颠倒了,他们推荐创业公司,实际上是在推荐一种你感兴趣的生活方式。

如果你确实喜欢这种生活方式,老实说,你在大公司里也可以得到它们。在许许多多大公司里,你都有机会钻研最新的技术,而且还能5点半准时回家照顾孩子。

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

(Your most important professional skill is communication)

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

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

(完)

功能链接

留言(47条)

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

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

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

年轻人都按这个思路去中国人什么时候才有自己的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千人的公司待过,深知委身大公司的缺点。在大公司,每个人只负责产品的某一部分,公司最希望是让员工在自己负责的一块区域做得很深,这样个人效率最高,由于很少涉及其它部分的工作,离开自己的专业就跟新手差不多,这样个人就更依赖于公司所提供的平台了。如果自己想出来创业,一片茫然。

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

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

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

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

<

抱歉!评论已关闭.