前几天看了一篇帖子
《五年多一线开发经历告诉我:软件开发——几乎不可能cooperate的工作》
链接:
http://www.cppblog.com/guogangj/archive/2009/05/14/82909.html
引用
写下这个标题,说实在我心里有些沉重,在当今这个团队精神一次一次地被提到重中之重的时代,我却感觉高度依赖脑力活动的软件开发工作其实几乎不可能真正
的有团队合作。这是我从事了五年多一线开发(快六年了)之后的高度总结,也是要从事所谓“管理”工作最需要关注的一句话,请忘记“合作”!
为什么?俗话讲,一山不容二虎,如果这是一份高度依赖脑力运动(我用运动,不用劳动)的工作,这两个聪明人你说谁会听谁的呢?他们能否强强联合,1+1=2 那样创造出更好的东西?110%,1+1不会等于2,120%,1+2不会大于2,那就只有小于2啰?一点没错!而我的经验告诉我,90%的情况,1+1<1。如果你有幸作为握大权的管理者,请把这两个聪明人分开,让他们干不同的事情,根据他们的兴趣,爱好,去干不同的事情,如果实在找不到不同的事情,就让他们干一样的事情,但不是合作,而是各自单干,然后从他们各自生成的最终软件产品中,择优录取,这也总比让他们合作好。
谈点自己的看法
几十年来软件开发者前赴后继的想寻找人月神话中的“银弹”,但所有人最终的结果都是一样的“没有银弹”!软件开发是一个智力摩擦,思想碰撞的十里洋场,远不同于机械,建筑等可以协同工作的行业。软件开发者常常用计算机的思维考察现实问题,比如协同工作的问题,每个人的大脑里都有一个进程空间,在人与人之间仅仅只有眼耳舌鼻等外部接口的情况下这个进程空间相对内聚,要想在软件设计中共享大量的信息,创造性的想法等,无法避免的需要进行人脑中的“进程切换”而人的大脑,和计算机系统又有异曲同工之妙,那就是存在核心态程序—用户态程序,对应人的潜意识—意识。前者告诉运转,后者低速但是可以与外部交换信息,而“进程切换”是相当费时费力的。像unix系统中实现进程的“锁”都是一个非常复杂的过程,常常需要1000个CPU时钟周期才能完成。所以,在软件设计的核心问题上,如果是人与人需要协同设计,那么大量的时间就要用于交流,最终达到1+1<1的效果
分享到:
相关推荐
- **定义**:软硬件协同设计是一种系统设计方法,旨在通过利用硬件和软件之间的权衡,在它们并行设计的过程中满足系统级别的目标。 - **并发(Concurrent)**:指硬件和软件在同一时间线内平行发展,确保双方能够同步...
在传统设计方法中,通常是先进行硬件设计,然后再进行软件设计,这种模式存在诸多弊端,如设计周期长、开发成本高、难以充分利用硬件和软件资源,且容易导致最终设计结果偏离原始要求。与之相比,软硬件协同设计将...
协同设计是一种多学科、多专业交叉合作的工作模式,它强调在设计过程中各参与方通过有效的沟通与协作,共同完成设计任务。随着信息技术的发展,协同设计已经逐渐成为现代工程设计、产品开发以及创意产业中的核心方法...
协同办公系统概要设计说明书是软件开发过程中一个关键的文档,它定义了系统的高层架构和主要组件,为后续的详细设计、编码、测试和维护提供基础。这份文档通常不涉及过于详细的技术实现,而是集中于系统的核心功能和...
利用VPM系统平台和CATIA软件进行协同设计,可以在每个阶段提供准确的设计模型,支持设计师高效完成工作。 10. 设计变更管理: 在设计过程中,经常会出现需要修改设计的情况。利用VPM系统平台和CATIA软件的参数化...
在软件开发过程中,设计文档是不可或缺的一部分,它们用于规划、沟通和记录项目的关键信息。这份珍贵的资源包包含了20个常见的设计文档,对于提升软件开发效率和质量有着重要作用。以下将详细介绍这些文档的主要内容...
PDMS(Plant Design Management System)是一款广泛应用于工程设计的三维设计软件,它在选煤厂设计中的二次开发及应用,标志着设计模式从传统的二维平面设计向三维立体设计的重大转变。本文将详细介绍PDMS软件的相关...
《软件开发-模块开发卷宗》是一份详细记录软件开发过程中单个或一组模块的文档,主要用于跟踪模块的开发进度,描述其功能,提供设计和实现的细节,并确保其通过了严格的测试。以下是对这份卷宗各部分的详细说明: 1...
在软件开发过程中,概要设计是至关重要的一个环节,它为整个项目的开发提供了明确的蓝图和指导方向。概要设计通常发生在需求分析之后,详细设计之前,是将需求转化为具体实现方案的关键步骤。 概要设计的目标是定义...
标题和描述中提到的“融CAD二次开发于Web页的快速协同设计系统”,表明该文档研究的主题是在Web环境中实现CAD系统的二次开发,并实现多用户的实时协同设计功能。这种系统的设计需要考虑的关键点包括Web技术、CAD系统...
在软件开发过程中,设计文档是项目管理、团队协作和代码...良好的文档管理能有效提升团队的协同效率,保证软件开发的质量和进度。在实际工作中,应根据项目规模和具体需求选择合适的文档类型,并确保其及时更新和共享。
面向Agent的软件开发不仅要求开发者具备良好的软件设计和编程技能,还需要具备对人工智能领域特别是分布式智能系统的理解。此外,开发者还需要对所应用领域的业务逻辑和环境有深入的了解,以便为Agent设计合适的智能...
【标题】中的“计算机毕业设计凯撒 java版SaaS OA协同办公软件 v2.0开发文档说明”揭示了这是一个基于Java编程语言的SaaS(Software as a Service)模式的OA(Office Automation)协同办公系统,版本号为2.0。...
理想的软件开发模式应该是迭代式和敏捷式的,即在软件开发的过程中,不断地进行小规模的开发和测试,而不是等到所有开发工作完成后再进行集中测试。这种方式可以更早地发现问题,降低后期修改的成本。 #### 实际...
【协同软件-禅道】是一款专门针对软件开发团队设计的高效协同工作平台,它集成了项目管理、缺陷跟踪、文档管理、任务管理、测试管理、版本控制等多种功能,旨在提升团队协作效率,优化软件开发流程。作为一款管理...
在软件开发过程中,设计文档是至关重要的组成部分,它们记录了项目的各个方面,确保团队成员之间有清晰的沟通,并有助于保持项目的组织性和可维护性。在C#的开发环境中,设计文档通常包括以下关键部分: 1. **项目...
【Android程序设计与软件工程协同式教学】 在高等院校的教学中,Android程序设计和软件工程是计算机科学领域的核心课程。然而,传统的教学方式往往使学生在掌握这两门复杂课程时遇到困难。为了改善这种情况,...
软硬件协同设计是一个在电子系统设计领域中非常重要的概念,它指的是软件和硬件设计人员合作,利用各自领域的优势,共同完成系统设计的过程。这种方法可以加速产品从概念到市场的时间,并且有可能降低整体的成本。 ...
它是软件设计的蓝图,为后续的编码工作提供了指导。 3. **接口设计文档**:此文档详细记录了不同组件或模块之间的交互方式,包括API调用、消息传递等,确保系统各部分协同工作。 4. **数据库设计文档**:对于包含...