接上文创业期的软件开发管理(一)

软件队伍

技术主管

  决策者对软件开发可能一知半解,他们会想当然地认为软件开发过程比较“简单”:从市场上找一个技术带头人,然后组建一个开发队伍,其余的事就是下达需求,你给我开发出软件来。这对于技术主管来讲面临的局面会非常尴尬,即需要向领导非常困难地解释一些他们根本不能理解的问题。又需要承担起巨大的压力。“先天不足”的需求也是一个非常大的挑战,因为创业团队根本没有一个成型的现在可操作的流程可以让技术主管去参考。这需要技术主管有非常好的市场前瞻性,同时也要有非常好的架构延展性。

  创业期,团队知道要做什么,也知道要怎么做。然而一旦细化下去之后,问题会非常的多,非常的复杂。要使这些业务流程条理化,清晰化,还需要技术主管进行指导。缺少指导的技术实现会远低于预期效果,而且软件系统可能存在严重的延展性不足。

  技术主管要面临的另一个辣手的问题是,是来自上层的非软件开发领域的管理方式的影响。开明的老板不会过多的关注技术主管的管理方式,但在管理一支新军时,战斗力可能会比较低,在一段时间过后,上层可能表示不满,他们可能以一种更为自信的态势来插足软件开发的管理。这时,技术主管最好不要过多地去计较,我们不排斥一种新的管理方式,但需要技术主管密切观察这种管理方式,可以吸纳一些好的方法,但也要及时发现负面影响。这不是一天两天能发觉的,但越早越好。尽早树立起自己对管理的话语权,否则技术主管只得背负起“能力有限”的评价。

  还有一件事情是技术主管无法把控的,那就是不断膨胀的细化的需求,老总下达的需求只是方向性和概括性的。即使你做了比较细致的文档,他也只是扫一眼而已,因为他不懂这玩意;其次他也没有精力和耐心;再次,他认为这是技术主管应该把好的关。对老总来讲最好的方式是让他看到软件原形!

  由于是创业阶段,很多东西都没有可借鉴性,随着一个个原形的出现,超出预期的时间会累加的越来越多,这会让上层感到不安,更为可怕的是,为了实现最终目标,决策层在实现 “路径”上争论不休,使得需求忽左忽右,时间的浪费也是很可观的。这样企业不得不在指定的期限内精简功能集,但还是有可能会造成延期的情形。

  在这种紧迫感的驱动下,软件的管理可谓是一种挑战,因为我们可能忽视软件的“质量”,即使临时渡过了难关,后期也可能会有很大的维护工作去做。甚至很多设计都需要推倒重来。所以技术主管的工作将任重道远。

需求文档

  需求文档对于创业阶段来讲是一种挑战。不断变化的需求及没有细化的需求,使得你不能够在开发阶段拥有一份完整的相对稳定的需求文档版本。如果按照规范的文档来书写需求文档,那将是一件相当痛苦的事情。此时最好不要用正规的诸如Word之类的文档格式来存储,我们需要一个可以灵活组织内容,变更内容的工具象UML建模工具,MindManager等都是不借的选择。

  需求文档的整理需要开发团队中的大多数人员同时进行,技术主管会将需求分成几大块,由不同的开发人员去主导。不过有一件另人沮丧的事情,这些开发人员做程序没有问题,做设计也没有问题,理解你要做什么也没有问题,帮助你规范业务流程也没有问题。有问题的是,他们可能不善于表述!由于专业性的不足,及以时间紧迫为借口很有可能他们写的需求文档形同虚设。虽然如此,他们中的部分人还是希望得到这方面的锻炼的。此时最重要的产物不是他们文档上写下来的,而是通过交流大家了解到实际的需求情况。

  技术主管有必要对核心业务流程进行详细的阐述,使其清晰与明确,对于其它简单需求或相对独立的附属需求则可以宽容对待,不需要严格的文档约束,也没有办法和精力去使全部的需求文档内容详尽。

