孙子写道:

战争对国家至关重要。 因此,它是一个研究主题,绝不能忽略

在我们的现代世界中,软件对您的组织至关重要。 如果您能够一致且可靠地构建软件,那么您将在竞争中获得巨大的优势。 如果开发软件就像发动战争,那么谁是敌人? 敌人是复杂性 。 复杂性来自于必须做出数十种

为您的软件项目正确做出决定,甚至有成功的机会。 对于项目一开始您所知道的所有事情,至少会有十个您不知道的事情。

复杂性因必须在最后期限内做出这些决定而变得更加复杂,尤其是如果该最后期限选择不当的话。 因此,当您考虑启动一个软件项目时,必须了解您正在浏览冰山一角。 您处理不确定性的能力将决定您的成功程度。 与常规战争不同,该敌人不会睡觉,没有明显的弱点,也不会被欺骗。 一旦您与敌人交战,您的成功将取决于正确估计复杂程度并做出出色的决策。

不确定性来源

如果您认识敌人并且了解自己,则无需担心一百场战斗的结果。 如果您认识自己而不是敌人,那么每获得一次胜利,您也会遭受失败。 如果您既不认识敌人也不认识自己,那么您会在每场战斗中屈服。 Stratagem的进攻,p。 18岁

不确定性来自几个主要来源:

  • 不熟悉所使用技术的团队资源
  • 要求不完整或不一致
  • 事实证明技术要求不可行
  • 无法理解项目依赖性
  • 无法制定正确且易于理解的计划

与对抗常规敌人不同,复杂性会发现您的所有弱点 。 克服复杂性的唯一方法是通过理解需求,拥有训练有素的团队,制定可靠的项目计划并执行得当。
不幸的是,大多数组织开发软件的方式类似于“轻旅” ( 诗歌 )。 在那场战斗中,约有400名骑兵袭击了由50枚火炮支援的20 个步兵营 。 不用说这是一个宰杀。

