先直接放出我对软件开发的相关人员职责和流程:

图一:软件开发的相关人员职责

以下是截屏的开发流程泳道图:

横轴是相关开发人员的工作模块;纵轴是从上至下开发时序周期。

图二:软件开发的流程图

从职责图和流程图对应到我们实际处在软件开发过程中好像就是这样,并无不妥的地方;但是拆分下去并结合你的岗位工作经验就会发现某些环节难以形成流程标准,和很多需要注意的细节。接下去我们可以来聊聊其中的问题。


开发流程涉及到他人协作的模块:

项目经理:任务管理系统(Tower任务管理工具);

产品经理:产品原型和需求文档(Axure原型);

UI设计师:UI稿管理项目(蓝湖);

服务端/前端:api接口等文档(YApi);

测试组:bug管理系统(禅道)。

以上的各岗位所管理的项目系统是涉及到与其他同事协作的工作内容,有依赖时间顺序、有依赖他人工作和需做出回应的。

涉及到协作的工作内容,我们应该做好本职工作以免给他人添加额外的时间成本、工作量,导致嫌隙;不利于团队关系和气氛。


在开发流程中,在完成本职工作上,为什么我们应该更加注重团队协作和工作上的合作、磨合???

  1. 软件项目的开发更注重各岗位的协作,才能更好更快的产出预期的项目;
  2. 软件开发需要较少的人员参与,但工作也是人做的,都会带入情绪、情感,协作上我们应该尽量通过标准化流程避免些不必要的摩擦;带给员工良好的合作体验;
  3. 软件开发的人员画像大部分是些内向、不善沟通、不愿多沟通的;应通过协作管理工具和流程标准来减少不必要的沟通;这样就能更专注的coding和设计,不常被流程外的消息打断、打扰,扰乱思绪。

我们逐一分解各岗位的影响圈,以及在协作方面应该做好哪些:

开发主管/项目经理:

项目主管/项目经理的辐射圈

岗位解读:

在把控进度和质量上,要善于利用任务管理工具;如:Tower,任务状态更改,相关人员都会接受到通知,减少程序员的沟通时间和避开他们当面沟通能力不足的情况,转而通过文档沟通

对内把控项目进度、质量之外,他们的日常工作更应该关注团队管理,了解成员情况,消除不和谐因素,充当团队润滑剂。了解员工留在公司的原因,通勤时间短、公司稳定、薪资待遇、同事团队和谐、团队氛围好、职位有的发展、有利于当前学习?以及近期将来的打算和职业规划。这得要求管理者比较懂得一些为人处世的经验。

然而大部分中小团队的技术负责人、管理者大多都是由开发技术好的程序员晋升上去,大部分程序员性格内向、不善沟通,缺乏为人处世和管理的经验;性格里更是不愿意去触碰这些与人打交道的事情。他们更喜欢沉浸在自己的coding世界中。他们喜欢有产出,但是管理岗这工作实际工作量很多,不易看出实际的产出。对于程序员转岗的管理者来说,带不来多大的成就感,反而还加重他们的负担。在中间管理岗,对上得负责,忙于沟通,对下也得指导沟通;自己反而没时间专注写代码。最后这样的管理者会逃避管理方面的工作内容或逃离管理岗。

大部分中小团队提拔管理者只看到技术能力这方面的考核,过于片面,未正确认识管理者充当的角色和工作内容。

软件开发的技术更新速度较块,程序员这个群体是需要时间学习的,管理者要适当留出时间给他们学习,一直压榨员工时间在业务上,只会捡了芝麻丢了西瓜。

产品经理:

产品辐射圈

岗位解读:

产品在整个开发流程中是处于关键的协作位置:原型和文档的输出、需求评审会等都确保其他岗位对于需求的理解保持一致,并且要求同短时期内的需求理解一致,因为互联网需求变更周期较短。不管哪一方需求理解错误,将会导致翻倍的沟通时间以及返工的时间。产品在设计的时候跟写程序一样要多思考边界情况,尽量减少非需求变更导致的原型和文档变更。

产品在整个开发过程中都要求积极参与、沟通:

开发初期:设计产品,需求评审会确保多方理解产品需求正确

开发过程中:跟进开发产出结果确保需求正确、变更需求积主动极沟通多方到位确保对于变更的需求理解一致

开发结尾阶段:验收产品、更改设计不合理的地方,再积极沟通到位

为什么那么强调要:主动积极沟通呢???

因为:项目经理、开发、测试、UI的工作都有依赖于产品原型和需求文档; 项目经理依赖需求控制开发周期和任务;开发开发得业务当然依赖需求;测试的测试用例依赖需求;UI设计也依赖需求。需求一变更,下面的流程就得重新走一遍。需求一动则全身动。要时刻确保大家对于需求的理解一致,就得要求产品经理主动积极沟通到位,而不是其他岗位反过来沟通产品经理。

