说实话,这是一个敏感的话题。
“设计”这个词比较害人,基本涵盖了软件从需求到最终交付前的所有阶段:需求分析、系统功能设计、架构设计、模块设计、代码设计、代码实现、测试设计……
最害怕的就是一种说法:xx能力是设计出来的(这个XX可以代表任意功能或者质量属性)。
这句话说的不无道理,但要看怎么解读,但是很多管理者将此当做借口,软件出现任何问题就是设计的问题。从而主动丧失了对于软件产品的控制力。
矛盾的根源是,
不少团队中,有专职的“设计人员”,在“设计”这个概念没有明确确定时,“设计人员”和“开发人员”经常会产生矛盾,即设计得是否充分了。
从我的理解来看,“设计”决策,涵盖范围很广,不能用一个专职的“设计人员”或者独立的“设计阶段”解决所有“设计问题”。从经验来看,软件产品的60%~70%的技术决策应该提前完成,剩下的30%~40%只能通过“开发人员”和“设计人员”在后期的探索和分析才能妥善解决。
矛盾的解决根本不在于
硬生生的在“设计”和“开发”之间划出一条线,分辨出哪些是你的,哪些是我的。这是有灰度的,需要人来沟通协调。解决的源头是,
大家确定基本原则,对于交界处的设计工作可以统一处理,协同作战。只有默契协作,才是解决问题的根本。
我的处理经验是:
- 在设计阶段,带领开发骨干一同完成“设计”工作
- 让开发骨干将设计思路、设计理念、设计要点带入到开发过程中,这样通过他们的传播,有利于让开发团队更好的把握设计目标,抓住需求要点。而通过传统的文档传递,效果还是有限的,毕竟信息存在丢失,开发团队也不容易记住
- 对于开发过程中遇到的“设计问题”,开发骨干、开发团队、设计人员要一起讨论解决,不要一遇到问题就相互扯皮
- 将开发过程中的“设计决策”权利,适当的交给开发人员,至少绝大多数的设计提案应该有开发人员提出,不要搞“设计垄断”,开发团队的能力要充分发掘出来,要帮助开发团队培养技术决策的能力,否则累死设计人员,也无法做完所有的设计决策
- 问题解决后,在阶段点需要带领设计人员、开发骨干、开发团队一起进行总结和反思,看看前期设计阶段如何改进,提前识别后期风险
当我看到开发人员和设计人员相互抱怨和指责的时候,我都比较痛心,软件开发没有多少时间,更为主要的还是尽快解决问题,平时相互促进、共同提高。
如果“开发”和“设计”被划分成两个不同的阶级,将是一种灾难。
软件开发不是盖楼,编码也不是搬砖砌墙,设计也很难完成所有规格参数的制定。(日本的软件设计除外,这是他们的追求,在这里就不做评价了)
分享到:
相关推荐
领域驱动设计(DDD)是一种软件开发方法论,强调将业务领域概念映射到软件系统中,并以此为核心构建软件的架构和设计。DDD来源于Eric Evans的经典著作《领域驱动设计》,旨在从实践角度探讨如何建立领域模型并将其...
限界指的是在设计地铁工程时,为了确保安全和功能,对车辆、隧道、车站以及其他建筑结构尺寸和布局所设置的界限。地铁限界直接影响到车辆运行的安全性、土建工程的规模以及建设成本。因此,限界的设计是一个复杂而...
为了应对这些挑战,设计师和制造商正在开发新一代材料,并采用先进的设计方法和制造技术。这些创新使得连接器能够在保证可靠性的同时,实现更小的体积和更轻的重量。 报告还展望了小型化坚固化连接器的未来,并以...
总之,“程序设计模式教案基于各种开发环境”是一份宝贵的教育资源,它将帮助开发者跨越语言和环境的界限,掌握并运用设计模式,以实现更高效、可扩展的软件解决方案。通过深入学习和实践,开发者可以提升自己的编程...
总结来说,"单片机bsp、kernel/驱动、应用分层设计开发"这一主题涵盖了硬件抽象、操作系统核心功能和应用程序的开发流程。通过合理的分层,可以提高代码质量、降低维护成本,并有利于团队协作。了解并熟练掌握这些...
### 手机应用软件设计和开发的方法探讨 #### 1. 手机应用软件的特点分析 当前市场上手机主要分为两大类:功能手机(Feature Phone)和智能手机(Smart Phone)。尽管两者之间的界限并不十分清晰,但无论是哪一类...
通过这一课程设计,学生不仅能够掌握电子商务系统开发的基本步骤和技术,还能够提升问题解决能力、团队协作能力和创新能力。这些技能对于未来在电子商务领域的职业发展至关重要。同时,教师的评分标准和指导能够帮助...
以上内容构成了一个完整的软件或产品设计开发流程,从项目启动、设计、评审、验证、输出确认到变更管理,每个环节都是保证产品质量和项目成功的关键步骤。在互联网行业中,这种严谨的设计和开发流程是保证项目高效、...
《嵌入式系统设计开发大全》的文档涵盖了嵌入式系统设计的重要发展历程和技术变革,主要集中在以下几个关键知识点: 1. **嵌入式系统设计的驱动力**:嵌入式系统设计的变化主要是由应用需求和信息技术的推动。微...
随着信息技术的飞速发展,Web开发已经成为计算机程序设计领域的一个重要分支。Web应用程序能够提供丰富的用户交互体验,并且可以跨越地理界限,使得信息传播更为广泛。本项目源码——基于Web的喀什旅游网站设计与...
基于RF_DT算法的服装与鞋子性别分类界限重置优化设计,是利用数据科学中广泛应用的决策树(Decision Tree,简称DT)和随机森林(Random Forest,简称RF)算法,对服装和鞋子的产品分类进行细致的优化。该项目通过...
5. **进度计划**:设计工作分为资料收集、理论分析、系统开发和论文撰写四个阶段,从2月到6月答辩日,逐步推进,包括开题报告、系统开发、论文修改直至最后的答辩准备。 6. **参考文献**:涵盖了质量管理、数据库...
对于零基础的开发者来说,通过系统学习鸿蒙开发的基础知识,掌握前端技术和页面设计原则,并不断实践与优化,将能够开发出既美观又实用的交友软件页面,满足用户的需求,也为自己在鸿蒙开发领域的发展打下坚实的基础...
VHDL语言的模块化和可重用性特点,使得设计者可以在不同的项目之间复用已有的设计模块,从而提高开发效率和设计可靠性。 相对而言,Verilog语言则以其简洁性和易读性在快速原型设计和学术研究中更为流行。Verilog...
首先,鸿蒙OS的设计目标是打破设备间的界限,实现不同硬件之间的无缝协同。它采用了微内核设计,以提高系统的安全性和效率。微内核仅包含最基本的服务,如内存管理、进程通信等,而其他服务则运行在用户态,降低了...
数据驱动游戏开发是一种以数据为核心,强调游戏设计和游戏内容的灵活性和...因此,数据驱动游戏开发不仅是一种编程技术,更是一种理念,它挑战了传统游戏开发中工程师和设计师之间的界限,鼓励更灵活的设计和开发流程。
在当前房地产开发投资放缓的大环境下,建筑设计行业的未来发展趋势和挑战成为了业界关注的焦点。这篇文章将深入探讨这一主题,分析行业现状、潜在机遇以及应对策略。 首先,房地产开发投资的放缓直接影响到建筑设计...
通过分析和实现这些源代码,我们可以更好地理解动态规划和分支界限法的工作机制,提高问题解决能力,这对于软件开发、数据分析、人工智能等领域都具有重要意义。同时,这也是一种锻炼编程技巧和逻辑思维的好方法。在...
本文主要介绍了基于Android计算器的开发和测试,整个项目的流程可以分为三个部分:需求分析、系统设计和测试。需求分析部分主要介绍了计算器的基本功能和按键设置。系统设计部分主要介绍了计算器的总体设计和详细...