本文不讲“时间就是生命”之类的套话,而是会量化地直观地描述时间对程序员的价值。在高效利用时间的方法方面,也不会讲“合理制定计划,然后再执行”之类的对每类人都适用的方法,而会专门讲述针对程序员的时间管理方案。
1 对初级Java开发而言,学习能带来的其实收益不多,但必须得学
一般而言,本科有1年经验,可以算得上初级开发,再做个2到3年,一般就能达到高级开发的工作年限要求,但是!
最终完成升级,不能仅凭工作经验的积累,还得通过升级认证(即成功通过高级开发的Java面试)。本人一直在做技术面试官,也经常帮助初级程序员升级通过面试。
根据社会上普遍的实践经验,初级程序员估计最少需要150个小时的学习积累,即可掌握高级开发的面试技巧,(Java Core估计30个小时,数据库估计30个小时,Java Web估计30个小时,优化类估计30个小时,准备简历总结面试经验估计30个小时),这况且还是最低标准,如果总结再充分些,各方面条件也再好些,估计累计准备个200小时,就能直接进到大公司了。这些我倒不是拍脑袋想出来了,根据我的实践经验,我整理出一本书,java web轻量级开发面试教程,不少技术面试官和技术讲师都能认可这个观点。
我找了份工资统计数值,目前(2018年5月),1年java开发(初级水平)工资大概是10k,而完成升级后的高级开发,工资在13到15k左右。
也就是说,按平均水准,初级程序员用了150个小时学习后,涨的工资哪怕按一年来算,一年能多拿3600,平摊到150小时的学习时间,大约每小时的收益是24元。(看似不多。)
但话说回来,如果不用这150小时学习,那么该程序员也就一直停留在3年经验的能力水准上,从上图来看,初级开发的工作年限的上限是3年,工资上限是12k,哪怕工作了5年以上,如果能力不达标,依然是初级开发,而5年经验高级开发的工资能将近20k,这一来一去的差距就大了。
2 对高级Java开发而言,学习带来的收益就不可计量了
工作经验满3年的java高级开发,其实工资差距并不多,一个月的差距估计也就在5k左右,但是!
5年左右经验的高级开发,工资差距就有可能拉开了,均价是20k,如果有些程序员特别卖力,学习时间比较长(估计也就200小时),工资能达到30k左右,这样一年的差距就12w,按此计算,每小时的学习收益是600。
7年开发经验的平均工资估计在25k,但如果能升级到架构师(学习时间在300小时左右),工资就能达到至少50k,这样一年的差距就25w了。每小时的学习收益将近有850。
这都是按平均水准来算的,如果学习效率再高些,一年学和不学的差距甚至能到35w,这绝不是夸大,在职场中这些案例比比皆是。
3 高级Java开发升级到架构师的学习明细账
刚才我们提到了高级开发升级所需要的具体时间,这里我们列个明细账。
1 用大约10小时的时间,了解架构师所需要的技术点,以及常规的学习路线。
2 用50个小时的时间,学习Spring Cloud各组件,因为这是个微服务架构,通过学习这部分的内容,能感性地认识架构师要干的活,比如负载均衡,容错保护等。
3 用大概40到50小时,了解基于Dubbo或其它架构的框架实现,比如怎么实现模块间通讯,如何实现秒杀系统。
4 最后再用50小时,了解一个真实的案例(如果找不到就看书,或者干脆上网上买),吃透了,就可以准备面试了。
5 随后就不断面试,在面试后花时间不断总结和提升。
4 时间价值方面的总结&举例说明(不是结尾)
学习能带来收益,这点毋庸置疑,但大家在计算时,应当同时把“不学习造成的损失”考虑在内。
比如某程序员工作4年,但不上心,能力始终停留在初级开发阶段,工资是1.3w,看似达到初级开发的高点了,但别人4年经验的,或许已经升级到高级开发了,工资能到16k了,一来一去的损失就是3k了,更何况,这位程序员同时还失去了进一步升级的基础,如果停留在初级阶段,工资升级到2w以及以上的可能性基本没有,这同样是损失。
这里,再根据我切身体会和我看到的情况,说下合理利用时间能带来的收益。
1 java web轻量级开发面试教程 这本书,写了6个月,大概用时360小时,账面收益1.5w,间接收益(比如名气、写作能力的提升以及能进一步帮我提升能力)不可限量。
2 我目前在写spring cloud的书,估计也是用时360小时,但能帮我夯实架构师的基础。
3 在博客园里,写一篇能进48小时排行榜的文章,估计需要1个小时,如果要写篇能上推荐榜的,估计得3个小时,时间用上去了,能提升知名度。
4 我见过一个java培训师,从0基础(上讲台磕磕巴巴)到资深(被别人抢着要),他也就最多也就100小时练习讲课技巧和归纳讲课内容。
5 再啰嗦一下,我见过大量初级开发,也就用3个月时间学习(有效学习时间150小时左右),然后面试进更好的公司。
6 高级开发层面,哪怕技术没提升,也就用50到100个小时看面试技巧和不断面试总结,大多都能成功跳槽,工资至少提升20%。
5 如何高效利用时间学习(早起篇)
一日之计在于晨,这句话绝不是白说,大家一定有切身体会,同样是学习,晚上10点到11点和早上7点到8点的学习效率绝不相同。那我们能早起吗?绝对能,只不过现在不肯了。
早上6点半,学生们(祖国的花朵)大多起床了,开始洗漱,准备上学。此时程序员们估计大多还在梦见周公。
早上7点到8点,路上见到的大多是背着书包上学的孩子们,而此时,估计程序员的闹钟开始响第一次了。(估计不少会被直接忽视)
早上8点到8点半,学生们都已经开始上课了,而程序员可能就不得不起来了,然后早饭也来不及吃,直接往公司赶。
早上8点半到9点,一些老油子,不对,是老法师,开始出门了,这些人可以10点前到公司。
这样一算,早上哪有学习时间?好的剧本应该是这样:6点到6点半起床,7点洗漱完毕吃好早饭,用半小时到1小时学习,8点出门,这样身体也好,学习效率也高。其实我们读书时也都这样过来的。
怎么做到这点:
1 晚上尽量10点半前睡觉,如果可以10点最好。
2 如果确实有必要,比如公司开会要加班,那没办法,如果可以,免去些看连续剧和刷手机的时间,当然不是不放松,而是不能沉迷。
3 睡前如何放松,有专门的文章,这就不说了。
4 关键是毅力,如果没,就想下做到的好处(能涨工资)和做不到的坏处(钱会少)。
6 如何高效利用时间学习(利用碎片时间)
我们每天都会用足量的时间刷手机,我也会。
现在我会每天带本书,地铁上,工作之余看会。
总结下来比较好的经验是,路上以及上班闲暇,看书,同时摘录要点,晚上到家后,用1个小时运行代码,如果可以,边接本书,边学边写,这样学习也就有出版社卖单了。
7 利用周末,更为高效的学习,同时可以变现学习的收益
我们没有必要用头悬梁的学习方法,但得好好利用周末。
周末可以放松,也可以偶尔开启混吃等死模式,比如10点起来,看个新闻,吃午饭了,睡个午觉,玩游戏,到晚上了,再出门逛一圈,又睡觉。但不能长久。
我们周末可以这样安排:
1 看各大招聘网站,看下我的升级目标,同时看下这些职位的具体要求。
2 对此找些学习资料,指定学习规划,或者可以看些视频资料。
3 周末的时间比平时晚上要多很多,所以可以到网上下个项目来学。
当达到一定水准后,就可以利用周末时间找点活干挣点外快。比如出去讲课,到各网站上接点活,或者干脆接本书来写或者翻译。
8 总结
本文提到的合理利用时间,有个前提是勤奋:在这基础上,才肯花时间学习,才能进一步谈“合理利用”。换句话说,不少程序员不是不知道时间的重要性,也不是不知道合理利用时间的方法,而是不肯,说穿了就是不勤奋。虽说世艰不拆,但毕竟良药苦口。
如果说头悬梁锥刺股的勤奋度是100分,而不工作啃老算0分,下面列些各种勤奋度的标准。
1 还能找工作养活自己,哪怕是工作中一直得过且过,敷衍工作,不及格,但能给到50分。
2 能在工作中,主观上想把事情干好,比如积极防治空指针,但工作之余不积极学习,能给到60分。这种人的公司水平会远低于行业标准。
3 工作之余能学习,有一定的上进心,能给到60到70分。这些人一般能完成准时升级,比如3年后能升级到高级开发,6年后能升到架构师。这些人的工资会和平均标准差不多,但不会高多少。
4 平时积极学习,能力优于行业平均,能给到70到80分,比如某人3年后,不仅能达到高级开发,而且还能进大公司,或者虽然只有3年经验,但能力看上去有5年。
5 不仅能积极学习,而且能通过不断总结和实践,学习很有成效,在某一领域成为技术大牛,比如能在6年左右就能玩转高并发架构或大数据架构,这些人的勤奋程度能达到80到90分,这些人的工资估计能是平均工资的n倍(n至少是3)。
6 至于90分以上,这些本人没机会膜拜,想象下,如果在国内高考,达到这种勤奋度的人能考上清华吧。
按此标准,本人的勤奋度估计是75分,和大牛相比,依然有差距。
大家也可以参照下自己的分数,还可以进一步采取措施提升勤奋度。
其实,本文提到的勤奋,学习方法和学习态度都是虚的,真正做到了收益的是自己,本人写这篇文章的动机也是时时提醒自己不忘初心,如果还能让勤奋的读者进一步提升勤奋度,那么也算额外的收获了。