大家好,我是邓飞。
前段时间,我翻出一份三年前的项目代码。
看着那几百行"结构一塌糊涂"的脚本——复制粘贴一大坨、参数手工改、没有循环没有函数、四处都是硬编码——我眉头一皱, 知道自己水平差,没想到这么差。
那一刻的感受很复杂。一方面是汗颜:"天哪,我当时怎么写的什么玩意。"另一方面也很欣慰:"嗯,看来这几年确实进步了。"
但更让我惊醒的是:我当时以为自己在"练习"编程,其实根本只是在重复。
直到后来读了《刻意练习》,我才明白为什么当时的我如此"低效",以及怎样才能真正地进步。
我为什么会写出那样的代码?老实说,是不怕辛苦,害怕动脑。
每当要实现同一个操作但数据集不同时,我的第一反应是:复制、粘贴、改参数。改了半天参数还出错?没事,再敲几行代码调调。
写循环?写函数?写成脚本传参?别开玩笑了,我那时根本不会,而且是从心眼里害怕出错。宁愿多费力气多改几遍,也不愿意花脑子去理解"怎样才能写得优雅一点"。
只有我自己知道:这根本不是能干,这是能动手绝不动脑。
这就是艾利克森在《刻意练习》里说的"天真的练习"——只管重复,没有反馈,没有目标,没有改进。它能让你保持在某个水平,但到了天花板就再也上不去。
人体有一个默认模式:偏爱稳定。
当你做一件事情越来越熟练,大脑就会把它"自动化"——消耗的认知资源越来越少,你越做越轻松,越做越……没用。对我来说,复制粘贴改参数已经是轻车熟路,技术天花板却也就定住了。
艾利克森研究发现:有效的学习必须在舒适区之外进行。 专家的大脑,就像一台升级过硬件的电脑——他们把大量的知识编码成了"心理表征",可以整块调用;而我当时的大脑,还在用老版系统跑重复操作。
这里的关键词是:走出舒适区需要冒风险。
而我当时最大的问题,就是害怕试错,不敢去尝试更高效方便的写法。因为新方法可能出错,而出错意味着要改,要调,要费时间。安全的办法是:继续用那老一套。
后来发生了什么?很简单:项目没那么紧张了,我有时间试错了,另外我明白了:“多做困难的事情”,看看大牛是怎么写代码的,是什么思路完成的。
这改变了一切。
当不再被"必须完成"的压力掐住喉咙,我开始尝试一些从前不敢碰的方法:
有些试验失败了,要改、要debug、要花半小时调参数。就这样,一点点地走出了舒适区。从"能动手绝不动脑",慢慢变成"先想清楚怎么写,再一次到位"。
回头看,改变的关键不是我突然开窍了,而是我有了试错的空间。
艾利克森总结过,真正有效的刻意练习有四个特征。
1. 目标明确
当年我没有目标,只有"必须赶完"。今天我有了——比如"学会用 for 循环处理批量数据"、"把重复代码重构成函数"。目标越具体,进步越快。
2. 全神贯注
这需要时间。在deadline面前,我根本无法全神贯注地思考"有没有更优雅的写法"。当项目不那么赶,我才有余力去细心琢磨每一行代码。
3. 必须有反馈
最好的反馈来自回顾。几年后看着那些旧代码,我能清楚地看到自己写得多烂,以及现在能写得有多好。这种对比,就是最有力的反馈。
4. 走出舒适区
这是我改变的核心。只要有一个念头——"这样写能不能更好?"——我就迈出了舒适区。一开始会出错、会走弯路,但正是那些"犯错 → 纠正"的过程,让大脑真正地改变。
如果能穿越回去见到三年前的自己,我会问他:
你真的在编程吗?还是只在忙碌?
"能动手绝不动脑"这句话,听起来像是自谦,实际上是在自欺欺人。你用忙碌麻痹自己,用"我在工作"的幻觉替代了真正的进步。
问题不在于你不够努力——你确实很能干。问题在于你在重复一个不够好的做法,却美其名曰"经验积累"。
那些"烂代码"没有白费,它们是活生生的反馈。现在的你能看出问题在哪里,正是因为你敢于走出舒适区,敢于尝试新方法,敢于在有足够试错空间的情况下,好好思考一下"还有没有更好的办法"。
最令人欣慰的,不是你现在写的代码有多优雅,而是你终于明白了:真正的进步,来自有意识的改变,而不是机械的重复。
我们容易把"忙碌"和"进步"混为一谈。
尤其在工作中,很多人每天都很累、都很忙、都在"练习"。但如果问他们一年前和现在的差别是什么,很多人答不上来。因为他们在重复,不是在进步。
下次开始做任何工作之前,不妨问自己三个问题:
如果前两个答不上来,说明你可能在忙碌而不是在练习。第三个如果回答是"不够难",那就该给自己加难度了。
真正的刻意练习,不是更久、更多,而是更有意识。
有意识地设定目标,有意识地寻求反馈,有意识地去尝试一些让自己不舒服的东西。
这样一年的进步,能顶别人十年的重复。