大多数优秀的程序员都是自学成才!
服不服?
很多人在听到这句话时,或许都会不屑一笑,毕竟这一结论的得出似乎在一定程度上抬高了非科班转行以及培训班出来的技术人,同时将科班出来的程序员们置于一个较为尴尬的位置。
但是,据最新的数据研究结果显示这一结论确实有理可依。日前,国外知名的编码对战平台 HackerRank 深入研究了全球 10351 名学生开发者的学习方式以及技能状况,并最新发布了《2018 年 Student Developer Report》。令人惊讶的是,报告显示,当前有 76% 的学生正在攻读计算机科学学位,但有 65% 的学生开发者是自学成才。那么接下来,我们将用数据说话。
1、学位不足以支撑开发者的技术能力
无论是在国内还是在国外,计算机专业的学生都会在大学期间学习 Java、C、C++、数据结构等基础的软件开发技能,从而向专业的开发者过渡。但据调查报告显示,在超过一万名的开发者中,有 37.7% 的人表示是通过学校和个人相结合的方式来学习编码,27.4% 的开发者表示是完全通过自学的方式学会了编程,相比之下,仅有 31.9% 的人仅通过学校教学的途径学习编程。
由此可见,自学已成一种学习的趋势。但是此前,我们也曾报道了一些企业的 HR 对于半路出家自学以及培训机构出来的开发者常带有有色的眼镜来区别看待,其表示:
从面试经验来看,我厂对培训班出来的基本不会招,基础太差,干活也是浮于表面,知其然而不知其所以然。 另外除非你特别特别牛,否则一个正规的本科文凭还是需要的,其余的直接简历就被刷掉了。
这一席话不禁让很多信心满满的开发者最终因一纸文凭的门槛而寒了心。然事实上,早在 2013 年时,Twitter 的创始人 Jack Dorsey 就在公开场合表示,他相信最好的程序员大多数都是自学成才。另外,据微博大 V 博主 @斌叔儿童编程爆料:
我以前微软团队,真正计算机专业毕业生的只有 30%,都是别的专业转的。
所以说,无论是科班还是非科班的开发者,自主学习的态度均是抓住前沿技术潮流的必备技能,也是为成功铺垫的一层基石。不过从侧面来看,自学知识的流行也意味着两件事:
- 第一,计算机科学课程落后于技术发展的步伐。对于当今行业不断更新迭代的技能,譬如每隔六个月就更新的 Java、崛起的 Python、层出不穷的各种最新的框架......学生必须依靠自学来填充技术空白。
- 其次,自我学习能力已经在开发者基因中根深蒂固。开发者对学习有着永不满足的渴望。平均而言,当高级工程师正在学习 4 种编程语言时,不少开发者在学生时代就计划着要学习 6 门语言。此外,根据报告显示,亚太地区的学生更有雄心壮志,其计划学习 7 种编程语言!
就以上而言,所谓的计算机科学(CS)学位不应该是学生开发技能的主要衡量标准。相反,企业的技术团队除了需要开发者在学校良好的表现,还要将个人项目以及扩展技能纳入评估范围,更不能“一棒打死"诸多从培训机构出来的技术人。
2、全球范围内,JavaScript 开发者供不应求
在技能方面,学生开发者如果学习 JavaScript 编程语言和以 JavaScript 为中心的框架将会有较好的就业前景。因为据调查报告显示,雇主对 JavaScript 的需求量最大。而且随着静态 Web 页面逐渐过渡到渐进式 Web 应用程序,JavaScript 在业界日益占据主导地位。除此之外,当前 95% 的 Web 应用程序都是基于 JavaScript 构建的,所以它的需求量会如此之大也就很容易理解。
不过从数据上来看,虽然有 48% 的雇主表示他们需要会 JavaScript 技能的开发者,但全球只有 42% 的学生开发者表示他们熟悉这种语言。这就产生了供不应求的局面。当调查人员在深入挖掘这一现状时,发现该语言在使用学习方面存在较强的区域差异。其中,印度和加拿大的差距特别大,美国和英国拥有较多的 JavaScript 开发者。
而这种技能差距可以追溯到大学的计算机科学课程。总的来说,JavaScript 并未在标准计算机科学课程中讲授。事实上,在美国报道的十大 CS 项目中,将 JavaScript 明确纳入到核心课程中的高校几乎为零,当然这在中国诸多高校中也不例外,因此想要掌握该门编程语言的学生必须依靠实践、个人项目或指导来学习。这也就是为什么更有可能自学代码的学生(包括美国和英国学生)更好地掌握 JavaScript。
不过,现实来看,计算机科学课程中也不太可能很快加入 JavaScript 教学。因为在大学的课程中,更多的是注重编码理论(与应用程序相比),而不是像 JavaScript 这类因行业驱动的技术。此外,对于想要将 JavaScript 融入日常的教学,它的可行性也具有很大的挑战。据调查显示,有一半的 JavaScript 开发者认为 JavaScript 的生态系统变化太快,所以即使是那些渴望将它加入教学材料的人也很难保持他们的课程能跟上时代。
3、在学生开发者心中,老牌 C 仍占据首位,Ruby、Python、JavaScript 为潜力股
尽管 JavaScript 的开发者在供与求之间存在差距,但这种现状无论是对开发者还是雇主来说,都是一个好消息,毕竟可以更好地激发相关技术人才的诞生。不过受大学教育的环境影响,老牌 C、C++、Java 语言对学生开发者的影响很大,但是据统计发现,Ruby、Python、JavaScript 将成为他们接下来想要学习的首要三大技能。
4、掌握前端框架技能的程序员严重欠缺
根据调查报告显示,全球范围内,掌握前端主流三大框架 AngularJS、React、Node.js 和轻量级的 Java 开发框架 Spring 的人才严重不足,甚至达不到雇主需求量的一半。
导致这样的原因有很多,一方面,在大多数 CS 课程中,学生更多的是学习建立理论和基础知识,而不是工作技能。此外,大学课程既没有行业反馈,也没有敏捷性,同时它的资源与行业趋势并没有保持同步。
因此,想要更好地掌握框架技能以及跟上日新月异的技术潮流,最好在实践项目中不断积累成长。