天天写业务代码的程序员,怎么成为技术大牛,开始写技术代码?

几个误区

  跟着大牛,就可以成为大牛。首先,大牛时间很宝贵,不可能花很多时间去指导你;其次,简单的模仿大牛,只能学到表面知识,不可能成为大牛;最后,不是每个人身边都有大牛,可能有很多水平比你高的,如果仅仅以他们为目标,那么你最终也只能达到他们的水平。

  光写业务代码也可以成为技术大牛。首先业务代码确实有技术含量,刚开始可以从业务代码中学到很多经验,快速成长。但是随着业务代码的增加,从中学到的经验可能会越来越少,从而到达技术瓶颈。这时候就需要跳出来,去挑战更大目标。前提是能写好业务代码,如果业务代码都写不好,可能无法成为技术大牛,但是,仅仅写好业务代码也无法成为技术大牛。

  上班太忙,没时间学习。很多人认为自己加班才能勉强完成任务,哪有额外时间去学习。引申的含义是:上班都是做重复的事情,要学习需要额外时间;同时学习需要大段连续时间。正确的做法,刚好相反:需要在工作中学习和提升,把学到的东西运用到工作中,效果是最好的;其次工作后的学习不需要大段时间,而是学会利用碎片时间学习。

正确的做法

做的更多,做的比你主管安排给你的任务更多

  要想有机会,首先你需要从人群中冒出来,要想冒出来,必须狱中不同,要做到与众不同,你就要做的更多。

  怎么做呢?

  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的更多相关文章

  1. 干了这碗鸡汤:从理发店小弟到阿里P10技术大牛

    1.引言 MIT TR 35(MIT Technology Review 35 Innovators Under 35)——“全球 35 位 35 岁以下科技创新青年”榜单,是全球最权威的青年科技创新 ...

  2. 技术大牛是如何拿到国内IT巨头offer的?

    关键字:技术大牛是如何拿到国内IT巨头offer的?  不是技术牛人,如何拿到国内IT巨头的Offer  不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人, ...

  3. web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址

    web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址   Huang Jie Blog .Com-前端开发 http://www.huangjieblog.com/?feed=rs ...

  4. [转]20位活跃在Github上的国内技术大牛

    FROM : http://blog.csdn.net/yaoxtao/article/details/38518933 20位活跃在Github上的国内技术大牛 本文列举了20位在Github上非常 ...

  5. 使用 Feedly RSS阅读器订阅技术大牛的博客

    这几天一直都在自己看书,可是书上面的东西都比较落后一点,而且没有大牛博文上的东西讲的深入,可是来回跳转各位大牛的博客又非常的麻烦,有一些公众账号虽然也会推荐一些知识内容,可是你应该有过看到多个公众号发 ...

  6. 20位活跃在Github上的国内技术大牛

    登录|注册     leon-这个程序员不闷骚的博客 喜欢leon,有追求有原则有爱心的杀手,做一个有追求的程序员,代码是程序员的朋友,虽然没有热情,但是非常忠实.希望拥有一身绝世武功,再配一把绝世好 ...

  7. 资深技术Leader曹乐:如何成为技术大牛

    From: https://mp.weixin.qq.com/s/QaBTm_9AJC01Isr3LLR3aw 原创: 曹乐 公众号: 再成长一次 看了下面这篇文章的话,应该会有收获. 虽然排版不好, ...

  8. 【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?

    小优有话说: App Crash就像地雷. 你怕它,想当它不存在.无异于让你的用户去探雷,一旦引爆,用户就没了. 你鼓起勇气去扫雷,它却神龙见首不见尾. 你告诫自己一定开发过程中减少crash,少埋点 ...

  9. 技术大牛面试 http://www.itmian4.com/forum.php?mod=viewthread&tid=3824

    不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技 ...

随机推荐

  1. 初探Java 9 的的模块化

    Java 9中最重要的功能,毫无疑问就是模块化(Module),它将自己长期依赖JRE的结构,转变成以Module为基础的组件,当然这在使用Java 9 开发也和以前有着很大的不同. Java8或更加 ...

  2. BZOJ 3527 力 | FFT

    BZOJ 3527 力 | 分治 题意 给出数组q,$E_i = \sum_{i < j} \frac{q_i}{(i - j) ^ 2} - \sum_{i > j} \frac{q_i ...

  3. 关于Powershell对抗安全软件(转)

    Windows PowerShell的强大,并且内置,在渗透过程中,也让渗透变得更加有趣.而安全软件的对抗查杀也逐渐开始针对powershell的一切行为.在https://technet.micro ...

  4. 单点登录(九)-----遇到问题-----FileNotFoundException: class path resource-UsernamePasswordWrapperAuthenticatio

    运行cas server 项目时 报错 FileNotFoundException: class path resource-UsernamePasswordWrapperAuthenticatio ...

  5. NSLineBreakByWordWrapping和NSLineBreakByCharWrapping

    在iOS开发过程中,在文本的lineBreakMode中有以下几个功能: NSLineBreakByWordWrapping = 0 //以空格为界,保留整个单词. NSLineBreakByChar ...

  6. 【转】了解CNN

    摘要 过去几年,深度学习在解决诸如视觉识别.语音识别和自然语言处理等很多问题方面都表现出色.在不同类型的神经网络当中,卷积神经网络是得到最深入研究的.早期由于缺乏训练数据和计算能力,要在不产生过拟合的 ...

  7. Chapter4(表达式) --C++Prime笔记

    1.重载运算符:为已经存在的运算符赋予另外一层含义. 2.左值与右值:   ①当一个对象被用作右值的时候,用的是对象的值(内容):当一个对象被用作左值的时候,用的是对象的身份(在内存中的位置). ②在 ...

  8. python中的zip

    >>> a = zip([1,2,3],[34,35,36]) >>> print(a) <zip object at 0x0394D0F8> > ...

  9. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  10. python---基础知识回顾(九)图形用户界面-------WxPython

    主要使用wxPython(最成熟的跨平台python GUI工具包) wxPython手册 前戏:基础了解 import wx class MyFrame(wx.Frame): #创建自定义Frame ...