需求通知-关系图

举个错误的例子:

某互联网公司技术部的某产品如何设计原型和如何主导沟通需求工作的???

  1. 需求文档不用写,原型画的最粗糙、简单的那种,某些交互都不说明的;他以为你们都看的懂原型和他画的原型上的交互的。
  2. 之前偶尔开过需求评审会或者不开了,怎么开的呢?
    1. 需求确定后,通知下午X点后会议集合,然后放映原型,说这次我们要做这个,大概交互是这样。。。
    2. 你们有什么不懂的地方或者建议都可以提出来。。。。
    3. 然后我们是第一次在会议室见到原型,我们能理解要做什么呢???我们什么都不懂好不,多脸懵逼逼逼逼逼逼逼逼。。。
    4. 然后讲的过程中贼快,这个需求就是这样,这个页面就过了,下一个页面。。。。
    5. 就这样???到底是怎么样???我们就这样多脸懵逼离开会议室
  3. 这样开需求有何意义呢,首先得提早1-2天通知我们要开需求会,先把需求原型熟悉过几遍,对于不理解或不合理的地方记录下来,会议上讨论。
  4. 基于此,管理者就开始派发任务,各方自己去理解原型,不理解的地方再各自私聊产品,理解原型和沟通的时间算在开发时间上。这样就会产生多个版本的需求理解。
  5. 开发期间,都是多方在主动找产品沟通的,然后产品原型修改后并没有通知到所有人,就只有提出问题的人知道某个需求修改,多个人提出问题,最后就会导致多方多个需求理解不一致,需求理解没实时保持一致。
  6. 收尾的时候,前后端业务需求不一致,开发和测试bug冲突,测试和产品,开发和产品,ui和前端冲突,测试按自己理解提出的bug,服务端不屌不理任务是前端的问题(各方都以为自己理解是正确)抛给前端,前端认为是设计问题,关闭bug。测试再去跟产品沟通,再次打开bug并在bug上备注“产品这样说的”,然而前端不买账直接转给产品,产品再备注bug要求前端和服务端改。
  7. 导致了多少的工作量和沟通时间,我都把自己说绕了。这时候我40米的大刀已握的紧紧。

这让整个团队产生了多少的间隙,还谈什么团队氛围。

让我们来康康bug如何流转的:

某部分bug流转图

这只是bug流转图的某个分支,最后多方互相伤害一波,火药味浓浓啊。

所以综上所述,产品经理实时维护好原型、需求文档并主动积极沟通多么的重要。

UI设计师:

UI的辐射圈

岗位解读:

如图所示,UI岗看似被所需沟通的岗并不多,整个开发过程参与度也比较低,输出完UI稿算是完成工作了;依赖产品原型,给予前端UI实现帮助,实时维护UI稿项目管理,有变动做到及时通知前端,收尾时变动得再提醒测试。

UI岗有点要注意的是,设计不能太天马行空给开发带来很多实现上的困难,同一套系统UI标准一定要规范化,设计尽量组件化。

前端/客户端:

前端/客户端的辐射圈

岗位解读:

前端主要是以页面、app、小程序等可视化程度高的为产出,这个岗位的工作内容偏依赖于其他岗位,如:产品原型、需求文档;UI稿;服务端的API文档等。所以在开发协作上也是需要经常沟通的。

作为开发这类人的性格都偏向不爱当面沟通,沟通能力也一般,然后前端又比较多沟通,怎么办呢???

所以要借助各方所管理的协作文档和工具,进行文本沟通。如tower任务回复、依赖线上UI稿(蓝湖)产出UI界面、依赖API文档联调接口、bug管理系统等。

其他与多方合作该注意的细节都在上图。

服务端:

服务端辐射圈

服务端解读:

服务端的工作内容相对其他开发会多些,具体的见最上图的鱼骨图。

日常工作中更多的是于前端撕逼,针对某个功能点自己实现复杂麻烦,前后端都想让对方来实现,这时候斗舞就开始了,就看谁的理由更加充分更能说服对方了,说不过的一方只能忍气吞声了,所以说前后端的关系通常也没那么好。

服务端跟前端协作该做好的一点就是,尽早设计好API接口文档,这样前端在写好UI界面就能今早进入接口联调阶段。服务端也能安心写接口实现功能等。不用空出时间和前端battle。

前后端在开发前尽量协商好api文档的交互数据结构,不然开发后都不好改,让谁改都容易产生点摩擦。


总结:

互联网开发团队通常都是偏中小团队,或者按项目分组;团队人员相对少,加重了团队协作的重要性,活是人干的,要注重团队间的相处沟通和氛围,团队管理者应及时缝合团队裂缝,加固团队团结。开发团队的人员画像的特征也比较明显,要结合这群人的特征,按症下药来协调管理整个工作流程。

