大道至简第四章花费了很大的篇幅向我们讲述了沟通的重要性,当然了,这里的沟通和我们日常生活中的沟通不太一样,不一样的地方表现在沟通的内容。但是,沟通的实质是一样的,都是为了有效的实现信息的交流与传递,进而能够顺利的完成某一项工作或任务。程序员的沟通当然是为了完成客户的项目,项目完成的好坏直接决定了程序员薪金的水平以及一家软件公司的存亡。在这样的情况下,与客户进行有效的沟通是一件非常重要的事情,因为这是你取得成功的基础。
大家会问,应该怎样与客户进行有效的沟通呢?沟通没有固定的方式,只要能够获取有效的信息就行。有效的信息就是客户的需求。因为作为一个开发人员作者在这里举出了一些公司聘请专业的需求公司来完成用户需求建模。作者并没有之间的说这种方式是好还是坏,但是他用了很多暗示或者说是接近嘲讽的口气说出了这种方法的不切实际的特性。为什么呢?这就要分析开发人员为什么不能从用户那里直接明白客户的需求呢?那是因为开发人员和客户之间缺少一种有效的沟通方式。开发人员与开发人员之间都是通过一些专业的术语来沟通的,比如专业的计算机语言。但是客户不会计算机语言啊。再说了,客户的需求往往都是非计算机专业的,隔行如隔山,不能很好的理解客户的需求是一件很正常的事。需求建模公司能完成这项任务吗?答案不是肯定的。在作者看来,这些专业的需求公司往往会把简单的问题复杂化,把需求扩大化,这样一来,反而不利于我们解决问题。最后,问题又回到了出发点,客户的需求有谁来获取?只能是我们自己。不能,也要硬着头皮上。作者以前在完成一个项目中,光客户项目需求分析就做了一个月左右。作者觉得,实现有效的沟通最简单的办法就是简化沟通。什么意思呢?就是说要珍惜每一次与客户沟通的机会,在与客户沟通之前,我们要做充分的准备工作,要对客户的公司以及他们的行业有足够多的了解。看看这家公司的经营理念、组织结构、工作模式等。从用户的角度来说,他们也不知道我们需要的到底是什么。因此为了更好的了解客户的需求,我们应该积极主动的去向用户搜寻我们需要的资料,要设计足够多的问题,每一个问题呢都要涵盖足够多的信息点,尽可能的形成发散性以便形成更多的推论和假设。
为了便于代码的维护和出于对项目中某位人员的突然离开的考虑,留下必要的历史记录就显得很重要。历史记录可不是简单的为代码做注释,代码中的注释是为阅读代码准备的,而历史纪录则是为了整个项目做准备。