说说“大牛“

大牛之定义

        “大牛”,网络流行语,指在某个领域很突出的优秀人物,也指极少数能力超过常人的人或在某个领域非常有影响力的人。例如人工智能领域的吴恩达;阿里的技术大神,淘宝一号程序员多隆,码农的偶像,写代码像呼吸,解决问题直接看源码;Hadoop创始人的道格切斯特等等,都是各行业领域的大神,是大部分普通人奋斗一辈子都达不到的终点。

大牛之品质

        大牛身上有许多优秀的品质,例如坚持学习、对问题的看法等等,个人认为最重要的一点是不甘于平庸。没有理想并不可耻,可耻的是工作多年,还在写着普通的增删改查而不想改变。有的人觉得要如何改变,实在是找不到改变的方式方法,对这种情况那就把事情一件一件做好,做到极致,做到让自己让大家都满意。

1. 拥抱问题,解决问题

        程序员最多时间是编写代码吗,不是!程序员耗费最多的时间是解决问题,为什们会需要大量的时间来解决问题,那是因为业务理解不够透彻,代码写得不够完善,不习惯review自己写的code,也不习惯看别人的代码。阿里大神多隆,被淘宝定位成大牛中的大牛,被问道是如何成长为现在这样的大神的,他的回答说“就解决问题嘛”,从开始简单的问题到尖端的性能难题,结合业务常见去思考去阅读源码。

        有句话说的好,问题是路上的石头,有人被问题绊倒了就躺平了,有的人被问题绊倒了能够站起来并踩着石头登上更高处。我希望每个程序员都是踩着石头的那个人!

2. 善用时间

        时间是平等的,每个人一天都是24小时。有些人一天就是一天,上班就上班,下班就躺平或者打游戏,而有的人一天当两天用,充分利用每一分每一秒,不断充实自己。如何利用时间,除了吃饭睡觉这种固定的时间外,还有工作时间和业余时间的。

        工作时间。工作时间基本是固定的,如何高校利用这上班时间,就成为一个职业人的差距,有些人浑浑噩噩的,比如说我自己,没事的时候就经常发呆,或者这边做一点,那边做一下,没有规划性和系统性的。如何避免这种情况,首先给自己设定一个方向,从而保持充分的动力,走自己想要走的路;其次利用史蒂芬科维在《高效能人事的七个习惯》一书中,将事情排个优先级,重要紧急、重要不紧急、不重要紧急、不重要又不紧急,当把重要但不紧急的事情处理完了之后,就不会有重要且紧急的事情出现了;最后就是要专注,提升专注力,从一个点突破,集中在某件事上,取消其它不重要的事情,直到达到目标。

        业余时间。每个人都有自己的业余休闲时间,如何利用这个业余时间就成为人与人差距的指标。普通人是休闲打游戏或睡觉,而大牛都是利用这些时间不断的吸收知识,为自己的理想铺路。业余时间一般比较零散,如何充分利用这些零散的业余时间,有些人说抽0.5-1小时来学习的,但我想说的是想学就学,无论在什么时间什么地点,比如说地铁上、公交车上,坚持某个方向系统性学习,哪怕只是看一两行、一两段,制定学习规划,专注的去完成,时间积累下来还是很可观的。

3. 坚持输出

        大部分学习都是接受式学习的,如何将这些知识规整并且应用,一种是实践,实践有时候难以做到的,比如说一个大数据集群环境,这些需要硬件资源,还需要搭一套环境的,实践起来比较麻烦;另一种是输出,例如写博客、记笔记,日记或者讲给别人,通过这种方式,就需要不断总结规整清楚,这就是一个思考的过程,写博客同时还能建立行业知名度,认识到朋友等。

一些优秀的博客:

阮一峰:ruanyifeng.com

陈皓:coolshell.cn

Paul lrish:paulirish.com

Scott Hanselman:hanselman.com

4. 善于发现思考保持习惯

工作学习生活中多问问自己:

做事的方法对不对,有没有可以改进的地方

对于重复性的功能,如何替换

重复多有没有想过引入设计模式

性能怎么样,如何提升性能

        培养自己的做事习惯、思考习惯,让习惯的力量,如滴水穿石,受益后半生。思考,引发问题,问题,伴随答案。普通程序员,只思考代码上的问题,优秀的程序员,会扩大到思考产品问题,运营问题,甚至站到更高的角度去看待研发。

