<audio id="audio" title="加餐八 | 程序员怎么才能让自己走得更高、更远？" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/d9/7c/d9yyef71ff98d628793c3a1c2103eb7c.mp3"></audio>

大学就像一个笼子，跑得快的人拖着笼子跑，跑得慢的人被笼子拖着跑，他们之间最大的差距，顶多只有笼子的长度那么大。但等到一毕业，笼门一打开 ，跑得快的人很快就把跑得慢的远远甩在后面。有人不到30岁就升到了阿里P8，有人35岁了还为拿个P7 Offer在拼命。

为什么几乎同样的起点、差不多的资质，有些人在职场发展得这么好，一路顺风顺水，而有些人却总是觉得怀才不遇，领导不行？今天，我们就来聊一聊，程序员怎么才能让自己走得更高、更远？

话不多说，让我们正式开始今天的内容吧！

## 技术、业务、能力是立命之本

我觉得，不管哪个行业，混得好的人都要有两把刷子。对于程序员来说，我觉得这两把刷子包括技术、业务和能力这三方面。很多人担心出现35岁中年危机，觉得自己能干的事，刚毕业一两年的人也能干得了。我觉得这主要还是因为没有在这三个方面积累出竞争壁垒。

**我觉得，技术方面的竞争壁垒主要来自，在一个细分技术领域长期****、****深入的积累。**

如果要想在技术上形成壁垒，我们就要从事一些有技术难度、技术挑战的岗位，比如基础架构、中间件、数据库等偏底层的开发，又或者是人工智能算法等入行门槛比较高的细分领域。在这些领域，你需要较长时间的经验积累，才能成为这一领域的专家，别人无法在短期内超过你，这就是技术竞争壁垒。

**对于大部分业务开发工程师来说，很多人平时都是使用框架、工具，翻译业务代码，工作没有太多技术含量，技术上可能很难形成竞争壁垒。这个时候，你也不用苦恼，我们在业务上也同样可以形成竞争壁垒。**

实际上，技术驱动的公司很少，即便像Google这样公认的技术驱动的公司，里面90%的项目都是业务、产品驱动的。真正高精尖的技术也只集中在某一小撮项目中。你可能会说，Google的很多产品的用户、访问量都很高，这些高性能、高并发的要求不是很考验程序员的技术吗？实际上，这些有挑战的技术问题，都是比较有共性的，大部分都通过底层系统解决了，比如MapReduce、BigTable、GFS等。业务研发工程师只需要恰当地使用这些高精尖的系统来实现业务就可以了。

在业务驱动的项目中，特别是一些业务比较复杂的下项目，比如，金融系统、银行系统、财务系统、清结算系统、物流系统等，我们还可以积累一些业务壁垒。如果你之前的工作都是从事偏向业务系统的开发，靠技术只能面到阿里P7这个层级。如果想面到阿里的P8、P9，靠的就不仅仅只是技术了，还需要对某个业务的深入积累。实际上，很多领导之所以能做领导，不是技术牛逼，而是对业务熟悉。

**不过，并不是所有的业务系统开发，业务都有足够的复杂度，可以让你积累竞争壁垒。对于技术没有太大挑战，业务也不复杂的项目开发，我们可以多积累自己的能力。**

这里所说的能力，指的是成事能力、解决问题的能力。实际上，很多问题的解决，即便是技术问题的解决，靠的都不是技术，而是一个人最基本的解决问题的能力。这其中就包括分析总结能力、逻辑思维能力、沟通协调能力、自我驱动能力等等。

比起固定的技术和业务知识，这种成事能力、解决问题的能力，我觉得对于混职场来说可能更加重要。在职场中，职位越高，这种成事能力就越重要，毕竟企业最终还是看结果的，而不是看你技术有多好。

## 学历、项目、履历是入场门票

经常听人吐槽，面试造火箭，入职拧螺丝。也经常听人抱怨，有些公司太看重学历，因为学历拒掉了我，却招了一个技术比我差的前同事，仅仅因为他是985名校毕业。

