-- 一个正常理智的人是如何抓狂的
我本来是个穿正装坐办公室的人。但当我有了个模糊的创业灵感的时候,我决定自己学习编程。
我听说过一个家伙吹牛说使用一门叫做Ruby的语言是如何方便快捷令自己的工作流程自动化的。我想,那就学Ruby吧。于是我回到家开始google。15秒钟过后,我开始研究Ruby的教程了。
一周之后,我第一次参加黑客聚会。每个人都在讨论向Scala,Clojure和Go这样的编程语言。有很多需要学习的东西。我借了三本O‘relly出版的专业书籍,每本读了50页。
我的一个朋友告诉我应该学会Emacs并给了我一些配置文件。我花了几个小时学习基本的Lisp语言之后可以进行简单基本的配置了。
之后一个伙计知道我使用Emacs就问我,为什么用Emacs呢?不知道Vim更好一些么?哦,Vim...之后我开始记忆Vim众多的快按键。
那时候我以为,打字速度越快编码速度越快。所以我把键盘布局调成了程序猿Dvorak模式。心里想,这才是对程序猿高效的键盘布局呀。
那时候我把Linux安装在了我的上网本上,我可以每分钟输入10个单词,同时我自学了Python。
七个月对代码学习加上参加了一些编程活动之后,我找到了我第一份软件工程师的工作。
和CTO面试的时候,我告诉他我学到的复杂的配置。CTO礼貌的对我点头。之后我又把我所有知道的东西向他展示了出来。他把我拉进单独面试间,告诉我。做一件事情有很多种方法,但是只有几个方法管用。然后递给我一个笨重的MacBook,把我拉进了开发间。
四年前,这家公司决定使用Ruby On Rails来开发他们的产品。他们对于决定聚精会神的执行着。现在来看之前的一些代码仍然是完整的。所有工程师使用MacBook,环境类似他们生产上使用的Ubuntu Server。这里没有Vim和Emacs的纷争,所有人使用RubyMine,一个功能强大的集成开发平台,有着很好用的默认配置。这就意味着,所有工程师都可以肩并肩的在一起开发。不用纠结其他同事的开发环境。这个决定解决了两个决定协作的程序猿之间大多数的问题。
即使我不会使用Ruby On Rails,公司也没说什么。因为我很专注的学习Python和Django并赢得了一次黑客马拉松,公司认为我可以最终学会Rails。
头几个星期很痛苦,不仅仅因为我在学习一门新语言,一个新的框架和一个新的编程平台。我感到很痛苦因为我需要开启一段很荒谬的自虐之路来学习编码。
我自己在图书馆,咖啡厅花费了大量的时间盲目的通过命令行安装各种工具,调试Linux驱动问题。我满脑子想的都是命令行缺少参数和各种新工具的尝试。我涉及了网上每一门课程,进行了无数的在线课程.在没看指导教程通过网络学习,我经过五个月才找到了一些门路。这给我的印象就是,编程是一个徒劳的挣扎。这段痛苦的经历让我认为我遇到的那些程序猿都是编程经验丰富的同时对别人忽略学习编程的痛苦。
这张照片是我在我之前工作最后一天拍摄的。我起了个大早,穿戴整齐,重新明确了一下我的任务:开始学习代码。我的Facebook签名是:”我的新办公室-我把自己所在这里从早上八点到晚上六点。期间只有上厕所修一下“。我试着让自己谈吐和程序猿一样。现在我每天都这样,没有讽刺的意思...
而我的同事恰恰相反。他们基本不需要考虑语法错误,因为IDE就可以先发现。我同事的MacBook工作的很好。如果他们遇到一个错误,只需要几分钟时间,他们通过google就可以解决。他们简单的互相沟通,帮助彼此调试程序。他们经常来到对方的桌子旁,开始结对编程。这里没有自负和精英主义。没有人认为编程是一种折磨。他们之间就像友好的具有一定编程经验的成年人之间的愉快谈话。
团队坚持使用他们自己的工具。除了黑客马拉松上体验新技术比如Angular.js这种新技术的激情,大多数时间他们都专注于现有的技术。他们对于开发环境改进和修改很保守。
你在ThoughtBot也会看到同样的情况。每个人都坚持使用小而有效地工具链。(比如Rails,Vim,Postgres 和Redis).通过专注于几个关键的工具,他们的工程师很快就变成了专家并可以轻松的进行沟通。
所以真正的问题是,如果高产能的软件工程团队通过专注于一组工具来相互协作,人们刚开始接触编码是不是也需要这么做呢。线上的编程教学和编程培训看起来是这么做的。
但是作为一个个人,面对这么多选择,确定学习什么真的很困难。我知道因为我当时就像在十字路口的一条狗,一会去追一辆汽车,一会有去追另一辆。一个好的程序猿的技巧应该可以被描述为T字形,对很多领域一知半解,对某一门技术十分精通。而经过几个月的压力和努力工作,我被塑造成了一个粗线形。
按照我的方法进行学习的人,我见过很多人都是这么开始的,最后都很失落,放弃了他们成为一个程序猿的梦想。我不想这样的事情再发生在你们身上。
你需要专注:
出了远期的麻烦,一下是我看到新手程序猿最常见的大问题:
- 频繁的更换语言和框架,或者自以为是的认为自己可以成为所有语言的专家。
- 自定义他们自己的开发环境,尽管有成熟方便的工具,他们宁愿使用比较生疏的工具
- 试着学习Docker和Famo.us类似的技术,因为新技术令人激动人心。尽管他们还没有很好地掌握基础知识。
如果我必须用一个词总结我的建议的话那就是:专注。
我给你提的问题是:你对你的学习编程的计划可以用专注来描述么?
如果你感到你的计划是专注的,你应该现在马上关掉网页回去学习,因为我不想说太多打扰到你。
如果你还没有那么的专注于你的学习计划的话,你可以试试以下几招。但是会法非你几分钟的时间来做出艰难的决定。等等!别走......
哦太好了~你还在。好的,这些是你需要做得决定:
1.选择一个你感兴趣的软件开发行业作为你的职业:网站开发,移动端开发,游戏开发或者嵌入式开发。我推荐网站开发,因为它更灵活。这方面有很多的工作机会和学习资源。如果你的兴趣不在网站开发这一块,先把我的博客放一放,去google一下xxx开发,然后全力以赴~
2.选择一种语言:JavaScript,Ruby或者Python。每种语言都有强项。每种都有相应的工具来创建网站应用。(分别是:Node.js,Rails,还有Django)。除非你已经有了决定,我是推荐JavaScript,因为它更流行一些。
4.选择一下:买个新的或者二手的MacBook,或者在你现有的计算机上安装Ubuntu。如果需要其他的工具,通过课程中的推荐来安装就可以了。
一旦你做出了这些选择,前面的路就很简单了。对于新鲜的工具带来的神秘感保持一颗清醒的头脑。保持住每天时按量完成课程,即使课程只有半个小时。相信你今天做的决定,铭记:只要足够耐心,任何有志向的人都可以成为优秀的程序猿,当然也包括你!
原文地址:http://blog.freecodecamp.com/2014/11/a-cautionary-tale-of-learning-to-code.html