不要自称为程序员

此文摘自阮一峰的网络日志

文章地址为http://www.ruanyifeng.com/blog/2011/10/dont_call_yourself_a_programmer.html

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

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

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)

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

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

时间: 2024-10-26 14:15:05

不要自称为程序员的相关文章

(转)不要自称是程序员,我十多年的 IT 职场总结

其他: 我是一名程序员,工作很努力,为什么绩效还总是垫底? 外企,中年失业何去何从? 如果我可以给每个工程教育增加一门课,它不会涉及编译器.门电路或是时间复杂度,而是一门介绍行业现实的入门课,因为没人教过这些,所以我们遭受了很多不必要的痛苦和折磨.希望本文可以成为年轻工程师职业生涯的自述文档.目的是填补"现实世界"运作方式与教育之间的空白,并让你快乐起来.我从"一个还算聪明,但是不自信.毫无商业经验的工程师",耗费了十年多的时间,经受了很多的苦难,才总结出这些经验之

在理论分析家和程序员眼中,html5是大不相同的

技术的真正趋势还是由技术是否低成本.高效率.高产出.高用户体验等决定的,当然也有大小公司商业博弈等偶然因素决定.在整个决定进程中,程序员的经验.直觉和喜好占有很大的决定权重.当一个技术流行,那么程序员往往会借鉴以前的技术或创造新的技术来完善这种流行,让其开发实现更快速.更友好.更强大:而后,新技术中又会脱颖而出一个亮点技术引出新的流行--周而复始.现在主流的技术就是对移动平台的应用开发,而html5就是借鉴以前PC时代的B/S和C/S架构对当前移动应用开发的一个完善,会在短期内成为流行的亮点技术

国内外程序员生态圈对比

实际上IT行业在中国并不是特别差的行业,而程序员的工资也并不低,但为什么中国的程序员总被称作码农或者说是苦逼的程序员?中国的程序员生活和欧美的有什么不一样? 编程活动和机械电子一样可以视为一种工艺(craftsmanship),从事此类工艺活动的人可以叫做工匠或者工程师.经历过工业革命的欧美国家,有深厚 的工程根底,从机械到电子再到软件,都是国家产业的支柱,滋养着社会中坚力量的中产阶级.工程师的社会地位普遍比较高,他们有工艺的传承,有文化圈,有产 业的历史. 而国内目前的软件工业和制造业非常相似

所有有意愿成为程序员的人都应该看的文章

转发一篇不错的文章,从以下的几个方面思考一下,你是否认真思考过并得到答案. 一.90%的编程工作来自内部软件 二.别人雇你的目的,是让你创造利润,不是让你编程 三.不要自称为程序员 四.不要限定自己 五.如何提高求职时的谈判能力? 六.创业公司是否适合应届毕业生? 七.在创业公司工作是否值得推荐? 八.沟通技能是最重要的职业技能 详见

Java程序员你凭什么比.NET工资高?

如此平静的夜,却有着多少躁动的心,昨夜我失眠了! 内心有很多的话不知从何处说起,都说程序员苦逼,我也是感同身受.毕业两年来,虽说还过得去,但是看看物欲横流的社会,在平静的内心也会激起一丝涟漪.前天接到人事通知,今年调薪幅度全集团都是5%,我登时傻了眼,内心有千百个不满,还是在合同上签了字.虽说脸上勉强挤出一丝的笑意,但愤怒的右手还是暴漏了我的思绪,平日里华丽的签名变得如此暗淡无光. 经过这个事情之后,私下里大家都在考虑自己的却留问题,不免都是为集团的这次决定而寒心.想想自己这过去的一年里比任何人

为什么国外程序员爱用 Mac?

from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒.那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因: 1.Mac OS X 是基于 Unix 的.这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到.

程序员调试能力和相关书籍

在软件行业中,个人觉得每个Coder.Leader(那些当了Leader以后就不需要Code的除外)都应该除了具有良好的编码能力以外,最为主要的就是Debug的能力要坚实.千万不要告诉我Debug工作是Tester和QA的事情,首先你要认识到Debug的能力是一个并不简单的能力,能帮助你提高你的开发能力,加快开发速度,节约开发成本:其次你更应该知道,你所掌握的Debug的能力和技术并不可能抢去Tester或者QA的饭碗,他们做的工作更仔细.全面,更富有创造力.由于本人数年来一直使用VC6,所以下

《程序员恋爱攻略》

相信大多数程序员都是不善于追求女生的,再加上工作繁忙,所以很多都是单身. 最近三个晚上放下了django的研究,看了两本恋爱方面书籍,分享给大家. 第一次见面很重要,本人最近喜欢一个女生,就是第一次见面没有准备,太过随意. 女生相信第一眼,如果第一眼看到你没有感觉,你基本可以回家敲代码了. 追女生的最高境界不是追,而是吸引,所以不要表白,更不要试探性的表白. 你越是追她越是逃离. 要想吸引女生,你需要平时注意很多细节,养成很多好习惯. 做任何事都不要怕被拒绝,要勇敢,自信. 要站在女生角度来看问

程序员之路:以Android证道

大道三千,何以证道? 最近有私信.邮件给我咨询一些职业生涯规划的同学,我在这里以过来人的身份给大家一些建议. 任何行业,任何职位,无论高低,无论大小,都可以分为广博.精深两个方向. 精深自然指的是在某一领域造诣深厚,当然也不会是对别的技术一无所知,否则就成了独腿人,岂能走得远?广博自然指的是涉及面广,知识丰富,对各种技术都有所涉猎,当然不会是浅尝辄止的接触,所谓的全栈程序员自然属于这一类型,我本身也是这一类型的. 精深 首先说一下精深,作为Android程序员,所必需掌握的基础知识:0. Jav