【水文1】技术能力与技术审美

Link:

水文,主观臆测,皆观点、无事实。

一直以来我都觉得写代码就和写小说有很大的相似性,虽然我对写小说一窍不通。 按照写代码的模式写小说的话,那么就是这样的一个过程:

  1. 构建一个世界观(软件需求与功能)
  2. 安排好故事脉络和主角(主要的数据结构与程序架构)
  3. 不断的填充细节(代码实现)
  4. 根据写作的过程不断的修正、改写(代码重构)
  5. 文法的基础检查(谢天谢地,有编译器)

这么一看,从外行的角度看,似乎也没什么问题。所以说,每个NB的作家都有成为NB程序员的潜质。

那么同样作为类比,写代码自然也有“审美”这一因素的存在,虽说是类比,然而程序员应该都会有感觉,“技术审美”这个概念是真实存在的:

看到一个很好的作品,即使作为底层码畜,我也会感受到作品给自己带来的愉悦感:清晰、统一的架构;一致的逻辑;易读、简洁的API;代码的节奏感;毫无冗余的轻快,等等。

当然,也会有更优秀的作品超出自己的“技术审美”水平,可能会让自己不明所以,甚至会怀疑有些设计的合理性,我想这也只能通过自己循序渐进的提升“技术审美”来应对了。

( 技术审美 >= 技术能力 )的常态

99.999% 的情况下,一位Coder的“技术审美”是高于或者等于自己的“技术能力”的。所以,大部分情况,一坨代码完成后,自己看一看,都是“心有余而力不足”的感受。

毕竟,“技术审美”高于“技术能力”,看着自己写的东西,一般都是不能满足Coder本人的“美”的标准。

所以,有意识的区分“技术能力”和“技术审美”这两个不同维度,会有很大的意义:

对于一些批评,人之常情,都会抵触,然后一句 “你行你上” 带来讨论的终结。

如果能够区分出技术能力和技术审美两个因素,心态就会更加开放:有些评论者可能技术能力相差无几,他上可能也好不到哪去,但是不代表别人从技术审美角度提出的意见和建议就无效。

对技术评论保持一个开放的心态,毕竟,没吃过猪肉,还没见过猪跑么?

从个人的角度来看,区分这两个因素,给自己带来的则是不断提升技术能力的机会。

如果回看自己的代码,一直觉得“哟,写的挺好的”,那么说明自己的技术能力已经贴近了技术审美,或者说自己的技术审美已经有段时间没有提升,不能进一步的指导自己的方向了。带来的结果就是技术能力已经没有提升的机会了。

保持对技术审美的不断追求,才能让自己有不断提升技术能力的机会:能够觉察到自己的代码中的bad taste,才能够有改进的机会。

如何提升技术审美?我想最容易的途径就是去循序渐进的阅读公认的优秀的作品。

审美的通用

在我看来,对美的认识是一个复杂、感性而且系统的过程。其他领域的审美同样会给某个领域的审美带来启发。

譬如,多接触几种不同类型的编程语言,也会提升自己主力语言的技术审美。同样,非技术领域的审美提升也会给技术审美带来启发,一个好的程序员,理应去尝试接触美术、音乐、运动等等领域。

同样,一个能够写出优美程序的Coder,一定也可以欣赏其他领域的优美作品。