突破行业瓶颈,程序员未来发展大有可为

随着IT产业的迅猛发展,市场对人才的技术要求愈来愈高,企业招聘也对面试者提出了更高的要求。2003年,新入行的Java工程师仅需掌握Javaweb和数据技术即可找到好工作;而2008年,用人企业对他们的要求则变为“掌握多种框架技术,并拥有实战项目经验”;到了2018年,用人企业将对他们的要求再度提升至“掌握多个领域的行业级解决方案,而非单一的某项技术”。

市场倒逼人才升级,是不是培训班出身的人就没有机会了?当然不是,出身不好,起点差都不代表着前面的路就被堵死了。认清自己的能力,不骄狂自大,不妄自菲薄,从弱小中成长,你也可以成为别人眼中的技术大牛。

突破行业瓶颈,程序员未来发展大有可为_第1张图片
image

以下是对于想从事软件开发行业的人提供的建议:

尽快摆脱短期培训中填鸭式教育带来的被动学习方式。虽然几个月的学习对于新人来说,是极其高效的,但绝不能再依赖培训班的学习方式,要知道,你是毕业了,但对于软件开发,你的路还是刚开始,往后的学习是以看文档、看书、搜索资料为主。现在开始就要改变自己的学习习惯,认真地看书,你会发现,那些原本你以为自己懂了的知识,在看书后,才知道自己原先的认知是多么浅薄。程序员证明自己能力最简单的方式就是代码。从现在开始,你就要养成输出知识的习惯,可以是写技术博客,也可以是构建个人网站,把这些作品展示出来,现在免费的展示平台那么多,你一定要长久地积累,这些就是你最好的简历。把自己当成一个自学者,面试时不用提你培训的经历,虽然这并不丢人,但可能会带来偏见。只要你能展示你的作品,表现你的代码能力,不管你是什么出身,都无关紧要。

比如我最近在学习人工智能,学习步骤是:
1、高数基础知识:线性代数,微积分和统计学。最近在打德州扑克时,我也会用统计学里的知识计算下输赢的概率。
2、人工智能基础:买几本书人工智能的基础书籍,深入阅读,如《机器学习基础教程》《Python机器学习》。
3、实战:在工作中找到一个应用场景,把学到的知识运用进去。

知识如何内化成能力

作家格拉德威尔在《异类》一书中指出,1万小时的锤炼是任何人从平凡变成世界级大师的必要条件。1万小时有多久?每天学习10小时,需要大约三年。但是很多人都工作了五年甚至更长,但是为什么成为世界级大师的却非常少。读者可以先自己思考下这个问题。接下来谈谈我的看法。成长必须经历一个步骤,就是把知识内化成能力。 知识是用脑记住的,能力是用手练习出来的 。在工作的几年里,我们可能看过很多书,听过很多技术讲座和视频,但是通过听和看只是让你能记住这些知识,这些知识还不能转换成你的能力。听和看只是第一步,更重要的是实践,通过刻意练习把听到和看到的知识内化成你的能力。刻意练习,就是有目的的练习,先规划好,再去练习。首先给自己定一个目标,目标可以有效的引导你学习,然后使用3F练习法
1: 专注(Focus),专注在眼前的任务上,在学习过程中保持专注,可以尝试使用番茄工作法。
2:反馈(Feedback),意识到自己的不足,学习完之后进行反思,思考下自己哪些方面不足,为什么不足,
3: 修正(Fix),改进自己的不足。 不停的练习和思考可以改变大脑结构,大脑像肌肉一样,挑战越大,影响越大,学习更高效,并且也会产生突破性。

广度和深度的选择

技术人员的学习路径有两个维度,深度和广度。很多程序员都有这个疑问,是先深后广,还是先广后深呢?通过这么多年的学习和思考,我的建议先深后广,因为当技术学到一定深度后,就会有触类旁通的能力,自己掌握的广度也自然有了深度。但是在实际学习过程中,深度和广度相互穿插着学习,比如学习并发编程时,首先学习JDK源码,然后学进去之后,开始看JVM源码,最后看CPU架构,在技术点逐渐深度研究的过程中,广度也得到了完善。所以无论哪种学习方式,学习态度才是最重要的,在广度学习的时候有深入研究的态度就能达到一定的深度,在深度学习的时候,主动学习相关的技术点,广度也得到拓宽。

