作者 | 梁唐
大家好,我是梁唐。
不知道大家有没有遇见过一些很牛叉的同事,明明刚毕业没多久,还是一个新人,可是做起事情来却非常老练。做事情滴水不漏,天然自带一股大将之风。技术也没得说,好像没有他不知道的,凡事都可以说出一二三四五来。
要是你恰好不是团队中强悍的骨干成员,遇上了这样的新人,估计心里少不了一个激灵。后生可畏,自己要当心了,千万不要被一个新人甩在后面。
但是大家都是人,没有人天生就会很多东西,他们是怎么做到的呢?
虽然我已经成了老鸟没机会装嫩了,但如果你也想成为一个这样的新人,希望本文可以给你一点参考。
我们先来说说浅显的,比如遇到问题时候的反应。
举个例子,比如说你接到了一个任务开发某某功能。开发的时候需要用到一个第三方的工具库,这个库你没用过,使用的时候遇到了一些问题,这个时候你会怎么办?
你是会搁置一边,被动地等其他人来给予帮助,还是会主动出击,找到师兄、同事寻求帮助。或者是你会自己上网搜索,寻找解决的途径?
估计很多同学会说,这还不简单,我知道,正确答案是C,自己上网搜索。
这个选项是对的,先别急着高兴。这里面还有一个问题:如果你不知道怎么搜索,或者是搜索不到你想要的答案怎么办?
在实际开发当中这是非常非常正常的,尤其是对一些不了解的事物,你完全不了解,想要搜索可能都不知道关键词。虽然我们知道比较好的做法是自己解决问题,但现实可能比我们想的要困难得多。
而且上网搜索自己解决,也有效率的问题。自己解决陌生的问题,往往需要大量的时间。而工作中的任务往往都是有时限的,有的时候明明询问一下很快就能解决的问题,自己去搜索可能几个小时都没有答案。
这样的话,到底怎么做才对呢?
实际上这个问题只是表象,它并不重要。重要的不是你如何解决当下遇到的问题,而是如何避免以后遇到同样的问题。
你今天遇到一个问题,花了五分钟问师兄解决了,合理,毕竟这样效率高。你花了一个小时自己百度解决了,也合理,毕竟没有麻烦别人。但更重要的是,你有没有想过,为什么会遇到这样的问题?
比如刚才的例子当中,遇到问题时因为对某个第三方库不熟悉,没用过所以遇到了问题。其实这才是最需要解决的问题,工作当中常用的第三方库有哪些?这当中有多少是自己不熟悉的?这些库的作用是什么?应该怎样去学习?
被动地解决遇到的问题,并没有太多技术含量,主动地避免未来可能遇见的问题,这才是关键。
我要说的第二点关于思维模式。
新人往往都是以一个完成任务的思考模式进入职场的,具体的体现在需要有明确的任务。一旦没有人指导,或者是新的任务就不知道该干什么。
我见过不少人有这个问题,一旦手上的事情做完了,或者是老板一时没有新的任务布置下来,立马就不知道该干嘛了。实际上从逻辑上来看,新人什么都不会,正是需要大量学习、大量实践、钻研的时候,怎么会没事干呢?但实际上,能够主动学习、实践的人非常非常罕见,大部分人都是任务驱动的。
一旦接受了以任务为导向,还会带来另外一个问题,就是责任心的问题。
虽然说是责任心,但这并不是说新人们不负责。实际上由于害怕出错,怕给其他人带来不好的印象,新人们往往都是比较负责的。但问题是他们负责的范围是非常小的,基本上等价于他的任务涉及的范围,所有和任务不直接相关的东西都不在他们权责范围内。
就拿算法工程师最常见的训练模型为例,比如说让一个新人去做新的特征并且实验。会发生什么?会发生他只管按照要求一步一步,从做特征到训练模型执行。
表面上看看起来似乎OK,但一旦你问他为什么这么设计特征?有没有更好的设计方案?对于训练的结果有什么预期?他就回答不上来了,因为从未想过,他以为自己要做的就是按照吩咐完成任务,从来没有想过自己还能提供哪些价值。
上面说了两点,这两点实际上或多或少都与方法论相关。
当然了,方法论这个词说起来太过抽象,为了方便大家理解,我把它分解成动机-行动-结果的思维模式。只要遵循这个思维模式,立刻就可以帮助你摆脱新人的思维模式,瞬间把你的职业成熟度提升一个量级。
这个模式当中的第一个词是动机,顾名思义,也就是凡事思考动机。
比如老板交给了你一个任务,别光顾着去执行,先想想这件事情的动机是什么。也就是为什么要做这件事?预期想要一个什么样的效果?
让你去做某个实验,让你去做某个特征,目的是什么?只有理解了目的,你才能知道,该往什么方向努力,才能对自己的工作有一个比较清楚的认知,知道自己完成得好不好,知道好在哪里,不好在哪里。
当一切顺风顺水的时候可能看不出来思考的成果,但是一旦执行的时候遇到了阻碍,或者是原先的计划不可行了。立刻就体现差别了,如果你明白为什么要做这样的事,立刻就能想出plan B或者是其他的解决方案。相反,如果只是把自己放在了执行者的位置上,遇到困难十有八九要抓瞎。
第二个词是行动,这个理解起来很简单,就是你要做哪些事。
但真正执行的时候,门道也很多。最重要的一点就是要保证执行的步骤的正确性,就像是写代码一样,即使结果不可预期,你也要至少保证你的代码逻辑是正确的。
这也是一件知易行难的事,我们通过反复检查以及单元测试都很难保证代码没有bug,更何况做事不是写代码,你出错了不一定就能很快很准确地意识到。
开始开发之前要再三确认需求,要检查数据,要详细测试,最后还要review代码。在给出结论之前更是要复盘一下前提,很多看似诡异的结论背后往往都是前提错了。整个过程有些像是上学的时候我们做的数学题,每一步都要思考、验算,保证准确。只有这样才能把一件事情做漂亮,让人无懈可击。
最后一个词是结果,职场中凡事都要有结果。这句话非常非常重要,可以说是重点中的重点。
有结果的意思是一定要得到一个结论,或者是获得一个产出。比如老板安排做某一个实验,很多新人实验做好了就结束了,实际上根据吩咐做完该做的事情只是其中的一半,还有一半是追踪我们做出的成果。比如做了一个实验,这个实验是成功了还是失败了,它带来了多少的提升?如果效果好,那它好在哪里,如果效果不好说明了什么,我们以后该如何优化?
只有把这些问题也都搞出结论,才算是有了结果,这个实验才算是真正做完了。只是单纯地完成任务,绝不能称作把事情做好了。
最后,我们简单总结一下这个方法论。其实很简单,就是开始做事之前多思考,理解出发点、动机,做事的时候仔细、谨慎,保证思考全面,没有遗漏。事情做完之后拿到结果,验证事前的想法。其实这整个一条线下来也刚好构成了一个闭环。
刚入职场的新人,成长最快的除了技术和实践能力,另一个很重要的部分其实就是对于做事做人的理解。当有了如何能把一件事做好的意识之后,快速成长、成为骨干、升职加薪也就是水到渠成的事了。