关注前端开发流程
作者:尤刚 来源:taobaoued 发布时间:2009-12-31 17:38:00
流程,通俗来讲,就是许多人,在做一系列的事情时,怎样相互协调,安排好这一系列事情的先后顺序,有什么事先的约定,需要达到怎样的预期目标。
在UED里,前端同学需要处理的需求比较多,早些时候,前端这里的开发流程还是比较模糊的,UED以外的同学也不清楚这边的工作具体是怎样进行的,所以难免会有需求插队的情况发生,打乱了大家的计划,因此今年Q3的时候,在与SCM团队同学的共同努力下,形成了一个前端的ASSETS发布流程。
这个流程主要针对ASSETS发布的需求做了一些约定,制定了相关的几个时间点,包括审核需求、提交代码、daily测试、预发测试、正式发布到线上确认的时间。
ASSETS流程简述
需求审核
在提需求之前,需求方一般都会先找PM或者相应产品线的前端咨询一下,如果可行的话就会在周四之前将需求提到平台上,到了周四的时候,前端会结合自身的工作情况,将平台上的需求接收并纳入自己的日程中,预估完成时间、发布时间以及相关的发布简述。
编码开发
周四需求评估完以后,就会按计划开始处理需求,将涉及ASSETS发布的需求优先处理,不涉及ASSETS的放在靠后的时间处理,一般这段时间是从周四到下一周的周二。SCM会在每周四开一个新的ASSETS分枝供前端在下一周开发使用。
提交代码,合并到daily测试以及预发测试
如果有涉及到与后台开发相关的需求,前端的同学会在周一就把代码提交,这一天会有一次合并代码,方便后台开发来测试。其他的同学一般最晚会在周二下班之前把代码提交,在周二,会有多次合并代码到daily的操作,每次操作完后,SCM的同学会在前端的群里通知到大家,方便大家测试。
周三早上,SCM的同学会将代码发布到预发环境,此时就可以在HOST中绑定IP,换用线上的地址来测试。
正式发布
周四上午,SCM的同学确认后,将没有问题的代码发布上线。
流程的作用
在团队不断成长的过程中,处理的需求数量也在增长,需要考虑到开发的效率、产品的质量以及团队协作间的配合等因素,这个流程能为我们解决很多相关的问题:
督促需求方做好相关的规划
有些时候,一些需求的细节还没完全确定,但需求方总希望能将他想到的各种细节都实现出来,然后再挑选其中一种做为他的方案,所以需求的变更会有些频繁,然而这样的成本有些高,一切应该在计划后再去实现,而非反其道而行。现在需求方会在提需求之前,会花时间地去考虑他们的需求,将尽可能多的情况都想清楚,做好必要的沟通工作,权衡各种利弊之后,再给出一个比较成形的方案。
保证需求安排的有序性
在一个大的团队中,不同部门的同学在一起合作,因为沟通及一些特殊情况,效率或多或少会受到一些影响,良好的规划能有助于提高开发的效率。
通过每周的需求审核,安排好下一周的日程,由于需求的优先级和先后顺序都已排定,工作的条理性会更加清晰,需求插队的现象也有明显减少。当然我们也有紧急流程,但是它仅限于处理线上bug以及一些经过多方确认的紧急需求,有其自己的适用范围。
统一测试,归避风险
之前的日常处理中,可能会遇到这样的情况:甲、乙两个同学分别需要处理两个日常需求,他们的需要改动到的代码会有重合的部分,如果他们并不知道这个情况,那么在他们本地的单独测试中,一切都是OK的,然而当发布到线上去时,发现出了bug或者一方的改动没有同步到线上,查原因后发现是提交的代码相互覆盖了。
现在要处理的需求数量越来越多,为了避免上述情况,新流程实行以后,大家会统一来做多次测试,这样就更容易发现bug,可以大大降低协作开发而产生的风险。
流程本身就是一把 * 剑,有利有弊。一方面,它使我们的需求变得有序,使前端能够在处理一个需求时,不会频繁被其他插队的需求打断。并且因为发布有时间点的设定,所以测试工作会更加严谨,这有助于提升代码的质量。因此对于我们来讲,流程带来的好处是显而易见的;但另一方面,它额外地增加了做事的成本,涉及ASSETS发布的需求,就像赶某班火车一样,错过了就只能等下一班,所以也给需求方带来了许多不便,有待改进,不过这可以通过长期的合作而慢慢被弱化,双方达成了一种默契以后,情况会好很多,现在这样的情况已经比较少了。
尽管在流程使用之初,会带来诸多不便,但是从长远来看,流程有助于使一个团队形成统一的工作方式和态度,将繁杂的事情化整为零,有条理地去处理它们。因为流程,每一个人的责任感都会增强,对风险考虑得会更多一些,这一切都会使产品有质的提升。而我们所有与这个流程有关的人,都会不断地去推动流程改进的工作,这其中还有很多需要思考的:
如何将我们的流程推广到整个公司,让大家都能了解我们的流程,这样在未来需要合作时,需求方需要注意些什么,相关的时间点以及开周时间的预估等,他们就会心中有数。
ASSETS的发布还不够灵活,如果把和应用相关的ASSETS独立划分出去与应用一起发布,这样剩下的需要发布的东西就会少很多。或者是按产品线来设计发布流程,根据实际情况来发布。
如何来简化流程上的一些细节,在保持效率的同时,降低实际操作中的成本。
每周二是一个特别的时间点,为了赶在这最后时间提交代码,之前的开发会有些紧张,这种情况也有待改善,比如未来可以一周有两次发布。
流程不是生来就完美,但从现在它带给我们的好处来看,遵循并使用它,对我们的开发会起到很大的帮助作用。我们对待它的态度,决定了它对我们会有怎样的反馈,如果觉得它不合适了,就发出自己的声音,想办法去改进它,不要只是被动地等待。
———————————-
部分名词解释:
daily环境:UED的一个日常测试环境
预发环境:外网IP,需绑定访问,供内部使用测试
ASSETS:脚本和样式存放的目录
SCM:软件管理配置
PM:项目经理
猜你喜欢
- 一、前言相关知识来自《python算法设计与分析》。初级排序算法是指几种较为基础且容易理解的排序算法。初级排序算法包括插入排序、选择排序和冒
- 爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法。python提供了强大的url库,想做到这个并不难。这里以登录学校教务
- 使用了Python的 xml.etree.ElementTree 库xml.etree.ElementTree 库简介xml.etree.E
- 前言本人曾对 Vuex 作过详细介绍,但是今天去回顾的时候发现文章思路有些繁琐,不容易找到重点。于是,在下班前几分钟,我对其重新梳理了一遍。
- 系列教程MySQL系列之开篇 MySQL关系型数据库基础概念 MySQL系列之一 MariaDB-server安装 MySQL系列之二 多实
- 前言本文目的:根据本人的习惯与理解,用最简洁的表述,介绍爬虫的定义、组成部分、爬取流程,并讲解示例代码。基础爬虫的定义:定向抓取互联网内容(
- 本文实例讲述了thinkPHP引入类的方法。分享给大家供大家参考,具体如下:这里以发送邮件类phpmailer为例1.将核心文件放入ORG目
- 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数
- 代码如下:SELECT * FROM (SELECT TRUNC(SYSDATE, 'mm') + ROWNUM
- 1.根据id获取元素document.getElementById("id属性的值");返回值是一个元素对象案例:点击按
- 本文针对Python的全局变量实现方法简述如下:先来看下面一段测试程序:count = 0def Fuc(count): pri
- 构建网络ResNet由一系列堆叠的残差块组成,其主要作用是通过无限制地增加网络深度,从而使其更加强大。在建立ResNet模型之前,让我们先定
- 一 程序预览本程序已经写了多年, 很久没用, 不过刚运行了下竟然还可以成功运行. 先来张运行结果图.二 最近的滴滴APP已经可以支持设置自动
- 如下所示:import datetime #获取两个日期间的所有日期 def getEveryDay(begin_date,end_date
- 目录什么是信号Python的信号处理Python对信号的处理信号枚举信号函数signal.alarm(time)signal.pause()
- 比如说在1-3000之内生成随机永不重复数,点击运行代码的时候请注意,此代码比较占用资源,如果硬件配置比较菜请把count改小。俺的电脑配置
- SNMP标准引入一组ASN.1语言元素,称之为SMI(Structure of Management Information)。由SMI描述
- 模块概述如果说模块是按照逻辑来组织 Python 代码的方法, 那么文件便是物理层上组织模块的方法。 因此, **一个文件被看作是一个独立模
- 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义
- 修改vue-treeSelect的高度.vue-treeselect{ height: 28px; }