转载

美国一半程序员非科班出身,他们是怎么做到的?

美国一半程序员非科班出身,他们是怎么做到的?

  美国的程序员交流网站 Stack Overflow 在去年的开发者调查中想要了解,码农们是否都有大学的计算机专业学位。有 26086 名程序员参与了这项调查,其中有近一半受访者的答案是,没有学位。

  大量程序员非科班出身的原因有很多方面。一方面,美国大学的学费正日益高涨。私立四年制大学一年学费平均接近 4.5 万美元,其中还没有包括生活费。另一方面,网上课程和培训班吸引了很多人。有志于成为程序员的人士可以在做中学,而不必“浪费”几年时间去完成大学学业。

  关于非科班出身的程序员,有几点建议可供参考:

  闭门造车要不得

  编程时的闭门造车会带来几方面问题:

  1. 没有人给你答疑。编程时你会面临许多疑问,但却无法找到人给你答疑解惑。解决这类问题的过程通常需要求助于高级程序员,或是将自己的代码与别人的去对比。
  2. 软件评审。大型软件公司都会设置软件评审环节,即让同事之间互相评审对方的代码。无论是国外还是国内,数据显示,代码评审能多发现 60% 的错误和漏洞。即使你自己干,也需要找人去评阅自己的代码。
  3. 与他人一同工作有助于拓展人脉,在职业生涯初期尤其如此。

  目前,国内许多众创空间都在面向小团队乃至个人开放申请。这将会是不错的选择。

  多读书,尤其是大学专业内容

  大学培养人才的重要之处是训练基本功和思维方法,而不是让你实际参与工程项目。如果没有上过大学,那么这些方面很可能会有缺失。你可能知道如何根据架构师的设计文档去写代码,但却不知道算法为什么是这样。在实际面试中,笔者还曾发现,有许多非专业出身的人士甚至都不能准确解释,什么是面向对象的编程。而这本应是 C++ 的基础。

  非科班出身的人士需要通过多读书来补充基础知识,无论是离散数学、算法设计,还是软件测试的基本理论。

  另一方面,如果你希望通过网上课程或培训班去学习,那么最好从基础开始学,尤其是在没有编程经验的情况下。

  大企业培养新程序员的方式有两种。一种是自顶向下的模式。在这种模式中,应用或框架已经搭好,对程序员的期望是他们直接上手,补足欠缺的部分或是去改漏洞。另一种是自底向上的模式。在大企业中,通常只有新项目才会这样做。这时程序员可以先打基础,随后慢慢入手,从架构设计、代码的顶层设计、细节设计,再到实际编程。

  如果你是非科班出身,希望自己干,那么应当采用自底向上的模式。这将帮你弄清许多基本概念。一上手就接触庞大的代码将会令人摸不着北。

  多练习,多做项目

  对新人来说,多参与项目能帮助积累更多经验,有利于未来的职业发展。而如果想要单干,那么所做的项目将成为简历上的主要经历,是对能力的证明。

  个人从事项目最好的选择是开发移动应用。相对于大型软件项目,例如系统软件或企业级应用,移动应用的开发相对简单,很容易出成果,而也会有许多用户提供反馈,相当于免费帮你做测试。移动应用开发使用的语言包括 Swift 或 Objective C(iOS 平台)、Java(Android 平台),以及 C#和 VB(Windows 平台)等等。此外,Phonegap 等通用型技术也可以考虑。

  对个人程序员来说,GitHub 是个好工具。GitHub 上有许多开源项目可以参与,也有许多其他程序员可以提供帮助。你也可以自己创建软件项目。这一切都是免费的。

  职业发展的选择

  非科班出身程序员在找工作时可能会受到局限,因为大公司的招聘中学历是个门槛。许多知名科技公司用大学学历作为条件去过滤求职者。例如,谷歌在招聘初级工程师时就是这样。

  相对来说,一些创业公司更看重个人能力,而非学历。对于需要什么样的程序员,什么样的程序员是够格的,它们有自己的标准。在创业公司里找工作时,你不一定需要有大型软件的成功开发经历,通常只要证明你能开发出用得起来的软件。

  如果觉得自己的能力稍弱,那么还可以考虑软件公司中的 QA(质量工程师)职位。QA 的工作通常是统计问题,找出趋势,以及建议如何改进。这也是一项程序员的基础能力。而许多公司对 QA 工程师的招聘门槛要低于软件工程师。

  简而言之,大学学位,或者说计算机专业的学位,并不是成为程序员的必要条件。但如果这类人群希望成为程序员,那么将要在学习和实践方面付出更多的努力。

  编者按 : 李玮是科技从业者,在多家网站开设专栏。同时他也是为 TC 中国长期贡献稿件的译者之一。

正文到此结束
Loading...