程序员的进阶和感悟 | 掘金技术征文-双节特别篇

896 阅读4分钟

前言

程序员的生涯伴随着一路的项目,修复错误和重构。在不同的阶段,有不同的思考和领悟。作为一个还在一线写程序的码工,在难得的中秋和国庆的双节的时候,想分享一下多年来写代码的心得,请读者指正。

第一阶段 : 写程序像作数学题

这个阶段是刚接触编程的感觉。我还记得那是中学的时候,老师要我们用能产生0-1的随机函数产生一个1-100的整数。这就是个函数变换的数学题。后来大学里学写程序,这种看法一直没有改过。

第二阶段: 写程序像完成任务

这个阶段开始于大学毕业后,包括以后的读研和工作的前2年。这个阶段的状态基本是将需求翻译成代码。简单的需求写简单的程序,复杂的需求写复杂的程序。还有就是复制和粘贴项目中已有的代码,包括开源项目的代码。无论如何,任务总能完成,维护就不考虑了。

第三阶段:写程序像作工程

这个阶段在工作后两三年会慢慢进入,尤其是在经历了修复无数错误和将已有项目推倒重来之后。这个阶段会细致的考虑问题,各种边角的情况都要覆盖到,性能问题也不再忽视。这个阶段能把简单的需求写得很复杂,当然复杂的程序写得更复杂。大部分人就停留在这个阶段了,直到升入管理层。

第四阶段: 写程序像作手工艺品

从这个阶段开始不是所有程序员都能进入了,它要求能够将简单的需求尽量写简单,而复杂的需求也写得简单。能够将第三个阶段考虑的各种情况都包括进来,从而保证功能和性能的前提下,还能完成一个足够简单的程序程序设计,是这个阶段的主要目标。简单其实是一个很主观的概念,从一些实际的经验看来,如果一段代码能让大部分程序员都能很快弄明白,这个是一个足够简单的设计。简单是可以通过封装或者分层来完成的,但是如果层次和封装概念之间没有满足“高内聚,低耦合”的“正交”关系,这样的设计反而会更复杂。从这个阶段开始,主动思考将会占主导地位。因为老板和经理们是不会关心程序的内在组织的。在这个阶段的初期,有时候需要多次重构才能达到简单设计的目标,从效绩的角度来看,反而会得到负面的评价。如何做好程序的质量和时间的平衡,是一个技术问题,也是一个管理问题。

第五阶段: 写程序像创作艺术品

这个阶段需要在第四阶段积累足够长的时间,再加上一定的悟性才可能达到。这个阶段不再是以需求为纲,就像画家作画和诗人写诗。表达的是作者对这个世界的理解和看法。从一个需求,应该能看到它背后对应的客观世界。写程序不是对这个需求的满足,而是对客观世界的逻辑表达。程序设计中最难的部分,对未来需求的演化的把握,也会落脚到这个阶段。进入这个阶段后,你可以有效的抓住用户需求的不足之处或者是错误。当用户不按你的设计的程序进行操作时,他会发现自己很难受。而未来的需求更新,会自然落在你预留的扩展点之上。当然,所谓对世界的理解其实和业务逻辑高度相关。一个在电子商务领域内达到这个阶段的人可能对电信协议软件开发最多能处在第四阶段。

总结

一般一个工程或艺术作品,主要有一类目标群体。比如说,一部儿童电视剧,那就是这个阶段的适龄儿童。但是程序的独特之处,在于它有两类完全不同的目标群。一类是机器,就是CPU。程序需要被CPU理解和执行,从这点来看,程序最好都用1和0表示,这样对CPU最容易理解。另一类是程序员。程序需要被程序员理解和改进。从这点看,程序最好用自然语言,这样最贴近人类的理解。而这两类是互相矛盾的。我们写的程序,需要考虑这两个目标群体的平衡。这也是写程序作为一种平衡艺术的本质特征。

🏆 掘金技术征文|双节特别篇