打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一个屌丝自学编程的悲惨经历

  软件工程师薪水正在逐年攀升中,2014 年软件工程师的平均年薪达 $97098 美元(约为人民币六十万,小编语:真高!!!想想就兴奋)之高1,学习写程序的热潮更是席卷全球,下自8岁上自80岁每天都有人「Hello World!」一下,看着硅谷创业公司迅速崛起、一夜致富的空前盛况,相信许多人都正在考虑学写程序、转行当软件工程师。

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

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

  

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

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

  一个星期后,我参加了人生中第一个骇客空间(Hackerspace),听大家讨论着程序语言像是 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(整合开发环境,IDE)、而且跟一个陌生的团队合作,真正让我觉得痛苦难熬的是:

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

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

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

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

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

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

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

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

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

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

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

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

  语言、框架、工具,一个换过一个,而且妄想着自己能够每样都精通。

  死守着自己「特制」的开发环境,死都不肯尝试一些「现代工具」—— 被发明来方便开发者们合作交流程序码、还可以自动除错、自动填写的神器。

  在还没把基础打好时,就想尝试一些新兴的工具,像是 Docker 或 Famo.us 等。

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

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

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

  选一种你希望能作为未来职业的软件开发领域:Web、Mobile、Gaming、还是 Embedded?我个人会推荐走 Web 网页端,因为比较灵活弹性,不过如果你没兴趣走网页端的程序开发,那就去 Google 「Getting started in ____ development」然后完全的投入你的身心吧!

  选一种程序语言来学:JavaScript、Ruby 或 Python,每种程序语言有各自的网页端开发工具(分别是 Node.js、Rails 跟 Django),除非你有特别的偏好,不然我会推荐学 JavaScript,因为 JS 是最普遍最受欢迎的程序语言。

  选一个线上平台/课程来跟着学,这边也推荐你几个选择:学 JavaScript 可以到 FreeCodeCamp或 NodeSchool ;学 Ruby 到 TheOdinProject 或 Treehouse;学 Python 可以用 Udacity。要相信设计这些课程的专家们,而且依照推荐的流程循序渐进,不要跳来跳去。

  选一个:买一台新的或二手 MacBook,不然就在你现有的电脑里安装 Ubuntu Linux。其他工具就按照你课程的需求跟着安装就好,不要下载安装一大堆有的没的。

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


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
写给 Ruby 新人的公开信 (我的 Ruby 学习经历) · Ruby China
一个很有借鉴价值的编程故事
如何开始编程语言?给初学者的几个小贴士
编辑器与IDE
硅谷程序员的5种必备技能!
会写程序还不够, 硅谷杰出软件工程师都有的5种能力
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服