热门移动_飞机生科

想转行靠写程式吃饭吗?一个自学程式语言几乎将自己逼疯的亲身经

时间:2020-07-10  作者:
想转行靠写程式吃饭吗?一个自学程式语言几乎将自己逼疯的亲身经

软体工程师薪水正在逐年攀升中,2014 年软体工程师的平均年薪达 $97098 美元之高 1,学习写程式的热潮更是席捲全球,下自 8 岁上自 80 岁每天都有人「Hello World!」一下,看着硅谷创业公司迅速崛起、一夜致富的空前盛况,相信许多人都正在考虑学写程式、转行当软体工程师。

人人都能学写程式,这点毋庸置疑。只是在你「转行」之前,也许你会想听听 Quincy Larson 从朝九晚五上班族「转行」软体工程师的亲身经历。

Quincy Larson 现在是线上程式语言学习平台 Free Code Camp 的软体工程师,前阵子他发表了一篇文章描述他自学程式语言而几乎被逼疯的过程,也在最后给真心想「转行」的程式新手们一些过来人的意见。

想转行靠写程式吃饭吗?一个自学程式语言几乎将自己逼疯的亲身经

在此分享 Quincy Larson 的文章 《A Cautionary Tale of Learning to Code. My own.》,本文非逐字翻译,内文细节可能有笔者多加琢磨或改写以便阅读,请勿见怪。

一个学写程式的警世故事 —— 我的亲身经历

我是一个普通的上班族,平时穿西装、坐办公室,过着朝九晚五的生活,但脑里一直有个模糊的创业想法。有一天我无意间在酒吧听到隔壁桌的客人大肆讨论着他藉由「Ruby」来自动化他的日常工作、大大提高了工作效率。我心想:「『Ruby』,是吧?」回家后我立马上网搜寻「Ruby」,十五秒后我已经开始学起程式语言 Ruby 了。

一个星期后,我参加了人生中第一个骇客空间,听大家讨论着程式语言像是 Scala、Clojure 跟 Go,太多新知需要吸收了,当天我抱了三本厚厚的程式语言书回家看,每本都看了 50 页左右。

身边的一个朋友听到我在学程式语言,他建议我应该要先把 Emacs 学好,在我学 Emacs 时,另一个朋友走过我身边发现我在用 Emacs,他跟我说:「你怎幺会选用 Emacs 呢?!难道你不知道 Vim 比较好?」

想转行靠写程式吃饭吗?一个自学程式语言几乎将自己逼疯的亲身经

于是我开始记 Vim 的键盘指令,这个时候的我觉得「下指令下得越快= 写程式写得越快」,还甚至因此换了 Dvorak 键盘 —— 程式开发者公认最有效率的键盘。

想转行靠写程式吃饭吗?一个自学程式语言几乎将自己逼疯的亲身经

一段时间后,我已经用 Linux 作业系统用得很顺手,还在 Udacity 上学习 Python。经过七个月的自学,我应徵上人生第一个「软体工程师」职位。

公司那时决定用 Ruby on Rails 来构建他们的产品,虽然我不会 Ruby on Rails,但公司认为我既然能自学 Python 跟 Django 并赢了一次骇客松,我自然也有能力学好 Ruby on Rails。

前几个星期对我而言非常的难熬,并不只是因为我要学习一个全新的程式语言、熟悉一个全新的开发环境 RubyMine、而且跟一个陌生的团队合作,真正让我觉得痛苦难熬的是:

我发现过去是我自己选了一条特别艰难的路来折磨自己 。

在自学的那段时间,我花了几个月独自坐在图书馆跟咖啡厅里专研如何在命令列环境下安装工具、debug Linux 系统问题,有时因为一个漏写的括号、分号而卡了老半天,我修了无数个 MOOC 课程,但一直到了第五个月我才真正有点「作品」可以放到网路上,这些过程让我相信程式开发是个永无止境的挣扎之路。

