2015年,加入现在的公司(外包公司,名字就不说了),做SH项目(化名),在这个月(2016.01)结束了。

虽然公司也有做项目总结,不过我还是自己也总结一次。

项目概况:

  这是个为一间私人会所提供全面服务的一整套系统,有移动(Andriod+iOS)端、内部web(面向会所的员工)、外部web(面向会所的客人)。

  我们的客户也是软件公司,我们是项目外包,我们负责web的前端,和全部端的后端开发。还有web端的测试。 数据库和界面设计都由客户的人员负责。

  我在其中负责前端开发,也是一个开发小组的team lead。

  以下是技术上的概况:  

  开发模式: Scrum(敏捷开发),一般两周为一个sprint(迭代、一个sprint提交一次交付,并进行一次demo)

  团队构成: 4个Scrum team(开发), 一个QA team(测试), 1个BA(需求), 一个PM, 总人数大概30+。我所在的小组加我共4个人。2前端2后端。

  数据库: mysql

  后端: java(后端技术不太清楚)

  前端: angularjs、sass、css3、grunt、gulp、nodejs、shell

  部署、版本管理:jenkins、 nginx、git、gitlab

  管理工具: jira、kb

  

项目问题:

  这里我只总结两个问题。

  第一个,刚加入这个项目的时候,感觉团队比较混乱,很稚嫩, 很多东西都要从头的摸索。

     我很纳闷, 作为一个外包公司, 应该有很大量的项目经验。一个新项目成立后,应该可以借助这些经验快速构建团队、开发模式、开发流程。

    但是实际情况却是,这个项目没继承到来自公司的项目经验,只能在项目进行中摸索学习。

    虽然, 项目中的同事进步都很快,但是,我们本应可以更快。公司缺少对项目的积累和总结。

  原因猜想: 成也外包、败也外包。 在这个项目,从PM到开发人员,大部分缺少产品意识和主人公意识,应付式的工作。

    这个项目,代码交付后就认为完事了,没考虑更多事情,反正也和自己个人利益无关,没有义务和责任。

    另外,公司也没有相应制度和规范,所以也就事不关己高高挂起了。

  解决方案: 我认为,项目在交付代码后,还是有事情可以做的,如总结项目经验。

    总结包括但不限于这些问题:技术选型、具体技术点、组织架构、管理、开发流程、编码规范等等。

    总结可以记录项目中发现的问题, 采取的解决方案,以及产生的结果。

    

    这些经验停留在脑子里时,就只是经验, 如果写下来,经过整理,可以形成规范,如果再进行系统整合,可以形成方法论。

    最主要的是,外包公司在这方面有很明显的优势,即项目数量优势。

    现在大多数项目(或公司),都是依靠产品经理的个人经验进行管理和构建,大部分是脑海中的经验。 能做后面几步的很少。

    有了这些大量的整理过的经验,我们可以快速构建团队、开发流程、开发模式,甚至不需要亲自去做, 这能极大提高团队构建和成长的效率, 而且构建出来的团队很快就能有战斗力。

  第二个,一个sprint为一次开发迭代周期,一般一个sprint为其两周。

    在第一个周一时,BA把需求告诉团队,第二个周五时给客户demo。

    我们每个sprint是开发、team lead(下简称TL)、QA同时开始。

    我们的敏捷有个特点, 就是每个sprint,一般只被告知这个sprint要完成的内容的业务需求。

    由于每个sprint的任务没有预告,开发人员要开工,必须要等到BA告诉TL,然后一起理清需求,分析好设计好,才能开工。

    sprint后期,为了要demo,必须保证开发完成、功能正确且稳定,这导致至少最后一天(最好是2天)开发人员不需要修改代码。

    sprint的头几天QA又会相对清闲的。

    这种流程安排的直接结果,就是每个sprint里,开发人员至少有2天,多的时候3-4天是空闲的。 这导致了团队的低效。

    最讽刺的是我们是在用敏捷开发,效率却如此低下。

    这是开发流程的问题。

  解决方案:原因猜不到了。直接说解决方案。

    我想到的解决方案其实很简单,就是错开开发人员和其他人的sprint周期。

    TL、QA的sprint早于开发人员的sprint,例如提前2天。 如果开发人员是周一开始新sprint,那么TL、QA应该上周四就要开始。

    他们需要了解、整理需求。因为敏捷的缘故,需求拿到手的时候,一般是不够清晰或者不够严谨的, TL、QA、BA需要整理清楚,至少解决大部分明显的问题,让需求变得可执行,再交付给开发人员进行设计和开发。

    由于开发人员每个sprint开始时就可以开始工作,那么完成时间也就会有所提前,之前在sprint初期被浪费的等待时间被节省下来,可以在demo之前完成功能开发。

    这样的结果是,第二周的周三,开发sprint就结束了,可以开始下一个开发sprint,也可以作为缓冲用来改bug,或留作他用。

    如果开发要提前开始新sprint,相应的TL、QA等,也要提前开始他们的下一个sprint,这能保证开发人员的工作不会被迫中断。

    如果TL、QA的sprint提前2天,理想情况下的好处有:

      1. 提高效率:缩短了sprint的周期,从10个工作日(两周),变成8个工作日, 但是产出是差不多的,因为开发人员工作时间没变。那么团队效率就提高了1/5。

      2. 降低风险:每个sprint开发人员开始时间提前,就有更多的时间写出更稳定的功能和改bug,demo的风险会降低。遗留到下个sprint的问题会更少。这会是一个良性循环。

      3. 减少团队内耗: 不知道有没人有类似感受。当bug多,项目质量差,会导致很多问题。 其中一个是团队内耗, 一般体现是互相推诿。 质量差,就有bug要改,但新的开发任务还照常要完成,时间压力骤升。大家为了自己能完成任务,会把不明显与自己相关的事情推给别人。当然对方也不会乐意接受,于是我们花很多时间用于推掉东西,对团队来说,这些时间都是白白损失。然后恶性循环。 这个方案,有希望减少这种内耗的恶性循环。

    实际情况没那么理想,但应该还是有好的影响,上述几点应该能有不同程度的提高。

