作者 架构师成长营 姜兵
一、如何制定自己的成长计划
1.确立自己的目标。
技术有如下发展方向:
首席架构师
技术专家
技术总监
技术经理
敏捷教练
测试
运维
转型:业务、销售、产品
转行:彻底离开IT行业。
首先,要确定自己的发展方向,坚定是向技术的方向发展并坚持走下去。
2.培养兴趣
技术学习是一条漫长而艰辛的道路,如果没有足够的兴趣,是很难坚持下去的,也是很难将技术做到极致的,所以要努力培养自己在技术上的兴趣。
3.合理规划自己的成长周期。
架构师成长不是一蹴而就的,一般需要 5-10年,并需要丰富的技术积累和项目经验,所以给自己制定一个合理的成长周期是很重要的,切忌急于求成、拔苗助长,基础积累得越多,架构师这条路就走得越远。
4.每年制定自己的年度成长计划,阶段性地成长。
初期,夯实计算机基础(数据结构及算法、计算机网络、操作系统、编译原理)、语言基础(java、c、c++、js、python、go)、数据库。
然后,提高设计能力(主流框架、设计模式、UML、软件设计过程、分析能力、逻辑思维能力)。
再次,提高架构能力(主流架构、技术选型、架构演进、逻辑思维能力、分析能力、沟通能力、管理能力)。
大型项目架构经验也是非常重要,多多研读大型项目的架构,并努力给自己创造大型项目的实践机会。
5.坚持,每天哪怕进步一点点,坚持下去就是最好的。
6.平时多浏览技术网站:CSDN、博客园、SegmentFault、开源中国、W3School、51CTO、ChinaUnix、伯乐在线、ITEye、开发者头条、GitChat。
7.关注一些技术公众号。
8.多关注一下主流技术和新技术的动态。
二、如何看待新技术
作为技术爱好者,要时刻关注新技术。
对于新技术,着重关注以下几点:
新技术出现的原因?
新技术解决当下什么痛点?
新技术带来了什么变化,是否带来了革命性的变化?
新技术底层实现机制是什么?
不做新技术的盲目追随者。新技术总是技术牛人创造出来,供大家使用,好处是解决了我们的痛点,提高了我们的效率,但是扼杀了我们的创造力。
立志做新技术的创造者。不一定能实现,但要向这个方向去努力。
有没有想过自己写一个操作系统?哪怕仅具备最基本的功能。
有没有想过自己写一个数据库?哪怕是一个最简单的数据库。
有没有想过自己发明一种语言?哪怕仅支持一两个语法。
有没有想过对当前使用的主流技术进行改造?
三、选择什么样的书籍
看书,还是要选择经典的书籍,用大师的思维方式去思考。选择经典,用规范的方法去解决问题。
书籍推荐:
《java编程思想》
《java核心技术 卷I / 卷II》
《effective java》
《深入理解java虚拟机》
《算法》
《算法导论》
《TCP/IP详解》
《人月神话》
《人件》
《代码大全》
《编程珠玑》
《大象Think in UML》
《设计模式:可复用面向对象软件的基础》
《Unix环境高级编程》
《Unix网络编程》
《Spring in Action》
《Spring技术内幕》
《高性能Mysql》
《PostgreSQL修炼之道》
《深入分析java web技术内幕》
《大型分布式网站架构设计与实践》
《分布式服务框架原理与实践》
《Spring cloud 微服务实战》
《Spring cloud Docker微服务框架实战》
《大型网站技术架构》
《亿级流量网站架构核心技术》
中间件书籍:PostgreSQL、Activiti、Redis、Dubbo、zookeeper、RabbitMQ、kafka
服务器书籍:Linux、Nginx、Jboss、Jetty
《卓有成效的管理者》
四、看书
书有很多种,有的书适合精读,有的书适合泛读,有的书适合做工具书。
每年,给自己制定一个读书计划,和自己的成长计划相结合,选择相对应的知识领域去学习。
看书,我建议看纸质书,因为可以在书上划重点,记录笔记,越难懂的书越要记笔记。
看书先看目录,首先仔细研究一下目录,了解本书的主要内容,每个章节所叙述的内容、章节下的分类目录、各章节之间的关系。作者在写书时,在划分章节上一定是经过一番思考的,通过章节划分可以对知识点做一个梳理,先有个印象,对我们了解该书的知识体系是非常重要的。
看书过程中,每看完1-2个章节,是回顾总结的最佳时间,这时候回顾,大脑中还有大部分记忆,能够快速的回顾一遍并加以总结,此时可以做总结笔记,等全书看完后,再对此处的笔记进行整理修改。
比较难懂的书,要想完全看懂并融会贯通,是需要多遍阅读才能做到的,有时需要看3-4遍,采用好的看书方式能够减少看书的遍数,节约时间。
看过的书不要丢,重点和笔记都是宝贵的财富。
五、查找资料
当我们查找资料时,搜索引擎是最快的方式,比如百度、Google、Bing,多尝试几种搜索引擎,有时,一个上搜索不到,换一个搜索引擎,也许就搜索到了。还有一些情况,当你用中文搜索不到时,可以尝试用英文搜索试试,说不定就能有所意外的收获。
官网能够提供权威的资料,是获取资料的比较好的渠道。
从官网上个下载的官方文档,是查找问题时的第一手资料。
当你用以上的方法,都不能解决问题时,可以尝试看看源码,从源码中说不定就能找到解决问题的办法。
六、整理技术日志和技术资料
我们在日常工作中,常常会有许多资料需要保存,并希望随手可得,比如开发环境信息、系统开发指南;开发工具帮助文档、快捷键;各类问题解决方案、各类技术的优秀资料汇总;工具箱、杂货铺等等,这些都需要整理好,并能够很方便地查找。同事有用印象笔记,或有道云笔记,都是非常不错的选择。我现在用的是Typora,可以结构化显示本地目录下的文件,相对比较方便。
七、编写文档的一些心得
技术人员,大多数不太喜欢写文档,但是工作需要,还是有许多时候需要写文档。在写文档方面,分享一下我的心得。
当写一个文档时,先列出提纲,比如我想写5方面内容,那我就先把5先写上。
然后,从自己最熟悉的章节开始填充。
对于其他章节,可以是零星的思维碎片,然后逐渐补充完善。
对于无从下手的章节,可以多找一些参考资料,比如百度或一些文档模板。或者暂时放在那里不写,等灵感来了再写。
注重文档质量:
文档要保证格式一致、字体一致、标题风格一致。
语法、语句要通顺。
不要有错别字。
用书面用语,不要用口头语:比如“机器挂了”应该说“宕机”,“敲入命令行”应该说“键入命令行”。
文档风格能够从一个侧面反映出人的个人修养。
七、提高英语阅读能力
技术书籍和资料大多是英文,官方网站也都是英文,所以不要间断英语的学习,提高自己的英语阅读能力。
尝试去读一本英文技术书籍,开始可能会很慢,坚持读完,英语阅读能力就会有很大的提高。
一本英文新书在国外出版到畅销,差不多半年的时间,然后被国内的出版商关注并引入,请人翻译并出版,差不多又至少半年多时间,到国内的技术爱好者手中,距离新书上市已经一年多的时间,所以我们从时间上已经落后欧美一年多。另一方面,译本的水平也取决于译者对书的理解和翻译的水平,如果仅能反映出原著的百分之八十,而读者又仅理解译本的百分之八十,实际上,仅仅理解了原著的百分之六十的内容,所以,建议大家尝试着看英文原版的原著作品。
八、提高编码速度的心得
锻炼手指的灵活度能够提高编码的速度。
我们手的几个手指的灵活度是不同的,我们的编码速度取决于我最慢的那个手指。
大脑的思维速度和手的打字速度是不同的,多数情况下,大脑的思维速度是比手要快的,所以如果手的速度跟不上大脑的速度,就会拖累编码的速度。
编码速度的提升反过来又可以促进思维速度的提升。
经验证明,编码速度快的程序员的输出可以是编码慢的程序员的3-10倍。
九、努力给自己创造实践的机会
多利用业余的时间去实践,比如看一本书时,可以把书上的代码编写一遍。
工作中尽力多承担一些工作,多创造一些锻炼的机会,平时,可以动手开发一些辅助工具,比如测试工具等。
可以尝试着找一些开源项目,加入开源团队,增加自己的项目经历。
多参加社区活动,拓宽自己的视野。
十、勤奋是技术进步的钥匙
天才毕竟是少数,勤能补拙,勤奋能弥补我们身上其他的不足。
积极去工作。
积极去学习。
积极去实践。
只要我们勤奋努力,坚持下去,定能在技术的道路上不断进步、茁壮成长。