大道至简第二篇阅读笔记
流于形式的沟通
1、C语言是程序员与计算机交流的语言,而不是他与客户交流的语言。程序员面对的是计算机,但计算机不是客户。
2、与客户如何交流?他们的解决之道是模型语言。
3、现场客户:这是极限编程的特征之一,指的是要求客户可以在程序员开发的第一现场,随时可以向程序员确认完成功能的有效性,以及修正需求或者先前的需求描述。
4、了解:客户项目中所有会产生需求的信息点。
客户在公司层面的外在表现、内部机制和运营管理手段。
客户在项目中既已明确的需求和可能发生的需求,以及客户围绕其公司行为(和方向)所提出的需求。
5、应该清楚的是,保障每一次沟通的有效性都是最重要的事。
6、History的丰富和准确为项目的后继开发、维护提供了可能。
7、其实沟通是具有目的性的,如果在没有明确目的的情况下与客户沟通,那将是浪费客户和自己的时间。
8、流于形式的沟通,可能是使得你的项目被不断推翻和不断延迟的最直接原因。
失败的过程也是过程
9、因此做过程并不是做工程的精义。也不是目的。
10、从最开始,从我们编程开始,我们的目的就是实现一个东西。
11、为工程而工程的人,都迷失在项目中了。
12、试着跳出大师们的身影,再仔细地看一下那些所谓的“经典”过程,不过是在瀑布模型上的一再变形。
13、越是简单的东西,往往越是接近于本质。
14、我们当然不能“做”工程,而是要“组织”工程。
从编程到工程
15、成天讨论这门语言好,或者那门语言坏的人,甚至是可悲的。
16、对于一个程序员,或者以程序员自命的人来说,看清楚一切的第一步,竟是一句“语言只是工具”!
17、“程序=算法+结构”。这是编程的本源定义,也是原始的状态。
18、长期的编程实践,自然的归演与总结,必须沉淀为某种(软件开发)方法,于是“过程”出现了,于是“对象”出现了,于是相关的方法论也就出现了。
19、过程伴生工程而出现。过程解决的是工程中角色间的关系问题。
20、过程中的问题,就是角色、沟通和环节的问题。
21、工程组织是否合理,相互的协作是否紧密,是这个项目成功能的保障。
22、好的项目经理并不是不犯错误的人,而是以尽可能少的失败来获得成功的那个人。
23、BOSS(经营者)决定了一个方向,组织者保证决策与这个方向是同步的,而工程是在这样的一个方向、决策的构架下的一个具体行为。工程中没有BOSS。
24、软件工程的体系中,“实现”作为软件开发的本质需求和基本动因,如同上帝之手在推动这几十年来的软件工程理论体系的形成。