关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 程序人生 »为什么成为一名程序员这么难 —— 学Coding的必经之路

    为什么成为一名程序员这么难 —— 学Coding的必经之路

    2015-03-28 00:00:00 出处:ITJS
    分享

    有人说,每个看起来与正常人无异的工程师,其实都是在学习程序开发的途中熬过、压抑过、而且创伤过的反社会人士(sociopaths)。

    在学习程序开发的过程中,常常看到网络上的「甘苦谈」,也听过身边前途一片光明的工程师朋友们分享过学习历程,总觉得不同的人、同样的故事却不断的重复,像是狼叫声般,从远处传来一声又一声的回响。

    最近读到 Erik Trautman 在 viking Code School 部落格中的文章《Why Learning to Code is So Damn Hard》,文章里将学习写程序(Learn to Code)的过程分成了四个阶段,并解释了两个影响各阶段形成的关键因素「资料密度」以及「知识广度」,最后集合成这张图:

    coding_is_hard_combined_chart

    该文很有趣也十分符合我所听闻的那些「工程师辛酸史」,因此决定将这四个阶段介绍给大家,希望程序初学者们在进入这条不归路之前,眼睛要放亮、计划要周详,清楚明白在前方等你们的是什么,做好完全心理准备吧!

    接下来我将介绍从刚开始写程序到成为一名工程师,Erik Trautman 所归类必经的四个阶段:

    想成为工程师,请做好准备迎接这段必经之路

    先假设你学写程序的终极目标是要靠这行吃饭 –– 进入相关领域工作或是自行创业,你是否做好万全准备可以从你的信心(Confidence)跟能力(Capability)散佈图中看出:

    coding_is_hard_confidence_competence

    随着你具备的知识跟技能越来越多,你的自信心也会随之而增减,最后达到能力够信心足的「Job Ready」点。在 Job Ready 前则可以分成四个阶段:

    第一阶段:手牵手心连心蜜月期

    刚开始进入程序开发界的朋友们总是怀抱着远大的梦想跟抱负,这不能怪他们,毕竟一方面,大家小时候听多了「写程序很难」、「电脑科学很硬」这种传闻,从一开始就把不少人吓去念社会科学(…没有冒犯社会科学专业人士的意思);另一方面,「全民写程序」这项运动实在太成功,坊间许多工具跟学习平台让程序开发变得超好理解、上手容易,像是 Codecademy、Treehouse、跟 Code School 等线上平台,或是麻省理工的 Scratch 语言、Google 的 Blockly 等程序语言工具,成功地营造了人人都能写程序而且靠这行吃饭的假象形象。

    突然间我们的问题不再是「困难度」,而是「比天高的期望」跟「比地大的梦想」。

    最重要的是,以上提到的这些工具跟平台实在太有用,带领毫无程序开发经验的初学者们一步步认识变数、条件语句、程序语法。当你一路过关斩将把程序语言基本逻辑跟语法学会的同时,你就会超有成就感、自信心大增,开始有「原来我也行嘛」、「写程序也不过就这样」的感觉,基本上觉得自己已经跟「工程师」相差不远了。

    coding_is_hard_phase_i_conf_comp

    这个阶段将充满喜悦与成就感,在各种线上工具、网络教学的帮助下,你享受着用指尖下指令、电脑就能准确执行的主导感,你赞叹着程序语言的神奇与强大之处,从 Hello World 到简单回圈,每完成一道练习题你的成就感又增加几分,很多人会在这个时候认为自己已经爱上了电脑科学(而且觉得电脑科学也爱他们),正处于能力提升,自信心也大增的「蜜月期」,这时你可能会觉得世界真美好、人生大概就会从此飞黄腾达,但我得残酷的告诉你:

    这段旅程才刚开始而已。

    第二阶段:困惑之崖

    就跟大部份的情侣/新婚夫妻一样,蜜月期会结束,你会慢慢发现「相爱没这么简单」。

    作业难度一增加(重点是程序码长度也会跟着增加),程序错误警告就频频出现,开始不停的除错(Debug)。而且通常最大的挑战是 –– 当错误出现时,你根本不知道错在哪里、该问什么问题。你的学习进度在这个阶段开始停滞不前,像路走到一半突然遇到悬崖而无路可走般,开始对之前的认知感到困惑,跟着信心大失。

    coding_is_hard_phase_ii_conf_comp

    通常这个阶段会在你完成线上的基础教学后发生。以制作个人网站(Portfolio Website)为例好了,W3 School 平台提供了一系列 HTML、CSS、JavaScript 等网页制作相关的程序教学,让初学者一单元一单元的学习语法跟功能,每单元还有例子示范用法,看似好简单!全部跟着学一遍之后,你准备好动手打造自己的网站,打开文字编辑器, ,然后写没两行就卡关了。

    也许靠 Google 搜寻可以让你撑到完成网站基本架构,但当你想实现自己的创意、加上个人化的设计时,网络上的回答跟示范总是和你心里所想的不太一样,所以程序码不能全抄,可是左拼右凑出的程序码看似可行但实际上差得可远了!偏偏还不知从何 debug 起,可能投资了大半的时间程序码还「有减无增」,毫无进展可言。

    这是一个尤其挫折的必经阶段,想成为 Programmer 就必须经历这个关卡,勇敢跳下悬崖、逼自己展翅高飞(当然在这个阶段摔死的小雏鸟数量十分可观)。

    但即使你消灭了无数的 bug,终于完成了几个小专桉后,你也别高兴得太早,未来的路还是非常长远而且挑战性更高!对于想进入这行吃饭的人来说,「困惑之崖」通常是你决定是否全心全意进入这一行的转捩点,而当你投资所有的时间心力在写程序上时,你将进入最让人心灰意冷的第三阶段。

    你可能会很好奇,到底为什么紧紧相连的第一阶段(蜜月期)跟第二阶段(困惑之崖)会差这么多?要是你也正在经历以上两个阶段,你要知道,造成阶段转换的原因跟你一点关係都没有,并不完全是因为你比别人笨或比别人不努力,而是因为「资源密度」改变的缘故。

    因素1:资源密度 Resource Density

    coding_is_hard_resource_density

    在第一阶段中有提到,当零经验零基础的你开始学习写程序时,身边有着无数的资源跟工具等着你来运用。到 Google 搜寻打「Learn to Code」你会查到超多程序学习平台、教学文、教学影片、甚至经验谈,让你感到万分的亲切及温暖,其「手牵手心连心蜜月期」的称谓当之无愧。

    coding_is_hard_resources_screenshot

    可是到了第二阶段时,这些教学资源的数量将大为骤减,任何一个刚脱离初学者的程序学习者都能够证实我此言不假。初学者一开始遇到的障碍都是「一般常见问题」,教学文、教科书里就会注明了;后期由于作业难度以及个人需求,问题才渐渐复杂起来,要从 Stack Overflow 或是一些程序人的部落格中去找寻解题线索。一直到在你遇到的问题已经棘手到网络上根本找不太到线索的时候,你便进入了下一个阶段。

    第三阶段:绝望沙洲

    要了解进入第三阶段的关键,就要了解另一项影响着各阶段变化的重要因素:知识广度。

    因素2:知识广度 Scope of Knowledge

    coding_is_hard_scope_of_knowledge

    「知识广度」也就是度过每个阶段你所必备的知识领域范围。刚开始时你需要吸收的知识很集中,不管用哪种程序语言、不管功能是什么,首先都要学会变数型态、宣告语法、回圈及条件判断式等等,这时随便请一个工程师教你都是一样的,因为「重要须知」就是这几点而已。

    可是学完基本功后,你所需的知识领域会一下子扩展很多,像是开始学习物件导向或是着重演算法的效率,你会需要扎实的电脑科学背景来应付,而且每一个应用都可以牵扯出更多的变化… 相信我,这不是几堂 MOOC 课程就能救得了你的。

    在这个时期,万能的 Google 也只会丢给你更多你不懂的东西,根本查不到相关的线索!最糟的是你根本不知道你什么不知道。(You don’t know what you don’t know.)。于是「学也学不完、越学越不懂」的无力感排山倒海而来,进入最最难熬的第三阶段 –– 「绝望沙洲」。

    这个阶段顾名思义像是在横越沙漠般,是一段非常长且寂寞的旅程,让你有不知何年何月才能走出来的绝望感。在一望无际的沙漠里,根本搞不清楚东西南北,资料查了半天毫无斩获,还不时被海市蜃楼(错误资讯或看似可行的解决方桉)给误导,搞得灰头土脸、头昏眼花,在这个阶段晒死、渴死、绝望死的有为青年更是不计其数。

    coding_is_hard_phase_iii_conf_comp

    但只要在绝望沙洲里熬下去,接下来就会自在许多了!累积足够的经验,程序的错误就会大量减少、达到一定知识水准,就能准确判断问题的方向切入核心,工作效率因而有所增进,知识广度也会慢慢聚焦。等你拖着一身的疲惫终于走出这荒漠时,就进入了最后的阶段。

    第四阶段:创伤后的恢复期

    踩着千万人的尸体成功横越了沙漠,你的自信心开始回升,Google 功力也可以说是神人的等级。到了这个时候,Hacker News 的新闻以及超硬的 MOOC 课程都不成问题,你也选定了某个程序语言跟框架来专研,而且有能力制作出可以正常运作的应用程序了。

    但你心里深处总有着隐隐的不安,觉得程序能「用」但其实代码凌乱无章,工程师的头衔下其实是误打误撞进这行的半调子,虽然你似乎具备了一切就职条件,却总害怕面试官发现你根基薄弱的电脑知识… 你正在经历「创伤后的恢复期」。

    在飞越困惑之崖、横越绝望沙洲之后,你应该已经学会该学的、做了该做的,成为一个名符其实的工程师,却总觉得自已资质平庸根基不稳,虽然有成功打造出一个个专案而信心回升,但老是感叹自己与心目中「专业工程师」仍有一大段差距…,这些都是「冒牌者症候群」(Impostor Syndrome)在作祟!

    在这创伤后的恢复期中,你可能会经常自我怀疑,但只要顺着这波效率提升信心也回升的潮流继续努力,在能力与自信达到一个程度时… 恭喜你:You Are Job Ready!

    coding_is_hard_phase_iv_conf_comp

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    哈弗H6经典版重庆车展吸睛,8.19万起售,性价比王者来袭!

    vivo海外新机Y400 Pro与X200 FE曝光,定位中高端市场,上市在即

    苹果iOS26将推液态玻璃设计,或为20周年iPhone特别版预热

    红魔电竞平板3Pro来袭,9英寸小屏能否成为游戏新宠?

    荣耀布局机器人,能否在AI终端生态之战中抢占先机?

    美的空调免费清洗服务受热捧,用户:专业又省心,点赞!

    英特尔酷睿9 270H性能首秀:单线程跑分领先i5-14500HX 14%

    HOTWAV R9 Plus三防平板来袭,20080mAh大电池续航无忧!

    小米耳机管理大变革!蓝牙设置页一统江湖

    TCL QM5K系列QD-Mini LED电视发布:HVA面板,分区数高达314

    IT头条

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    阿里千问3开源首战告捷:全球下载破千万,国产AI模型崛起新高度!

    01:22

    DeepSeek R1小版本试升级:网友实测编程能力已达到国际一线水平

    23:15

    NVIDIA 与 Dell 合作,大规模交付 Blackwell AI 系统

    20:52

    Cerebras 以最快的 Llama 4 Maverick 性能引领 LLM 推理竞赛

    20:51

    技术分享

    PHP中的随机性——你觉得自己幸运吗?

    搞定Ubuntu Linux下WPA无线上网

    Java使用内存映射实现大文件的上传

    MySQL安全性指南

    MySQL两项性能的基本测试浅谈

    教您使用UniqueIdentifier选取SQL Server主键

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。