如果你想知道如何学习编程和转行,那么你不是在孤军作战。随着科技热潮对软件工程师和计算机科学家需求的增加, 很多专业人士开始纷纷将自己的职业生涯转移到一条更注重技术的康庄大道上 。
2016年,Glassdoor公布的前25种工作中,技术职位名列前茅。随着来自于美国白宫的 TechHire 人才计划的出台,这个趋势 不但 没有停止的迹象,而且数字时代正在以闪电般的速度前进。然而,许多软件工程和编程工作依然空在那里,因为企业招不到能够让他们快速雇用的合格候选人。
那么,在没有传统计算机科学的背景下,怎么样才能成为一个受欢迎的程序员呢?
很多人认为,对于这样的职位是不能通过培训的,尤其是——如果你没有本科学位的话。也许你有一个非科班出身,或者你已经走出大学校门很长一段时间却没有实践过曾经学习的技能。值得庆幸的是,现在有很多资源允许你回到这个道路上,改变职业生涯。
确定目标&开始解决问题
首先要明确的是,编程就是解决问题。
经验丰富的程序员能够学习任何语言、解决任何问题,因为他们的教育和职业生涯已经经历过如何最佳地解决问题。经验丰富的程序员会使用这么多年实践中发展出来的多种方法和流程。他们会从多种编程语言,不同的数学概念和函数中选择,以便找到有效的解决方案。
但是这些经验丰富的程序员都是通过实践才获取了这些专业要点。他们屡战屡败,又屡败屡战。他们寻求帮助,他们寻找答案。当面对新的问题时,他们调查研究,制定计划,然后才开始编码。
一开始,你的主要目标应该是建立一个解决问题的系统。当你学习你的第一门编程语言的时候,有很多需要学习的东西,但是在学习基础知识的时候,你需要制定简单和直接的项目目标。
从小项目开始,这将有助于你学习逻辑思维;帮助你了解计算机的工作方式。 不要去一步登天地想着创建大网站,制作复杂的app,以及3D视频游戏,即使这些是未来某一天的最终目标。网上的资源很丰富,如GitHub上充满了新手程序员可以上手使用的小而简单的项目。这些都是你在传统的数据结构教科书上可以发现的各种问题——这是另一个选择的途径。小小的实践练习可以帮助你学习编程语言,并训练你用这些语言解决与计算机科学相关的问题。
还在怀疑自己是否能改变职业进入编程行业吗?有一个关于Reddit的故事,来自于一个原本对编程一无所知但在一年后却被雇用了的程序员。他们自己也承认,他们花了很多时间专注于自己的技能,而且这个过程所需要的时间可能会更长,如果你只在晚上和周末学习的话。另一个例子是Colin Cross,一个MPCS毕业生,在他决定得到必要的教育以便于追求全职事业之前,仅仅只是涉猎过计算机科学。
说明一下,我们并没有贬低常规教育的意思。学习如何解决问题是你成功的第一步。常规教育需要更长的时间。 首先你应该先看看自己是否能静下心来坐在电脑前编码问题的解决办法。如果不行,那么你会觉得学习编程和转行很难。 通过培养解决问题的技能并看看自己是否喜欢这种类型的工作,你才能更好地判断自己是否适合吃技术这碗饭。
通过小型项目攀登这座高峰
对于绝大多数开发者而言,编程围绕着World Wide Web展开。一个动态响应用户输入的网站可能在你的浏览器上看上去简简单单,但是它需要大量富有技术含量的设计和工程,才能使其以这种方式工作。
有部分代码涉及给你的浏览器信息以显示并收到你的输入,这通常被称为前端开发。还有部分是处理所有这些信息,并执行一些繁重的任务。这是所谓的后端开发。 当代很大一部分开发人员工作于web开发,并且他们使用的编程语言被设计得不但易于使用,而且具有强大的能力。
学习简单网站是如何工作的是你开始自学的好地方,并且有无数在线资源可帮助你。
就拿Odin Project为例。Odin Project是一个免费资源,旨在尽可能温柔地给你介绍web编程。它用一种足够简单的语言来介绍很多专业人士使用的编程语言,同样适合初学者。你可能以前曾听说过JavaScript,Ruby on Rails,和HTML。这些都是可以开始自学的好起点,并且最终可以成为你日常使用的工具。
EarlGrey:怎么能不提 Python呢?!
材料比时间表更重要,所以启动比担心不能在承诺的时间提交更重要。
我需要更多教育吗?
编码是一个行业,所以和任何行业一样,它要求实践、勤奋和专注,以便于真正掌握概念。在线资源可以帮助你启动并取胜。如果你通过自导的项目和工具工作,那么你当然可以开始认为自己是正处于职业生涯早期阶段的一个程序员。
既然编程是一种行业,那么让我们看一看其他的行业——例如建筑和结构。早期的程序员会认为自己是一名造房子的建筑工人。造房子,并且造得很好,这非常有价值。接受指令和规格,用适合的技能打造一些东西。
但是,也许你也会想要设计房子。或者想要了解是什么使得房子更有效或更强壮?那么你需要做什么呢?
如果是编程,也许你会想要设计自己的软件,为新的功能构建蓝图,或者从根本上改善系统的速度、效率和准确性。
这些类型的目标在追求更加正式的教育时可以给你额外的步骤,去真正成为该领域的领导者。学位会帮助你发展事业和打造声誉,声誉可以带给你中级的,高级的甚至是行政管理的专业机会。
如果你想要有那种程度的编程和软件开发水平,就像很多程序员做的那样的话,那么你最好认真考虑教育课程。 学位会给予你教导和指导,以及显示你通过高层次严格训练的文凭证书。
对于转职业的正式教育有两个选择,即训练营和硕士课程。下面让我们来看看两者之间的差异。
训练营vs.硕士课程
现在美国的训练营和密集课程被设计得会带给你最新的一系列特定的技能。通常就像全职工作一样,所以你可能每周需要花40小时,用上几个月的时间来与其他的学生一起学习。可以认为这种课程类似于前面提到的自学,只不过它有一些额外的工具和动机来帮助你保持专注。很多人都表示这种课程更好,学完出来你就会有满脑子的知识,以及有着类似技能集的新的朋友圈。
这些课程并不等同于大学学位,所以不要认为它们是一回事。课程计划可以填补人才短缺的差距,但你学到的会相对比较具体和有限。他们提供的信息可能会和例如The Odin Project这样的项目非常相似,因此它更多的是自学材料而不是大学材料。
训练营肯定可以让你胜任具体职位,因为他们传授的是实用的计算机编程技能。缺点是,他们没有时间深入到传统的计算机科学,也没有时间对行为规则有一个基本的认识。 因此,这可能会限制你未来几年内的发展潜力,并且在看到任何要求学位课程的角色时排除掉你。
追求计算机科学硕士学位是对于那些想要上升到行业顶端,并有机会进入这个行业可以提供的顶级公司,拿到高额薪水和高级机会的人而言的。旨在重定向你的职业生涯的硕士学位对于大数人而言是长期的,并且是最有利的目标。许多人会在职业培训开始之前去上强化课程,类似于训练营,以便于加快速度。
拥有计算机科学学位,或MSCS,对于那些拥有长期目标的人是最全面的方法。学习算法和域,范围从计算机图形到联网到用大数据工作。它也可以为你提供接触行业中备受推崇的教师和导师的机会,并且给你一些顶级高科技公司的强大校友圈子。
EarlGrey:假如你已经失去了攻读计算机学位的机会,那么可以借助国外大学的公开课弥补,如哈佛的CS 50
这是你可以做的最大投资,包括时间和金钱,并且只要你了解前因后果并准备充分利用它的话,就应该投入进来。在获得学位的同时你用来学习的时间越多,你用来磨砺编码和解决问题的技能的时间越多,你在学校时拿到的实习岗位以及毕业时拿到的offer岗位越好。
写在最后的话
高科技产业正在不断壮大,而且聪明和有志于此的人完全有机会转行。有大量的免费在线资源可帮助你跨出第一步。
在经历过一些项目,或启动和运行一些交互式网页之后,问问自己这是否能让你足够喜欢并且保持决心坚定不移。如果你的回答是yes,并且想要加速理解的话,你可以考虑追求更多的正规教育。
当你准备好投入时间和金钱在这个有趣又有钱赚的行业中时,学位课程可以帮助你达到最高的高度。
如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:dayuQAQ,您的支持是对我最大的鼓励!共同学习,共同进步:)