工作前三年是职业生涯中成长最快的几年,在这段时间里你会充满激情,做事专注,也容易养成良好的习惯。在我们公司有些同学在前三年中就快速成为某一个领域的技术专家,有些同学也可能止步不前。本文和大家一起探讨下如何在三年内快速成长为一名技术专家。
学习方法
1:掌握良好的学习心态
2:掌握系统化的学习方法
3:知识如何内化成能力
4:广度和深度的选择
实战技巧
1:你需要学会的编码习惯
2:在业务团队做开发如何成长
掌握良好的学习心态
空杯心态
挑战权威
坚持学习
把事做精
掌握系统化的学习方法
如果学习到的知识不成体系,那么遇到问题时就会非常难解决。有些同学会出现这些情况,比如编码时遇到问题百度搜索,如果百度上找不到答案,这个问题就解决不了。再比如,在开发中要用到某个技术点,就学习下API,程序调通后就不再深入研究,浅尝辄止,如果程序遇到其他问题也不知道如何解决。
以上情况我认为叫点状学习。遇到一个问题,解决一个问题,需要一项技术,学习一项技术。那么如何由点到面,由面到体,形成系统化学习呢。
首先要确定学习的知识领域,需要达成的学习目标,针对目标制定学习计划,就像你要写一本书一样,先把目录写出来,然后根据目录上的知识点逐步去学习,最后把这些知识点关联起来,形成一个系统化的知识体系。学习的时候,可以制定一个计划,以周为单位,比如第一周学什么,第二周学什么。
比如我最近在学习人工智能,学习步骤是:
1: 高数基础知识:线性代数,微积分和统计学。最近在打德州扑克时,我也会用统计学里的知识计算下输赢的概率。
2: 人工智能基础:买几本书人工智能的基础书籍,如《机器学习基础教程》《Python机器学习》
3:框架:TensorFlow等。
4:实战:在工作中找到一个应用场景,把学到的知识运用进去。
知识如何内化成能力
作家格拉德威尔在《异类》一书中指出,1万小时的锤炼是任何人从平凡变成世界级大师的必要条件。1万小时有多久?每天学习10小时,需要大约三年。但是很多人都工作了五年甚至更长,但是为什么成为世界级大师的却非常少。读者可以先自己思考下这个问题。接下来谈谈我的看法。
成长必须经历一个步骤,就是把知识内化成能力。知识是用脑记住的,能力是用手练习出来的。在工作的几年里,我们可能看过很多书,听过很多技术讲座和视频,但是通过听和看只是让你能记住这些知识,这些知识还不能转换成你的能力。
听和看只是第一步,更重要的是实践,通过刻意练习把听到和看到的知识内化成你的能力。
刻意练习,就是有目的的练习,先规划好,再去练习。首先给自己定一个目标,目标可以有效的引导你学习,然后使用3F练习法:
1: 专注(Focus),专注在眼前的任务上,在学习过程中保持专注,可以尝试使用番茄工作法。
2:反馈(Feedback),意识到自己的不足,学习完之后进行反思,思考下自己哪些方面不足,为什么不足,
3: 修正(Fix),改进自己的不足。
不停的练习和思考可以改变大脑结构,大脑像肌肉一样,挑战越大,影响越大,学习更高效,并且也会产生突破性。
广度和深度的选择
技术人员的学习路径有两个维度,深度和广度。很多程序员都有这个疑问,是先深后广,还是先广后深呢?
通过这么多年的学习和思考,我的建议先深后广,因为当技术学到一定深度后,就会有触类旁通的能力,自己掌握的广度也自然有了深度。但是在实际学习过程中,深度和广度相互穿插着学习,比如学习并发编程时,首先学习JDK源码,然后学进去之后,开始看JVM源码,最后看CPU架构,在技术点逐渐深度研究的过程中,广度也得到了完善。
所以无论哪种学习方式,学习态度才是最重要的,在广度学习的时候有深入研究的态度就能达到一定的深度,在深度学习的时候,主动学习相关的技术点,广度也得到拓宽。
1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。
2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。
3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加群。
4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加群。
5. 群号:高级架构群 647631030备注好信息!
6.阿里Java高级大牛直播讲解知识点,分享知识,各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!
在业务团队做开发如何成长
我一直在业务团队中做开发,在业务团队最主要的提高的能力是业务抽象和架构能力,通过业务场景,不断思考如何通过合理的架构和业务抽象能快速支持业务,降低运维成本。同时在这个过程中锻炼技术能力,比如写一些技术框架来快速支持业务,做到技术驱动业务。
可配置化的方式支持业务
设计业务的领域模型,把不随着业务逻辑变化的领域模型做成系统能力,把随着业务逻辑变化功能,做成可配置化,上一个新业务,通过配置的方式或少量开发就能支持。
在做客户后台功能时,由于需要展示的数据种类非常多,每种数据展示可能需要花费几天的时间,所以设计了一个通用的技术框架,实现了通过配置化的方式展示各种数据。
写框架解决业务问题
我在上家公司经常做一些CRUD的业务功能,我就自己开发了一个快速做CRUD的框架 jdbcutil,通过配置实体生成SQL语句,实现了子类只要继承父类,就自动拥有CRUD的能力。后面还写过生成CRUD页面代码的程序。
目前我们团队在做的TITAN框架通过模块化开发的方式,解决易变的业务系统在多人开发时遇到的问题。
技术驱动业务
在业务团队,一定要不断的思考如何利用技术来支持快速支持业务,配置化是一种思路,但是有些功能配置复杂度比较高,配置加验证的工作量,可能需要一个星期的时间,那么能不能减少人工配置,实现系统自动化配置,于是可以研究下人工智能,通过人工智能的方式实现,系统告诉人需要配置哪些东西,然后交给人来进行确认,这样可以大大减少人工成本,更快的支持业务。