程序员成长之路
本文出于本人职业迷茫期。目前距离身边的各路大神有着很大的差距,但是总体水平还算勉强合格,看网上普通的教程已经没什么大的收获,又不知如何拉近和大神的距离。
所以写下此文,一边梳理思路,总结目前认为如果再给我一次机会重头再来,进步的最优解是什么,一边反思总结使用这些方法,能否让我的职业生涯的技术深度再进一步。
本文适合1-5年Java从业经验的人看。
为什么程序员要持续学习,靠经验累积不行么?
业务领域可以,技术领域不行
举个例子:
20年从业经验的骨科医生 VS 20年从业经验的Spring + struts2 + hibernate + JSP开发的IT技术人员
现在还用JSP做企业开发说一句没什么技术追求应该不算过分吧
所以,由于IT技术行业日新月异的发展,不跟上时代的脚步是不行的,很快就会被淘汰
如何高效的学习
我认为要从熟练使用工具、多听、多看、多读、多写、定周计划几方面入手
熟练使用工具
工欲善其事,必先利其器
人类区别于动物的标志之一是制作和使用工具
磨刀不误砍柴工
一下摆了3个名言来佐证我把这条放在第一的重要性。
工具能极大的提升你的效率,举个例子:不会还有人用记事本写大型项目吧?
以下是我认为比较重要的,需要掌握的工具:
1、笔记类:
人都是会忘的,学了又忘,基本等同于不会。并且如果一味的输入知识,不会输出,也基本等同于不会。“一听就会,一做就错”,都上过学吧,这句话简直太有道理了,听懂了跟你能简洁而准确的表达出来这是两个概念
所以提炼你掌握的技能,输出成文档,有利于构建你的知识体系,便于以后捡起来复习,同时也造福于社会
这里需要掌握三种笔记类工具:
文字类:notion、飞书、语雀、onenote等
思维导图类:知犀、gitmind、xmind、飞书、幕布等
各种画图工具:dram.io、Visual Paradigm、processon、亿图图示等
2、开发工具类
idea是不是只会写代码,运行,debug?
idea那么多菜单、选项、快捷键都知道是干嘛的么?
idea有哪些插件能进一步提升效率?
linux命令会多少?只会cd ls grep?
出了线上问题,别人可能3分钟就定位到问题了,你对这些开发常用的工具都不熟的话,你要多久?
3、语言工具类
Spring、SpringBoot、SpringCloud都掌握了么?
Java自己的stream流、lambda表达式、还有其他的第三方工具包:guava、Apache的工具包等,避免重复造轮子的工具包会用么?
以上不是说要求看源码,要能自己实现一个的要求,就是熟练使用,有做到么?当然,能精通自然是最好的
多听
多跟身边大牛聊天,多听一些讲座,听人吹牛逼
起码你知道有这么个东西,要是更进一步,能听到这人在说什么,再进一步,听出来这人有没有错,错在哪,更好的解决方案是什么
多看
看视频、看新闻、站在巨人的肩膀上
视频网站:YouTube、Pluralsight
新闻:Hacker News、thenewstack.io、medium.com
多读
读书,书单网上一搜就有很多,不再赘述
多写
定期刷题、时不时写点小的项目demo
定周计划
计划要结合自身情况,定一个能长期坚持下去的计划,都完成了下周可以加,完不成下周就减。长期坚持比短期做了很多,心理很抗拒周计划来的强。
这是我在阿里995情况下的周计划:
两篇技术文档——1小时
产出一篇学习文档——2小时
leetcode一到2道题——1小时
新闻、视频——1小时
写小项目——2小时
每周共计7小时(2小时输入5小时输出),就这都完成的很困难,唉,在阿里真是忙,感觉提升速度慢了好多好多,所以这也是我迷茫期的原因之一吧,唉。。。
共勉吧大家