如何成为技术大牛——阿里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

原文地址:https://www.cnblogs.com/lilinwei340/p/9465365.html

时间: 2024-10-14 08:52:44

如何成为技术大牛——阿里CodeLife的相关文章

书籍推荐丨阿里P9、P10技术大牛送给各位的一本书:不止代码

本书中也说到了如何快速成长为技术大牛?程序员吃的是青春饭?何在阿里技术面试中脱颖而出?加班越久故障越多,如何跳出程序员的恶性循环?等等问题. 也是现在目前很多想入IT行业人员的问题 本书目录 上班太忙没时间自己学习? 1)上班做的都是重复工作,要想提升必须自己额外去学习 形成这个误区的主要原因还是在于认为"写业务代码是没有技术含量的",而我现在上班就是写业务代码,所以我在工作中不能提升. 2)学习需要大段的连续时间 很多人以为要学习就要像学校上课一样,给你一整天时间来上课才算学习,而我

天天写业务代码,如何成为技术大牛

前序 在工作之余浏览公司的技术网站,看到了以下这篇文章,细细读来真心觉得不错,写得有价值很实在.于是想联系下作者,问一下是否可以转载.打开钉钉一搜,作者是资深技术专家,差不多就是技术总监级别啊,这也从侧面旁征了,以下的内容是有其亲身经历,切实体会的,而不是鸡汤口号之流.相较与作者的级别,自己确实惭愧汗颜,所以没好直接聊天询问而是在文章底下留言.在得到了作者的同意后将文章的内容贴到这里,作为分享也作为自己的鞭策和提醒.在这里谢谢我的大牛同事了^_^. ....................以下内

天天写业务代码,如何成为技术大牛?

不管是开发.测试.运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己. 然而"梦想是美好的,现实却是残酷的",很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边,例如,程序员说"天天写业务代码还加班,如何才能成为技术大牛",测试说"每天都有执行不完的测试用例",运维说"扛机器接网线敲shell命令,这

如何成为技术大牛

不管是开发.测试.运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己. 然而"梦想是美好的,现实却是残酷的",很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边,例如,程序员说"天天写业务代码还加班,如何才能成为技术大牛",测试说"每天都有执行不完的测试用例",运维说"扛机器接网线敲shell命令,这

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

不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技术屌丝的同学们,是否真的与国内IT巨头遥不可及呢? 当你打开这个帖子的时候,我已经默认你是此文的目标读者,也就是想进入国内一流互联网企业的非牛人应届生. 你不需要拿NOI的奖,无需是开源社区名人,也用不着发过牛逼的SCI论文.(没错,笔者就是这样的技术屌丝) 请记住,校园招聘,应聘的绝大部分人都只是

技术大牛论道HBase 3.0 可能的新特性

摘要: 经过了四年的发展历程,HBase 2.0终于发布上线,其增加了很多的新特性,能够更好地适应更多的场景,但是也有一些原本计划的特性并没有随之上线.在未来的HBase 3.0版本中,又有哪些特性能够增加进来呢?本文中,技术大牛将论道HBase 3.0那些可能的新特性. 摘要:经过了四年的发展历程,HBase 2.0终于发布上线,其增加了很多的新特性,能够更好地适应更多的场景,但是也有一些原本计划的特性并没有随之上线.在未来的HBase 3.0版本中,又有哪些特性能够增加进来呢?本文中,技术大

技术大牛告诉你,如何系统有效的学习软件开发?

有些人一出生就是为电脑技术而活的,充满着浓厚的兴趣.特别对编程开发对电脑技术有自己的一些向往. 而往往有时总是依靠搜索引擎进行学习,东看一点西看一点,没有系统的学习完一整套思想逻辑. 自己也可能有所成就,但是每当进行进修的时候就会发现,自己的不足,学习其他的东西很费劲.那我们究竟应该如何系统有效的学习一门编程语言呢? 我也不是什么大神,至今学习C#语言三年,期间也学习java android python等其他语言.算是对学习一门编程语言有自己的一些小见解.希望能帮助正在准备学习一门新语言的你.

某技术大牛的帖子(android项目总结)

1. 一般性控件需要设置onclick事件才会有点击效果(selector). 2.  <item android:drawable="@drawable/btn_ct_green" />要写在selector的最后才会有点击效果. 3. 制作.9格式图片选最小图,否则默认大小撑大控件. 4. 如果将一个对象的属性设置为static,那么就算对象实例被回收了,该属性也存在内存,生命周期为app的生命周期. 5. OOM:普通视图和listvew等大数据量展示视图的图片控制分

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

FROM : http://blog.csdn.net/yaoxtao/article/details/38518933 20位活跃在Github上的国内技术大牛 本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页:        https://github.com/lifesinger 微博:@        玉伯也叫射雕 玉伯(王保平),淘宝前端类库 KISSY.前端模块化开发框架SeaJS.前端基础类库