你需要学会的编码习惯

程序员应该学会通过技术的手段来提高效率。几个常用的手段是使用工具、快捷键和编写脚本。使用各种工具技术人员电脑尽量用MAC,使用命令行效率一定比在 10241024 像素中找一个 1010 像素的按钮更快。IDE用IDEA,比Eclipse更智能。命令行工具用iTerm和IDEA里的Terminal。写文章用MAC的客户端工具MacDown,左边编写,右边展示,比Word等工具方便快速很多。有时候我还会用按键精灵里配置脚本需要解决工作问题,比如通过点击我们的系统,来执行任务。这样的工具很多,只要是能提高工作效率的工具,大家都可以尝试使用。**使用快捷键 MAC,IDEA和Eclipse有很多快捷键都要学会使用,比如在MAC命令行中通过idea .快速打开工程,通过open . 快速的打开文件夹,把IDEA里通过快捷键把一段代码抽成一个单独的方法,快速生成getter setter方法。用脚本写工具 **当我们用人工的方式做一件重复性很强的事情,首先要考虑使用工具来帮我们自动完成,如果没有类似工具,可以自己写个脚本来实现,这样除了能快速解决问题,还能提高自己的技术能力。比如,我经常要在两个maven仓库发布jar包,我就写了个脚本来实现jar包的发布, deploy.sh代码如下:cp pom.xml pom.xml.bakrm pom.xmlln -s pom-2-deploy.xml pom.xmlmvn deployrm -rf pom.xmlcp pom.xml.bak pom.xmlrm pom.xml.bak 。

##在业务团队做开发如何成长

我一直在业务团队中做开发,在业务团队最主要的提高的能力是业务抽象和架构能力,通过业务场景,不断思考如何通过合理的架构和业务抽象能快速支持业务,降低运维成本。同时在这个过程中锻炼技术能力,比如写一些技术框架来快速支持业务,做到技术驱动业务。

可配置化的方式支持业务

设计业务的领域模型,把不随着业务逻辑变化的领域模型做成系统能力,把随着业务逻辑变化功能,做成可配置化,上一个新业务,通过配置的方式或少量开发就能支持。在做客户后台功能时,由于需要展示的数据种类非常多,每种数据展示可能需要花费几天的时间,所以设计了一个通用的技术框架,实现了通过配置化的方式展示各种数据。

写框架解决业务问题

我在上家公司经常做一些CRUD的业务功能,我就自己开发了一个快速做CRUD的框架 jdbcutil,通过配置实体生成SQL语句,实现了子类只要继承父类,就自动拥有CRUD的能力。后面还写过生成CRUD页面代码的程序。目前我们团队在做的TITAN框架通过模块化开发的方式,解决易变的业务系统在多人开发时遇到的问题。

技术驱动业务

在业务团队,一定要不断的思考如何利用技术来支持快速支持业务,配置化是一种思路,但是有些功能配置复杂度比较高,配置加验证的工作量,可能需要一个星期的时间,那么能不能减少人工配置,实现系统自动化配置,于是可以研究下人工智能,通过人工智能的方式实现,系统告诉人需要配置哪些东西,然后交给人来进行确认,这样可以大大减少人工成本,更快的支持业务。出身和学历「差人一等」从来都是伪命题,出身只代表着起点,到达终点前的过程才是最为重要的,虽然可能会走弯路,但亡羊补牢为时不晚,只要看清方向,不断奔跑,自然会大有作为。

————————
推荐阅读:

2019版大数据学习路线图(含大纲+视频+工具+书籍+面试)

2019年黑马新版C/C++学习路线图(内含大纲+视频+工具+书籍+面试)

2018年新版Java学习路线图(内含大纲+视频+工具+书籍+面试)

2018年最新Python学习路线图(内含大纲+视频+工具)

2018版Go语言+区块链学习路线图(含大纲+视频+工具+资料)

2018新版前端与移动开发学习路线图(视频+工具+书籍+资源)

你可能感兴趣的:(突破行业瓶颈,程序员未来发展大有可为)