5. 保持激情、动手实践

        激情是做事的氧化剂,保持激情可以高效的完成工作、编写业务代码,提升自己的业务和编码能力,但这还是不够的,需要突破技术的舒适区,做目前的技术积累做不到的事。对于如何突破舒适区,可以从以下三个方面:

        接手新的项目。不要害怕做不好,有了任务和指标,才能充分发挥自己的源动力,才会想尽办法取完成,只有这样才能快速成长。

        参与开源项目开发。这个就要求有一定的功底了,可以和优秀开发者交流,看底层源码,还是很有好处的。

        开发自己的小项目。找一个自己感兴趣的领域,把自己的想法实现到该小项目中,提升自己的动手实践能力。

        比较推荐的还是第一点,因为后面两点,如果没有充足的压力,很容易就暂停了

6. 学习

        最重要的一个品质是学习,不断的学习,掌握新兴技术及技术前沿,深入挖掘技术的本质。人们眼中的天才,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。那是不是锤炼一万个小时就是天才或者大牛了,也不是,需要的是有效的锤炼,而不是重复性的锤炼,如果每天做重复一件事,那基本上也不会成为大牛,最重要的是从不同纬度不同角度不同领域来锤炼,达到“不怕学习”的境界,俗话说得好,一通百通,选择一个方向不断学习,相信都能够成为独当一面的技术大牛。

大牛之差距

        多年工作经验下来,感觉和大牛的差距还是不小的,总结下来主要有以下四个方面

1. 深入行业中了解业务和流程

        做得越多,越发现没有一门技术事独立于业务存在的,技术服务于应用业务,业务促进技术不断更新和发展。不深入到一个行业中,就无法知晓行业的应用环境、组织流程和商业价值,就难以做出和行业无痕交融的产品。技术是把商业需求转换成产品,因此先把自己提升为“业务大牛”。

2. 精通专业领域

        作为一名技术大牛,最基本的要求是精通某个技术领域,例如架构、数据分析、人工智能等等,技术的根基要扎得非常深,稳扎稳打,形成技术招牌,所以要沉得下新,深钻技术,细细打磨。

3. 技术面广泛

        和技术大牛一起,你就会发现大牛非常非常博学,似乎都有无限经历、兴趣广泛。这时候就会迷茫,到底是技术深度重要还是技术广度重要,从实际情况来看,技术深度是立身之本,广度更多时候是辅助深度,但技术的本质是相通的,有了技术深度,学习其它技术就很快,所以先提升自己的技术深度,以技术深度提升自己的技术广度。

4. 了解行为心理学

        当你成为技术大牛的时候,往往会要求你带一个团队,有些人就喜欢技术不喜欢管人,我就是其中之一。但是真正的技术大牛会从技术的研究转换成行业的研究,再变为对人性的研究,毕竟产品最终是满足人的需要才有价值,而产品的研发本身就需要协作。当然,这个还是比较难的,只是让你可以更进一步,往CEO的方向走。

大牛之计划

        想要成为一个技术大牛,并不是靠想或者靠做就一定能够成为技术大牛的,也要有自己的策略和方法。从李运华老师课程《大厂晋升指南》中三段分解法中是深有体会。

        第一段是分解定位。定位出未来的方向,定位出当前的状态以及距离目标相差了几个层次(可以对标阿里的职级体系P5~P9),然后根据这些层次差逐级提升,就像游戏里的等级一样;

        第二段是分解技能。按照想要或者喜欢的技术领域,想要深入这个领域需要掌握哪些技术,可以参照大厂的招聘职位要求,描绘出技术图谱,然后一个一个的突破,技术图谱也可以参考网络上一些技术图谱

        第三段是分解行动。想要成为一个技术大牛,并不是一朝一夕之功,而是长期奋斗的结果,要沉得住心态,坚持学习。例如从一个技术小白成长为技术大牛,基本上需要经过10000小时的课外磨练,扣去一些必要的花销,大概在十年左右,给自己制定一个十年的计划,然后拆解成多个2~3年的目标,再继续拆分成1~6月的小目标,最终分解到周计划,一步一步去实现。尽量少分解到天,很容易因为其它的事情,导致没能完成,打击积极性,从而放弃坚持,也不要计划安排过满,导致完不成,要留有余地。

大牛之学习

        学习计划有了,但学习也要有一定的方法,并不是说简单的看书或者盲目的练习就能够成为技术大牛。李运华老师介绍了三种方法,分别是链式学习法 - 提升技术深度,比较学习法 - 提升技术宽度,环式学习法 - 提升技术广度。

