资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
有人说,每个看起来与正常人无异的工程师,其实都是 在学习程序开发的途中熬过、压抑过、而且创伤过的反 社会人士(sociopaths)。在学习程序开发的过程中,常常 看到网络上的 甘苦谈,也听过身边前途一片光明的工程师朋友们 分享过学习历程,总觉得不同的人、同样的故事却不断 的重复,像是狼叫声般,从远处传来一声又一声的回 响。最近读到Erik Tra utman在Viking Code School部落格中的文章Why Learning to Code is So Damn Hard,文章里将学习写程序 (Learn to Code)的过程分成了四个阶段,并解释了两个影响各阶 段形成的关键因素资料密度以及知识广度,最 后集合成这张图:这篇文章很有趣也十分符合我所听闻 的那些工程师 辛酸史,因此决定将这四个阶段介绍给大家,希望程 序初学者们在进入这条不归路之前,眼睛要放亮、计划 要周详,清楚明白在前方等你们的是什么,做好完全心 理准备吧!接下来我将介绍从 刚开始写程序到成为一名工程师,Erik Trautman所归类必 经的四个阶段:想成为工程师,请做好准备迎接这段必 经之路先假设你学写程序的终极目标是要靠这行吃饭 进入相关 领域工作或是自行创业,你是否做好万全准备可以从你 的信心(Confidence)跟能力(Capability)散佈图中看出:随着 你具备的知识跟技能越来越多,你的自信心也会随 之而增减,最后达到能力够信心足的Job Ready点。 在Job Ready前则可以分成四个阶段:第一阶段:手牵手 心连心蜜月期刚开始进入程序开发界的朋友们总是怀抱 着远大 的梦想跟抱负,这不能怪他们,毕竟一方面,大家小时 候听多了写程序很难、电脑科学很硬这种传闻 ,从一开始就把不少人吓去念社会科学(没有冒犯社会 科学专业人士的意思);另 一方面,全民写程序这项运动实在太成功,坊间许 多工具跟学习平台让程序开发变得超好理解、上手容易 ,像是Codecademy、Treehouse、跟Code School等 线上平台,或是麻省理工的Scratch语言、Google的Blockly 等程序语言工具,成功地营造了人人都能写程序而且靠 这行吃饭的假象形象。突然间我们的问题不再是困难 度 ,而是比天高的期望跟比地大的梦想。最重 要的是,以上提到的这些工具跟平台实在太有用,带领 毫无程序开发经验的初学者们一步步认识变数、条件语 句、程序语法。当你一路过关 斩将把程序语言基本逻辑跟语法学会的同时,你就会超 有成就感、自信心大增,开始有原来我也行嘛、 写程序也不过就这样的感觉,基本上觉得自己已经跟 工程师相差不远了。这个 阶段将充满喜悦与成就感,在各种线上工具、网络教学 的帮助下,你享受着用指尖下指令、电脑就能准确执行 的主导感,你赞叹着程序语言的神奇与强大之处,从 Hello World到简单 回圈,每完成一道练习题你的成就感又增加几分,很多 人会在这个时候认为自己已经爱上了电脑科学(而且觉得 电脑科学也爱他们),正处于能力提升,自信心也大增的 蜜月期,这时你可能 会觉得世界真美好、人生大概就会从此飞黄腾达,但我 得残酷的告诉你:这段旅程才刚开始而已。第二阶段: 困惑之崖就跟大部份的情侣/新婚夫妻一样,蜜月期会结 束,你会慢慢发现相爱没 这么简单。作业难度一增加(重点是程序码长度也会跟 着增加),程序错误警告就频频出现,开始不停的除错 (Debug)。而且通常最大的挑战是当错误出现时,你根 本不知道错在哪 里、该问什么问题。你的学习进度在这个阶段开始停滞 不前,像路走到一半突然遇到悬崖而无路可走般,开始 对之前的认知感到困惑,跟着信心大失。通常这个阶段 会在你完成线上的基础教学后 发生。以制作个人网站(Portfolio Website)为例好了,W3 School平台提供了一系列HTML、CSS、JavaScript等网页制 作相关的程序教学,让初 学者一单元一单元的学习语法跟功能,每单元还有例子 示范用法,看似好简单!全部跟着学一遍之后,你准备好 动手打造自己的网站,打开文字编辑器,然后写没 两行就卡关了。也许靠G oogle搜寻可以让你撑到完成网站基本架构,但当你想实 现自己的创意、加上个人化的设计时,网络上的回答跟 示范总是和你心里所想的不太一样,所以程序码不能全 抄,然而左拼右凑出的 程序码看似可行但实际上差得可远了!偏偏还不知从何 debug起,可能投资了大半的时间程序码还有减无增 ,毫无进展可言。这是一个尤其挫折的必经阶段,想成 为Programme r就必须经历这个关卡,勇敢跳下悬崖、逼自己展翅高飞( 当然在这个阶段摔死的小雏鸟数量十分可观)。但即使你 消灭了无数的bug,终于完成了几个小专桉后,你也别高 兴得太早,未来的 路还是非常长远而且挑战性更高!对于想进入这行吃饭的 人来说,困惑之崖通常是你决定是否全心全意进入 这一行的转捩点,而当你投资所有的时间心力在写程序 上时,你将进入最让人心灰 意冷的第三阶段。你可能会很好奇,到底为什么紧紧相 连的第一阶段(蜜月期)跟第二阶段(困惑之崖)会差这么多? 如果你也正在经历以上两个阶段,你要知道,造成阶段 转换的原因跟你一点 关係都没有,并不完全是因为你比别人笨或比别人不努 力,而是因为资源密度改变的缘故。因素1:资源密 度Resource Density在第一阶段中有提到,当零经验零基 础的你 开始学习写程序时,身边有着无数的资源跟工具等着你 来运用。到Google搜寻打Learn to Code你会查到超多 程序学习平台、教学文、教学影片、甚至经验谈,让你 感到 万分的亲切及温暖,其手牵手心连心蜜月期的称谓 当之无愧。然而到了第二阶段时,这些教学资源的数量 将大为骤减,任何一个刚脱离初学者的程序学习者都能 够证实我此言不假。初学者一 开始遇到的障碍都是一般常见问题,教学文、教科 书里就会注明了;后期由于作业难度以及个人需求,问题 才渐渐复杂起来,要从Stack Overflow或是一些程序人的 部落格中 去找寻解题线索。一直到在你遇到的问题已经棘手到网 络上根本找不太到线索的时候,你便进入了下一个阶 段。第三阶段:绝望沙洲要了解进入第三阶段的关键, 就要了解另一项影响着各阶段变 化的重要因素:知识广度。因素2:知识广度Scope of Knowledge知识广度也就是度过每个阶段你所必备的 知识领域范围。刚开始时你需要吸收的知识很集中,不 管用哪 种程序语言、不管功能是什么,首先都要学会变数型 态、宣告语法、回圈及条件判断式等等,这时随便请一 个工程师教你都是一样的,因为重要须知就是这几 点而已。然而学完基本功后,你 所需的知识领域会一下子扩展很多,像是开始学习物件 导向或是着重演算法的效率,你会需要扎实的电脑科学 背景来应付,而且每一个应用都可以牵扯出更多的变化 相信我,这不是几堂MOO C课程就能救得了你的。在这个时期,万能的Google也只 会丢给你更多你不懂的东西,根本查不到相关的线索!最 糟的是你根本不知道你什么不知道。(You dont know what you dont know.)。于是学也学不完、越学越不懂 的无力感排山倒海而来,进入最最难熬的第三阶段 绝望沙洲。这个阶段顾名思义像是在横越沙漠般, 是一段非常长且寂寞的旅程,让你有不知何年何月才能 走出来的绝望感。在一望无际的沙漠里,根本搞不清楚 东西南北,资料查了半天毫无斩获,还不时被海市蜃楼( 错误资讯或看似可行的解决 方桉)给误导,搞得灰头土脸、头昏眼花,在这个阶段晒 死、渴死、绝望死的有为青年更是不计其数。但只要在 绝望沙洲里熬下去,接下来就会自在许多了!累积足够的 经验,程序的错误就会大 量减少、达到一定知识水准,就能准确判断问题的方向 切入核心,工作效率因而有所增进,知识广度也会慢慢 聚焦。等你拖着一身的疲惫终于走出这荒漠时,就进入 了最后的阶段。第四阶段:创 伤后的恢复期踩着千万人的尸体成功横越了沙漠,你的 自信心开始回升,Google功力也可以说是神人的等级。 到了这个时候,Hacker News的新闻以及超硬的MOOC课 程都不 成问题,你也选定了某个程序语言跟框架来专研,而且 有能力制作出可以正常运作的应用程序了。但你心里深 处总有着隐隐的不安,觉得程序能用但其实代码凌 乱无章,工程师的头衔下其实 是误打误撞进这行的半调子,虽然你似乎具备了一切就 职条件,却总害怕面试官发现你根基薄弱的电脑知识你 正在经历创伤后的恢复期。在飞越困惑之崖、横越 绝望沙洲之后,你应该已经 学会该学的、做了该做的,成为一个名符其实的工程师 ,却总觉得自已资质平庸根基不稳,虽然有成功打造出 一个个专案而信心回升,但老是感叹自己与心目中专 业工程师仍有一大段差距 ,这些都是冒牌者症候群(Impostor Syndrome)在作祟 !在这创伤后的恢复期中,你可能会经常自我怀疑,但只 要顺着这波效率提升信心也回升的潮流继续努力,在能 力 dhrsvx 有享商城
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号