阅读主题
引言
写这本书的念头,来自业务开发中一些很容易遇到、却不容易讲清楚的困惑。
做开发时,我们花了不少时间学习新的知识,也花了不少时间完成一个又一个需求。功能做出来了,问题解决了,工作便接着往前走。只是有些疑问还留在那里:这次为什么要这样处理?换一种做法是否也可以?下次碰到相似的事情,眼前的经验还用不用得上?忙的时候,这些问题往往只能先放一放。
我想为它们留一点时间。这也是写这本书最初的愿望:把平时来不及展开的地方整理出来,试着讲清楚其中的缘由。一个做法是怎样被想到的,又为什么在某些时候合适、在另一些时候需要调整,我觉得这些过程值得慢慢写,也值得慢慢读。
“每天都在写增删改查”,是我们谈起业务开发时常说的一句话。这里面有一点自嘲,也可能有一点困惑:做过的需求已经不少,却不容易说清自己究竟积累了什么。有些工作看起来很相似,真正做起来,又总有需要重新琢磨的地方。那些藏在日常工作里的区别,正是这本书想认真看一看的内容。
学习也会带来类似的感受。一篇文章读懂了,一个例子跑通了,过些日子遇到自己的问题,却依然拿不准该怎么办。从理解别人的解答,到形成自己的判断,中间还有一段路要走。我希望书里的讨论能把这段路写得细一点,让读者看见思考的过程,也有机会停下来,对照自己遇到过的事情。
所以,书中会从一些熟悉的小问题谈起,顺着它们逐步展开。需要的新知识,会在讨论中慢慢引入。有些地方可能会让你想起某次需求讨论,或是一段改过几遍的代码;也有些内容,要等以后碰到相关问题,才会有更深的体会。一本书能和实际工作这样来回对照,在我看来,是很有意思的阅读方式。
我也希望写这些内容时,能顾及实际工作的处境。需求会变,项目有自己的历史,交付有时间限制,我们总是在具体条件下作决定。书页上可以从容展开的分析,到了工作中,未必有同样充裕的时间。讨论一种做法时,我会尽量把当时需要考虑的条件交代清楚,也给简单、够用的选择留出位置。
如果你已经写过一些业务代码,也有过“能做出来,但还想再弄明白一点”的念头,希望这本书能合你的心意。你可以从头读,也可以先翻到眼下关心的地方。不必急着记住每一个结论;能把其中一两个问题带回自己的工作里,再想一想,就已经是很好的开始。
写作本身也是一次梳理。把一个似乎熟悉的问题解释清楚,需要重新检查许多习以为常的想法。我希望最后留下的文字,能让我们谈论这些日常工作时,多一些具体的理解,也少一些无从下手的感觉。如果它能帮你理解一处曾经困惑的设计,或让下一次和同事的讨论更顺畅一些,这本书就有了实在的用处。
接下来,我们从时间开始。它是日常开发中再熟悉不过的内容,适合作为这场讨论的起点。