来源 | 五月的仓颉
作者 | 五月的仓颉
责编 | linse
2018.5.31~2019.5.31,一段精彩的旅程,渡过了在阿里一年的时光,这段时光有快乐、有焦虑、有迷茫、更有思考,思考的是自己过去的种种不足、思考的是一些现在看来之前错误的想法、思考的是如何成为一个更好的技术人,将这一些思考分享给看到这些文字的每个人,共勉。
01
应当如何面对线上的异常/故障
看起来毫无意义的一个问题,碰到线上异常/故障如何面对,排查解决了不就好了,但是这真的只是第一层。
最近在想“消防”这个词语很有意思,它其实是两层意思:
即“消防”这个词语表达的意思应该是先消除问题再防止相同的问题再次发生。其实线上的异常/故障也是同样的道理,我们应当先及时止血,把问题处理掉,然后深挖问题,探究根因,举几个例子:
根据我过往的经验,太多公司、太多团队处理线上的问题仅仅满足于把问题处理完就完事,忽略了对问题的复盘,这对团队/对公司的发展都是不利的。
02
什么是真正的技术能力
之前加了几个技术微信群,看到很多技术朋友在兴高采烈地讨论各种源码, Spring 源码我彻底撸了一遍、最近深入学习了 dubbo 底层实现方式,当然曾经的我也是这样的,记得学习 volatile 的时候一直挖到了 volatile 在硬件层面上的实现方式。
但是这真的说明技术能力强吗?从今天的思考去看这个问题,我认为这更多反应的是一个人的学习能力、钻研能力以及对技术的热情,除此之外再体现不出太多其他东西了。
这个话题,可能是这一年思考的最多个的一个点,钻研是好事,但是实际上大多时候的深入钻研并不在实际工作中有用,且研究得越深,忘得越快,因为研究得越深,那么这个技术点关联的技术点就越多,边边角角的忘了,核心的东西不容易串起来。那么什么是真正的技术能力,我画一张图概括一下:
简而言之,技术能力 = 解决问题的能力,那么同样都在解决问题,大家之间的技术高低又有什么区分呢?我认为有以下几个层次:
其实从这个角度上来看,不同的技术能力,在工作过程中区分度是很明显的:
越厉害的人,在代码设计与开发过程中,越能看到想到一些别人看不到想不到的问题,这叫做高屋建瓴;当代码运行出现问题的时候,有人1小时排查出问题,有人1分钟发现问题,这叫做举重若轻。
因此我认为解决问题的能力才是技术能力的真正体现,这一年对技术的探究我也从研究源码更多的转变去学习设计模式、去学习分布式环境下各种 NoSql 的选型对比、去学习使用 Lambda 让代码更简洁,往真正在实际工作中解决问题的方向去努力。
另外,抛开这个点,这两天我在思考,还有一个体现技术能力的点,就是学习能力。现实中的全栈是很少的,互联网这个行业的程序员的方向通常有几类:
在同一类中,基础知识、基本概念、思维方向是一致的,更多可能差异在开发工具、语言上,我精通 Java,但是如果明天有一个需求,使用 nodejs、scala、go 更好,那么是否可以快速学习、快速上手?甚至明天有一个需求需要写前端代码,是否可以快速开发、无 bug 上线?
所以,解决问题的能力 + 学习能力,是我认为真正的技术能力,不过说到底,学习能力某种程度上也只是为了解决问题而已。
03
不要造轮子
曾几何时,当我们看着 github 上这么多优秀的源代码的时候,默默立誓,这辈子我一定要写出一个牛逼的框架,开源在网上。
曾几何时,公司招聘的时候,技术负责人激情满满地介绍着公司内部自研了多少系统并在线上投入使用。
很多对技术有追求的朋友,进入一家公司可能时时刻刻在寻找机会去做一些自己造轮子的事情,但是就如同前面所说的,衡量真正好技术的标准就是能否实实在在地解决问题,自己造轮子风险高、周期长,且需要长时间的验证、排坑才能达到比较好的效果。
随便举几个例子,在互联网发展的今天:
只要你有的技术方面的需求,绝大多数业界已经有了成熟的解决方案了,根本不需要去专门自己搞一套。因此我认为轻易一定不要造轮子,如果一定要造轮子,那么请想清楚下面几个问题:
如果想清楚了这些问题,那么就去干吧。
04
去提升看问题的高度
过去有太多人在我的公众号或者博客下反馈了一个问题:在这个公司,整天做着增删改查的工作,对自己一点都没有提高。
对于这种看法,说难听点就是四个字----目光短浅。我们看:
如果以普通的视角去看,那么一颗树那也就只是一棵树而已,但是如果跳脱出目前的视角,站在更高的角度去看,它其实是森林的一部分。你的主管并不是因为他是你的主管所以他就应该你比更高瞻远瞩,而是因为他看问题的高度比你更高、想得更远、做得更深,所以才成为了你的主管。
把这个问题说得实际点:
今天与其在抱怨没有机会、抱怨公司对自己能力没有提升,为什么不去思考机会为什么降临在别人头上不降临在你头上?为什么别人可以从小公司写着一样的增删改查走向BAT而你年复一年还在小公司写着增删改查?当你真正能转变自己的思维模式,跳脱出现在的圈子往更高一个层次去看问题、去提升自己,我相信总会有发光发热的一天的。
同样在阿里巴巴,马老师思考自然、思考环保、思考人类的发展,你的主管思考团队未来的方向和打法,我们在思考如何把某个客户需求完整落地,这就是高度,你未必能想到马老师想的,但是你对标层级高一点的人,一步一步尝试往他们的高度去靠。
总而言之:眼界决定高度,多看、多想、多保持好奇心、多问几个为什么,久而久之自然就迈上了一个新的台阶。
05
学会总结
需求、项目的复盘是非常重要的一部分内容,然而我之前见过的太多团队、太多Leader,只顾着一个迭代接着一个迭代,一个版本接着一个版本,只满足于把需求做好,而忽略了总结的重要性。
我认为大到项目、小到需求,如果在完成之后缺乏总结那么某种程度上来说是失败的,可以总结的点非常多:
任何工作一定对个人都是有提升的,但是不会总结的人,在每个项目/需求中成长的东西都是散的,久而久之就忘了。通过充分的总结之后,犯过的错误我们不会二次再犯,理清楚的业务的来龙去脉铭记在心,对自己是一种提升,分享给别人对别人也是很大的帮助。
失败者失败的原因各有不同,成功者的做事方式总是相似的,从宏观角度去看,我认为总结就是成功者之所以能成功,很重要一个原因。
06
选择大于努力
好吧,我承认调皮了,但是这一段我也是很真诚的!
人,努力是最重要的,但是选择也非常重要。有能力是非常好的,有能力的同时,一个好的 Leader、一个好的团队将会让你在平时工作中感到无比舒心,将会让你有家一般的温暖,更能将你的能力最大化!
最后,非常重要的一点:不要害怕面试。通过面试才能发现不足,才能知道未来在技术道路上还需要在哪些方面进行提高,在面试的结尾,你也可以询问面试官自己有什么不足,面试官一定会给到你最诚恳的建议!
— 完 —