查看原文
其他

一个妈妈和编程的270天死磕日记

2016-01-11 蔡美娟 开智学堂



一个编程小白妈妈想学编程,曾经拿下计算机1~4级证书,但就是不能让程序跑起来。她几次想把编程学习提起来,在叹息一声之后只能放下,经历了学习中困苦、转机、中断、转机……反反复复,才从编程中找到了自信。她夜敲代码,日思产品原型,最终在开智学堂的毕业典礼上展示了为心爱宝宝记录言行的程序。这里,有一个妈妈和编程死磕的鸡血故事。

最近很多人在纪念《武林外传》十周年,知乎话题《武林外传十周年,说说你印象最深刻的一个瞬间?》中,有人提到这句话:


最后一集 ,凌铺头问他们你们怎么聚在一块的,他们的回答:那是一个很长很长的故事。


Python 学习的上课只是短短三个月,我之所以会来到这个班,见识到这么多动(ji)力(xue)满满的同学爆发出的能量,这也是一个有点长的故事。




- 壹 -


2015年4月11日 22:16


我的朋友在群里发了一篇文章:《软件是什么?当我们谈论敏捷的时候,我们在谈论什么》,引发我重新注意到 Python。


我:这些天我正在回思没学好编程是不是阻止试验的障碍呢,你就发了这文章。去年的现在本来把 R 语言和Python列入学习计划了,不过目的不同,后来发现上班除了工作只能补觉,到了冬天疲于对付工作……


她:开智群里有人开课在教,可能错过报名期了,教3个月。教的人我有他微信,你要先问问可以插班吗?


我:我先想清楚我为什么要学。

……


就这样开始了和课程导师大妈、课程助教阿纪的接触。


- 貳 -


2015年04月13日 17:50


给大妈发邮件,表明想学的意愿,给出已有的基础,回答为什么要学。邮件写得中规中矩、客客气气地称大妈为「周老师」。嗯,现在要是听到人叫大妈周老师肯定感觉上有点不大对劲(现在我在任何地方听到、看到「大妈」这个字眼,都首先想到 ZoomQuiet 大妈)。

回答为什么要学这个问题,比较实(gong)际(li)一些的原因可以归结为前几年做了一个职位叫「调研分析」,做了几年后就发现,靠「精通的」excel和搜索技术,我在这个职位上能做到的已经极限了。要想深入下去,必须要学语言。这也是我跟朋友说关注点首先是R语言的原因。


但是,其实还有一个情结(zuo)上的原因。


蒙混过关


作为一个非计算机系毕业的学生,我在大学期间自学了几乎所有的计算机课程,顺利地通过了从计算机二级开始的各级计算机考试:二级,三级(偏软)、三级(偏硬)、四级(这一串词是如此地暴露年龄)……所有的笔试卷基本都没有问题。上机写程序就咔了。二级还没有什么问题,后面的各种,上机都是拦路虎啊!考试怎么通过的呢?背程序!好丢人的解决方案。作为一个对自己自学能力自信满满的伪(zhen)学(xue)霸(zha),要恰好背到这段程序才能通过考试。


不服再战

工作三四年后,又试图跨过编程这条坎。在老师的介绍下,到一个小软件公司实习去。公司用的是 .net ,去了头儿就对我讲基本功能就是增删查改四大模块,给了我一个 sample 自己看,弄通了这些就可以算入门了。这个 sample 样例我看了好几个月,丢开它仍然不能做任何事情。有一本书叫《编程的奥秘》,写得很合我心意,但它所用的语言和实习这家语言是不一样的……



编程的奥秘


不得不战


第二年,硕士论文做社会网络分析方面的,要对拿到的数据进行分析,用 Matlab 先处理数据格式,变成矩阵,以便能输入当时流行的网络分析软件。这是不可跨越的任务,于是吭哧了很久(我已经忘记了是38天72行代码还是72天38行代码了,大概是前者吧),写了一个全 for 的代码,完成了这件事。但是读了那么多理论书的我,深知这种解决方案是极其愚蠢的。全部从头到尾循环遍历,数据稍微一大,拖也拖死了。一点儿也不简洁美嘛。


以上就是浓缩到邮件里的那一段:


因为以前自己考过计算机等级考试的三级和四级,所以数据结构、数据库(这两门大概是我计算机所有学科里自学得最好的了)等都自学过,但编程方面比较弱,学过 truebasic 和 C ,估计2级水平的样子。三级等考和四级等考的上机都是c,侥幸通过而已。另外 07 年接触过 .net ,不过掌握程度还不如前两种语言。09 年 Matlab 写过一段程序(真的是一段,好象只会用 for 循环的情况下也就七八十行)来处理教师科研信息。现状就是至今没有真正掌握一种程序语言。


大妈的回复是:


……蔡美娟 老师的情况不是少数情况……


嗯,没有掌握学编程的正确姿势的结果就是这样,不是少数情况。大概大多数被拦在编程门外的人都这样。


- 叁 -


2015年04月14日 09:53


