去年底偶然看到大妈的 python 原型班招募启事,刚好因为工作关系也想多了解编程&软件工程的相关知识,遂报了名。这是一门以「通过在真实软件工程环境中编程以学会编程」为核心设计的课程,为期 12 周,官方宣传每周投入的时间为 10 小时,不过亲测认真学下来每周花费时间绝对 > 10 小时。

不是第一次接触编程。不过,以往的编程,仅仅在本地跑脚本、本地记录和分析数据,距离项目级别的开发还差很远。课程内容则刚好弥补了过往知识的空缺,全程围绕「开发一款给自己的时账工具」展开,逐周新增功能,从而学习 Python 的基本语句、数据结构,上手 Web 框架 Bottle,利用 Heruko 部署 Web 服务,调用第三方 API 进行定制开发。开发内容浅显,却也五脏俱全,气喘呼呼匆匆忙忙跑一遍也算有了概要式的体验。

课程秉持的观念是「授人以鱼不如授人以渔」。没有视频教程、文字专栏、直播面授等等新手友好的方式,而是构建一个经过简化但尽量接近真实软件开发的环境,每周放出开发任务及参考文档,任学员自个儿折腾。到课程后半程,任务的面目也愈发模糊,不知是课程组有意为之,还是无心插柳,需要自己先定义出开发任务,才能开启后续的开发。课程运营团队坚持「不给答案」,毕竟真实的开发场景里,总要面对未知的技术难题,没有标准答案,也没有师傅手把手教,所依赖的也就是在课程里能够动用到的——个人智慧、伙伴互助、互联网资源、有策略的提问。

课程运营的整体风格比较像弹簧,学员主动施加了多少力道,才会从自身的探索以及课程运营团队的反馈中收获更多的助力。大妈和助教们,也尽力观察所有能观察到的学员行为,代码、笔记、issue、slack 对话、周例会, 并尽可能挖掘可分享延伸探讨也即可之处。「怼」,官方解释为「对心发问」。其实比较抗拒使用这种圈内黑话般的词汇,也被大妈「怼」过几次,都是基于我的学习行为,经大妈提问,得到了其他的探索、观察角度。「怼」这个词代表着:好奇心、真诚、保持怀疑、持续探索。

在传授编程技能之外,这门课也有意训练学员的工程能力。每周布置的任务,都可以看作一个小小的项目,那么如何分配有限的时间与精力,按时将任务完成?是积压到最后一天,匆匆赶工,还是平摊到每天,日拱一卒?是一拿着题目便胡乱开发,还是经过探索、破题、规划后,再层层推进?在课程里也慢慢习惯了 issue 驱动开发的方式。将 issue 作为任务看板,在周初规划当周任务,一般从「探索」和「破题」开始,继而启动「开发」和「反思」,尽量保证每天都有稳定的输出。而任务看板中的任务,也会随着本周探索的深入,逐步从粗犷的大板块到精细的子任务,直至最终交付。

自始至终,大妈强调的一点是「记录一切」。探索的路径,链接、报错信息、解决方案,探索问题所花的时间,自己思维和行为的一切痕迹,都值得做细致入微的观察与记录。并非最终那条跑通的路径才有价值,旁支的探索、踩过的坑、偶然读到的信息片段,都有值得复盘、吸纳的地方。对思维路径和方式的复盘,也是一个对思维进行修剪和优化的过程,可以培养更有效的思维习惯。还有对「时间」的观察,时间意味着成本,什么时候该「死磕」,什么时候该「放弃」,在什么事情上花多少时间,都是完成一个项目时需要关注和管理的地方。贯穿课程始终进行开发的「时账工具」,也正是与这种「记录一切」的思想相互呼应。

总的来说,12 周的课程,对编程、对工作 & 个人管理都有收获。比较遗憾的地方在于,确实没有充足的时间投入,特别是课程后 1/3,仅有最小程度的代码交付,没有后续的总结与反刍,对概念的理解相当混乱与粗浅。后续如果想进一步探索的话,有必要补齐知识点们。也不得不感慨下,工作之后,体力真的不如从前了,连续熬夜 3 个月,确实有点吃不消 😂😂 也感觉大概没法成为一个特别工程化和结构化的人,在工作里多靠点谱就好 🤦‍♀️🤦‍♀️🤦‍♀️。

PS. 课程结束后,也对相关的社群做了引流,因为觉得尚有些气味不相投的部分,也可以想见的会遇到不少熟面孔,大概还有点心理阴影,总之是不会入群了…还是更喜欢课程们 >。<