蟒营有感
什么是蟒营?
Python,中文翻译为「蟒蛇」,现今较为流行的编程语言之一。而蟒营,就是取名与此,字面理解为,学习python的营地。 蟒营崇尚着一种氛围——Pythonic,这不是专指使用Python编程,这是种通用的务实工程态度和代码追求[1]。
以往,编程于我,是一个比较模糊的印象,是一种经常跟计算机打交道的行为,是一种被英语打击自信心的学习过程。
时间记录器、聊天机器人,这是我投入蟒营的十周收获的果实。通过蟒营的「洗礼」,我对编程的印象大为改变,对自学的印象大为改变。
MVP
MVP,minimum viable product ,译为最简可行产品,是以最低成本获取核心概念产品的策略。
从用户看,我们当然想使用无论是外观和功能都是一流的产品。但从生产者看,时间,价格和生产力等因素都会影响着最终产品。对应编程,作为开发方的我们,若编程的软件出现核心功能未能实现和使用出现崩溃的情况,已然不可能把大部分时间花在实现核心功能和解决崩溃以外的地方了。为何 MVP ,因资源有限,要将其用在刀刃上,先实现一个最简可行产品,再快速迭代优化。
IDD
简单了解MVP后,对于一般编程任务,下一步就是对任务进行拆分和时间分配,先谈拆分。
拆分任务的方法是 IDD,Issue Drive Development,译为以 issue 为驱动的开发,而 issue 为代码协作平台(例如GitLab)的讨论区议题。蟒营要求我们在 issue 中建立任务记录,记录中包含被拆分的子任务、思考过程和用时等,这有利于同学交流和老师指导。
与我平常处事方式不同,后者最大分别的是,任务没有被通过文字准确的罗列出来,就算是有,也只是模糊地存在于脑子里。但恰恰是这种「文字罗列」的形式,任务被文字转化成实在准确的事物,有利于弄清要做什么任务。进一步,这些文字应该包含哪些内容呢?
答案就是,有利于提高问题分析能力的 5W1H [2],即何人(who),何事(what)、何时(when)、何解(why)、何地(where)、如何(how)。为何 5W1H ?因为其能更好地描述一个问题,准确定位,快速解决问题,符合MVP的理念。
时间分配
编程任务被拆分成子任务,知悉任务限时后,下一步就是对任务进行时间分配。以下为课程提供的其中一个以六天为限期的任务模版(完成日期+具体任务):
- d1 探索相关技术点实现方法
- Slack 接口概要
- ? slash command
- ? 文档
- ? mvp
- ? 测试
- d2 实验技术点代码/模块
- ? 测试用私人 wrokspace
- ? 交互调试
- ? …
- d3 逐一原型检验功能点
- d4 正式软件代码构建
-
? Heroku 部署
-
? 自动化测试 …
-
- d5 交付功能测试/完善
- d6 回顾/总结/记要当周知识点/困难
另外,课程提醒我们要灵活变动,时间分配并不是固化的,应该根据自身对任务的掌握程度作调整。
重视课程指导
然而,对于一个编程新手,时间分配方面并不熟悉,虽然有了课程提供的任务模板,但自己常常在当天才定下具体任务,忽略了后续的任务和限期,以至于到了最后一天才意识到并没有 MVP,没有完成课程的最低要求。 经此教训后,我在下一个任务开始的第一天,先不急于马上开始任务,而是先探索相关技术点的实现方法和任务的时间分配。果然,经此实践后,当周的任务进度改善了不少,能从容地面对任务的死线。另外,自己事后才意识到,原来任务模板早已列明了需要提前做任务的计划(即「d1 探索相关技术点实现方法」),这是没有重视课程指导啊!
及时止损
限时完成不了子任务的情况,是身为编程新手的我的「家常菜」。其结果是,「不到黄河,心不死」,持续地跟问题「死磕」,放弃后续的任务,以至于困于无法解题的死循环当中。这时课程指导老师DAMA提醒道,要放弃对知识无尽的探索,在不影响后续任务的情况下,先把其放下,向新的任务发起进攻。此刻回想起 MVP,我才意识到自己被陷进解题的「泥潭」里,不能自拔。现在看来,及时止损,聚焦于完成可展示的核心概念产品,才能对时间进行合理分配,才能学会MVP。
记录任务真实投入时长的好处
记录时间早已不是新鲜事,《奇特的一生》就是代表作,但我一直认为其所耗费精力太多了,即使能对任务进度的掌控能力增强。相对地,我认为记录时间,不如记录「心流」,如此坚持,能提升专注力和感受全情投入的乐趣。
课程其中一个要求是,记录自身投入任务的真实时长。例如下图:
但在按照课程要求记录几周时长后,我对记录时间有了改观。蟒营每周任务 IDD 中,我都会在记录时间之前,自然地想起一些问题:
- 记录哪个任务的时长?
- 哪个任务优先处理?
- 任务投入计划投入时间?
然后我就,运用 5W1H,把具体任务写进 IDD 里面。
如此往复,借助自动时间记录的软件,能轻松地把时间记录下来,这冲击着我的固有认知(时间记录耗费巨大精力)。我也似乎能由记录时间,感受到 MVP 不断地敦促我把任务进度理清,不断地把我蠢蠢欲动的大脑聚焦到最重要的任务当中。其结果就是,对任务的掌控改善了不少。
具身认知
每周直播上,经常提到《权力的游戏》的一句话——「没人天生就会骑龙,骑了就会了」。对应编程学习,理解为,没人天生就会编程,动手了就会了。只有我们真正开始动手编程,才能学会编程。
对此,我在课程中深有体会。一开始,在阅读官方教材一段时间后,感觉晦涩难懂,很多不理解的地方需要多读几遍,甚至理解有些知识点需要先学会其他几个知识点,很是耗费脑力。但,多次接触到课程提到的「没有人天生会骑龙,骑上了就会」这句话后,我采取了另外一种学习方法,边阅读学习材料边动手编程。果然,学习效果有了显著的提升,很多问题迎刃而解。
之后,我明白,为何直播多次提起「没有人天生会骑龙,骑上了就会」这句话,为何这有利于编程学习。原来在认知科学里,有一术语叫「具身认知」,用一句话理解其重要特点就是,大脑会通过身体(的性质,感觉和方位等)来认知世界[3]。通过动手敲打无数次键盘,自身大脑调用记忆中编程语言的一系列函数和关键字等,如此往复,不断加强大脑记忆,增强学习效率。
不止MVP
蟒营收获:
- 有利于提高问题分析能力的「5W1H」
- 重视课程指导
- 及时止损
- 有利于掌控进度和聚焦重点的「记录投入任务的真实时长」
- 增强学习效率的「具身认知」
- 最重要的,包含以上收获的框架概念——MVP
而 MVP 最有价值的地方在哪?答案就是,MVP 的概念,以最低成本获取核心概念产品的策略
于编程,MVP 最好不过,但也有局限,例如软件企业开发竞品,MVP指向一个结果——以最低成本获取核心产品,即使 MVP 能快速推出产品,投入市场后,若竞品不如对手,结果可能除了影响品牌形象,也会浪费企业资源。所以,我认为,MVP重要,但比MVP更重要的是——根据意图,灵活分配资源。
参考资料
2、六何法
logging
- 190705 lijiaxuan initial commit