阿纪的邮件给出了大妈写的《极简 Python 上手导念》,根据这个42分钟导念(那时候并不知道42是大妈如此钟爱的一个梗),开始安装 Python(那时候看到哪个安装地址给出的是GitHub就要哭了,下载zip然后问大妈怎么装),刷《笨办法学 Python》。断断续续,大概刷了40左右的样子。还自己总结了「Python术语」和「Questions for HardwayPy」。当然,按照习惯,这些内容最初都是在excel中的。



「笨办法」学 Python


这时候就有了编程的自信了吗?No!虽然作者的代码,我都手敲进了编辑器,都运行了,有时候也改一些。但此时的我对这门语言并没有信心。要说书确实是深入浅出的,它的风格让我想到了十年前读的那本金旭亮写的《编程的奥秘》。把书丢开,我能写什么,仍然是个疑问。


2015年10月10日 19:42


课程正式开始了。 在这个热闹的开学典礼上,「诗人」阳志平老师和导师大妈都发表了热情洋溢的讲话,此刻根本想不到后面会有怎样的历程和艰辛。10月份大多数时间,我都在休病假,带孩子。挤时间的「挤」,是这个时期的关键词,没想到它也成了我贯穿全程的关键词。


第一次自信


真正的第一次自信,来自于十几天之后。在时不时都要去查询《笨办法学 Python》里的代码,并查询自己之前写的「Python术语」后,10 月 27 日,第一周的作业,命令行版本的记事本,并包含有允许用户定义文件名这样的「开放」功能,终于出笼。在我,理念和实践能合二为一,这是第一次。我的程序是写出来的,不是背出来的。


第一次困苦


良好的开端不意味着后面一帆风顺。


就拿 GitBook 来说,虽然我一开始没有费太多功夫就让它正常运转了,但在10月26日开始,不知道什么原因,它再读取不到 GitHub 更新了,history 都有,但是都无法输送到书里。


科学上网工具,家里的没法装上,公司里的装了之后经常连GitHub都打不开,我都不开它了。


我对自己说,有限的时间拿来做重要的事情吧。所以没管它。每周挤时间重听课程,各种搜索,努力在过期之前提交作业。这种搜索,真是要人命的乱,而且还没法儿参加 C2T2(开智同侪汇:学员线下互助聚会)。所以,隔几天偷偷熬个夜,使用「更懂中文的百度」,这是双重短寿行为啊。


然而在第四次作业之后,撑不下去了。第五次和第六次作业,好像根本无解,看了别人的也无法理解,无法用到自己的上面来。在这期间,闪闪给我打过电话,聊过这事儿。然而自己的问题,别人如何有解呢?


第一次转机


有两次作业没交,前面说的有限的时间拿来做更重要的事,就让位了。我又捡起出问题的 GitBook,重新建立新的 book,费了一些功夫,终于让 OM2py 的 book 正常工作。这是又一次自信。然后又发现,科学上网工具,也不那么抽风了,整天开着也不影响一些网站的打开和运行。重回 Google,这感觉太爽了。说真的,每次重新用 Google,都是神清气爽,好像获得新生的样子。「最懂中文」的这位,我不过是近几年不得已才用。


用上了Google,我的搜索技能才算有了用武之地,遇到问题后的搜索结果,也终于基本指向 stackoverflow 了。告别了乱七八糟的搜索,解决的第一个作业问题就是正确地在 Qpython 中运行程序。此时到了大家竞相提交结业项目想法的时候,我根据第七周作业和整理手机里的宝宝成长记录的想法,也提交了自己的项目概略。这会儿,大妈天天吼的是两句话:「抱团!抱团!抱团!」以及「诚意!为了招募到团队成员,你得拿出个框架来,不能都等着别人来做。」


好吧,为了诚意起见,完成第七周作业是必须的(因为项目的基础就是搭建在这个之上)。单靠 stackoverflow 似乎没法完成了,那就呼叫教练吧。给教练培炎发问题,发代码地址。发了几次,教练有疑问了:「你的工作是不是不用坐班?」要的要的,怎知道我在家是要跟手机电脑绝缘的?只能白天偷偷搞(这种不敬业行为不提倡,我也常年工作狂好吧)。


中断


2015年12月9日下午


大领导突然找了几个人开会,宣布,即日起,你们都被封闭了。我偷偷地问旁边的人,能回家睡觉吗?答:能。但是下班点就别想准点了。


好吧,那就封闭吧。只能回家偷偷熬夜了。


但是我忽略了一件事,我从前一天开始喉咙疼,我想大概是扁桃体发炎,没去管它。没想到10号开始变成了咳嗽,且是严重的咳嗽。熬夜写程序的想法演变成了熬夜咳嗽的现实。十年没有严重过的咳嗽,在枇杷花、枇杷叶、各种咳嗽药的轮番轰炸下,仍然伴随我几乎整个封闭阶段。每个人看见我的打招呼方式,都是:「你还在咳嗽?!」好像《情书》女主藤井树,就是这样一个面目吧。




