`
鳄鱼旭
  • 浏览: 76435 次
文章分类
社区版块
存档分类
最新评论

读书笔记之《设计原本》

 
阅读更多

总评:

《人月神话》作者Brooks写的书《设计原本》,觉得做架构师或者做设计工作的同学们都看看,真的很好,里面将设计提升为方法学、哲学的高度,而不是单纯讲案例、讲准则。当然个人认为有些内容是和设计本身没有太大的关联,可能和作者的工作内容有关而呈现出来的,但绝对值得一读:

 

印象比较深刻的论断:

 

。关于完整性:同一个系统的架构实际上不应该有多个架构师同时设计(每个人一部分),至少要有一个架构师负责统筹,才能保证完整性。比如头脑风暴的方式实际上并不合适运用在设计方案的选择上;

 

。Raymond的集市模型:即当前Linux社区采用的模式,每个人都可以对系统进行贡献,贡献内容的质量取决于其他人对该产品使用的频繁程度,在某些条件下可以工作的很好。

 

。关于相互协作:当面沟通永远是最好的方式、视频会议次之、电话沟通再次之、邮件|文档共享沟通效果最差。之前在一家日资公司工作的时候这种感觉非常明显。

 

。理性主义还是经验主义:理性主义者倾向于采用严格的方式方法进行软件设计,极端情况下设计出来的东西本身就是没有缺陷的;经验主义者通过测试的手段进行正确性保证,假定设计出来的东西本身就是有缺陷的。 作者是一个经验主义者,但是我本人认为一个真正驱动行业前进的动力则是理性主义做法,尽管目前来看采用理性主义的方式进行软件设计困难重重。

 

。基于约束的设计:没有约束就没有设计,这个是我个人的观点。但是更准确的把握约束的本质却是设计者需要下功夫做的(之前我做过一个设计决策,和开发人员讨论,其中有一个开发人员就提出,这个设计决策会影响其中两个系统的通讯性能(几十毫秒 --> 几百毫秒),所以不能采纳。 我就问他,为什么不能采纳呢,他说因为之前的需求里面说明的。然后我就问他,变成几百毫秒之后对用户、对系统压力有什么影响呢,他说没有(这个系统调用次数比较少),后来沟通这下,把这个约束去掉了)

 

。基于范本的设计:我一直想找一本关于架构设计的、较为具体化的设计模式的书籍,但是没有找到,但是觉得确实我们需要这个东西。比如如果数据库的访问量很高,应该如何做设计(加缓存、数据库读写分离、分库、分表等手段该如何做选择等)。本书也不是设计范本,而是阐述了基于范本的设计师比较理智的

 

。软件过程对设计的影响:卓越的设计来源于卓越的人才,而不是卓越的过程。在有些情况下,卓越的过程是影响人才发挥的。 苹果公司的一句话是,我们的过程成熟度永远都是1(CMMI5级成熟度,最低级为1),但是并不妨碍我们生产出伟大的产品。 一个例子是IBM位于德国的一个实验室,有很多天才的设计师,在其他方面都很成功,唯独面对IBM一些项目则比较失败。后来发现原因是这些项目对过程要求比较苛刻,面对这些规则,这些人畏手畏脚,限制了他们的发挥。

       我本人的观点是:越是天才的设计师、程序员,给他们的过程约束应该越是轻量级。轻量级过程适合天才,重量级过程适合土人

分享到:
评论

相关推荐

    没事别随便思考人生读书笔记PPT.rar

    在这个读书笔记PPT中,我们可以期待作者运用了多种设计元素来增强表达力。例如,“造字工房悦黑演示版常规体”是一种现代、易读的字体,适合用于标题和关键信息的展示,而“文鼎习字体”和“方正粗倩简体”可能用于...

    设计版式原理 笔记

    1. **白色与黑色的平衡**:在设计中,黑白两色的平衡不仅关乎美感,更影响着阅读体验。适当的余白能够给予视觉休息的空间,帮助读者更好地理解和吸收信息。 2. **余白的封闭感**:当余白被其他元素包围时,可能会...

    非常精美的读书笔记PPT作品.rar

    无论是作为读书心得的分享,还是教学、演讲、商业报告等,这份读书笔记PPT都能以其专业和精美的设计,帮助演讲者更好地与观众沟通和互动。它不仅有助于信息的有效传达,还能激发观众的兴趣,增强他们的理解和记忆。 ...

    23种设计模式学习笔记

    设计模式是软件工程中的一种通用解决方案,它是在特定上下文中解决常见问题的经验总结。这个“23种设计模式学习笔记”文档将引导...通过阅读“设计模式学习笔记.doc”,你可以逐一了解并掌握这些模式的原理和使用场景。

    行业文档-设计装置-一种用于光驱插槽的笔记本硬盘组件.zip

    标题中的“行业文档-设计装置-一种用于光驱插槽的笔记本硬盘组件”表明这是一个关于笔记本电脑硬件设计的专业文档,具体来说,它聚焦于一种创新的硬盘组件,该组件能够安装在原本用于光驱的插槽中。这种设计通常是...

    我的MATLAB读书笔记

    - **阅读高质量的代码**:通过阅读和分析优秀的MATLAB代码,可以更快地掌握高级技巧和最佳实践。 #### 三、提高MATLAB编程能力的方法 1. **勤于实践**:“三分靠看书七分靠动手”,只有通过不断地实践和尝试,...

    行业文档-设计装置-笔记本电脑光驱位硬盘扩展装置.zip

    笔记本电脑光驱位硬盘扩展装置是一种创新的设计,旨在为现代笔记本电脑提供额外的存储空间,尤其是在许多新型号的笔记本电脑取消内置光驱后,这种装置显得尤为重要。它允许用户利用原来的光驱位置安装一个2.5英寸的...

    设计模式笔记

    ### 设计模式笔记 #### 一、引言 设计模式是一种在特定情境下解决软件设计问题的标准化解决方案。它是从无数编程实践中提炼出来的精华,帮助开发者更好地理解和应对复杂的问题。在学习设计模式的过程中,我们通常...

    java 设计模式自学的笔记的

    这些设计模式的学习通常需要结合具体的代码示例和实际项目经验,通过阅读笔记中的源码分析,可以帮助我们更好地理解和掌握这些模式的应用场景和实现方式。同时,利用相关的开发工具,如IDEA的重构功能,可以方便地...

    数学简史读书笔记.pdf

    书中介绍了数学史上的一些重要人物和他们的贡献,如欧几里得的几何学,他的《几何原本》是几何学的基石,影响了两千多年。算筹是中国古代的一种计算工具,体现了东方数学的独特智慧。这些经典数学问题和著作,不仅...

    刘畅词汇笔记(咪咪打印版)hotbook.cn.

    为了帮助学习者巩固记忆,词汇笔记可能设计了定期的复习计划和测验。通过这些复习与测试,学习者可以及时检测自己的学习成果,调整学习策略,确保学习进度与效果。 此外,刘畅老师也注意到了文化背景对词汇学习的...

    uCOS平台下的LwIP移植笔记

    4. **RTOS集成**:LwIP原本设计为无操作系统的环境运行,但在uCOS上,我们需要将它融入到RTOS的任务和调度机制中。这通常涉及到创建专门的任务来处理网络事件,如TCP/IP回调函数,以及正确地同步和互斥访问LwIP的...

    kindleSplit:自动拆分kindle读书笔记为1条1条记录。后续考虑整理保存到数据库用web方式显示

    【kindleSplit】是一个自动化工具,专为Kindle用户设计,用于将Kindle阅读器中的读书笔记拆分成单独的条目。这个工具的核心功能是将原本整合在一起的笔记内容拆分成独立的记录,便于管理和进一步的整理。尤其适用于...

    设计模式整理代码-pattern.zip

    在IT行业中,设计模式是软件开发中的...通过阅读并实践"pattern.zip"中的代码示例,你可以更深入地理解这些设计模式的实现细节和应用场景。记住,设计模式并不是银弹,选择合适的模式需要根据实际需求和上下文来判断。

    jsp数据库开发实例精粹

    PetShop最新版4.0基于.Net Framework 2.0和Asp.Net,原本是.Net平台上的学习实例,但它展示的分层架构和设计模式对于任何Web应用程序的开发都具有参考价值。 2. **系统架构设计**: PetShop采用了典型的"三层"架构...

    Gof design pattern 中文/英文版+web+学习笔记

    书中包含的中文和英文版本以及学习笔记可以帮助读者深入理解每个模式的核心思想和应用场景。英文网页版则提供了在线阅读的便利,方便随时随地查阅。无论你是初学者还是有经验的开发者,这些资源都将是你提升编程技能...

    设计模式介绍chm

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板,可以被重复使用,以创建高效、可维护的代码...通过阅读"设计模式笔记.chm",你将能够深入理解这些概念,并将它们应用到实际的编程项目中。

    DJVE阅读器

    这种设计使得DJVU文件在浏览时加载迅速,即使在低带宽的网络环境下也能流畅阅读。 WinDjView是DJVE阅读器的一个实例,它是Windows平台上流行的免费DJVU阅读软件。WinDjView提供了一套全面的功能,包括页面缩放、...

    小红书营销组件及评论区组件闭环收割玩法.docx

    2. 跳转搜索有点类似营销组件中的正文搜索组件,建议配置和笔记内容强相关的品牌词、产品词或者活动词,来承接用户在阅读笔记后产生的搜索兴趣。需要注意的是,在这一组件下,既可以设置产品页面的搜索词,也可以...

    dhmobility

    "dhmobility"软件的作用就是解决这个问题,使得原本为台式机设计的CUDA驱动能够在某些特定的笔记本电脑上工作,例如VAIO CS23H。 在提供的压缩包文件中,有以下几个关键文件: 1. **MMDotNETnVSetup.exe**:这很...

Global site tag (gtag.js) - Google Analytics