api 二次 开发 禅道_浅谈-软件开发流程相关推荐

  1. 手机java软件_浅谈软件开发就业前景

    ​ 我国信息化人才培养还处于发展阶段,导致社会实际需求人才基数远远大于信息化人才的培养基数,使得数以万计的中小企业急需全面系统掌握软件开发基础技能与知识的软件工程师.目前对软件已达20万并且以每年20 ...

  2. java学习方法-浅谈软件开发的神速进步

    中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有葵花宝典才是最厉害的,也只有掌握了葵花宝典,才能称为"不败". 1浅谈软件开发的神速进步 1.1什么才是软件开发的葵花 ...

  3. 浅谈软件开发工具CASE在软件项目开发中发挥的作用认识

    浅谈软件开发工具CASE在软件项目开发中发挥的作用认识 内容摘要:阐述了CASE工具作为 一种开发环境在软件项目开发中所起到的开发及管理作用.CASE工具实际上是把原先由手工完成的开发过程转变为以自动 ...

  4. api 二次 开发 禅道_二次开发

    1. 二次开发 1.1. 介绍 在实际做项目中拿B2B2C进行二次开发的时候, 通常不希望在标准的产品上进行修改. 因为这样会导致标准产品的补丁包无法升级. 目前系统提供了配置二开目录的方式, 可以在 ...

  5. java变量命名规则_浅谈JAVA开发规范与开发细节(上)

    开发团队在开发过程中,由于每个人的开发习惯,以及对于技术的理解深浅程度不一,往往一个项目在开发过程中,代码的质量,代码的风格都不尽相似,所以有一份适合团队的代码规范是非常有必要的,而一个团队的代码规范 ...

  6. python全栈开发工程师招聘_浅谈Python全栈开发工程师,让程序员都眼红的职业!...

    若把学C/C++难度比作做冰箱设计师,那么Java就是公司做冰箱的工人,而Python就是使用冰箱的客户.这只是难度的比较,那么就有人要说Python肯定很弱了,是真的如此吗? 领域--------流 ...

  7. 浅谈软件开发架构模式

    本文作者将介绍他对于软件开发架构模式的一些思考和实践. 背景和问题 我个人平时会比较慎用"架构"这个词 一方面是觉得业界有很多架构大师和架构模式,而我的认知和实践有限: 另一方面是 ...

  8. 浅谈软件开发项目的质量控制

    一.引言 J.M.Juran认为质量控制是一个常规的过程,通过它度量实际的质量性能并与标准比较,当出现差异时采取行动.由此,DonaldReifer 给出软件质量控制的定义:软件质量控制是一系列验证活 ...

  9. 如何 给给软件开发 添加 代理_如何与软件开发公司有效沟通

    从最初的想法到可运行的软件,软件开发过程是十分繁杂的,既不想被细节淹没,又希望留有控制力,与软件开发公司沟通要如何做才能事半功倍呢? 1,共享业务语义 所谓业务语义,就是需求背后所思所想,包含了一个功 ...

最新文章

  1. 沈向洋:从深度学习到深度理解
  2. struts2.xml详解
  3. 虚拟化之安装Xen实例
  4. mysql数据库唯一性_mysql表的字段怎么设置唯一性
  5. 数据挖掘之关联分析六(子图模式)
  6. Spring MVC表单防重复提交
  7. c9, Performance Monitor Control Register
  8. strcat函数使用中出现的问题
  9. java自动阅卷判断选择题,客观题型自动阅卷系统(管道过滤器模式)
  10. R语言实现故障树定量与定性分析——以GJB-Z 768A-1998 故障树分析指南图5.37为例
  11. S35VB100-ASEMI日本新电元平替整流桥S35VB100
  12. k中心点聚类算法伪代码_数据分析之二分K均值聚类算法
  13. TT 的旅行日记(Dijkstra)
  14. upc2021个人训练赛第23场M: 紫罗兰(dsu)
  15. INA240三相无刷电机电流采样实例(arduino)
  16. 转《论兔子怎么打败狼》
  17. Linux系统下如何查看Nvidia显卡芯片型号的两种方法
  18. 人工智能英文缩写怎么读,人工智能英文缩写大全
  19. (二)UPF之电压域、低功耗模式编码(Primary Supply Set、Power State)
  20. 他是国家的儿子 如不再优秀请原谅他

热门文章

  1. sql中 in , not in , exists , not exists效率分析
  2. webservice 原理
  3. 拖延症讲:反向遍历链表
  4. Ubuntu13下调试USB AUDIO的一些记录
  5. linux的基础知识——TCP握手
  6. 计算机视觉——openCV的简介
  7. 【剑指 offer】面试题13:机器人的运动范围(Java)
  8. 龙贝格方法c语言,龙贝格算法
  9. java远程调试挂起线程_java进程的远程调试
  10. pythonfor循环列表排序_Python使用for循环对列表内元素进行排序方法