近在和团队成员一对一沟通的时候,聊到比较深入的地方,得知大家有一个担忧和想法:担心现在工作上的积累,包括对业务的深入了解和产品相关技术的深入学习,以后到了新的项目上可能不适用,因而自己会变得没有竞争力。基于这样的想法,会刻意花不少时间去学习其他“有用”的技术,可能和产品用到的完全不相关。


  刚开始听到这样的想法有点吃惊,但是想想大家有这样的担心也不奇怪,其实有这样的思考也是负责任的态度,毕竟现实中很少有人一直在一个项目中做非常久,也许只有Windows,Office这样的产品有工程师可以连续做个二三十年。担心自己的竞争力没有问题,但是这样的做法是有效的吗?


  下面想说说我个人的观察和思考,希望能给大家一些参考。

  首先这样的想法忽视了一个现象。那是个人的成功往往是和产品或者团队的成功联系在一起,这个不是关于团队的口号, 而是在我观察到的很多地方都是这样,包括我工作过的地方。分析下来,其实原因也很简单。

  1. 只有产品或者项目成功了,整个组织才能获得发展和成功,才会从市场获得比较丰盛的回报。这个是大的环境和前提。

  2. 在一个组织里面,成功的项目通常也对应着成功的团队,是因也是果。而成功的团队才更容易有的个人出来,同样,是因也是果。

  所以从这个角度,如果大家不能一起努力把产品和项目做得更成功,其实在组织里面,大家的发展都会受到影响。

  也许大家觉得上面的团队说得有点虚,那我们看个具体的。


  观点很简单:不和实际需求和问题结合起来的技术学习和研究很难深入。


  关于这个方面我可以举出很多的例子,任何人在任何一个技术方面稍微深入了解后都可以举出例子。

  比如1:HTTP协议

  这个如果是业余学习下,说起来很简单,看下Richard Stevens的书,然后学习下RFC,自己用Firebug等工具抓包看一下,了解一下各种返回码的意义。然后给自己一种错觉,真的是错觉,我对HTTP协议已经懂得不少了。

 

  但是我相信大家在实际中都会发现,这样的理解相比我们这些在工作中要用到的人,远远不够,因为还有太多的重要的细节,比如1.0和1.1关于连接和请求的处理的不同, 各种header的意义和用法,如何做缓存,还有cookie,还有不同的HTTP代理/反向代理,还有如何做性能的优化,还有安全性的问题,等等。

 

  一个只是业余看看的人,我相信很难在这方面专深,一方面是上面觉得自己懂了的错觉(真的很多人有这种错觉,像很多人因为看了几本C++的书,写了些课程作业,在简历里面说精通),另一方面是他没有遇到工作中这样的需求和问题,“逼”着他去做深入的学习和研究,以便高质高效的完成自己的工作。基于这样的原因,使得无法深入的学习。

  类似的例子还有很多,比如电子邮件,对于很多人来说,是收,发,回复和转发等,学习了一下的人知道有SMTP协议的交互过程,还有MTA,MUA,MDA 等概念。但是做了几年的电子邮件的项目后,回头看看我发现里面的细节真的太多了,光一个MTA的核心参数都有上百。一个业余看看的人如何能够深入学习和了解呢。

  编程语言也是一样,业界有一万个小时的说法,公司也有PHP相关的T4专家,如果和工作从来不相关,随便看看学学,两天能写代码了,也觉得自己“懂”了。其实这样的“懂”了,又有多大意义,这样浅的积累真的能让自己更有竞争力吗?至少在我看来,如果一个人和我说自学了下PHP,但是从来没在任何实际的工作中用过,我不会认为是加分项,充其量也只能算有点上进心。

  如果大家认同业余学学,不和实践结合,很难专深,那么接下来的一个问题是这样的一个对比,那种人更有竞争力?

  一个在少数的某几个方面比较专深 vs 在大量的地方有泛泛的了解但看不出重点


  以我了解到的情况和面试的经验,对于工作年限越长的人,后面的那一种越没有竞争力,很少大家会愿意招一个这样的什么都懂一点,什么都不精的人。之所以不愿意,原因至少有三点:

  1. 这样的人,工作好几年了,应该算了,但是在哪方面了呢,看不出来,所以没有竞争力

 

  2. 关于招聘,有一个得到很多公司(包括我们公司)认可的STAR方法,简单的说是去了解候选人在特定的situation下,接到的具体task,他采取了什么action,后得到了什么result。某种程度上,是一种以过去的行为来推断未来的表现的方法,可能并不完美,但是很多时候靠谱。换句话说,一个在以前工作中泛泛的人在未来也是泛泛,而项目组应该不想要这种人。

 

  3. 这种太过泛泛的人很容易被认为工作热情和态度有问题。

  当然,大家不要因为这个而不敢学新的东西了,而是想着要围绕一些东西来有目的的学东西,像散文的形散而神不散。

  看到这里,我相信大家知道了什么样的人比较有竞争力,在职业市场这个狭义的范围里。其实应该包括很多方面,但是其中有两个方面大家会很看重:


  1. 有哪些技术强项,经过深入的考察,确实做得很精。

  2. 有过成功的(好是大的)项目的经历,并且个人在其中有重要的贡献

  因为有了这两点,哪怕领域稍有不同,我们相信他也会在新的工作上和以前一样,深入的去学习产品和技术,成为项目中的主要贡献者。

  而以上两点,如果不深入的去了解产品业务,不深入的去研究和实践产品相关的技术,其实是很难做到的。大家有见过身边的哪位技术专家是靠业务看看书或者网上的文章而达成的,都是在实际的项目中磨练出来的。

 

  说到这里,其实比较明确了,但是还想补充几条,因为工作时间稍长一点,经历过的项目和见过的人员来去也观察到一些。

  1. 当全身心投入项目的时候,除了实际的回报之外,团队其他成员的认可,以及那种作为项目主要参与者的归属感和成感,也是一个很大的回报,会让我们的工作充满意义和价值。而反之,如果没有这种投入,会有很多负面的体验。

  2. 我也见过一些“怀才不遇”的人,有些可能真的能力很强而环境不适合自己,但是大部分是因为什么都懂一点而觉得自己很强,但是没有实际出来的业绩和成果得到团队的认可,而变得“怀才不遇”。这种于团队和个人都不太好。

  3. 人的时间和精力真的有限,很多时候我觉得,要把一件自己认可的事情做得很厉害,本身是一件不容易的事情,因为除了自己的努力也要看环境和机遇。而如果我们再分散自己的精力可能更难。

 

  以上很多是些个人的观察和思考,可能不一定正确,也是抛出来希望给大家一些启发吧,真心的希望每一个人都有好的发展。


  共勉!