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

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

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

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

flyfish 2015-11-4

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

以下引用自《人月神话》

贵族专制统治和民主政治

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

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

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

以下引用自《代码之道》

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

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

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

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

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

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

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

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

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


推荐阅读
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 作为一名程序员,从大学步入职场后,常常感受到一种难以言喻的空虚感。这种感觉或许源于对生活的不满、职业发展的瓶颈,或是日常琐事带来的压力。本文将深入探讨这种复杂的情感,并尝试寻找解决之道。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
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社区 版权所有