热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

软件开发中设计为什么应该只有一个所有人?

软件开发中设计为什么应该只有一个所有人?flyfish2015-11-4所有人只有一个人,他证实有能力掌控整个程序,保持了产品概念的完

软件开发中设计为什么应该只有一个所有人?

flyfish 2015-11-4

所有人只有一个人,他证实有能力掌控整个程序,保持了产品概念的完整与一致,他是团队的灵魂人物。
否则开发出来的产品就是个分裂的软件产品。
如果集体设计软件,得到的结果往往是平庸。
所有人要防止自己进入群体意识

以下引用自《人月神话》

贵族专制统治和民主政治

概念的完整性要求设计必须由一个人,或者非常少数互有默契的人员来实现。

现在让我们来处理具有浓厚感情色彩的问题――贵族统治和民主政治。结构师难道不是新贵?他们一些智力精英,专门来告诉可怜的实现人员如何工作?是否所有的创造性活动被那些精英单独占有,实现人员仅仅是机器中的齿轮?难道不能遵循民主的理论,从所有的员工中搜集好的创意,以得到更好的产品,而不是将技术说明工作仅限定于少数人?
最后一个问题是最简单的。我当然不认为只有结构师才有好的创意。新的概念经常来自实现者或者用户。然而,我一直试图表达,并且我所有的经验使我确信,系统的概念完整性决定了使用的容易程度。不能与系统基本概念进行整合的良好想法和特色,最好放到一边,不予考虑。如果出现了很多非常重要但不兼容的构想,就应该抛弃原来的设计,对不同基本概念进行合并,在合并后的系统上重新开始。

至于贵族专制统治的问题,必须回答
“是”或者“否”。就必须只能存在少数的结构师而言,答案是肯定的,他们的工作产物的生命周期比那些实现人员的产物要长,并且结构师一直处在解决用户问题,实现用户利益的核心地位。如果要得到系统概念上的完整性,那么必须控制这些概念。这实际上是一种无需任何歉意的贵族专制统治。
第二个问题的答案是否定的,因为外部技术说明的编制工作并是比具体设计实现更富有创造性,它只是一项性质不同的创造工作而已。在给定体系结构下的设计实现,同样需要同编制技术说明一样的创造性、同样新的思路和卓越的才华。实际上,产品的成本性能比很大程度上依靠实现人员,就如同易用性很大程度上依赖结构师一样。

以下引用自《代码之道》

谁来负责
千万不要把头脑风暴与集体设计混淆在一起,尽管很多人都作出了贡献,讨论了他们不同的想法,但设计应该只有一个所有人。这个人所有人拥有最后拍板的权利,也只有他的名字才会出现在设计文档上。

只有一个所有人保证了设计的清晰度和一致性。它赋予了所有人责任意识去满足需求,造就了一个理解和贯彻设计抉择的灵魂人物。

集体设计是专门给懦弱无能的部门准备的-当他们怯懦的多数人意见在极小的张力下崩溃时,他们可以把指责转嫁给别人。

以下引用自《编程大师访谈录》
提问的人问了盖茨关于这样的一个问题:如何创造一个环境以确保能开发出成功软件的?盖茨是这样说的。

一种方法是建立小型的项目团队,通常是四五个人一组,其中一个人经证实有能力掌控整个程序。如果这个项目带头人遇到不确定的事情,他会与经验更为丰富的程序员一起讨论。我们的部分策略是让所有程序员在进入编码阶段之前都先想清楚每一件事情。编写程序设计文档是至关重要的,因为在把问题当做算法看的时候,问题会得到很大的简化。可以说算法是最简单的形式,从中可以看出问题在什么地方是重叠的。另一个重要因素是代码复查,要确保代码是看过的,看看资深人士是否能提出如何做得更好的建议。而且你必须参考类似的、做得特别特别好的项目。程序员可以看看以前其他人是怎么做的,从其他项目获得改进自己程序的想法和经验。

以下引用自《乌合之众》
我的 目的是说明为何要避免自己进入群体意识

群体只能从事最低级的劳动,而涉及到普遍利益的决定,只能由杰出人士组成的决策中心来作出。但让我们感到沮丧的是,即使是各行各业中最优秀的专家们,当他们表现为一个群体的时候,也会经常性地作出极度愚蠢的决定。实际情况是,即使再高明的专家,一旦他们受困于这种群体意识,那么他们只多只能用普通人的智力与能力,用最为平庸而拙劣的方法来处理那些关乎重大的事情。

奇迹的创造者现在我们可以得出结论了。
第一:在智力上,群体的表现远不如构成这一群体之中的个人,所以在涉及到智慧这方面上,我们是绝不能依赖于群体的。
第二:群体比个人更有力量,但是群体的表现是极不稳定的;而个人无论是智力还是能力方面,总是维持在一个平均的水平线上的。
第三:群体的行动是受感情激起并主导的,这种感情的强弱程度,直接决定着群体的行为能力。
第四:群体的表现有可能比个体更好,或者更差。究竟群体会表现得更好还是更差,这完全取决于周边的环境如何。
第五:群体能够干出什么来,取决于影响群体的暗示具有何种性质。
如果这种性质是积极的、进步的、有意义的,那么群体的表现就会是相应的积极进步而有益。反之,如果主宰群体行为的暗示是负面的心理能量,那么群体的表现就会非常可怕——如果把群

体比作是同一个人,那么这种主宰群体行为的暗示力量就好比是人的思想,如果这个人的思想是善良的,那么这个人必然是善良的,反之亦然。
第六:群体往往会构成骚乱的因由,但群体更多的表现,却是一个英雄主义的群体。


推荐阅读
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • ClassList对象学习心得与表单事件非空校验技巧
    ClassList对象学习心得与表单事件非空校验技巧 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • Hadoop平台警告解决:无法加载本机Hadoop库的全面应对方案
    本文探讨了在Hadoop平台上遇到“无法加载本机Hadoop库”警告的多种解决方案。首先,通过修改日志配置文件来忽略该警告,这一方法被证明是有效的。其次,尝试指定本地库的路径,但未能解决问题。接着,尝试不使用Hadoop本地库,同样没有效果。然后,通过替换现有的Hadoop本地库,成功解决了问题。最后,根据Hadoop的源代码自行编译本地库,也达到了预期的效果。以上方法适用于macOS系统。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 如何撰写初级和高级前端开发者的专业简历
    如何撰写初级和高级前端开发者的专业简历 ... [详细]
  • 通过利用代码自动生成技术,旨在减轻软件开发的复杂性,缩短项目周期,减少冗余代码的编写,从而显著提升开发效率。该方法不仅能够降低开发人员的工作强度,还能确保代码的一致性和质量。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 观察 | 求职体验:收到录用通知的公司通常不深究技术细节,而那些详细追问的公司往往没有后续进展
    观察 | 求职体验:收到录用通知的公司通常不深究技术细节,而那些详细追问的公司往往没有后续进展 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
author-avatar
jinyan胡_435
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有