美文网首页
走少有人走的路:学编程真TM难

走少有人走的路:学编程真TM难

作者: CodingGirlsClub | 来源:发表于2016-07-18 17:34 被阅读0次

    Coding Girls Club 第一期学员们:

    我们一起相伴六周,每日Daily Topic,每周一次线下Meetup以及每周一次Online Meetup,时间真快。今天是第一期的最后一次meetup,有些掏心窝的话,要跟你们说说。

    你是编辑,来学编程干嘛呢?
    你是律师,来学编程干嘛呢?
    你是要找HR工作的毕业生,来学编程干嘛呢?你是测试人员,来学编程干嘛呢?
    你是旅游攻略达人,来学编程干嘛呢?你是市场,六周都在外出差,来学编程干嘛呢?
    你已经在用世上最好的语言,来学Ruby干嘛呢?
    你创业当合伙人,那么忙,来学编程干嘛呢?
    你出差那么忙,一直在香港,来学编程做啥呢?

    这是你们需要自问的问题,而且是你们自己来回答的问题,是解决学编程路上所有问题的基本前提。不想去搞清楚这个问题,甚至认为「这不是我的问题」,一点好处都没有;指望别人解决,也一点用处都没有。唯一 的解决办法 -- 你应该勇敢地说「这是我的问题,这应该也必须由我来解决!」

    六周,大家到现在都经历过了什么?

    最先开始,相比大家对于学习编程抱着极大的热情:我要把我业余的时间全部投入在编程上面、我一定要学会编程,甚至有同学购买新的Mac等等;大家从对编程什么都不知道开始,第一次打开Terminal、第一次自己苦心琢磨安装环境、第一次跑通自己的小程序,学习Git/ CLI/Ruby基础知识,你们的能力(�Competence)获得增长,在此过程中,你们有你们的小确幸。我相信,犹如我自己开始学习编程一样,每一次依靠自己的智慧和努力解决每一个学习上面的bug和疑惑,我都能获得十足开心,我在进步,我能感受到升华。 Running program successfully often made my day!

    但是,更多的是其他的情绪,焦虑、挫败、迷茫、不自信,想放弃、觉得自己不是学习编程的料子、以至于回归到刚刚开始的问题:我干嘛来学习编程了?我的初心是什么,学了一遭,我还是啥都不会,依然不能自己独立作出网站,写出程序;离开依葫芦画瓢的教程和TA的指导,我依然不会编程。

    对的, 学习从来都不是一件容易的事情,传统的教育系统培养学生十几年,企业才招收你;就编程而已,更是: 真TM难学

    我曾经当过Rails Girls 三年志愿者,论及我直接和间接组织的workshop 共18次:北京6次、上海1次;做过一次6个城市同一天workshop的总协调人员、7个城市7周的总调度人;每次按50人估算(北京有时候多一点,最后一次有120个参与者),有让差不多让1000+的女孩子接触编程,那么你们知道最后有多少个人真正成为有编程能力的人吗?

    两个。

    一位是若水,这是她的故事( http://www.ituring.com.cn/article/202161 ); 还有一位是北京去年Workshop的学员,她原本在传统行业,受RG影响,后来自学了Python(故事转弯有点大,我们教的可是Ruby)。对,千分之二的转化率。难不难呢?挺难的呢。

    1 推迟满足感,认清蜜月期

    很难去责怪那另外千分之九百九十八:当初她们开始都抱着极大的热情来学习编程,却没有几人学成。

    一方面是就像我们小时候听到的「狼来了」的童话故事,只是现在童话故事中的老狼换成了编程,让人望而生畏。大家周边从小也不乏这样的声音:女孩子学什么理科、搞什么计算机呢、学点文科找份踏实的工作就行了。这种社会声音制造莫须有的恐惧,吓退了很多人学习编程。

    另一方面, “学习编程”的运动在世界各国兴起,各种学习资料和教程,打破了学习的边界,而且也证实学习编程确实无害。例如Codecademy Code School, Edx/Coursera的各种免费公开的MOOC课程,从入门到高级,比比皆是。跟着教程作出东西会制造一种我已经会编程的假象。

    但,新问题也出现了。有时候不再是害怕开始踏入学习编程,对于现在的你们,你们已经开始学习编程,应当已经克服「狼来了」这部分这种恐惧。新问题是过高的期望和急功近利。

    过去六周,CGC给你们设计的路线、介绍各种工具和教程,就像扶着小孩子走路一样,学习变量、基本语法、完成小程序的挑战、制作简单的网页,你们一步一步建立起个人成就感,自信心开始增长:你觉得自己基本上具备一个程序员的基本素养。编程哪有那么难呢?你们开始在朋友圈晒你们的“学习成绩”。

    这就是问题所在,你们处于称之为「蜜月期」的时期:尽管你感觉处于学会编程的转角,但实际上才刚刚敲门,门还没有推开。

    想一想,假如你打算重新学习一门外语。拿日语来说吧,从前,你只知道有这门语言,从日本动画片《柯南》或者是日剧《白夜行》等学会了两句,然后你打算开始学习日语。每周利用自己的业余时间加入学习班,跟着一个教程学习了六周,会了基本的语法、句式、也能日常对话,可是你能说你会日语吗?

    学习一门普通语言尚且如此,更何况是编程语言呢?

    况且我们的日常语言是模糊语言,大脑比计算机高级太多,能够处理的模糊模式也多很多,试着第一次读读下图:

    disordered_characters.png

    再仔细看一遍上图,语序全都是乱的,却也一点都不影响你的大脑识别其中信息。但计算机不行,计算机必须语法、算法等丝毫不差,否则就会报错出bug。

    因此,在享受蜜月期的同时,必须清醒地认识到「推迟满足感」的意义:

    编程真正的快乐绝不在于跟着教程按部就班完成别人设置的任务,而是重新设置快乐与痛苦的次序:认清自己目前对于编程「You know nothing」的事实并感受痛苦;然后解决接踵而来的新问题并享受更大的快乐,这是唯一可能让你前行的方式。

    【插入曲】编程路上的四个时期

    对编程了解愈少,思维就越是混乱。虚假、错觉和幻觉,只能让我们不知所措。我们对编程实际情况的观念就像一张地图,凭借这张地图,我们同我们前进路上的障碍不断协调和谈判。

    地图准确无误,我们就能确定自己的位置,知道要到什么地方、怎样到达那里;地图漏洞摆出,我们就会迷失方向。

    在进入阶段二之前,我们先来看看 The Bigger Picture

    coding_is_hard_confidence_competence_by_hand.jpg

    上图画出了编程旅途上典型的四个阶段,下面从可获得资源密度(解决问题的可能性)以及所需知识范畴(需要解决问题的难度)来详细定义说明这四个阶段。

    编程旅途中学习的快乐与你的自信心相关联,而信心源于编程能力,对应上图坐标系中的XY轴。

    1. 手把手蜜月期是充满快乐且拥有丰富优质学习资源的时期,看起来你掌握不少tricky的技能,但其实完全是在老师(书、MOOC课程、CGC的TA)的刻意支持下做一些do-ables, 实际上并不tricky。
    2. 悬崖迷茫徘徊期是痛苦的觉醒,当蜜月期结束时会异常痛苦。是的,你会发现一个痛苦的事实:离开教程和教练,实际上,你完全无法独立依靠自我解决任何问题。在此期间,你需要不停地debug,以及依靠自己那点稀薄且不太靠谱的编程知识问自己正确的问题、请教达人正确的问题,直到你用自己的方法实实在在地完成你自己的to-do list。
    3. 绝望沙漠之旅漫长而且孤独,恍如进入无人之境,好像每条路都能到罗马,尝试之后被挫败,不停地绕圈子,同时又极其渴望资源。此阶段,容易走入歧途,犹如海市蜃楼。
    4. 上升膨胀期 最终你走出荒野沙漠,不管你是一带一路还是西天取经。终于你把所有你会的的语法(syntax)、模式(pattern)、算法(algrithm)、想法(idea)、实践(practice)搭建出你自己的网站。但你的代码依然很脆弱,宛如纸房子。你膨胀,因为你自我感觉良好:你的网站尚在运行,你运用有用的模式,你的朋友觉得你的界面很漂亮。 但离CGC所言成为真正有编程能力的人,还有很大差距。

    2 承担责任,纵身一跃度过迷茫期

    从你们报名加入的那一刻起,你们就超越绝大多数人。

    6周的时光,前四周是蜜月期,你们创立了粽子理论来理解面向对象思维、用Ruby语言来写诗、用律师的概念跨界类比理解Ruby的设计思维,你们获得甜蜜的感觉。

    最后两周是实战,CGC把你们推向悬崖,从Idea出发,设计功能,描绘 User Story,绘画Page Flow,设计数据库。

    此时此刻,你们蒙圈了,即使你们当中潜在的优质同学也在悬崖边上徘徊,你们充满沮丧:「还没有学会如何展翅飞翔。」

    此时此刻,你有几种选择:

    • 自己不是这个料,打退堂鼓,退回去,原来干什么继续干什么。
    • 管他的,纵身一跃,摔得遍体鳞伤,继而对编程深恶痛绝。
    • 对自己负责,勇于承担责任。在悬崖边上一边担惊受怕,一边锻炼自己,观测风向,选择适合自己的恰当时机,纵身一跃 -- 终于开始展翅

    如何对自己负责,如何承担责任呢? 回到最开始的问题,这是你自己的责任吗?这是你自己的问题吗?造成你现在没有足够能力飞翔的原因是CGC课程设计的问题?是教练辅导不好的问题?还是无法控制的社会因素造成的?这个问题应该别人和社会来帮我解决,还是应该我自己主动解决呢?

    加入CGC的时候,我们有一项必要条件:每周至少投入10-15个小时,大家需要问问自己,都有做到吗?

    如果你决心让自己成为有编程能力的人, 从 悬崖迷茫徘徊期 生存下来,是时候在这个点让自己 All-in了,

    要有足够的勇气和判断力,承担责任,也要拒绝不该承担的责任和拒绝当下不该有的享乐。

    放弃人生中的某些东西,一定会给心灵带来痛苦。放弃夜晚去跟朋友KTV、放弃周末去跟恋人游山玩水、放弃抱着薯片看韩剧。当然,你也可以回避放弃这些东西,那就是永远原地踏步,不让自己展翅飞翔。

    相当多的人都没有选择放弃,因为他们不想经受「放弃的痛苦」。放弃可能带来不小的痛苦,需要放弃的部分,有着不同的规模和形态。上面这些都是小规模的放弃:放弃暂时当吃货、放弃暂时当旅游达人、放弃暂时当社交达人、放弃享乐其他诱惑。其实这些放弃并不会带来太大的痛。

    更大的放弃是固有人格、放弃根深蒂固的行为模式或者意识形态甚至整个人生理念,其痛苦可想而知。一个人要有所作为,在人生旅途中不断迈进,或早或晚,都要经历需要放弃的重大时刻。

    拿我自己近期来说,我去年放弃了我用三年一手养大的孩子Rails Girls,年轻人的两三年就是一辈子,我放弃了我上辈子,可想其中之痛。回想我在其中的乐趣和成就:给7个城市1000+的人免费提供workshop,多么实实在在的奉献;上南方都市报和环球时报鼓励更多女性来编程,多么实在的认可;可我放弃了,为此还哭了几次。妈蛋,现在回想起来,不免伤感,心中还那么痛。那些朋友、那些人、那些故事,都历历在目。

    只有当你有All-In的决心和勇气,你才能才这个阶段生存下来,你才能进入下个阶段。

    但这仅仅是编程生涯的开始,对,这才算入门而已。 想要越过这个阶段, 你可以:

    1. 找个学习伙伴,即使是另外一个是初学者,你会惊讶发现两双眼睛更容易发现bug。
    2. 阅读她人的代码,学习别人的设计思维、模式。学习的开始,应该对老师的方法全盘接受,不应有批判精神,要是你已经具备批判的框架,你还要模仿人家干嘛呢?
    3. MVP迭代。Minimum Viable Product,大家在周后两周都有一个相对宏大的想法,但你应该从小处入手,不停地练习。

    3 尊重事实,逃脱海市蜃楼

    什么是海市蜃楼?

    本质地讲,就是你知道某个地方是你的终点、你的目的地,但不知道如何走向目的地,且被困在沙漠当中,缺水、环境恶劣危险,出现致命地幻觉。

    要理解为什么在All-in获得了从悬崖纵身一跃的勇气和能力之后,从悬崖跃起还会进入海市蜃楼的困境,需要继续从资源密度所需知识的范畴讲起

    资源密度

    搜索Google Learn to code, 有帮助的工具、教材、视频等等有1.09亿,这是我们这个时代的礼物。

    learn_to_code_Google_Search.png

    越在初级阶段,资源越多,这是为什么大家开始的时候会有蜜月期;越往后面,资源越少,这是为什么大家会有进入资源稀缺的沙漠之旅。

    资源密度表
    蜜月期 迷茫期 沙漠之旅 膨胀期
    Codecademy</br>Khan Academy</br>Treehouse</br>Code School</br>GA Dash</br>Udacity</br>edX</br>Coursera</br>W3 School</br>Code Combat</br>and so on Stack Overflow</br>Tutorials</br>The Odin Project</br>Free Code Camp</br>RailsApps Project Textbooks</br>The Docs</br>MOOC courses Railscasts</br>Professional blogs</br>Corporate tech talks</br>The Docs</br>Conference speakers

    所需知识范畴

    与知识密度正好想法,入门起步阶段所需知识较少,越往后面系统范围、所涉及的层面越多,所需知识范围越广。

    所需知识范畴表
    蜜月期 迷茫期 沙漠之旅 膨胀期
    Basic Syntax Building</br>Debugging CS fundamentials</br>Object-orientation </br>Agile development</br> Moduarity</br> Frameworks</br> Code smells </br>Method decomposition</br>How to ask for help </br>and so on Testing</br> Best practices </br>Optimization </br>Architecture</br> Data modeling</br> Systems

    综合以上两点,就容易在资源稀缺(资源密度角度)的沙漠,遭遇知识诅咒(所需知识范畴角度),产生海市蜃楼的学习现象:

    你不知道你不知道什么

    怎么办呢?怎么走出沙漠呢?

    尊重事实, 绘制尊重事实的地图。你必须独自走过这一遭,尝遍火焰山的滋味,过一过几天不喝水的日子,发现绿洲的欣喜。

    前面说过,如果我们有一张准确无误的地图,我们就能知道自己的位置,就能走出沙漠,到达目的地。

    可这张地图需要自己绘制,我们生来并不携带地图。在为人的经历中,过程中,我们探索,绘制自己的地图。当我们对事实认识越多,我们地图的准确性就越高。

    绘制地图很难,不在于我们要重新开始,而在于:

    • 科技变化太快,尤其是编程技术,一两年就一个语言被淘汰。
    • 因为地形变化快,另一个难点在于我们要不断修订自己的地图,放弃原有的知识和看法。

    下面有几个绘制地图的原则:

    1. 与他人聊天请教,找到一条适合你的最强路线。 地图是死的,资料也是死的,世界编程技术日新月异,只有已经掌握了这些地图绘制办法的人是活的。信息不重要,承载信息的人才是关键中的关键。
    2. 在 Google 搜集需要学习的资料 沙漠中搜索资料的指南针,虽然没有明确的路线,却能让你更接近目标。
    3. 看需要看的图书,保持专注避免东看看西看看 系统化地建立知识系统,即使是古代的看星星识别方位依然有效,哪怕比不上现代社会的GPS。
    4. 设定一个自己真正感兴趣的目标,自己反复实践和尝试 内化知识,找到自己地图缺陷的唯一最佳实践(best practice);反复意味着失败,若是没有强目标做指引,极易中途中断。

    学习是一个知识管理的过程,而知识管理的可度量标准就是:你能否自己把这个知识传授给别人,你能会绘制一张地图,让后来闯进这个沙漠的新手依你的图走出来。这也是我们宣言中的一条。

    4 保持平衡,防止膨胀

    终于你走出前面三个时期,能够独立建立程序,且像模像样,外部对你一致好评。但你自己心里明白:金玉其外,败絮藏其内。意味着,你知道你的程序不够好,有安全隐患,但危险的地方在于隐患起来,而你还不具备火眼金金的能力。

    这也叫躁郁期,一方面你觉得自己是一个标准的程序员,另外一方面你自己某些领域很薄弱。一条腿跑得很快,却又另外一条腿脱你后腿,因此会焦躁。随着时间的推进,你经历上升下降,波谷式前进,你会发现原来你很无知,因此会郁闷。

    当你能力并不匹配表现出来的自信心,这叫膨胀。

    但你终究会摆脱躁郁这种情绪,情绪让你难受,难受你就会学习,学会越多知识你对地级别的困扰就会越少。而且随着时间的推移,躁郁的情绪对你影响越来越小,你越能在平和的心情下调整自己的方向。终于,你上路了,而且是飞奔在路上,比以前的任何时候学东西都快而且学得好。

    保持平衡,天秤的砝码要摆在中间。中国的文化管这叫中庸,在这个要求人人奋进拼搏的时代中庸并不太被提倡。但对于膨胀期的你来说,你需要保持一颗谦卑的心,把自己的姿态放低,海纳百川。对,度过这个时期最重要的方法是获得反馈:用户的反馈、同学同事的反馈、高级程序员的反馈等等。

    这听起来让人很沮丧,原来学习编程这么难。我想这些旅程,程序员都应当经历过。对于你们,刚刚完成最初级的Club,而Coding Girls Club针对每一条成长路线都设计了进阶路线,初级中级高级,你接下来应当想法设法投入更多的时间到自学编程中去,将来以不同的角色加入到未来的高级Club,或许中级你还是学员,再往后,你就可以是初级club的助教: Capable of teaching is the primary measure of learning progress.

    为什么要走这条少有人走的路?

    是的,这真是一个问题。你们都已经有一份工作,生活也无大忧患,为什么要费那么多心力去学编程呢?我还在要你们放弃一些已有的东西,经历磨难和痛苦。

    你们学编程确实挺难的,但我做的事情呢?Coding Girls Club的使命呢?好像更难一点,走的人似乎更少:赋予自我驱动型女性自学编程的元学习能力。自己学编程都已经很难了,却还要做这样更难的事情?

    生命力。

    大多数人,朝九晚五按部就班,暮气沉沉,缺乏实践的欲望,也害怕痛苦的感受。他们其实也相信可以实现某种目标,却不愿因此经受痛苦。

    反观你们,已经选择一件很难的事情开始折腾,越难你就越痛苦,痛苦就要与就我割裂,经历各种折磨九九八十一难之后,超越自我,新生!

    少有人走的路,有了领路的人,自然走的人会多起来,路也没有那么难走。你们,会给未来三年、五年、十年踏入编程领域的女性树立榜样,做吃螃蟹的人。是的呢,你们不光在超越自己获得新生,也在为女性这个群体谋福利,我们就安安静静地学、安安静静地做,不死命嘶喊,为平权,为新生。

    小结

    这是结束,这是开始!


    下一期将于7月24日开始,欲报名请扫描下方二维码添加微信,或直接加微信 codingirls(只有一个g)


    相关文章

      网友评论

          本文标题:走少有人走的路:学编程真TM难

          本文链接:https://www.haomeiwen.com/subject/xkzpjttx.html