结果看看我身边的同事们,他们几乎很少因为语法错误、打错字、漏了个符号这种小事而卡关,因为他们的 IDE 都先把这些错误抓出来了;当遇到问题挣扎几分钟还解不出来时,他们会直接把问题丢给朋友,互相帮忙 debug;在开发程式时,他们总是在对方的位子随性的来来去去互通有无。

我的队友他们十分忠于「自己的一套工具」,当然在许多场合里他们应该都曾玩过许多不同语言、不同框架,但 他们主要专注于精进自己现有的工具技能,对于能够允许进入他们脑中「程式库」的知识,他们的态度相对保守 。

就跟 ThoughtBot 等平台一样,开发者只固定用少数但有效率的工具链,当开发者们只要全心全意的「用好」几种关键工具时,他们全都成了可以互相合作沟通无障碍的专家。

所以我真正的问题是,如果限制一个团队的软体工程师使用同样几种固定工具可以让他们拥有超高生产力,那学习写程式的新手不也是在只学固定几样工具的时候能够学得最好吗?

其实线上的各种程式语言学习平台、程式营也是这样教的,虽然听起来理所当然,但是当你是一个人去面对这幺多的选项时,真的很难选择该学哪一样!我懂,因为我就是这样经历过来的,像是小狗在十字路口追逐来来往往车子一样,追着一台又去追另一台,不断的在原地漫无目的地横冲直撞。

一名真正优秀的软体工程师,他的知识领域应该是「T」字型的 —— 对任何领域都稍有涉猎但至少在某一方面专精到底。

结果在几个月的埋头苦干之下,我发现我自己是条底线「_」.。

在我遇过跟我一样情形的程式自学者们,其中大概多数人都在这样的过程中丧失信心、迷失方向,甚至放弃了成为软体工程师的目标,我不希望这些情况发生在你们身上。

学程式语言需要你「一心一意」

废话就不多说,在此分享几个我认为程式新手最容易犯的错误给你们参考:

如果以过来人的身份给你们一个最重要的建议,那就是:「请一心一意」。

我也想问,如果你正在学程式的话,你认为你的学习计画够「一心一意」吗?如果你的答案是肯定的,那就不用再往下看下去了,快回去唸书实行你的计画吧!因为我并不想给一些会影响你现在计画的建议。如果你的答案是否定的,那没关係,好消息是你可以从现在开始「一心一意」。

首先,你得先做出一些决定来起头:

  1. 选一种你希望能作为未来职业的软体开发领域:Web、Mobile、Gaming、还是 Embedded?我个人会推荐走 Web 网页端,因为比较灵活弹性,不过如果你没兴趣走网页端的程式开发,那就去 Google「Getting started in ____ development」然后完全的投入你的身心吧!
  2. 选一种程式语言来学:JavaScript、Ruby 或 Python,每种程式语言有各自的网页端开发工具,除非你有特别的偏好,不然我会推荐学 JavaScript,因为 JS 是最普遍最受欢迎的程式语言。
  3. 选一个线上平台/课程来跟着学,这边也推荐你几个选择:学 JavaScript 可以到 FreeCodeCamp 或 NodeSchool ;学 Ruby 到 TheOdinProject 或 Treehouse;学 Python 可以用 Udacity。要相信设计这些课程的专家们,而且依照推荐的流程循序渐进,不要跳来跳去。
  4. 选一个:买一台新的或二手 MacBook,不然就在你现有的电脑里安装 Ubuntu Linux。其他工具就按照你课程的需求跟着安装就好,不要下载安装一大堆有的没的。

最后,当你做出上述四项抉择后,前方的路就只有一条了,请保持清醒,忽略你在这条路上看到的新工具、新语言,他们是会逼疯你、迷惑你的妖魔鬼怪,要一心一意地往前进,保持高度积极的态度逼自己每天有点进度,一天拨出半小时也好,只要有恆心跟耐心,你也能成为优秀的软体工程师!

  1. Tech Pay Hits A Record: This Is What Software Engineers Earn BEFORE Their Bonuses↩
 

《》

欢迎加入「Inside」Line 官方帐号,关注最新创业、科技、网路、工作讯息
上一篇: 下一篇:

相关阅读