刚踏⼊职场的程序员(2年以内初级程序员)如何快速踏实地
提升⾃⼰的能⼒
在之前的博⽂回复中,有些朋友问到这个问题,这⾥我结合⾃⼰的实际以及我看到的⼀些⼈和事给⼤家分享下这⽅⾯的经验。 本⽂写过不少针对java后端⾼级开发的⾯试⽅⾯的⽂章,也出过相关的⾯试书籍,但这⾥,不讲⾯试经验,⽽是讲如何⼀步⼀个脚印地提升⾃⼰的能⼒。本⽂主要是针对java后端开发。
1 不能光有决⼼,⼀定得多⽤时间学习
我见过不少程序员⼀点点从初级升到资深开发,少得⽤1年半,多的⽤3年,成功完成升级的都有⼀个共同点:进步得靠学习,学习得靠时间堆砌。
我个⼈不算聪明,所以我对曾国藩的⼀句话体会很深:结硬寨,打呆仗。⽤在学习上,就是不投机取巧,学习时为⾃⼰,踏实地掌握基本功,然后⼀步⼀个脚印。这⼀定得靠时间积累。
高级java程序员掌握技能来算⽐能⽤在学习⽅⾯的时间账:
1 每天早上起来后,⼤概半个⼩时。
2 每天上班时,不⼤可能总⼲活,与其上⽹划⽔,还不如搜索些技术资料,平均⼀天就算半个⼩时吧。
3 晚上回家,哪怕再累,总可以抽出半个⼩时。
这样⼀天⼤概能⽤1个半⼩时,⼀周5天,⾄少能有7个⼩时,周末⾄少能有2个半⼩时,⾄少⼀周10个⼩时吧。
这不算多,以我亲⾝经历,每周10个⼩时学习,⼈⽽且还不累,如果再挤出点空闲时间,甚⾄⼀周能学15个⼩时。
如上算是鸡汤⽂吧,但这也是本⽂的前提。⼀般来说,⼯作3年⼀般能升级到⾼级开发,如果⽆法保证⼀周10⼩时学习量,那么升级的进程就会延后,甚⾄⽆法完成升级。
2 先在java core⽅⾯打好基础
这部分需要学习的内容:
1 基本语法
2 集合
3 异常处理流程
4 基本的IO操作
5 JDBC
6 多线程
在这个阶段⽆需学的内容:
1 界⾯编程,⽐如Swing, AWT
2 Socket编程
在初级阶段可以适当了解,但⽆法过多深⼊学习的内容:
1 ⾯向对象思想,刚开始学时可以了解下语法,⽐如继承,重载的语法,尽量体会其中的含义,但真正做到理解得到⾼级开发的级别。
2 设计模式思想,这个也可以适当了解。
3 虚拟机⽅⾯的内容。
书不在多,⽽在于精,我个⼈推荐⼀本:java编程思想(thinking in java),真的把这本书⾥的内容理解了,java core⽅⾯真能算掌握了。
怎么样才能真正理解,不是光靠看,⽽是得边看边运⾏书中的例⼦,⽽且边运⾏边看书⾥的解释。
这本书中的讲解⾮常到位,⽽且全书是围绕着⾯向对象思想讲的,边看边运⾏代码,估计最多⽤2个⽉就能看好。
这个我个⼈感觉是,打基础是必要的,但不能过多拘泥于语法,所以要求⼤家边运⾏代码边学习,如果只看书,⼀⽅⾯⽆法帮助⼤家深⼊理解代码和知识点的含义,另⼀⽅⾯,看过以后印象不深,估计很短时间以后就忘了。
3 通过⼀些框架了解Java web⽅⾯的内容
这部分是进阶。
⽬前⼤多数公司是⽤Java做Web项⽬,互联⽹公司就更别说了,这⽅⾯常规的学习路线是:
1 可以先通过jsp+servlet了解下 web编程的概念,尤其是servlet,可以直接从3.0⼊⼿,了解下异步调⽤。
2 随后可以通过Spring MVC+Mytabis,搭建⼀个基本的MVC项⽬,了解下常规的⽹络框架。
3 再深⼊了解下Spring IOC,AOP,ORM⽅⾯,可以再深⼊了解下事务和连接池等⾼级知识点。
其实,了解上述内容后,就可以在公司⾥⼲活了,在公司⾥,初级程序员往往会在架构师搭建好的框架⾥,通过别⼈写的代码堆砌完成⾃⼰的功能点。
不过,初级程序员在会堆砌代码的基础上,还可以深⼊了解下分布式组件,集等知识点。这⾥可以推荐通过学习Spring Cloud框架⾥的组件,深⼊了解下Web⽅⾯的知识点。
这⽅⾯,讲述Spring Mytabis的书⽐较多,⼤家本偏案例的书即可。
4 不断地提升⾃⼰的优化能⼒
这部分是拉开你和其它初级开发的差距。
资深程序员和初级程序员写出来的代码会有不同,主要体现在如下三个⽅⾯。
1 资深程序员写出来的代码结构性⽐较强,这主要是资深程序员能在写代码的过程中,主动地引⼊⾯向对象思想和设计模式。不过⾯向对象思想和设计模式得靠项⽬积累,所以对初级程序员⽽⾔, 光学理论效果未必⼤,⼀定得在⼯作中多观察下继承,重载和接⼝复⽤等做法,因为⾯向对象和设计模式的表现形式主要包括这些。
2 得考虑性能优化,⽐如想下,如何让sql语句更快,如何让虚拟机内存性能更好,然后这⽅⾯的资料。这些内容,我的其它博⽂⾥都涉及到。
3 ⼀定得在“单机版”程序的基础上问⾃⼰,如何搭建集,或者,如何利⽤现有的⾯向集的组件,⽐如可以⽤Eureka搭建服务治理的集,在集中⽤Ribbon做负载均衡。总之,这⽅⾯都是有现有解决⽅案的,⽽且学起来也不难,但不是每个初级程序员都知道该学这部分的内容。
在这个基础上,⼤家都可以技多不压⾝了,⽐如学些redis,消息中间件等,但⼀定得围绕上述三个学习⽅⾯。
这⽅⾯,⼤家可以看些虚拟机调优,数据库优化以及Spring Cloud⽅⾯的书,还是这句话,选择的事情需要看下这书是偏重理论还是案例说明,最好是买些案例多点的书。
5 通过提升⾃⼰的软实⼒,让⾃⼰更专业
⼀般来说,初级程序员更像学⽣,⽽不像职场⼈⼠,所以对⾼级程序员的要求往往是能独当⼀⾯,⽽对初级程序员的要求是,能在项⽬经理的带领下完成本职⼯作。
所以,初级程序员⼀定得提升如下的软技能。
1 要会积极主动沟通。能否具备好的沟通技能,这个是能⼒问题,肯不肯和别⼈沟通,愿不愿意积极主动地展⽰⾃⼰的想法,这个是态度问题。我见过不少初级程序员在⼲好本⾝的活以后,就缩在⼀边,遇到测试和领导过来时,也是敷衍,或者是不耐烦,这些⼈往往在公司中表现都不怎么好。
2 得提升⾃⼰解决问题的能⼒,积累解决问题的经验。虽然⽬前很多问题都能靠百度,但⽐较专业的异常解决⼿段,以及基于框架的性能调优等,⼀般都得靠积累,所以初级程序员在遇到问题时,哪怕靠⾃⼰能⼒⽆法解决,但⾄少得想,得通过搜索等⼿段去解决,最后别⼈解决时,也得学下解决⽅法,这样就能不断提升⾃⼰的能⼒。
3 协调,甚⾄是扯⽪的能⼒。⽐如⼀个活,⾃⼰做不完,这个很正常,但有些初级程序员就宁可⾃⼰扛。这样哪怕是靠⾃⼰加班最终完成了,但对整个团队来说,有延迟进度的风险。遇到这类情况,就可以早说,早让项⽬经理协调。有些事甚⾄不该你或者你的组管,遇到这类情况,就可以推掉这类事,毕竟⼀个⼈的时间是有限的。
4 要学会和别⼈沟通协调,⼀起完成⼀个任务
⽐如测试⽅⾯有个问题,⽽这个问题需要你和别⼈⼀起解决,这时,就要求你和测试沟通,了解问题细节以及重现⽅式,最终和别⼈⼀起解决这个问题。在这个流程中,技术问题倒是次要的,关键还在协调和沟通⽅⾯,初级开发可能会⽐较被动,坐等别⼈过来告诉⾃⼰该怎么做,但更应该主动和多⽅⾯沟通,积极推动事情往前发展。
这⽅⾯可能就没法靠看书,只能多靠观察别⼈怎么做了。
6 总结、版权声明
本⽂欢迎在说明作者和原链接的基础上转载,请勿⽤于商业⽤途。
本⽂是在观察众多初级开发的基础上汇总⽽成,由于是汇总,所以虽然指明了发展⽅向,但细节部分有待挖掘。
还是这句话,如果⼤家想了解其中哪些细节,或者⼲脆想了解其它哪⽅⾯,都可以留⾔或者私信我,如果可以,本⼈尽量写。最后,本⼈最近达到了997的程度,上周末还去公司⼲了两天,所以码字不易,如果可以,请⼤家多多帮忙推荐。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论