zoukankan      html  css  js  c++  java
  • 2015-SH项目总结

    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 --------

     

    谢谢观看

  • 相关阅读:
    UVALive
    HDU6405 Make ZYB Happy 广义sam
    企业级通用链表雏形
    数据结构与算法-递归的形象化理解
    Pictures & texts synthesiser
    全局变量、局部变量、静态全局变量、静态局部变量在内存里的区别
    LINUX 目录文件结构
    测试
    maven 查找jar包的version
    web.xml文件的web-app标签体各版本的约束
  • 原文地址:https://www.cnblogs.com/bee0060/p/5167095.html
Copyright © 2011-2022 走看看