在目前非科班出身半路转行者往往成为程序猿中比较敏感的一部分。www.neweredu.cn
伴随着互联网行业的发展,市场对Java工程师的需求一直居高不下,程序员也不再囿于计算机科学或软件工程等个别专业的毕业生。「非科班」程序员的背景五花八门,近一些的是通信、物理、数学、自动化等理工科,远一些的则有设计、英语、艺术甚至历史。
客观上来说,在编程领域里的确存在「童子功」的说法,接触编程时间过晚,不仅技术上处于劣势,在思维方式、解题经验方面也很可能落后。这也是为何科班出身的程序员往往具备压倒性优势。
不过,英雄不问出处,非科班出身的Java程序员,也千万不要先入为主地陷入「技不如人」的自我认知里。你学习技术是为了找到一份满意的工作,实现个人价值,而互联网公司更关注的是你的理论知识到底有多少能落到实际商业应用中。
大学基础教育可以让科班出身的人有更广博、健硕的知识体系和计算机领域的学习能力,但对非科班出身的童鞋而言,用业余时间补好大学4年的差距其实非常难,也并非完全必要,因为大学教育和产业应用之间也存在明显的脱节。
归根结底,非科班的Java程序员们在开始自学计划前,要先理解当下的产业界通常对Java开发人才到底有怎样的要求,以终为始,有针对性地弥补差距。
互联网公司需要怎样的Java工程师?
1.初级 Java 工程师(1-2 年)
初级Java 工程师需要基础扎实,在精通 Java 之外,深入了解数据库技术也是必选项。计算机原理和思维逻辑清晰,能干活。
2.资深Java工程师(3-5 年)
有3-5 年经验的 Java 工程师,要求算法基础和编程能力扎实,有分布式、高并发经验优先,可独立负责一个模块的开发。在技术上一专多能,不仅限于写好 Java,还要触类旁通,对公司业务所需的新技术能快速学习运用。
3.Java 专家/架构师(5 年及以上)
在技术专家阶段,拥有成熟大厂的高并发、分布式经验很重要。各个公司对架构和专家型人才的要求与业务需求结合得更紧密,因此,除了吃透技术深度、高效解决技术团队的技术难题、做好团队分工之外,候选人以往的业务场景也要和公司相契合。
除了以上常规要求之外,如今进入下半场的互联网行业对 Java 程序员的招聘门槛的确比以往更高。
首先是对学历等硬性背景要求更严。有些一线知名企业甚至要求一本、重点院校CS 相关专业的简历优先。对非科班的同学而言,这也很无奈。
其次,更注重对算法基础和核心开发经验的考察。国内的一线大厂近年逐步向国外互联网公司看齐,开始重视对Java 程序员的算法和计算机原理的考察。此外是考核过往的核心开发经验。
最后,有转型能力和意愿的Java 人,机会更多。互联网公司在拓展新业务时,也需要转型 Golang、Python 等更新更轻巧的技术栈,拥有 Java 和后端基础的程序员转型起来更有优势。
比如,腾讯的主流后端语言是C++,阿里、TMD 是 Java,百度则是 C++、Java 和
PHP;但几家新兴独角兽(英语流利说、哔哩哔哩、今日头条和趣头条等公司)对 Go 和 Python 的应用更普遍,尤其是今年 Go
的劲头很猛。因此,基础扎实、学习能力强的 Java 工程师,可适用更多业务场景和开发需求,在市场上更吃香。
非科班出身该如何弥补技术差距?
100 offer还采访了一些非科班出身的 Java 候选人,他们如今都成为了各自企业的技术骨干。这些「半路出家」的经历或许也能给你一些启发。
小羽:数学系出身的理科女,阅读源码
刚毕业于中国最好的大学数学系的那一年,小羽还压根没想过自己未来会和代码发生化学反应。她一心还想着未来出国深造,进入了一家互联网金融公司,职位是产品经理。
“当时也不知道自己适合做什么,想着这份工作经历就算 Gap Year 吧,就被派去负责产品了。”小羽此前并未接触过任何产品相关的知识,一切都只能靠现学。
九个月后,一个机会降临到小羽面前,某金融类央企的认证部门需要一名产品经理,小羽投递的简历被对方 HR 看中,很顺利便录用了她。
在与新领导的沟通中,对方得知小羽是数学系毕业的。“要不你来试试写代码?”面对建议,小羽稍一考虑就答应了下来。
早在大学一年级时,小羽就在公共课程上学习到了关于C++ 的基础知识。但那时她对编程还没有特别的兴趣,答应转岗,更多是因为她觉得写代码更符合她理工科的偏好。
“一开始,人家是给我一个别的项目,让我照着写照着抄。”留给小羽的速成期不算太长,而她成长的方式也比较直接粗暴:看源码。不停地看,有不懂的地方就去搜,去查,一点点拼凑出来。好在接受过多年的数学训练,小羽对于强调逻辑的代码工作逐渐得心应手。一个月后,小羽上手了
Java。
工作的第二年,小羽开始接触Python、Pascal 以及 C++,对于编程语言和数据库的尝试也越来越多。Spring、MySQL、Redis
等框架或数据库逐渐开始被纳入知识体系,由于工作内容涉及前端开发,小羽又学习了 Angular、React
等框架。甚至对于数据挖掘、svm、神经网络也有了一定涉猎。
回忆自己从入门到上手的经验,小羽认为最有意义的就是阅读源码。源码能够直观、系统地为学习者描绘这门编程语言是如何工作的。我技术提升最快的那段时间就在阅读大量源码,包括JDK 的源码。那个阶段后就真的迈过了刚入门的状态了。
如今,小羽在一家知名软件企业担任架构师,尽管进入职场仅三年,小羽早已完成了从编程新人到技术骨干的转型。
曹巍:出身工科的程序员,强化学习还得看书
曹巍 2009 年本科毕业于材料成型机控制工程专业。毕业后他就来到了北京,被这里的互联网气氛所打动。他感到,用余生继续和数控机床打交道,太乏味了。
机缘巧合的是,曹巍大一的室友是一位迷恋计算机文化的工科男,在室友的带动下,曹巍也早早自学了Java。
Java 的特色是面向对象,这对不接触编程的普通人很难理解,所以我花费在思维转换上的时间很多,刚开始花了一个多星期的时间才弄明白它究竟是怎样一回事。
2010年1月,曹巍进入一家软件企业,担任元数据产品开发。从新人开始,曹巍一边工作一边积累自己的技术经验,3 年后,曹巍进入某数码集团负责技术架构,从
Java 到 Spring MVC、MyBatis/Hibernate、Dubbo 等服务端框架技术, 再到
HTML、JSP、Servlet、JavaScript 等应用技术,他都逐一涉猎。
在代码中摸爬滚打8 年后,曹巍如今在一家互联网企业担任技术总监。回顾自己从非科班出身走到今天,曹巍认为虽然过程有些艰辛,但好在自己是一个耐得住寂寞的人,当技艺打磨到足够优秀时,旁人的闲言碎语自然会终止。
对于从 0 学习一套编程语言,他认为,在有关编程技术的深度和准确性上,书本很重要。“任何东西都是碎片化的,一个技术点可以发散到其他碎片点,最终就弄明白了整个脉络。我的学习路径是从每个技术点开始,摸清楚技术脉络,最后需要深入了解技术原理就去看书。”
从别人的故事中,我们提炼出了以下6条建议,送给非科班的 Java 程序员们:
1、要有清晰的自我规划和定位,及时了解 Java 市场的需求变化,做到知己知彼。
2、寻找合适的途径实现技术入门,比如报名参加一个口碑良好的短期培训课程;
3、大量阅读源码;
4、积极发问,关键在于用最少的时间获取最多的收益;
5、尽管技术博客和社区论坛上的大神很多,但阅读书本仍是系统习得知识的最好途径;
6、转型要趁早,越晚代价越大。
有疑问加站长微信联系(非本文作者)