软件设计

  在创业阶段,拿ISO的标准来规范现有的软件开发流程就象在开玩笑一样。但80-20原则还是执行的倒是非常的透彻。我们必须相信开发团队中的每一个人的能力,我们必须充分放权以给他们充分的发挥。团队中的每一个人都需要独挡一面。我们假定每一个人都有能力处理在开发中遇到的细小问题。因为我们分配的任务是按需求一大块一大块的分配的。每个人都是设计的主导者,也是代码的实现者。在这样的情况下,我们去寻找规范和自由的平衡点真的不是一件容易的事。这里就应用一下80-20原则:

  我们重点关注20%的需求的设计,这20%是业务的核心,其余的80%是辅助或次要的。我们不是只对20%的需求进行设计,而是要对100%的需求进行设计,只是对核心业务要格外关注而已。

  每个设计用20%的时间书写文档,用80%的时间讨论问题。

  文档的内容为规范性文档所要求的内容的20%,其余80%不需要。

  另外需要接受下面的事实:

一、是所有这些设计中只有20%是优秀的,80%是有“缺陷”的。而这些有缺陷的设计主要是指:

1、 缺少延展性

2、 设计过于理想,有些可能根本用不到

3、 实现方法不是最优的。

二、80%的设计是可以工作的,即使那些有“缺陷”的设计也是可以工作的,他们可能直接被应用到编码中去!只有20%的设计必须重新设计的。

三、设计文档并不能很好的指导别人进行编码,而只能指导设计者自己去编码。有下面的原因:

1、 设计文档不完整

2、 开必团队中的职责划分没有那么明细,没有专门的编码人员和专门的设计人员。

3、 不同组员之间的设计思想及设计习惯的不同,使得他很难接受别人的设计。这是新团队缺少磨合造成的。

  技术主管必须在设计环节严格把关,但不要拘束于形式,只要透彻的明白设计者的思想即可,否则今后苦果不断。设计的产出其实有很多的缺陷,但这些缺陷是可以容忍的。技术主管完全可以让架构师设计好所有东西,然后再去编写代码,这样设计会浑然一体。职责也明确,但会有下面的问题:

一、我们有少数的特种部队,而不是大量的正规军。

二、架构师在设计时,其它人做什么呢?

三、每个人都有表现欲,且他们能够做事情,只是经历上可能没有你丰富。他们也希望在这种环境中成长,这也是最好的成长环境。

四、我们的时间还是少得可怜!

五、我们希望团队中的每个人都有能力带领一支部队。

六、我们需要彼此了解每个人,取其精华,去其糟粕,最后形成我们的共识。

  对于有缺陷的设计,技术主管可通过团队会议来巧妙解决,但不是所有的问题都会令你满意,只要不是本质上的问题,还是可以继续的。这里面有很多“缺陷”是个人的习惯、经历、性格等形成的,对于这些“缺陷”在创业阶段需要有足够的“包容”心。

未完待续……

