工作前三年是职业生涯中成长最快的几年,在这段时间里你会充满激情,做事专注,也容易养成良好的习惯。在我们公司有些同学在前三年中就快速成为某一个领域的技术专家,有些同学也可能止步不前。本文和大家一起探讨下如何在最短的时间内,快速成长为一名技术专家!月薪直接翻倍爆增!
1 别怕出问题,但出了问题以后,一定要通过看日志和debug等方式,刨根问底找到原因,然后下次别再犯类似的问题。
2 除了写代码之外,更要关注测试,部署,架构设计等技能,尤其要注重(数据库,代码或jvm)调优技能。
3 遇到产线问题,不管是不是自己管的,都去关注。哪怕本次无法解决问题,其他人解决后,一定要复盘,这样就会不断熟悉代码和技术。
4 初级程序员除了会写增删改查的业务外,一般会不知道自己怎么提高,比如不知道自己该看哪些方面的技能。此时你就看,公司里公司比你高的程序员会什么技术,或者大厂高级开发或架构师需要什么技术,这些就是你要学的,这样就能明确努力方向。
5 初级开发阶段,你可以按如下的思路决定你当下的学习路线:哪些技术能在最快的时间内帮你进大厂,这些技术就是你的学习方向。学习路线可以是高并发分布式组件,但不是唯一的。决定好学习路线后,就能明确该路线里待学习的要点,此时你可以买2,3本这方面的书,这样就能知道如何系统学相关技能了。
6 初级开发阶段,理论知识,比如操作系统,编译原理,设计模式等,这些是虚的,可以项目里用到再去看,平时不用费太多精力去看,而要看这个领域高薪所需要的技能。
7 学任何技术,首先都要搭建一个开发环境,边敲代码边学习,通过光看理论,一定学不会。哪些技术该学,前面已经说过。学的时候,还是建议你买书学,而不是通过网络学,因为网上资料虽然可能正确,但未必成系统,同时你无法确保网上代码一定能运行。相比之下,书上的技能第一成系统,第二代码大概率能跑通。
8 当你感到,在当前公司没有可学的值钱技能时,应毫不犹豫地考虑跳槽。跳槽时不仅得考虑工资,更要考虑平台。要知道,大厂和好公司的程序员提升起来很快,因为大厂里用的技术一般都很值钱。或者这句话可以理解成:初级程序员为了提升,最具有可行性的方法,或者是最快捷的方式是,进大厂。
9 不仅得熟悉实际的开发技能,更要重视面试技能,面试技能可以通过多参加面试来提升,所以初级程序员哪怕不想换工作,也可以经常去参加些面试,这样至少能知道学习的方向。
10 提升的时候,一定要选一个方向,方向可以是Spring boot后端,前端,python数据分析,python机器学习等,怎么选自己定,但一定只能选一个方向,别想多个方向同时发展,因为这样的话,大概率不能学精。当下只有把一个方向学精,才能得到高薪。
对于初级程序员的十点提升建议,就全部总结清楚了,如果你练初级都算不上,可以拉到最后,总结给你足够惊喜!接下来就是至关重要的:程序员的十个打习惯!
在项目里,无论使用新的 jar 包,还是用新的中间件,一定要去看官方文档。
现在网上的技术文章鱼龙混杂,再加上国内那个不咋地的搜索引擎,所以在网上搜靠谱的技术文章,就相当于在屎坑里捞金子。
比如,如果你想要对 SpringBoot2 写的代码进行单元测试,JUnit 版本你可能已经是 5 了。但你搜到的网上文章很可能会告诉你测试用例需要注解:
@RunWith(SpringRunner.class)
但是官方文档说了,其实如果你用 JUnit5,就不用加这个注解了,加了反而可能引起不必要的冲突。
所以,官方文档对新技术的引入是唯一的参考金标准。
在职场上,什么样的人才能快速成长、快速得到重用?答案是可靠的人。
那就程序员来说,什么样的人才算是可靠的人?答案是交付可靠的技术产品。
那可靠的产品第一评估标准就是 bug 少。这个 bug 少是别人评估的,而不是自己评估的。
无论咱们自己代码实现成什么样子,哪怕是代码写的还不完美,但是,只要咱们通过自测,在提交之前尽可能把问题解决掉,让别人少发现你的错误,尤其是低级 bug,那么你才是一位可靠的程序员。
所以,交付任务前,一定要自己把代码全方位地测试一遍,保证自己有着优秀的口碑才好。
我们打日志的目的是什么?是为了定位问题的。
问题有哪些?其实大体就两种,逻辑问题和性能问题。
逻辑问题,我们如果打印了输入和输出,那么根据业务规则,这么一对照就能很容易定位到问题。
性能问题,我们无论是通过像 grep、sort 等 shell 命令去直接对日志做个过滤加排序,还是通过日志搜集加日志搜索等工具,都能很容易的发现到问题。甚至还可以和监控系统联合起来,直接做预警。
所以,打日志的时候,我们要记得把输入和输出以及时间都打印出来。
Git 这东西太重要了。现在的团队开发,用 Git 管理各种代码版本,代码分支。如果你用不好 Git,很容易就会因为合并代码、升级版本等情况,产生出许多没必要的 bug。
一个用不好 Git 的团队,可能每次上线,都会带来那么几个莫名其妙的问题。
简而言之,这本手册无论是对于初学者还是想进一步了解 Git 工作原理的开发者都非常合适。
我在带团队的时候,经常发现有些刚入行的同事,会边写代码边纠结自己写的代码性能是否有问题。其实真的不必这样。像我们这些老程序员,都知道过早优化有时候可能白花费功夫。
像咱们如果写一个批处理的定时任务,这个任务要求只要在凌晨运行,在大家上班前任务完成就行。那么,这个任务从凌晨两点运行到六点和运行到四点,有什么区别吗?
优化代码一定要适度,要在写完功能之后,看功能会怎么被使用,根据实际的要求,去优化真正需要优化的地方。
实现需求的先后顺序,注意一定要以需求的可靠程度为准。
在分配给我们的需求里一般分两类:
有的需求是我们和产品经理都非常明确的需求;
也有的需求比较模糊:开会讨论时大家都觉得没什么问题,但是一到代码实现的时候,就发现还存在很多问题。
这时候,咱们应对的技巧是,先对这些需求搭一个统一的架子,把已经非常明确的需求先开发出来。
由于架子搭建出来了,这时候再和产品经理讨论那些模糊的需求,很容易就能让产品明白困难的地方,这样就可以把沟通难度降到最低。
问题是什么?问题就是在实践过程中需要解决的东西。
把这些问题一个个找出来,解决掉,这些解决问题中产生出来的方案,全会形成推动项目前进的推动力。那么产生这些推动力的你自己,一定会从中获益良多。
留出冗余时间的目的很明确,在咱们开发的时候,遇到的意外情况太多了:
需求又双叒叕变了
团队人员有变化
当初估算的时间乐观了
这个功能需要动老代码
需要跨团队合作开发
领导说“加个小功能”,领导认为这个小功能不影响开发周期(此处省略二百字)
……
所以,冗余时间是要留出来的。
留出的冗余时间不等于摸鱼时间,开发还是按照正常的节奏干,早做完早交付。
咱们程序员最重要的就是实践,能把学到的知识转化为实践用到工作上。
光看书学习技术,很可能只会让咱们产生出已经学会的错觉。只有通过代码把感兴趣的技术实践练习了一遍,咱们才真正能明白这技术实际用起来是什么样子,需要注意什么。
你不得不承认,IT 这行,基本所有的创新都诞生于英语的世界。
比如 k8s,就我所知就是国内英语好的技术人员从英语社区逐渐在国内推广开来,而这些推广了 k8s 的先驱也自然掌握了 k8s 的话语权。大家可以看看 k8s 在市场上的流行程度,也可以看看一位 k8s 专家的工资大概是多少。
而且,我前面说过,大家引入新技术一定要看官方文档,官方文档百分之八十都是英语的,所以英语确实重要。
如果英语不好,是不是就没机会了?没这么绝对。
就说我吧,不瞒大家,我英语四级没过,但还是照样能看英语资料,照样和别人一起翻译了国内的第一本 Hibernate 技术书。
当初我用 Hibernate 在国内算是比较早的一批程序员了,也经常去论坛回答问题,所以后来就有人找我一起翻译书。我最开始是抗拒的,觉得自己英语太烂了,翻译不好。后来我又想,既然我能看着英语文档学 Hibernate,要不就试试。于是就这么着干了一把。
作为一个过来人,我想说的是,技术文档没有特别复杂的语法、生僻单词,而且现在还有翻译软件、插件可以帮我们阅读。即使英语基础一般,也没什么大不了的。
作为一个初学者,从无到有的Python语言如何入门,主要包括了:Python的简介,如何下载Python,如何安装Python,如何使用终端、Shell,IDE等各种开发环境进行Python开发,Python中的语法和基本知识、概念和逻辑,以及继续深入学习Python的方法。
Python 易学难精,不是一朝一夕就能深入掌握。在这分享我珍藏的「学 Python 知识框架图」,系统地梳理了入门 Python 的必备知识点,给那些想学习python的小伙伴们一点帮助!建议保存。
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末!!!!
当学到一定基础,有自己的理解能力的时候,去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末!!!!
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
检查学习结果。
Python语言无所不包,能做非常多的事情,适合各类企业的开发工作,这里就不一一介绍了,总之,学好Python,前途宽广!
技术是技术人的立命之本,除了搞好技术,还要利用技术变现,即时被辞了,又不是很慌!
完整版的Python全套学习资料:https://shimo.im/docs/HgKhKrYGDYxpY8dp/