现在，学IT的人越来越多，招聘市场也逐渐从卖家市场变成了买家市场。很多公司开始提高招人要求，不仅加大面试难度，为了提高招聘效率，还会在学历、过往是否有大公司经历等方面，先过滤掉一批候选人。

你可能会说，学历高的不一定技术好，学历低的也有技术很好的。你说得没错。但一般来讲，虽然都说做技术学历不重要，但好学校的学生对计算机基础知识掌握得更好，学习能力、逻辑思维更强，相对要聪明一些，而且在工作中，我们也发现，成绩好的同学往往在工作中表现出很强的执行力和快速交付能力，在工作中的表现普遍也更优秀。站在公司整体招聘的角度来说，通过学历来过滤候选人是一个比较高效的手段，毕竟公司也不在乎因此漏掉一两个优秀的候选人，或者错招一两个不优秀的候选人。

实际上，比起短短的1个小时的面试，我个人也更倾向于通过学历、项目（项目经历是否有技术难度）、履历（是否有知名公司的工作经历、以及职位高低），这些过去的能够证明能力的经历来判断一个候选人。特别是对于一些中高端的岗位，好的学历、项目、履历基本上有碾压性的优势。我自己做面试官多年，基本上在看完候选人的简历之后，对符不符合我们招聘要求，心里就有个八九不离十的判断了。在面试开始的前10分钟，我基本上已经决定要不要录用他了。后面的面试只是为了进一步证实自己刚刚的决定而已。

如果说技术、业务、能力是程序员的立命之本，它们决定了你能不能在职场这场比赛中胜出，那学历、项目、履历就是入场门票，决定了你可以选择哪个比赛赛道，是Google、Facebook，还是BAT，又或者是完全不知名的小公司。

所以，在夯实技术、业务、能力的同时，你也要学会“面向简历打工”“面向跳槽打工”，提前做一些职业规划，把自己的履历弄好看点，比如，学历太低的就去考个好点的学历，在公司内部努力去选择做一些有技术含量的项目，跳槽去一些知名点的互联网公司等等。

## 不要让职场软技能成为短板

在职场中，我常常听到有人抱怨说，旁边的同事明明技术一般，却升到很高的职位，而自己技术很好，却发展一般。实际上，怀才不遇大多数都是因为忽视了职场软技能。这些人的特点大多是性格耿直、脾气暴躁、眼里容不了沙子、斗天斗地斗空气。而且，大部分情况下，他们都会觉得自己做得很好，领导不识货，同事都没他强。

职场不是学校，影响你向上发展的因素很多，肯定不是单靠技术，所以，学生思维要不得。在上学的时候，学得好坏，一份试卷见分晓。要想成绩好，闷头学就行了，你也不需要什么团队合作。但是，毕业之后，技术的好坏、代码写得好坏、活干得好坏，就没有那么容易客观评价、量化评价了。所以，这就会出现你自己觉得工作做得很好，而领导却不这么认为的情况。

而且，技术好其实并不代表贡献多。我也见过很多技术好的人，比较爱自嗨，成天鼓捣些高精尖的技术。实际上，不管是从短期还是长期看，这些技术都没有给团队、公司带来收益。当然，我也并不是完全摒弃个人成长，让你完全奉献给公司。我只是觉得，作为员工，要学会跟公司共同成长。只有你的成长为公司的成长贡献了力量，为公司、为领导解决了问题，公司才愿意为你的付出买单，你才有升职加薪的机会。

总的来讲，要想职场混得好，一些必须的沟通、协作、总结汇报等软技能还是不能忽视的，当然，我也不是推崇，纯靠“耍手段”上位。我只是觉得，这方面起码不能成为你的短板，不要让这些非技术、非能力的因素，阻碍了你职场的发展。

## 课堂讨论

作为“前浪”的你，还有哪些经验、教训，可以分享给“后浪”，让“后浪”在职场发展上少走些弯路呢？又或者作为“后浪”的你，有哪些职场的疑惑、迷茫，想向“前浪”请教呢？

可以在留言区说一说。如果有收获，也欢迎你把今天的内容分享给你的朋友。
