阿里技术专家斗胆给所有刚毕业的程序员七个建议!
前几天跟我的一个下属聊天,刚刚毕业的校招生,进入公司还没3个月。当问到他对自己未来规划的时候,能明显看到她略显迟疑,露出尴尬的表情,然后吞吞吐吐的冒出几个字:我也不知道,就把自己工作干好。
能够感受到他对自己未来很迷惘,甚至根本没有想过自己路要怎么走,更显然没有规划过自己的未来。可是,转念一想我何尝不是这样一步步走过来,我太能理解他们的这种无助感。
看见她,有一种时光倒流的感觉,他们身上有自己的影子。突然想起了我当年在大学中的整夜宿舍游戏的潇洒;想起了冬天早上逃课睡觉,和老师们斗智斗勇签到,惊心动魄的经历;想起来了自己意识到一无所长时,奋战考研,但又经不住游戏诱惑,书本一周只翻一页的堕落学习;想起了毕业时无处可去时,一个人在只有4平方出租屋里默默流泪,痛下决心,努力学习,提升能力的奋斗。
回顾自己毕业到现在,也差不多7年时间了。一路走来,有过兴奋,有过困难,有过伤心,感受百味经历,我想这才是人生吧。
每经历一次困难,都会成长一次,总结毕业后的7年,也是自己成长的7年,下面7点建议,希望对刚刚毕业的你们有所启发。
提升专业技术能力
专业能力是职业生涯的起点,比较容易意识到的。如果把事业比做造房子,那专业能力就是房子的地基了,是起点也是基础。
以我自己的作为反面例子,大学里为了打游戏将专业课抛在脑后,有句话说的好“出来混,迟早是要还的”。果然在毕业后,为了填大学里埋下的坑,老老实实的重新把大学专业课在半年内全部看了一遍,在工作中还把课后的练习题全部操作了一遍。所以大家千万不要向我学习。
有同学就会问了,“既然专业技术能力这么重要,那应该怎样提升?”,那下面我分享下我自己的学习方法。
1. 循序渐进
专业技能方面分为:基础篇、提高篇;学习也需要循序渐进,切不可一口吃个大胖子,容易消化不了。先从基础的知识开始,例如:计算机网络(打好网络基础);计算机语言相关书籍(打好计算机语言这门工具基础);《深入理解计算机系统》(这本书强烈推荐,可以带你畅游计算机系统架构。涉及程序的机器码、汇编,处理器体系结构,存储器结构,系统IO,网络编程,并发编程,以及程序性能的优化);数据结构与算法(程序的本质就是数据结构+算法)等等。
(书籍电子版PDF教程小编都有所整理,几十万字,上千页篇幅的教程合集:计算机底层+操作系统+网络协议+Java技术核心知识+算法)需要的点击即可免费获取
基础知识已经熟练掌握之后,可以去试着提高技术能力,例如试着去掌握设计模式、架构设计、底层系统原理、性能调优、高级调试技术等等。
学习途径可以通过:书籍、网络资源、技术大牛、技术沙龙等等。如果有技术大牛能带着你,可以少走很多弯路,尽量多跟技术大牛交流,相信我可以学到很多。
2. 以点带面
这种方式,是我非常推荐的一种学习方式。
工作中,往往只需要集中全力解决一点或几点问题就可以了。但这些点背后一定有一个较完整和深入的知识结构。所以,工作做完后,还需要继续学习背后的知识结构。以网络编程为例,15年时候做了一个工具,设备发现的工具,利用的udp多播的技术,很快就顺利的开发完了。但是学习还刚刚开始,里面有很多可以深挖的技术,从udp扩展开,可以延伸到网络技术的各个角落,从用户态到内核态,从API到具体实现方法,从数据结构到算法,这是一套完整的知识体系。所以,我觉得不管读者是在开发自己的产品也好,还是在修改bug也好,一定要努力从工作中提炼、积累出一个完整的知识框架。
这个方法说起来简单,做起来还是有点困难。因为它要求工作之后还得投入大量时间学习,把知识点串成面。而且,学这些知识的好处一时半会很难体现,需要耐心。
知识就像财富,是需要慢慢积累的。
3. 重实践
“明明认识这个字,但是就是写不出来”,我相信每个人都遇到过。专业技能和写字是一样的。往往有时候觉得自己掌握了,但是表达不出来或者写不出来。举个例子:排序算法中的堆排序算法,很多人原理是知道的,但是要通过代码表达出来,不是所有人都能写出来的。
珍惜时间
时间就是生命,这是大家常常挂在嘴边的话,但是是否真的付诸行动,珍惜时间了吗?我觉得珍惜时间做到适度的“减少”和“增加”。少刷电视剧,没营养;少打游戏,少刷抖音、快手、小红书。多看书、多学习、多锻炼身体。
1.时间管理
道理大家都懂,但是做起来是非常难。
根据四象限法则,我们将事项分为4个类型,各自在不同的象限。紧急又重要事项、重要但不紧急事项、紧急但不重要事项、不紧急也不重要事项。正确的做法是将焦点放在重要但不紧急事项上。第四象限的事件大多是些琐碎的杂事,没有时间的紧迫性,没有任何的重要性,这种事件与时间的结合纯粹是在扼杀时间,是在浪费生命。
提升认知
你所赚的每一分钱,都是你对这个世界认知的变现,你所亏的每一分钱,都是因为对这个世界认知有缺陷,这个社会最大的公平就在于:当一个人的财富大于自己认知的时候,这个社会有100方法收割你,直到让你的认知和财富相匹配为止。可见提升认知是多么重要。
低级认知能力:识记,理解,应用。例如面对一条你熟悉的数学公式,你知道这条公式是代表什么,同时也能够理解这条公式是针对什么情况去应用,而你确实能够应用出来。
我们大部分人,都能够掌握这种低级认知能力,帮助我们很好地生活。否则你连出门买菜都不会了,就太不正常了
高级认知能力:分析,评判,创造。例如我们面对某件事情,我们能够把一些看似凌乱的知识点归纳总结起来,找出背后的核心原因。
通过深度分析,运用批判性思维,对其进行审视。最后在这个基础上,创造出属于自己的东西,诸如理论、方法论等等。
那问题来了,怎样提升自己认知能力呢?
其实老祖宗已经早就告诉我们了:三招:读万卷书,行万里路,阅人无数。读万卷书的理解是:扩展自己的知识面、知识边界;广泛的涉及其他领域的知识。行万里路的理解是:多出去走一走,感受不同区域的风土人情、人文景观。阅人无数的意思是:多和不同领域的同事或者同学交流,了解不同领域的知识,提升自己知识储备。
勤总结
每一次的总结都是自己对过往工作的复盘,在复盘中,会把事情的经过理一遍,理清楚计划和目标是什么、中间的过程怎么做到的,或者中间出了什么问题,为什么没有做到,理一遍后,下一次再做的时候就能吸取这次的经验,成功的继续发扬,失败的以防再犯。
一句话,总结是进步的阶梯。
多看书
为什么书籍这么重要?为什么我推荐大家多看书,看好书?因为书籍对我们人类来说太重要了。书籍是人类知识的沉淀,中华上下五千年历史都记载在书籍中。书中汇集了作者的思想、见解或想表达的情感,这些都是成体系的。看书的过程就是融合和消化的过程,能很好的帮助自己形成独立的见解。近两年炒的火热的碎片文知识,在我看来只是泡沫知识。
举个例子:如果你要学习c++,那么最重要的学习途径的不是网络文章、不是几个简单培训视频,而是一本专业的c++书籍。
找到人生理想
在刚刚毕业时,大部分人还不知道自己目标是什么?擅长什么?但是人生理想不能没有,就像黑夜中大海上的灯塔,如果没有了他,人生这条大船只能随波逐流。
在文章的最开始,那个例子就是典型,包括我自己毕业时的状态也是。感谢残酷的社会,让我认识到竞争的残酷。毕业之际找工作处处碰壁,心灰意冷的我,我静下心想了一个星期,确定了自己的人生目标。为了实现人生目标,我给自己设定了几个小目标:3年、5年、10年目标。
我先去了一家创业公司,是做智能机器人,带队的是浙大航天学院的一个副教授,擅长机器视觉。这是我实现目标过程中的选择,我到现在都觉得是一个正确的选择,也感谢当时给我机会。这里的氛围是科研氛围,感觉能够学到东西(虽然工资很低,但是当时没有考虑薪资方面,有自知之明,管饱就行)。然后就是每日每夜的看书,弥补自己的大学欠下的债。晚上9点下班,骑车回家,洗漱好,10点钟看书到12点睡觉。早上7点起床,看书到9点,骑车上班。甚至不放过吃饭时间——边吃饭边看书,这样的状态一直持续了3年。现在的我正在实现10年目标路上。
我还记得毕业时,班主任在我离线时,对我说了一句话,至今还记忆犹新,送给你们“什么时候努力都不晚”。
突破舒适区
很多人工作久了,就会进入了一种安逸的状态。每天按照既定的时间到公司,维护着自己非常熟悉的模块,吃着已经顺口的饭菜,顺便带薪拉屎,这种安逸生活让人陶醉。大家都知道温水煮青蛙的故事,可此时不就是温水中的青蛙吗?
那怎样突破自己的舒适区?
1. 设立高标准
随着社会的发展,技术也在日新月异。逆水行舟不进则退。时刻保持危机感,设立高标准,严格要求自己。经过多年的总结,形成了一个方法,我称之为:n+1。n代表你要完成的任务,1代表你需要做的突破。
举个例子:领导有一个功能需要开发,你需要交付的成果物不简简单单将功能开发完成。而是将此功能开发完成,并且要考虑到程序的稳定性、健壮性、兼容性、扩展性、可维护性,追求极致,严格要求交付成果物的质量。
2. 责任突破
很多人存在着抱怨不给机会,一直做没有任何难度的事情。事实真的是这样吗?领导永远是把困难给到有能力且有担当的人身上,你应该逆向思维,反思自己。
勇于承担责任,承担困难任务,不要当缩头乌龟。当你学会了走路,就要想学着跑步,当你学会了跑步,就要想着到水里,学着游泳。
3. 养成学习思考的习惯
长时间处于舒适区会让我们大大减缓进步的速度甚至停止进步,进入一个故步自封饱和的状态。然而,月盈则亏,水满则溢,我们需要时刻空杯。
总结
上面7个建议,是我工作这么多年下总结的经验,希望能够帮助到大家。刚毕业的你们还很年轻,你们最大的财富就是年轻。不要怕犯错,但不可重复犯错。以上共勉!
适合Java开发补习底层的教程合集(书籍电子版PDF教程小编都有所整理,几十万字,上千页篇幅的教程合集:计算机底层+操作系统+网络协议+Java技术核心知识+算法)需要的点击即可免费获取
见图
适合Java开发补习底层的教程合集(书籍电子版PDF教程小编都有所整理,几十万字,上千页篇幅的教程合集:计算机底层+操作系统+网络协议+Java技术核心知识+算法)需要的点击即可免费获取