第二次困苦


好容易从中断中解放出来,继续拿有限的时间做重要的事情。这时,就不想着招募成员了。嗯,我本来对此毫无概念,第一次发招募请求时,说希望同为年轻妈妈。其实现在明白了,是否爱孩子一点不重要,重要的是是否技能互补。此刻,最需要的团队成员,是前端!这一关,是拿着 River 的公交车html文件,修改蒙过去的。


主要困苦仍然在程序本身。什么时候用 Get,什么时候用 Post,怎么才能正确地看到程序错误提示(为什么有时候看得到出错代码行,有时候看不到),这个提示表明的是哪个地方的问题(比如经常出现的tuple误用),别人是如何把程序里的运算结果直接放到html里的标签内容中去的?虽然第七周作业已交,虽然折腾 QPython 已有些日子,但是这些问题如乱麻。


老实说,按照正确提问模式,是没法提的。尝试一尝试二尝试三……完全想不到那么多种尝试思路。小白的问题在于,一直在一个模式里转圈。大妈说:二期跟一期相比,在正式提问上没有什么进步。虽然大家通过 C2T2 解决了很多问题,但依然没有学到正确提问姿势。这个现象,就是这样一个原因造成的。跟教练私聊,和 C2T2 是一样的,都是在一个模式里打转的小白适用的解决问题方式。


第二次转机


我觉得,教练终于受不了我这乱麻一样的思路了,说:「我们通一个电话吧。」嗯,是我,我也会受不了的。从前,我曾经有一个学生,异常认真、勤奋,我说的每一句话都认真听,课后还积极发问,比谁都用功。但考试一定考不了最好。从他问的问题,就能看出来他思路很乱。顺便提一下,我大学时把计算机考试从二级刷到四级,但是工作时我要教的是一级!所以我只好又一次自学了。

这个 45 分钟的电话,起到了相当神奇的效果。自我总结,对我很有帮助的有三点:


  • 用if-else控制程序走向(不是任由它自己去碰壁)

  • 用随时print进行debug(print的结果在控制台看得到!!!)

  • 程序结构要清晰,建议一个页面完成一个功能,不要混在一起


第二天开始改程序,第三天下午,居然离我设定的初始目标,只差一个功能。然后是周末,不干活的。周一,完成了初始目标的最后一个功能。这两天半的进展速度,是我在通电话之前想也不敢想的。在这个电话之前,我并不觉得自己有希望把项目拿出来路演,单纯的就是想有进展而已。十几岁时,曾经回答过一个问题「爱情来时啥感觉」:大概是你看每一处都开了花,都闪着光吧。我想说,这几天也是这样!


周二预约晚上路演,白天做幻灯时,还顺带给程序作了几处改善。这是电话后的又一个变化:敢于修改。以前茫茫然不知路,所以修改也都很谨慎。现在,对于想改的问题,思考一下思路,就开始改了。


- 肆 -


现在掌握的程度,离我开始时设想的统计分析部分,还有距离。目前想法是,先继续改善目前项目。回头看看朋友4.11发的文章《软件是什么?----当我们谈论敏捷的时候,我们在谈论什么》,他说:


谜底揭晓,其实软件才是真正的生命科学啊!


这和我前几天大半夜激动然后发给大妈的话难道不是一个意思吗?


是不是凡是人想的出来的应用都能用 Python 实现?


叨叨了半天,满足处写了不少,欠缺处主要还是提问和团队合作。以我现状,继续一个人走下去吧。


没想到简单的回顾居然刷了 6500+ 的字。好吧,趁结束之前,ZoomQueit大妈是不用硬广的,给教练培炎做一个硬广吧。有志于学 Python 的同学,我只能说到这里了。


PS.


专门记录宝宝言行的应用「我在长大」,在宝宝眼里是啥样呢?鉴于之前的版本太仓促,都是从能否实现考虑的规划,前天我在Axure里重新认真画了原型,准备接下来按照这个原型来实现。昨天我把原型图片和手机里原来使用的应用「宝宝成长记录(Baby Care)-新手爸妈的贴心帮手」都给我的孩子看,并问他哪个好看?他指着我的原型图说:「这个不好看。」指着宝宝成长记录的界面说:「这个好看。」


果然这样?你们对比看看呢?



「我在长大」原型图



「宝宝成长记录」界面截图


本文作者 蔡美娟


互联网市场工作从业者,教育技术本科,教育经济管理硕士,通读教育学古典名著、教育史学、教育心理学等书。也是一位2半小孩的母亲。


个人博客:http://t.cn/R47dUWt


蔡妈妈不仅能敲代码跑程序,还爱读书写文章,请读《无条件养育》导读:被有条件养大的我们如何去爱孩子


相关文章

人生苦短,Python当歌:开智学院Python二期开始招生啦!

零基础学编程?Python 中文社区创始人给你五个建议

Python中文社区创始成员ZoomQuiet:究竟什么是编程?




回复

心智 黑客 写作 读书

有趣有志有颜的青年,尽在这里

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存