创业期的软件开发管理(二)相关推荐

  1. 创业期的软件开发管理(一)

    本文从多个角度分析创业时期软件开发过程中所遇到的问题及给出一些个人的解决方法.这是我的新身经历,这些方法不一定会适合读者,也一定是好的方法.作为一个创业团队的技术带头人,分析问题的角度或深度会有一定的 ...

  2. 软件开发管理与质量控制(二)

    3.5   开发人员技术结构 宏观上讲,软件开发机构基本可分为二种角色,管理角色和技术角色.不同角色各有其不同的发展方向,如图7所示. 不论是走技术路线还是管理路线,不存在那种角色地位更高的问题.高级 ...

  3. 软件开发管理规范(制度)

     版 本 页 标   题:China Advanced Construction Materials Group信息技术管理制度 主   题: 软件开发管理制度 文档编号: 版本说明: 版本号 版本日 ...

  4. 软件开发管理中的博奕论

    软件开发管理中的博奕论 吴旻 泰岩网络工作室 软件开发人员大多懂得算法的威力,但无数失败的项目却向我们展示了一个又一个教科书解决不了的困境.不断前进软件的管理方式在力争避免项目失败,其实就是在不遗余力 ...

  5. 软件开发管理与质量控制(一)

    前  言 随着市场经济的进一步完善及全球经济一体化进程加快,企事业单位面临着激烈的市场竞争,企业内部.外部信息交流已成为企业发展.参与市场经济竞争的迫切需要.企业引入先进的信息处理技术,增加信息共享程 ...

  6. 软件开发管理(产品经理客户和程序员互撕解决方案)

    2019独角兽企业重金招聘Python工程师标准>>> 此图引用CMMI3,清楚地阐述了软件开发管理流程. 重点说明下需求管理这一块, 如遇需求变更,需要有,避免产品经理或客户频繁变 ...

  7. 软件团队的建设和软件开发管理[zz老秦]

    软件团队的建设和软件开发管理 毕业以后一直在从事软件工作,历经了10年坎坷,现在是一家IT企业的软件开发主管.在不断的摸索.失败.成功中,有不少的经验和教训,希望能和一些成长中的软件从业者分享. 软件 ...

  8. 影响中国I软件开发的二十人

    被列入"影响中国软件开发的20人"分别为:陈榕.严援朝.求伯君.王江民.鲍岳桥.宫敏.谭浩强.李开复.陈钟.杨明.侯捷.王志东.周奕.陈天桥.吴涛.雷军.丁磊.张小龙.廖衡毅.袁红 ...

  9. 软件开发管理规范流程图

    项目管理的根本目的是按时.保质.保量完成预期交付的成果.项目管理要让整个组织能清楚理解项目实施的目的.影响.进度,应做到项目组所有员工都应理解项目实施的原因.意义及客户的要求.在项目管理中还能看到公司 ...

最新文章

  1. Sql注入式攻击和一些防范技巧
  2. 浅析Python中的序列化存储的方法
  3. 【CyberSecurityLearning 16】单臂路由与DHCP中继+ ICMP协议+VTP
  4. 计算机英语 传输介质,计算机英语实用教程unit7
  5. 模仿Spring实现一个类管理容器
  6. VMware客户端vSphereClient新建虚拟机
  7. github 上 Fork 别人的项目后的常用的操作指南
  8. 深入理解JVM--类的执行机制
  9. Enjoy模板里使用layui模板引擎laytpl
  10. phpexcel 数字格式_将文本转换为phpexcel中的数字格式
  11. (PPT素材)扁平图标、PNG免抠图小图片
  12. WINDOWS游戏编程大师技巧-常见编绎连接错误FAQ
  13. ios开发环境搭建教程
  14. WSDM2019|门限注意力自编码在内容感知推荐中的应用(已开源)
  15. 《东周列国志》第七十六回 楚昭王弃郢西奔 伍子胥掘墓鞭尸
  16. Launcher布局加载流程
  17. Python--生成测试电话号码
  18. 【赛鱼电竞】用王者荣耀免费改名卡改名和王者荣耀怎么修改昵称及王者荣耀改名卡免费修改昵称方法教程
  19. matlab-基础 复数 实部、虚部、模、共轭、辐角
  20. adb remount失败的解决办法:

热门文章

  1. 求1~100以内的素数,最简单的方式
  2. java封装为so,java挪用.so文件
  3. js获取下月时间_JS获取上月,本月,下月的开始时间与结束时间
  4. ios开发 多人语音聊天_iOS 新手集成单聊、群聊、语音和视频通话的简述
  5. php网页事件处理方法,PHP实现事件机制的方法
  6. 深入理解web.xml中配置/和/*的区别
  7. substring的用法
  8. 测试流程图_入职两年银行测试员经验总结:我是如何帮人们“避雷”的?
  9. Linux添加rose不能交互式登录,常见问题及注意事项 - Linux下环境安装配置Rose HA全攻略(图)_数据库技术_Linux公社-Linux系统门户网站...
  10. 佳能c3020维修模式 白电平调整_真·迷你微单 佳能EOS M200简评