如题所述
链接:http://pan.baidu.com/s/1p1G4NCUtPNVvkkXE7qxFbQ
程序员进阶攻略。如何才能持续成长,是每一个程序员都绕不开的话题。入行之初,你可能会困惑于技能选择的方向和掌握的方法;编程前期,你可能会苦恼于Bug的调试与修复;技术水平达到瓶颈期,你可能又急于寻求突破和上升。除此之外,职业倦怠了,如何去面对?技术停滞了,如何去解决?人到中年,是选择工作还是选择生活?换工作?换城市?换方向?如是种种,磨蚀着曾经的乐观和现在的不甘,是放任自流还是逆流而上?
课程目录:
开篇词 (1讲)
开篇词 | 程序行知:走在同样的路上,遇见自己的风景
征途:启程之初 (4讲)
01 | 初心:为什么成为一名程序员?
02 | 初惑:技术方向的选择
03 | 初程:带上一份技能地图
04 | 初感:别了校园,入了江湖
修炼:程序之术 (10讲)
05 | 架构与实现:它们的连接与分界?
......
温馨提示:答案为网友推荐,仅供参考
第1个回答 2019-03-21
程序员提升主要靠实践,跟一个完整的项目能最大限度的提升项目能力,以后找工作不用愁啊,现实工作中很难达成,你可以去找找培养这方面人才的,提升一下自己,你看看愿码ChainDesk,有你需要的
第2个回答 2022-10-17
这是一个知识付费的时代,当你精通于某个领域,你就可以把自己的知识与经验分享给他人,并获得不错的收益。比如,你可以把平时积累的经验总结起来,发表在内容社区,这样你不仅能帮助别人指点迷津,也许还会获得流量收益,甚至还会积累一些影响力;你也可以把自己的方法编撰成视频课,上传知识付费平台,这样当人们有学习编程的需求和意愿时,就有可能购买你的课。
除此之外,程序员的专业优势还可以迁移到一些新兴领域。譬如说,与展览业结合,新型媒介是数字展览的发展方向之一,程序员们或许可以在艺术与科技融合的浪潮中找到自己的跨界优势。
除此之外,程序员的专业优势还可以迁移到一些新兴领域。譬如说,与展览业结合,新型媒介是数字展览的发展方向之一,程序员们或许可以在艺术与科技融合的浪潮中找到自己的跨界优势。
第3个回答 2018-07-23
1 不能光有决心,一定得多用时间学习
我见过不少程序员一点点从初级升到资深开发,少得用1年半,多的用3年,成功完成升级的都有一个共同点:进步得靠学习,学习得靠时间堆砌。
我个人不算聪明,所以我对曾国藩的一句话体会很深:结硬寨,打呆仗。用在学习上,就是不投机取巧,学习时为自己,踏实地掌握基本功,然后一步一个脚印。这一定得靠时间积累。
来算比能用在学习方面的时间账:
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 要学会和别人沟通协调,一起完成一个任务
比如测试方面有个问题,而这个问题需要你和别人一起解决,这时,就要求你和测试沟通,了解问题细节以及重现方式,最终和别人一起解决这个问题。在这个流程中,技术问题倒是次要的,关键还在协调和沟通方面,初级开发可能会比较被动,坐等别人过来告诉自己该怎么做,但更应该主动和多方面沟通,积极推动事情往前发展。本回答被网友采纳
我见过不少程序员一点点从初级升到资深开发,少得用1年半,多的用3年,成功完成升级的都有一个共同点:进步得靠学习,学习得靠时间堆砌。
我个人不算聪明,所以我对曾国藩的一句话体会很深:结硬寨,打呆仗。用在学习上,就是不投机取巧,学习时为自己,踏实地掌握基本功,然后一步一个脚印。这一定得靠时间积累。
来算比能用在学习方面的时间账:
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 要学会和别人沟通协调,一起完成一个任务
比如测试方面有个问题,而这个问题需要你和别人一起解决,这时,就要求你和测试沟通,了解问题细节以及重现方式,最终和别人一起解决这个问题。在这个流程中,技术问题倒是次要的,关键还在协调和沟通方面,初级开发可能会比较被动,坐等别人过来告诉自己该怎么做,但更应该主动和多方面沟通,积极推动事情往前发展。本回答被网友采纳