Teaser Image

mindwind

十日画一水,五日画一石




程序修行路上走了一段时间,终于成为了高级程序员,然后就该碰到瓶颈了。近来就有高级程序员和我聊起这个瓶颈问题,这正是《两种增长类型》这篇文章中提到的「对数增长」的瓶颈期。

在这个对数缓慢增长的瓶颈期,我也曾困扰许久。在摸索尝试了一段时间后,慢慢走出下面这样一条路径,下面我想用点形象的类比来说明。

拔刀斩

拔刀术来自日本古武道,其核心思想便是一击必杀,利用瞬间高速的拔刀攻击对敌人造成出其不意的打击。讲究的是快,也即速度和锋利度。

武士不断修行拔刀术,力求一击杀敌,而程序员学习和练习编程的过程也是类似的。最终,你的编程技到达了一个什么样的程度,就是看它的锋利度。面临一个程序问题能否一刀见血,一击必杀。

刚入门的程序员上线发布碰到了一个问题,抓耳挠腮、冥思苦想、加班加点终不得解。于是跑来向你这个高级程序员请教,此时时钟指向了凌晨一点。你放下手中刚泡好正准备吃的方便面,一支燃烧着的半截烟头挂在你的指尖。你犹豫了一下:是猛抽两口还是灭掉烟头去处理这个紧急问题?最终你终究不舍的把半截烟头小心的放在方便面盒边沿,再用塑料的方便叉把面盖和烟头一起固定住。

然后,你挽起了袖子走到这个年轻程序员的电脑前,迅速扫了几眼报错的错误日志,再调出你心爱的 vi 编辑器,噼里啪啦的改动了几行代码,保存、关闭、再重新构建、发布。电脑黑底白字的界面不停的滚动着,你已站起身向散发着两种味道的方便面走去,并回头轻轻对年轻程序员说了声:可以了。

这就是你向年轻程序员展示的你的拔刀术,问题一斩而绝。好吧,这是一种诡异的优雅,似乎任何问题对于电影里的程序员,在电脑前噼里啪啦敲上几行代码都能解决。现实中大部分时候都比看上去更困难一些,真实世界的拔刀术和剑心(动漫《浪客剑心》主角)的「天翔龙闪」相比,终归显得笨拙许多。

在我们追求「天翔龙闪」的境界时,看上去并不远,却越走越慢了,似乎永远也走不到,然后我们知道这就是进入了瓶颈区。

御剑术

这个招数的类比来自好多年前(初中)玩过的一个电脑游戏——《仙剑奇侠传》。如果过去面临问题你需要拔刀解决,那这里的刀就是你的知识、技能和经验。那御剑术里的剑又是什么?

在一篇关于高级程序员的文章中,提出了一个组合三角的观点,先看下面这张图:

从编程入门到成为高级程序员,你需要得到的帮助和指导越来越少,而你能提供的帮助和指导应该越来越多。所以前面那个场景中,作为高级程序员的你更理想的做法是去指导年轻程序员如何解决问题的思路,而不是自己拔刀,唰唰两下搞定。

对,很多高级程序员都会以“等把他教会,我自己都搞定了”为由,忍不住自己拔刀。理解掌握并应用好一种知识或技巧是你的「拔刀术」,但分享传递并教授这种知识或技巧才是「御剑术」,而剑就是你面前的年轻程序员。

曾经多少次面对年轻程序员交付的结果,都有一种懊恼的心情,怀疑当初是不是该自己拔刀?突然就会理解了驾校老司机为何总是满腔怒火的吼着:让你松点离合,只松一点儿就好…但当初我一开始不是松少了,就是熄火了。

「御剑术」是你修行「万剑诀」的必经之路,恩,游戏里也是这么设定的。

万剑诀

所有的程序员都是从修行「拔刀术」开始,但只有极少数人最终走到了剑心「天翔龙闪」的境界,所有未能突破的我们都进入了对数慢增长区间。我们曾经不断学习和练习终于练到拔刀由心,收发自如,终成习惯,但为了突破这个瓶颈区却正是需要打破这个习惯。

「万剑诀」正如其名,御万剑而破敌。回到现实中,这是一项高杠杆率的技能。而高杠杆率的活动包括:

  • 一个人可以同时影响很多人。
  • 一个人可以对别人产生长远的影响。
  • 一个人所提供的技术、知识或信息,会对一群人的工作造成影响。

这就是「万剑诀」的核心要诀。应用到程序员修行之路上,修行拔刀术有成的程序员如若也具备了技术领导力,他可能就逐步走上了架构师之路。而如若他也喜欢分享、交流和传授,那么同时也具备了技术布道师的特性。

「万剑诀」和「御剑术」的共通之处在于都以人为剑,观察、揣摩每把剑的特性,先养剑再御剑最后以诀唤之。若「拔刀术」是自己实现的能力,那「御剑术」和「万剑诀」都是借助他人使之实现的自信和能力,只是后者相比而言规模更大,杠杆率更高。「万剑诀」的重心在追求问题解决的覆盖面,而面临每个问题就需要依赖每把剑的锋利度了。

另外「御」之一字更着重了一层控制的含义,而「诀」之一字在于影响多于操控,这里面的关键点就是剑本身的成熟度。不够成熟的剑只能「御」之,足够成熟的剑方能「诀」之。

走上「万剑诀」之路后,还能再领悟「天翔龙闪」的奥义么?


写点文字,画点画儿。 微信公众号「瞬息之间」,遇见了不妨关注看看。