孙子兵法(

孙子概述的几个原则也适用于软件开发:

  • 欺骗
  • 领先优势
  • 能源
  • 使用间谍
  • 长处和短处
  • 全胜

欺骗

由于敌人是复杂性,我们无法欺骗它。 问题在于我们让自己被复杂性所欺骗。 您会多久看到开发人员说他们可以在一个周末对Red Bull进行任何代码编写? 人们通常不启动软件项目,因为他们想要
失败 ;但是当每10个项目中只有3个成功时,表明人们对构建软件的复杂性感到迷惑。 这个统计数字困扰了我们50年。 在开始软件项目之前,高级管理人员应该真正停下来并考虑是否所有的鸭子都排成一排。 不幸的是,高级管理人员仍然低估了复杂性,并使团队不得不面对几乎不可能的项目。

领先优势

因此,在战争中,胜利的战略家会在赢得胜利之后进行战斗,而注定要打败第一场战斗,然后在战斗中寻求胜利的人。 战术性格,p。 15

复杂性来自上述不确定性的来源。 成功的组织计划消除已知的不确定性,并有计划应对这些不确定性。 在了解不确定性的大小之前进入项目是失败的秘诀。

能源

你们军队的影响可能就像磨碎的鸡蛋砸了石头一样-这是受弱点和强 能量 科学的影响 ,p。 4

团队的精力需要在适当的时间使用适当的力量来抵抗不确定性。 当这种情况发生时,不确定性将降到最低,成功的机会将增加。 必须创建一个可能影响您的软件项目的所有风险表 。 如果您积极地将引发风险的可能性降到最低,则会减少不确定性并增加成功的机会。 有节奏地应对复杂性时,软件项目就会成功。 解决高强度问题需要紧随其后的是降低强度稳定性。 团队必须以可持续的步伐前进,否则可能会筋疲力尽。 每天工作10个小时以上的软件团队不会成功。 它们变得像钝剑一样,无能为力。

使用间谍

无法从鬼魂中获得预知。 它不能从先前事件的比较或从天上的推论中得出,而必须从了解敌人情况的人那里获得。 使用间谍,5 –6


敌人是复杂的,是无形的 ,即看不见,无味且不可接触。 您的间谍是您的业务分析师,架构师和项目经理。 您的业​​务分析师将与业务部门一起定义复杂性的范围 。 索要您想要的任何东西,但要致力于打造您所要求的一切! 请记住,所有起作用的大型复杂系统都是由起作用的小型简单系统构建的,因此,其目标是最初构建最小的可用产品。 要求太多并提供不足的资源和/或时间将导致项目失败。 架构师为业务分析人员提供制衡,以确保该项目可行 。 架构师将向项目经理提供关键的依赖项信息,以确保创建并遵循正确的执行计划。 这些间谍中的每一个都看到了其他人看不见的复杂性的不同方面 。 除非将三种类型的报告有效地结合在一起,否则您可能会不知道要尝试构建的软件范围。 如果您在没有适当情报的情况下参战,您将回到“轻旅”的场景。

长处和短处

军事战术就像水一样。 因为自然界中的水从高处流失,并向下加速。 因此,在战争中,方法是避免强者,而对弱者进行打击。 弱点和强,p。 29—30

水显示出有序的柔韧性 。 之所以下令,是因为它试图下坡。 但是,它很灵活,会绕过岩石和其他障碍物。 一个软件项目需要不断进步,而不会遇到障碍。 诸如RUP或敏捷软件开发之类的方法可以确保您表现出有序的灵活性。

全胜

赢得软件项目的全部胜利意味着按时和按预算交付软件,而又不损害团队(包括管理层)的健康和声誉。 失败的项目将其影响扩展到团队的每个成员以及每个人的简历。

当您进行实际战斗时,如果胜利不远了,那么男人的武器将变钝并且他们的热情会减弱。 《发动战争》,第2页。 3

当组织付出的努力超出了他们的承受能力时,它们将在团队资源上施加巨大压力,要求他们延长工作时间以使截止日期通常不切实际 。 在高压锅中,您可能会期望关键人员出现缺陷并使您处于更糟糕的位置。 在死亡行军中,您发现自己多少次了?

结论

战争和软件开发都是严肃的话题,涉及重大的斗争。 如果软件开发是一场对抗无知不确定性复杂性的战争,那么《孙子兵法》中概述的许多策略和策略都为我们提供了如何执行成功项目的指导。

参考: 《孙子兵法》: JCG合作伙伴 Dalip Mahal在《 加速发展》博客上发表的文章。

翻译自: https://www.javacodegeeks.com/2013/04/the-art-of-war-how-it-applies-to-software.html

孙子兵法:如何应用于软件相关推荐

  1. 熊猫是我们的!《功夫熊猫》为什么不是我们的?

    熊猫是我们的!<功夫熊猫>为什么不是我们的? ■不争的事实:美国梦工厂打造的暑期大片<功夫熊猫>征服中国观众 ■必须的反思:中国文化还有多少传统元素被自己忽略被别人挖走 自梦工 ...

  2. 孙子兵孙子兵法全文_孙子兵法:如何应用于软件

    孙子兵孙子兵法全文 孙子写道: 战争对国家至关重要. 因此,这是一个研究的主题,绝不能忽略 在我们的现代世界中,软件对您的组织至关重要. 如果您能够一致且可靠地构建软件,那么您将在竞争中获得巨大的优势 ...

  3. [译]从《孙子兵法》到软件开发

    2019独角兽企业重金招聘Python工程师标准>>> [译]从<孙子兵法>到软件开发 /*** 谨献给可爱的小黑** 原文出处:https://www.toptal.c ...

  4. 瑞星布局:安全软件的时尚模式

    被业界引为经典的长尾理论有了新的发展,理论的提出者安德森又出了一本畅销书<免费--商业的未来>.安德森提出,免费前提下的商业模式正在成为互联网经济的旗帜,"免费是数字化时代的商业 ...

  5. 软件开发实践的24条军规

    转自: http://zz563143188.iteye.com/blog/1844388 本文的这些最佳实践.开发准则都是伟大的程序员的经验总结.Tim Oxley从互联网中搜集了这些最佳实践,并放 ...

  6. 【C++课程设计】期末大作业 - 基于Qt开发的中国象棋软件

    1 题目 基于Qt的中国象棋软件开发 本博客只是简略的描述论文的大致结构.框架,以及软件开发的大致过程.有兴趣的参考原文档资料. 2总体设计与主要功能 2.1概述 中国象棋是起源于中国的一种棋,属于二 ...

  7. DesignPattern团队《设计模式在软件开发的应用》讨论会议记录

    Design&Pattern团队<设计模式在软件开发的应用>讨论会议记录 时间:2004年12月18日20:00-21:00 地点:博客园聊天室 主持:Dudu.Wayfarer ...

  8. 从战争到外包软件开发:如何赢得最后胜利

    本文关键点: \n \n 外包软件开发和军事行动之间有相似之处,有些军事行动策略对软件产品交付也有一定助益\n 让销售和售前团队参与前期侦察,并确保将在客户环境中获得的深层理解传递给开发团队,使他们了 ...

  9. 计算机专业及软件开发推荐书籍

    计算机专业推荐书籍: 吾不能有名师指导,但求能精选出最好的书籍,从最好的书中学到东西,可有些许补偿.当然,最好能主动寻找良师益友和专业人士的指导.经典的书都有一个特点: 详尽得当,通俗又不失理论化,信 ...

最新文章

  1. 插入网络CSS矢量图标、网络SVG矢量图标
  2. php与nginx通讯方式,[Linux]PHP-FPM与NGINX的两种通讯方式
  3. 用反向传播算法解释大脑学习过程?Hinton 等人新研究登上 Nature 子刊
  4. gitlab 添加本地项目
  5. silverlight 跨域文件位置
  6. java循环链表类_3、循环链表(java实现)
  7. Js获取或计算时间的相关操作
  8. Python地理数据处理相关模块的安装方法
  9. 传智播客黑马 Python学习笔记之python初识
  10. DELL披露MacBook Pro杀手
  11. 前端记住密码功能实现
  12. 彻底去除2345好压的广告方法
  13. 计算机软件安装包后缀名,软件安装包程序是什么
  14. 网口压线顺序_水晶头网线排序方法 网线安装必看【图文教程】
  15. iOS从零开始学习socket编程——高并发多线程服务器
  16. 《愤怒的小鸟大电影》分析报告
  17. K8s完整多节点部署(二)
  18. RuntimeError: non-empty 3D or 4D input tensor expected but got ndim: 4
  19. LeetCode 883. 三维形体投影面积(数学)
  20. 周末阅读之《刻意练习》,很多“天才”不过是找对了方法

热门文章

  1. RubyConf China 2021 Hotwire 讲师征集
  2. 4、VI/VIM编辑器
  3. 东方甄选难扛大旗,新东方在线何时走出“双减”重创?
  4. 启动项目出现 Cannot find module ‘resolve-cwd‘ 报错
  5. 华为FusionCompute 6.5主备部署教程
  6. 类中一定要有主方法吗?
  7. MyBatis拦截器介绍
  8. 【报告分享】 2020新青年居住消费趋势报告-贝壳研究院(附下载)
  9. 2021年全球溶剂石脑油收入大约9212.2百万美元,预计2028年达到12140百万美元
  10. 场景理解--场景分类