写点什么

1-3 年的 Java 开发工程师看过来,论程序员成长的正确姿势

用户头像
Geek_79e16d
关注
发布于: 10 小时前

我听到的一些发声

你们赚的钱已经可以了:


我一个发小是做土木工程的,上海大学博士,参与很多著名建筑的工程,但是从薪资上看,还不如一些稍微像样的公司的 6 年多的高级开发。为什么?这就是行业的红利,个体是享受了这个红利。所以说我们做 IT 的,应该感谢马云,雷军等等他们。


某转管理的程序员:


有时候我也挺迷茫的,到底走技术路线还是管理路线。技术路线吧,又没有那么多时间。也许是借口,有时候有时间,但人是有惰性的,就……这个年龄确实需要些管理能力了,毕竟项目不是一个人搞定的。我们在招人时确实对他们有管理能力的考虑,因为你想,一个在小公司做那么久的技术,一定对周围的同学有些影响力,然后一般就会带团队。

危机的根源

我一直相信这样一句话:真正的危机,来源于在正确的时间做不正确的事。没有在正确的时间,为下一步做出积累,这才是危机的根源。


比如,当你迈过了 30 岁这个坎,你的能力还局限于程序的范围,也没有积累好自己的深度以及视野。如果真是这样,我想我一定会每天夜不能寐,每天唾骂自己,你特么究竟每天在干神马。


我也一直相信这样一句话,当你把你的眼泪流干了,你唯一剩下的就只有行动,只有行动和努力了。



如果你正在这条成长路上的朋友,晚醒不如早醒,这就是我想说的。**千万别等到中年才发现自己没有建立好自己的护城河,这个时候才知道努力。**在自己努力的阶段,不仅不努力反了选择了纵容自己,这才是危机的根源。

一条正确的人生规划路线

我就是一个土生土长的程序员,最早做的前段开发(第一代 css、js 程序员),然后开始转做后端开发 Java,又转到架构师以及管理,然后再做产品…以下就是我从有限的 10 年左右提炼出的部分建议。这些也许对你来说不一定有用,但一定是发自我内心的建议。



23-27 岁:技术积累阶段


假设本科 23 岁毕业,那么工作的前 5 年对你来说就是打基础的阶段。在这 5 年时间里面,你要积累足够的技术底子,打磨自己的技术实力,成为某一个技术细分领域的牛人。


我自己依然记得当年这样的场景:蹲在出租房里面每晚每晚的啃技术文档,在公司连续打地铺干通宵的场景。


只有真正经历过贫穷,经历过苦难的人,才会越早就懂得努力才自己这一生唯一的出路和唯一的机会。忘了谁说的了,大概就是这个理。


27-30 岁:形成思维方法论和知识体系的阶段


当你积累足够的技术实力,例如超过 10 万行代码以后,你应该形成了自己的思维方法论和自己独立的学习技巧,任何新的技术在你眼中都能迅速的看到技术的本质,快速吸收成为你的知识体系的一部分。


你只要前一个阶段打的基础足够牢固,这个阶段你一定会开始蚕食别的领域,这是一定的。逐渐的不再满足于纯技术领域的探索,而是开始探索技术背后的事情:什么技术在什么样的场合能够发挥最大的价值;技术团队应该怎样构建;技术在公司未来的价值?创业公司对技术的需求?支撑技术的产品,怎样学习做产品?支撑产品背后的运营体系是怎样建立的?商业社会对技术、产品、运营等的是怎样的认知,商业社会有什么的特定规律?也许还有更多…


在这个阶段,积累技术对你来说简直是小菜一碟,你更需要磨练的是思考能力,形成自己的思维方法和知识体系,这将是你帮助你一生的武器。



30-33 岁这个阶段,最关键的是了解自己。知道自己擅长什么,自己的优势在哪里,怎样才能够最大化自己的价值,同时也知道自己有什么重大缺陷。未来是扬长避短还是不断避免自己的缺陷,这些需要提前想清楚。

如何打破 35 岁魔咒?

古人云:生于忧患,死于安乐。


  1. 现有岗位上玩命干。就是要用牛逼的技术搞定别人口中的难题,就是要加班完成时间紧任务重的项目,业界不服不罢休。

  2. 跳槽。问下自己要多少钱,那些公司给得了,自己有别人要求的这些技术与管理能力没。没有就好好学,有就投简历吧。


程序员常见发展路径有两种:管理路径、技术路径,以下


你适合学什么?2.你需要学什么?

1、阅读源码


阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是如何写代码的,从而吸收大牛的代码功力**。在阿里面试中,MyBatis,Spring 等框架的底层原理是经常会被问到的**



2、分布式架构


阿里巴巴有很多大团队,这种大团队里有很多小团队,到小团队之后,做的业务都不相同,如果想立足成为一线互联网公司中的万能选手,最主流的分布式架构中有很多知识都是必须要去了解与学习的。并且在阿里面试过程中,面试官会问到实际应用场景的问题:比如微服务化、用户量、并发量、业务复杂度以及可扩展程度等,这里不多赘述。本屌提供一个分布式架构的学习思路也是自己目前还在学习中的体系:



3、微服务架构


微服务是现在互联网架构技术中最火热的话题之一,也是本屌目前正在学习研究的方向。在阿里面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术,小编给自己制定了一个微服务技术的学习计划:



4、并发编程


并发编程几乎是所有互联网公司面试必问问题,并发编程是 Java 程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。目前网上没有系统的全面的并发编程学习大纲,我搜集了很多资料总结出来一个最全面的学习大纲:



5、性能优化


性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环,本屌在性能优化这一块虽然不能算专家,也可以自信的说是精通了



6.设计模式


设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。



作为后端 Java 过来人,小编是整理了很多进阶架构视频资料、面试文档以及 PDF 的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料

最后

手绘了下图所示的 kafka 知识大纲流程图(xmind 文件不能上传,导出图片展现),但都都可提供源文件给每位爱学习的朋友,获取链接:戳这里免费下载



用户头像

Geek_79e16d

关注

还未添加个人签名 2021.07.01 加入

还未添加个人简介

评论

发布
暂无评论
1-3年的Java开发工程师看过来,论程序员成长的正确姿势