1. 链式学习法 - 提升技术深度

        在面试的时候,经常遇到一个问题带出另外一个问题,由浅及深、由表及里的文法,常常会使面试者不知所措,但这也是一种能够快速掌握技术深度的方法。李老师的方法是绘制“领域分层图”和细节分层图,绘制的过程中也是一种梳理逻辑的过程,同时觉得学到什么层次,如下图:

        从领域分层图来看,基本上每一层都是一门技术,个人认为领域分层图是一种大的方向,是你想要扎根的领域,但是一个领域又可以细化成多门技术,如何掌握这些技术呢?每一门技术都有其设计思路和框架,绘制出该技术的架构,先让自己有个印象;然后查阅资料,了解该技术核心知识点,并进行整理;最重要的一步是带着这些知识点去完整地看完一本书,而后回过头来解答这些知识点,并在学习的过程中不断的进行实践。切记不要急于看完,不要急于看完,不要急于看完,重要事情说三遍。

2. 比较学习法 - 提升技术宽度

        一个领域中,往往相似的技术有两三个,甚至更多,例如缓存领域的Redis和MemCache,若要掌握它们的使用场景,就必需对他们的设计理念和原理有所了解,通过比较学习法,就能够快速的掌握它们的异同点。当然前提是已经较好的掌握了其中一门技术,这就体现了链式学习法的优点,例如通过链式学习法掌握Redis的相关知识点后,再通过比较学习法了解MemCache,并梳理出他们的异同点。

1)先通过链式学习法掌握Redis技术,并整理出缓存领域的关键技术点

 2)基于这 6 点快速掌握 Memcache 技术,整理出Redis 和 Memcache 在这些点上的差异

 3)找出差异较大的技术点,包括并发方案、数据结构、高可用和持久化,整理出它们背后的原理和对应用场景的影响。

 3. 环式学习法 - 提升技术广度

        经历了链式学习法和比较学习法之后,基本上能够成为某个领域的小牛的,如果还想要继续提升自己的技术水平,这就要提升自己的技术广度了,突破舒适区,探索其他领域,例如当成为一名架构师之后,可以往前端技术栈试试,也可以往大数据领域或人工智能领域去拓展。

        环式学习法第一步是将闭环画出来。拿“用户登录”这个功能环来说,它可以分为前端、客户端、网络层、机房入口、Nginx、用户中心、安全中心和数据中心,总共 8 个环节;每个环节又会涉及不同的技术,比如客户端涉及 JsBridge 和 OkHttp,用户中心涉及微服务、MySQL 和 Redis 等,总共涉及的技术有 18 项。通过这么一个简单的功能环,你就可以看出技术广度的边界和范围;而且这些技术都是业务上实际用到的,你完全不用担心自己是没有目的地乱学。

        环式学习法第二步,就是由近及远,逐步攻克闭环上的各个节点。不同领域的人学习顺序也是不同的。还是以用户登录这个功能环为例,前端的人先需要学客户端的 JsBridge 和 OkHttp 等知识,然后再去学服务端相关的知识;而服务端用户中心的人,需要先学微服务、MySQL 和 Redis 相关的知识,之后再逐步扩展到客户端和前端。

        业务能力也很重要。很多技术人员有一个误区,认为业务设计是产品经理的事情,产品经理设计好了,技术人员再把自己负责那部分做好就行了。因为不熟悉业务,无法承担整体需求分析和方案设计这种任务,无法和产品、测试聊需求,无法识别不合理的需求,导致后期需要花费大量的时间修改功能。前面也说了,技术大牛往往是在一个业务领域钻的很深的,想要成为一个技术大牛,首先就是要深耕业务领域,可以通过绘制业务环的方式来全局提升自己的业务水平。

4. 小结

        每一种学习方法都是值得推荐的,针对的方向也不同,如果能把这些方法吃透并应用到学习生活工作中,相信都会得到很大的提升。当然如果有更好的方法,欢迎提出来一起分析。用一张图来总结三个方法。

总结

        写了这么多,篇幅有点长,希望能够对看到这篇文章的人有所帮助。其实,无论是哪个领域,想要成功最重要的就是两字“用心”,用心把每件事做好,用心问这样做是否就可以了,可否改进,用心去体验写代码优化代码的快乐,用心去体验生活和学习。

 备注:文章部分内容和图片摘自其它作者的问题,例如李运华老师,如有侵权请留言

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>