本书介绍了如何让简约设计的思想回归到计算机编程中,如何在软件行业工作以及取得成功,以及如何打造高效的软件开发团队。整本书的主旨是帮助读者成为一名更好的软件开发者。本书主要包括以下内容:开发者的基本素质、软件的复杂与简约、团队里的工程问题、理解软件和软件测试、持续改善软件。
我从2008年开始在www.codesimplicity.com网站上撰写博客,这么做的原因只有一个—想要让全世界的软件开发变得更好。做这件事不是为了成名,不是为了获得工作机会,也不是为了将自己的想法强加于他人。我的初衷是为了帮助他人。
我发现在软件工程领域中存在大量与软件开发相关的各种建议,但缺少一定数量的事实和一些基本的原则。这个说法对有些人来说可能有点骇人听闻,因为基于我们对工作内容的认知,软件开发可以算作一门科学学科—我们需要借助高科技设备和许多复杂系统来完成工作。所以它毋庸置疑和科学有关,不是吗?
问题在于如果某类事物想要被纳入科学的范畴,它的背后必须要有科学定律,以及基于这些定律形成的结构化的信息系统作为支撑。一般来说,你要证明你的定律和系统在现实的物理世界中能够完全按照预期方式来工作。所以对于技术来说,仅有事实还不够,还必须有基本原则。
有非常多的方式能够推导出这些基本原则。□流行和接受度□高的方式莫过于借助于科学的方□□。当然也存在其他的途径。无论你选择什么样的方式,整个过程都离不开一个更大的主题—认识论,解释起来就是“研究知识是如何被发现的”。举个例子,你肯定知道你的名字叫什么,但你是怎么知道那就是你的名字的?你怎么知道它的确是你的名字?如果你想要学习构造一幢房子,你要如何学习这方面的知识?等等。
关于认识论,我表述得过于简略了,鉴于我并没有真正地对认识论及对它的使用做出解释,或许有些哲学系教授会对我的说法给予批评,但是我希望我所写的这些内容足以让大部分读者意识到,我需要的是一些能够引导基本原则的发掘的方□□。而认识论中的各类方□□,包括其中的科学方□□,都能够给予我这方面帮助。
我的□□本书《简约之美》就是对软件开发中的这些基本原则的汇总讲解。但除了这些基本原则之外,需要了解的内容远远不止这些。你当然可以从《简约之美》中叙述的内容推导出其他有关软件设计的林林总总,但既然我都准备好了,为什么不直接和你分享呢?
本书是自《简约之美》出版后,对我后续所写的博客文章的再一次汇总出版,还包括在《简约之美》出版之前所写的但又不适合收录在其中的一些内容。本书的大部分文章都能在我的网站上找到,但是在本书中为了□大化可读性,它们被重新组织、规划以及再编辑。同时,以图书形式阅读它们也更容易理解和消化。
本书有一章没有(也永远不可能)出现在我的网站上—这一章名为“杰出的软件”。作为《简约之美》□□版草稿中的一部分,我在很多年前就已经编写完毕了,但从来没能说服自己将它免费发布出去。
你大可不必按照书中文章的顺序来阅读。如果能按照页码顺序或者章节的顺序来阅读当然很好,但是如果你觉得某部分内容看上去更有意思,你也可以跳跃式地直接去阅读你感兴趣的内容。
为了同时满足两部分读者的需求,我将整本书的内容分成了几个部分。这样,按照先后顺序阅读的读者能感受到一致性,想要跳读的读者也能做到对每一部分涵盖的内容心中有数。
本书的前三部分内容首先聚焦的是程序员应该了解的基本原则,然后是关于软件的复杂性和简约性的各个方面。在此之后,第四部分介绍代码调试。接着是第五部分,包含一整套全新的原则,都是我在《简约之美》出版之后陆续整理出来的,基于的是我将《简约之美》中的原则成功应用在大型工程团队内的经验。
接下来第六部分叙述的是软件设计原则背后的哲学。其中包含一章“测试的哲学”,讨论的是有关软件测试的基本原则,比我在□□本书里讲解得更加透彻。
□后迎来的是第七部分,内容都是围绕我所有博客中□受欢迎的文章来编写的。开篇首先解释了为什么“持续改善”应该作为软件开发中产品管理的哲学,然后讨论的是如何让你的软件持续改善,以及成为一名更好的程序员的具体方法。
总的来说,整本书旨在帮助你成为一名更好的软件开发者,这也是本书□□的主旨。我倾向于活在一个软件简单易用、快速稳定、设计良好还易于开发的世界里,你不也希望如此吗?在《简约之美》和这本书中,我会告诉你应该通过何种方式来达成这个目的—你所需要做的仅仅是将我传递给你的这些知识在工作中应用起来。
祝你好运!
马克斯·卡纳特-亚历山大
□017年8月