项目收获:

  这个项目中,个人收获还是很大的:

    · 认识到一群很好的同事,年轻、有活力、有想法、技术好。

    · 学到或接触到不少技术: angularjs、sass、grunt、shell、nginx等

    · 自我管理能力提高

    · 小团队管理能力提高

    · 执行力提高

    · 更能坚持做完一件事情

    · 更有自信

完。

-------- 2016.01.29 --------

//

 

//

谢谢观看

2015-SH项目总结的更多相关文章

  1. VS 2015打开项目闪退,新建项目提示未将对象引用到实例

    因为开发需要,要把开发工具换成visual studio2015,装完之后会有警告“js”安装的问题,打开VS也没有问题, 但是一打开项目就闪退,新建项目也不行,查看应用程序日志,报错提示如下: .N ...

  2. 几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感)

    一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上,多位专家做了十几场非常精彩的演讲.本文就这些演讲中提到的 Ceph性能优化方面的知 ...

  3. 创建ABPboilerplate模版项目

    本文是根据角落的白板报的<通过ABPboilerplate模版创建项目>一文的学习总结,感谢原文作者角落的白板报. 1 准备 开发环境: Visual Studio 2015 update ...

  4. win10 安装visual studio 2015遇到的坑

    最近win7系统不知啥原因无法访问域中的网络文件,打算升级到win10体验一下.结果发现这一路有太多的坑.首先安装win10基本上算顺利,但是当进入系统后,菜单模式对于PC的鼠标来说,用起来感觉不顺手 ...

  5. 基于Gulp + Browserify构建es6环境下的自动化前端项目

    随着React.Angular2.Redux等前沿的前端框架越来越流行,使用webpack.gulp等工具构建前端自动化项目也随之变得越来越重要.鉴于目前业界普遍更流行使用webpack来构建es6( ...

  6. Jenkins使用SSH构建Go项目并执行

    目录 下载插件 配置要部署的服务器 构建项目 Jenkinx可以帮助我们通过SSH插件,将项目直接部署到指定的服务器. 下载插件 (1)点击左侧的"系统管理"菜单 ,然后点击 (2 ...

  7. 常用的shell脚本

    [root@WEB1-live sh]# cat licai_fabu.sh #!/bin/bash pid=` ps -ef | grep java | grep '8011' | awk '{pr ...

  8. 解决BUG:CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default

    vs 2015的项目用vs2013,更改.net版本之后,打开会报以下错误,原因是配置文件修改出了问题.已经验证是BUG 你只需要把Web.config换成以前的就好了.   https://conn ...

  9. 快速部署tomcat项目的Shell脚本

    为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程. 发布次数多了,操作就比较繁琐 ...

随机推荐

  1. MySQL分区表的管理~1

    一.如何管理RANGE和LIST分区 以该分区表为例 CREATE TABLE members ( id INT, fname ), lname ), dob DATE ) PARTITION BY ...

  2. Deadlock Detecting--转

    /* Java Threads, 3rd Edition By Scott Oaks, Henry Wong 3rd Edition September 2004 ISBN: 0-596-00782- ...

  3. mysql乐观锁总结和实践--转

    原文地址:http://chenzhou123520.iteye.com/blog/1863407 上一篇文章<MySQL悲观锁总结和实践>谈到了MySQL悲观锁,但是悲观锁并不是适用于任 ...

  4. mysql小数格式化正确方法

    用到小数格式化,mysql了解很肤浅,只会简单的sql语句,于是百度,发现大家都是转载同一个文章,好无语. 而且,结果验证还是不正确,查了官方api,终于写出来了. 另外,还是保存下百度的几个方法: ...

  5. 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑

    前言      从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...

  6. 记一个简单的sql查询

    在我们做各类统计和各类报表的时候,会有各种各样的查询要求.条件 这篇主要记录一个常见的统计查询 要求如下: 统计一段时间内,每天注册人数,如果某天没有人注册则显示为0 现在建个简单的表来试试 建表语句 ...

  7. Parallel并行编程初步

    Parallel并行编程可以让我们使用极致的使用CPU.并行编程与多线程编程不同,多线程编程无论怎样开启线程,也是在同一个CPU上切换时间片.而并行编程则是多CPU核心同时工作.耗时的CPU计算操作选 ...

  8. JS美女图片切换带视觉差

    使用JS实现,多张图片动态切换查看效果:http://hovertree.com/texiao/js/21/ 效果图: 转自:http://hovertree.com/h/bjaf/iamhxcyk. ...

  9. [WCF编程]12.事务:事务概述

    一.事务概述 维护系统一致性和正确地处理错误恢复挑战的最佳方式是使用事务. 一个事务就是一个复杂操作的集合,这个集合中任何一个操作的失败都会引起整个集合的失败. 尽管在事务进行时系统被允许暂时出于不一 ...

  10. Null value was assigned to a property of primitive type setter of

    在SSH项目的开发中遇到了下面的错误: 检查后发现数据库和映射文件中这个字段是允许为空的,为什么还要出错呢?原来是因为这个字段是int的,int是基本类型,即使设置成可以为空也不能取空值. 解决的办法 ...