作为一个软件开发者,核心基础技能就是编程,怎么保持自己的技能状态

我首先想到的一个词就是刻意练习。有一句俗语“一天不练,手生脚慢,两天不练,功夫丢一半,三天不练成了门外汉”。

为什么

从长远来看,软件开发者的职业发展方向大致可以分为三类:

  1. 纯技术领域:某一领域技术专家,架构师
  2. 技术加管理:从开发开始,到一定阶段转管理,目标是 CTO
  3. 技术加产品:自主创业,企业家

作为一个技术专家,编程就是你的饭碗,不打造好自己的饭碗怎么维持生计。

作为一个技术管理者,你需要指导团队中的人提升编程能力,有时候你也要亲自上阵,这就需要你时刻保持着你的编程技能状态,每天花半小时左右。

作为一个从技术出发的创业者,你是否也不要忘记你的初心。你编程是时刻回想起你刚入行是的快乐或心酸。

怎么维持

LeetCode

比较直观的方式就是刷题,LeetCode 为刷题的一个不错的地方。刷题主要目的是扩展的解决问题的广度,在思路上的训练。

当你遇到未知问题时,有了思路,不一定能实现,如果有时间限制实现的可能性更小。如果要高效就要思考如何提升编程时思路到代码的转化效率,这就要考虑动手能力,类似现实中的肌肉锻炼。

卡塔

《代码整洁之道—程序员的职业素养》书中介绍一种方式,叫卡塔。

在武术里,卡塔是一套设计好的,用来模拟搏斗一方的招式。目标则是要逐步把整套招式练习到纯熟。习武者努力训练自己来熟悉每一招,把它连贯成流畅的套路。训练有素的卡塔看起来非常漂亮。

漂亮还是其次,练习卡塔并不是为了舞台表演。训练意思和身体是为了真正搏斗时能够正确应对。它的目的在于,在需要的时候,可以凭借本能完美出招

与武术类似,编程卡塔也是一整套敲击键盘和鼠标的动作,用来模拟编程问题的解决过程。练习者不是在解决真正的问题,因为你已经知道了解决方案。相反,你是在练习解决这个问题所需要的动作和决策

编程卡塔的最终目标,也是逐步练习以达到纯熟。反复的练习会训练大脑和手指如何动作和反应。在不断练习当中,你或许会发现动作的细微进步,或者解决问题效率的小幅提升

要学习热键和导航操作,以及测试驱动开发、持续集成之类的方法,找整套的卡塔来练习都是相当有效的。更重要的是,它特别有利于在潜意识中构筑通用的问题与解决方案间的联系,以后在实际编程中遇到这类问题,你马上就知道要如何解决。

真正的挑战是把一个卡塔练习到炉火纯青,你可以窥见其中的规律。要做到这一点可不容易。

结合起来

如何提供一套初学者也能接受的练习方法呢?可以拉取 LeetCode 的金典题目,设计分解成一个个编程卡塔。

我要做什么

  1. 第一步:刷 LeetCode 题目练习解决问题
  2. 第二步:自己总结分析提炼出金典题目
  3. 第三步:依据题目设计编程卡塔
  4. 第四步:自己练习优化卡塔设计
  5. 第五步:在团队与互联网中分享自己的卡塔