如何学习编程并转行
程派的读者中,有不少是想通过学习 Python 转行当程序员的,而且此前没有编程基础。我自己虽然没有最终踏出这一步,但是希望通过分享今天的这篇文章,能对他们的转行之路有所帮助。译文作者及来源详见文末。
如果你想知道如何学习编程和转行,那么你不是在孤军作战。随着科技热潮对软件工程师和计算机科学家需求的增加,很多专业人士开始纷纷将自己的职业生涯转移到一条更注重技术的康庄大道上。
2016年,Glassdoor公布的前25种工作中,技术职位名列前茅。随着来自于美国白宫的 TechHire 人才计划的出台,这个趋势不但没有停止的迹象,而且数字时代正在以闪电般的速度前进。然而,许多软件工程和编程工作依然空在那里,因为企业招不到能够让他们快速雇用的合格候选人。
那么,在没有传统计算机科学的背景下,怎么样才能成为一个受欢迎的程序员呢?
很多人认为,对于这样的职位是不能通过培训的,尤其是——如果你没有本科学位的话。也许你有一个非科班出身,或者你已经走出大学校门很长一段时间却没有实践过曾经学习的技能。值得庆幸的是,现在有很多资源允许你回到这个道路上,改变职业生涯。
确定目标&开始解决问题
首先要明确的是,编程就是解决问题。
经验丰富的程序员能够学习任何语言、解决任何问题,因为他们的教育和职业生涯已经经历过如何最佳地解决问题。经验丰富的程序员会使用这么多年实践中发展出来的多种方法和流程。他们会从多种编程语言,不同的数学概念和函数中选择,以便找到有效的解决方案。
但是这些经验丰富的程序员都是通过实践才获取了这些专业要点。他们屡战屡败,又屡败屡战。他们寻求帮助,他们寻找答案。当面对新的问题时,他们调查研究,制定计划,然后才开始编码。
一开始,你的主要目标应该是建立一个解决问题的系统。当你学习你的第一门编程语言的时候,有很多需要学习的东西,但是在学习基础知识的时候,你需要制定简单和直接的项目目标。
从小项目开始,这将有助于你学习逻辑思维;帮助你了解计算机的工作方式。不要去一步登天地想着创建大网站,制作复杂的app,以及3D视频游戏,即使这些是未来某一天的最终目标。网上的资源很丰富,如GitHub上充满了新手程序员可以上手使用的小而简单的项目。这些都是你在传统的数据结构教科书上可以发现的各种问题——这是另一个选择的途径。小小的实践练习可以帮助你学习编程语言,并训练你用这些语言解决与计算机科学相关的问题。
还在怀疑自己是否能改变职业进入编程行业吗?有一个关于Reddit的故事,来自于一个原本对编程一无所知但在一年后却被雇用了的程序员。他们自己也承认,他们花了很多时间专注于自己的技能,而且这个过程所需要的时间可能会更长,如果你只在晚上和周末学习的话。另一个例子是Colin Cross,一个MPCS毕业生,在他决定得到必要的教育以便于追求全职事业之前,仅仅只是涉猎过计算机科学。
说明一下,我们并没有贬低常规教育的意思。学习如何解决问题是你成功的第一步。常规教育需要更长的时间。首先你应该先看看自己是否能静下心来坐在电脑前编码问题的解决办法。如果不行,那么你会觉得学习编程和转行很难。通过培养解决问题的技能并看看自己是否喜欢这种类型的工作,你才能更好地判断自己是否适合吃技术这碗饭。
通过小型项目攀登这座高峰
对于绝大多数开发者而言,编程围绕着World Wide Web展开。一个动态响应用户输入的网站可能在你的浏览器上看上去简简单单,但是它需要大量富有技术含量的设计和工程,才能使其以这种方式工作。