如何成为技术大牛——阿里CodeLife
天天写业务代码的程序员,怎么成为技术大牛,开始写技术代码?
几个误区
跟着大牛,就可以成为大牛。首先,大牛时间很宝贵,不可能花很多时间去指导你;其次,简单的模仿大牛,只能学到表面知识,不可能成为大牛;最后,不是每个人身边都有大牛,可能有很多水平比你高的,如果仅仅以他们为目标,那么你最终也只能达到他们的水平。
光写业务代码也可以成为技术大牛。首先业务代码确实有技术含量,刚开始可以从业务代码中学到很多经验,快速成长。但是随着业务代码的增加,从中学到的经验可能会越来越少,从而到达技术瓶颈。这时候就需要跳出来,去挑战更大目标。前提是能写好业务代码,如果业务代码都写不好,可能无法成为技术大牛,但是,仅仅写好业务代码也无法成为技术大牛。
上班太忙,没时间学习。很多人认为自己加班才能勉强完成任务,哪有额外时间去学习。引申的含义是:上班都是做重复的事情,要学习需要额外时间;同时学习需要大段连续时间。正确的做法,刚好相反:需要在工作中学习和提升,把学到的东西运用到工作中,效果是最好的;其次工作后的学习不需要大段时间,而是学会利用碎片时间学习。
正确的做法
做的更多,做的比你主管安排给你的任务更多
要想有机会,首先你需要从人群中冒出来,要想冒出来,必须狱中不同,要做到与众不同,你就要做的更多。
怎么做呢?
1、熟悉更多的业务,不管是不是你负责的,熟悉更多的代码,不管是不是你写的。
这样做会使需求分析更加准确,因为你熟悉了相关的业务;问题能够快速处理,因为你熟悉业务,有熟悉代码,能够快速定位问题;有了全局业务的理解,方案设计更加周全。
2、熟悉端到端
比如一个HTTP请求,要经过很多中间的步骤(如:浏览器缓存、dns、nginx等),服务器一般也会经过多个步骤才会到业务代码(路由,权限等)。这整个流程或者系统,大部分人都不可能都参与写代码,虽然掌握这些知识对你直接写代码作用不是很大,但是能提高你的综合水平,对于方案设计,线上故障处理等这几技术含量高的工作都需要这些综合知识。
系统性、全局性、综合性等都是技术大牛必备的素质,要想达到这样的境界,必须去熟悉更多系统,业务,代码。
3、自学
当一个团队比较成熟时,框架和组建都进行了大量封装,写业务代码用到的技术很少。这时候就要主动去学习,比如学习这些框架,学习垃圾回收,调优,网络编程等。这些技术可能暂时没用,但真正需要的时候再学往往已经没有时间了。这些技术用上了,往往能解决一些关键问题。
做的更好
这个时间没有完美的东西,你负责的系统和业务,总有不合理和可以改进的地方。这里不合理和可改进的地方,往往都需要更深的技术。解决了能够快速成长。识别出问题,并给出解决方案,然后想负责人提出。这就是机会。
如:
重复代码太多,是否可以引入设计模式?
系统性能太差,可否进行优化
单机系统,能否做成双机或者更好
系统太复杂,能否重构和解耦成多个小系统
只要去思考,总有可以改进的地方,如果你觉得系统哪里都没有改进的地方,说明自己水平还不够,需要i今年一部学习,看看优秀的项目,大牛是怎么做的。
实践
光学习不使用,效果很差,学习了很多,但是一直没用上,时间久了就忘了,难以积累。
如jvm垃圾回收,实际上很少会出现FGC导致卡顿问题,没法练手,怎么实践呢?
学习了高性能MYSQL,但是实际工作中都是直接用的,有专业的运维去维护,自己没法去验证这些技术。
类似的问题很多,其实主要有三点,learning、trying、teaching。
1、learning
可以看书,看博客,看视频等,但是一定要系统化。特别是基础性的东西。如JVM原理,java变成,网络编程,http协议等。建议系统性,完整性的看完一本书,进行全面的了解,然后再google,博客等方式去针对性的找一些疑问的地方,或者进一步学习技巧。
2、trying
实践是检验整理的唯一标准。学习那么多,总会遇到一些模糊的地方,或者难以理解的地方,这时候就可以自己去单间一些环境,自己写一些测试程序。
如:
Jvm 垃圾回收:可以自己写一个简单的测试程序,分配内存不释放,然后调整各种jvm启动参数,再运行的过程中使用jstack、jstat等命令查看jvm的堆
内存分布和垃圾回收情况。这样的程序写起来很简单,简单一点的就几行,复杂一点的也就几十行。
用浏览器查看HTTP缓存实现,看看不同网站,不同类型的资源是如何控制缓存的,然后用python或者java写一个简单的web服务器,模拟各种情况,去验证自己的想法。
如果在实际中直接用到学习的知识,那么效果最好,如果没有这个机会,那么就需要自己主动去创造。
3、teaching
一般的人经过学习和实践,能够掌握70-80%,要想真正掌握,一定要做到能够跟别人讲清楚。因为讲的时候需要将学到的知识进行系统化,还需要考虑各种细节,这回促使我们进一步思考和学习。同时讲出来后,听众也有自己的理解,或者补充,这样可以进一步完善自己的知识体系。
有些知识觉得自己掌握了,但是写博客或者组织培训的时候,发现还有不少地方,自己不知道,或者理解错了。这样一个流程,基本上知识就比较全面了。
成为技术大牛梦想虽然很美好,但是要付出很多,不管是Do more还是Do better 还是 Do exercise,都需要花费时间和精力,这个过程中可能很苦逼,也可能很枯燥,这里我想特别强调一下:前面我讲的都是一些方法论的东西,但真正起决定作用的,其实还是我们对技术的热情和兴趣!
以上内容节选自《如何快速成长为技术大牛? 阿里资深技术专家的总结亮了》
可以关注阿里技术微信公众号,获取codelife的完整pdf
如何成为技术大牛——阿里CodeLife的更多相关文章
- 干了这碗鸡汤:从理发店小弟到阿里P10技术大牛
1.引言 MIT TR 35(MIT Technology Review 35 Innovators Under 35)——“全球 35 位 35 岁以下科技创新青年”榜单,是全球最权威的青年科技创新 ...
- 技术大牛是如何拿到国内IT巨头offer的?
关键字:技术大牛是如何拿到国内IT巨头offer的? 不是技术牛人,如何拿到国内IT巨头的Offer 不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人, ...
- web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址
web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址 Huang Jie Blog .Com-前端开发 http://www.huangjieblog.com/?feed=rs ...
- [转]20位活跃在Github上的国内技术大牛
FROM : http://blog.csdn.net/yaoxtao/article/details/38518933 20位活跃在Github上的国内技术大牛 本文列举了20位在Github上非常 ...
- 使用 Feedly RSS阅读器订阅技术大牛的博客
这几天一直都在自己看书,可是书上面的东西都比较落后一点,而且没有大牛博文上的东西讲的深入,可是来回跳转各位大牛的博客又非常的麻烦,有一些公众账号虽然也会推荐一些知识内容,可是你应该有过看到多个公众号发 ...
- 20位活跃在Github上的国内技术大牛
登录|注册 leon-这个程序员不闷骚的博客 喜欢leon,有追求有原则有爱心的杀手,做一个有追求的程序员,代码是程序员的朋友,虽然没有热情,但是非常忠实.希望拥有一身绝世武功,再配一把绝世好 ...
- 资深技术Leader曹乐:如何成为技术大牛
From: https://mp.weixin.qq.com/s/QaBTm_9AJC01Isr3LLR3aw 原创: 曹乐 公众号: 再成长一次 看了下面这篇文章的话,应该会有收获. 虽然排版不好, ...
- 【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?
小优有话说: App Crash就像地雷. 你怕它,想当它不存在.无异于让你的用户去探雷,一旦引爆,用户就没了. 你鼓起勇气去扫雷,它却神龙见首不见尾. 你告诫自己一定开发过程中减少crash,少埋点 ...
- 技术大牛面试 http://www.itmian4.com/forum.php?mod=viewthread&tid=3824
不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技 ...
随机推荐
- CF739E Gosha is hunting 【WQS二分 + 期望】
题目链接 CF739E 题解 抓住个数的期望即为概率之和 使用\(A\)的期望为\(p[i]\) 使用\(B\)的期望为\(u[i]\) 都使用的期望为\(p[i] + u[i] - u[i]p[i] ...
- bzoj 3779: 重组病毒
一道好题~~ 一个点到根传染需要的时间是这段路径上不同颜色的数目,一个点子树到根平均传染时间就是加权平均数了(好像是废话). 所以只要用线段树维护dfs序就这个可以了,换根的话一个点的子树要么在dfs ...
- JavaScript搜索关键字高亮的实现
高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色.一般在搜索结果页面会经常用到这个功能. 下面就为大家提供一种解决方案,用javascript实现. 首先在<head> ...
- 开源分布式工作流任务调度系统Easy Scheduler Release 1.0.2发布
Easy Scheduler Release 1.0.2===Easy Scheduler 1.0.2是1.x系列中的第三个版本.此版本增加了调度开放接口.worker分组(指定任务运行的机器组).任 ...
- (转)Python中的generator详解
本文转自:http://www.cnblogs.com/xybaby/p/6322376.html 作者:xybaby 注:本文在原文基础上做了一点点修改,仅仅作为个人理解与记忆,建议直接查看原文. ...
- JAVA 线程池基本总结
合理利用线程池能够带来三个好处. 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行. 第三:提高线程 ...
- windows10 conda2 使用caffe训练训练自己的数据
首先得到了https://blog.csdn.net/gybheroin/article/details/72581318系列博客的帮助.表示感激. 关于安装caffe已在之前的博客介绍,自用可行,h ...
- Hadoop生态圈-Hbase的协处理器(coprocessor)应用
Hadoop生态圈-Hbase的协处理器(coprocessor)应用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- java基础-数组的折半查找原理
java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...
- solr分组排序实现group by功能
http://wiki.apache.org/solr/FieldCollapsing solr分组排序,实现group by功能,代码待添加!