去年,美国的程序员问答网站Stack Overflow曾向用户提问,他们是否有计算机科学专业的学位。在这项“2015年开发者调查”中,26086名程序员中有近一半回答称,他们没有计算机科学学位。
这是否意味着,不需要大学学位就可以成为程序员?简而言之,答案是肯定的。不过,对非专业出身的人士来说,程序员之路要相对困难。
人力资源机构Robert Half Technology高级总监约翰·里德(John Reed)表示,许多知名科技公司用大学学历作为门槛来过滤求职者简历。例如,谷歌不会面试没有计算机科学学位的入门级工程师。
如果情况如此,那么为何许多程序员没有计算机科学学位?一个重要的外部因素是大学学费正日益高涨。例如在美国,最便宜的公立两年制大学每年学费平均为11438美元,而最昂贵的选择,即私立的非盈利四年制大学每年学费平均为43921美元。这些费用中还没有包括生活费。
其他因素也在造成影响。一方面,速成的在线课程和培训班正在兴起。你可以在实践中学习,而不必等待几年时间才能毕业。
因此,如果你没有计算机学位,同时又决定成为程序员,那么以下是几点建议:
1.不要闭门造车
请找个地方,与其他程序员一同工作,而无论你们是否从事同一个项目。
独自一人编程所面临的最严重挑战在于,关于你不清楚的细节,你将毫无头绪。只有将自己的代码与他人的代码进行比较,你才能知道哪里出了问题。
IEEE的巴里·博姆(Barry Boehm)的一项研究显示,无论是否采用结对编程模式,与他人一同进行代码评审相对于独立工作将可以多发现60%的代码错误。
众创空间或许可以给你提供这样的场所。在这里,你可以与有着类似追求的人一同工作。
2.良好的关系网比优秀的编程能力更重要
闭门造车还会带来一个坏处,这就是你无法在职业生涯初期建立自己的关系网。这样的关系网能在日后带来巨大帮助。
通过这样的关系,其他程序员可以评估你的技能,帮你逐步提高自己的能力。
3.自学大学计算机专业的内容
云文件共享创业公司Egnyte高级产品总监格雷格·诺斯塔特(Greg Neustaetter)承认,如果没有大学计算机专业的背景,那么将会出现一些严重的知识缺失。
这种学习的好处在于,如果你掌握了6到8本书的基本知识,那么就会成为一名基本功扎实的程序员。推荐的学科包括离散数学的应用、设计模式或J2EE设计模式,以及算法设计等。
如果你参加在线课程或培训班,那么建议是从头开始学习,除非你有过一定的编程经验,或是对技术有着天生的直觉。
自顶向下的模式“将程序员置于应用或框架中,鼓励他们将自己的知识拼接在其中”。而自底向上的模式则是“从基础开始,逐步培养能力”。
对入门者来说,自底向上的方式值得推荐。因为这将厘清许多概念。
例如,关于Ruby on Rails的教程就存在不清晰的概念。这本书的第一章就提到了MVC模型,但却没有介绍一些基本概念,例如面向对象的编程。
4.持续练习
无论是否有学位,多参与项目不仅对未来的职业生涯发展很重要,也是帮你积累更多经验的有效方式。
如果你不打算拿到计算机科学学位,那么这一点尤为重要。这些项目将成为你的主要经历,可以展示你的能力。一种很好的起步方式是开发移动应用。这使你方便地展示最终成果,并从用户那里直接获得反馈。
如果你考虑开发移动应用,那么建议是学习iOS平台的Swift或Objective C,Android平台的Java,以及Windows Phone平台的C#、VB或JavaScript。
此外,你也可以使用Phonegap和Titanium等技术,开发运行在所有三大平台上的应用。这些技术基于HTML、CSS和JavaScript,开发的应用可以在各处运行。
你还可以通过GitHub参与开源项目。
5.找一个副业
最开始从事编程时,你可能无法获得足够的收入去保障生活。即使你关于某款应用的想法价值2万美元,但由于你没有成功经历,因此很少有人会相信。换句话说,你需要找个副业去谋生,而这样的副业最好也能有助于你培养能力。
根据编程水平的不同,你可以参与创业公司,从事质量保障工作,或是从事自由职业。
创业公司通常愿意冒险,雇佣一些没有太多经验的人士。不过对于“足够好”的程序员,它们有自己的标准。尽管你不一定需要开发出复杂的、可维护的代码,但至少需要证明,你开发的东西能被用起来。
如果你做不到这一点,那么可以从事质量保障的工作,这能帮你加强技术能力。质量保障的工作内容是找出产品中的问题,并建议如何修改。这也是程序员解决问题时的核心基础。从事这类工作将有助于增强你对技术能力的自信心,而大学学位对这类工作而言并非必需的。
最后一个选择是自由职业,只要职业能满足你的生活需求。类似Upwork的网站列举了许多与技术相关的职位,包括网页开发、移动开发,以及设计和营销等。
via:TNW中文站
更多阅读: