一、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 前面说过工程师被雇佣不是因为会编程而是因为能够创造商业价值。所以你让人们相信你能创造价值这是帮助你找到工作的最重要的能力。这种能力与你真的能创造多少价值实际上联系不是很紧密。 我认识的一些最优秀的程序员往往拙于表达。因此别人不是不想与他们一起工作就是低估了他们的价值。相反地如果你看上去很会编程并且很善于表达别人就会真的这样看待你