代码写一半感觉无从下手,写不下去了,怎么办?

281 阅读4分钟

背景

最近新项目开启 996 模式,五月基本陷入了稀缺状态,没有输出。这一个月投入Java 后端代码的编写过程中,有一个深切的感悟:写代码跟作家创作一样,都需要经历一个生成初稿的过程。

纵使有很多细节暂时没法理清楚,感觉无从下手,神奇的是加上一行 TODO ,继续写,生成代码初稿后,工作也能推进,不知不觉一个当初看似复杂的功能就写完了。

这在认知科学中竟然有一个学名“生成式学习”,先从麦克菲的熊谈起。

麦克菲的熊

纪实文学开创者之一约翰.麦克菲曾谈到自己对写作瓶颈的认识:

写作是一个反复创作和发掘的过程,在没有明确想说什么的时候,无法全身心投入怎么办呢?麦克菲解决这个问题的办法是什么呢? 他给自己的母亲写了一封信,告诉她自己是多么痛苦,自己正在写一篇关于熊的主题的作品,而且期望很高,但他不知道如何着手。他开始自我怀疑,自己不适合做作家。 他想表达这只熊有多么壮、多么懒、喜欢一天睡 15 个小时,诸如此类。

写完这封信、发完牢骚后,他回过头来,删掉了抱怨和牢骚的部分,只保留了关于熊内容。这就形成了他作品的初稿,看似相当随意,但是有了初稿,写作才算真正开始。

这是《认知天性》里的一段话,作家的初稿,和我们学习产生效果的方式一样,都是先生成对知识和创作物的初步理解。

  1. 写作是先生成“相当随意的初稿”。
  2. 学习是先理解,形成粗糙笼统的认识,对新事物、新知识的认识。
  3. 写代码是先敲 demo ,形成代码框架,不清楚的地方先留下 TODO 标记。

结论:只要你专注于理解新东西,意识就像织毯子那样,开始自行梳理问题

要精通某件新事物,就删除抱怨,去全力应付那只熊。

人脑缺陷:潜意识会放大模糊

项目开发过程中,在有些细节没办法完全设计清晰的情况下,潜意识会放大这种模糊,形成自我保护的焦虑感,让意识产生一种认同感,认为事情很麻烦、想想都头疼。

应对办法就是,生成。 俗称:干就完了!

就我最近写代码的经历来看,一个功能流程中,模糊不清的点可能也就三两个,但是大脑会认为关联依赖太多了,这也不清楚、那也不明白,实现起来好复杂呀,毫无缘由地放大了模糊的边界。

可能是一年没写后端了,潜意识也夸张地认为自己能力不行了,更加重了对项目实现难度的评估。

好在这么多年形成的工作方式能够应对,我的方法也很简单:

  1. 每天开始编码之前,写下来感觉不清楚的地方;
  2. 设计阶段就开始建代码框架;
  3. 遇到复杂的流程,就手写操作步骤,然后再翻译成代码;
  4. 编码的时候,不清楚的逻辑,就用 TODO 先标注,大流程没问题,小细节放在抽取的方法中修补。

启示录

程序员的搬砖工作,本质也是一种智力创造活动哇!

有一个神奇的编码体验就是:只要我一写单元测试,跑起来准能发现三两个 bug ,基本都是低级错误。究其原因,大概是代码生成阶段,目测和代码检查只能保证大逻辑方向的正确,无法保证小细节,尤其是判断边界、取非、拷贝等操作的完全正确。

所以,用上单元测试,编码真的可以说是有如神助。