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

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)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容