引子

作为一个程序员,平时的工作是与项目来挂钩的,但是有的时候会发现有些项目做得风生水起,有的则做得浑身难受,那么一个项目究竟应该怎么做?

一个后端接到项目的主要流程

  1. 需求咨询
  2. 需求评审
  3. 项目估期
  4. 技术评审
  5. 跟上游约定 api
  6. 开发
  7. 联调测试
  8. 产品验收
  9. 上线
  10. 整理必要的文档

需求咨询

这个阶段是后端最初接触某项目的初始阶段,此时产品会给出最初的需求文档(线框图此时可能没有),甚至是人肉来咨询后端做最初的评估,已确定某些需求的可能性。

讨论结束后产品会根据讨论得到的结果回去开脑洞,项目可能夭折或者继续进行。

需求评审

产品经过他们自己的讨论设计,给出需求文档线框图(此时设计稿一般没有),召集前后端等项目成员进行需求评审。此时后端同学需要根据需求的合理性、项目的开发周期进行讨论(砍需求)。

砍需求的目的不是为了砍需求而砍需求,需要根据手上已有系统的功能以及新需求做出综合考虑,尽量在相对简单的情况下实现产品的需求。

简单的说就是难的我也能做,但是要花时间,砍需求的目的就在于在项目的 deadline 内能够完成这个项目。实在不行这个需求放在二期,太多的所谓二期需求就没有二期的项目了(可见有时候产品的需求...)

注意,产品会接受开发砍需求,但是开发请对确认后的需求认真估期,保证 deadline。否则又砍需求时间到了又做不完,呵呵。

项目估期

根据需求评审得到的需求,后端会先做初步的技术调研,需求拆分,在评审结束的1~2天内给出估期。

估期时需要注意,估期很难一次性估准,一个开发对于大于一周以上的估期就可以认为是凭感觉瞎估了,这里有个估期的经验:将需求拆细后拆到开发级别的力度建立对应的 task,对于每个 task 来做估期,当发现一个 task 的时间大于5后(单位为天),则需要拆分子 task,估期时采用斐波那契数列的评估方式: 1 2 3 5 8 13 21,对应于1天 2天 半周 1周 1.5周 2周 3周,可以上下加减0.5。然后根据子任务的时间合估计主任务的时间。

需要注意的是,估期时需要估计前后端联调时间,上线时间,资源申请时间,幺蛾子时间。幺蛾子时间为处理非此项目事件所花费的时间,这个跟开发本身所处的环境有关,可以在总估期的基础上乘以 1.2 ~ 1.5。

技术评审

复杂事情需要技术评审,尤其是自己做的事情心里也没有底气,需要其他开发一起讨论的时候。技术评审是保证复杂事情可以顺利完成,减少后期返工可能性的一个重要环节。

技术评审开发本身自己需要给出评审文档,包括项目背景,技术选型,主要的技术约束,自己想到的设计实现。

跟上游约定 api

一般一个项目会由多个部门并行开发,例如 数据、后端、前端、客户端,并行的过程中如果某个端开发比较慢,会导致卡另一个端的开发进度,所以需要开发前跟自己的上游约定 api,并给出文档,各个端遵循接口文档进行开发。

开发

根据技术评审后(简单的事情没有评审,自己心里有数)得到的方案以及之前建立的任务进行开发。

开发过程中需要仔细研究设计稿的细节,有任何存疑问的点去找产品确认,确认后的需求记录在某个文档上。开发前几分钟的几句话,会大大降低返工的可能性。

记录后@产品画押,开发和产品的记性都很差,画押非常必要。后期甩锅有用。

开发时注意把某些流程繁琐的事情放在前面做,例如申请某些资源可能需要其他部门同学支持,有额外等候时间。

开发过程中遇到难点及时向其他开发求助,不要憋着。

如果可能遇到延期风险,请及时通知产品,deadline 请尽量遵循(这句话的意思很明显)。

联调测试

前后端开发完后做整体的联调测试,在扔个产品测试前,请自己测过自己开发的 feature。否则气死产品事小,被产品打死事大。

产品验收

迎接可能的返工。

上线

上线注意各种细节,例如数据库变更,是否需要热缓存,灰度或者预发布后是否需要 cms 添加某些基础数据等等。

上线前请提供回滚方案。

整理必要的文档

文档记录下各种链接(需求文档、技术评审、 api),主要的实现,需求的变更即可。

正常情况下,上完线就结束了,也没有人会做这一步,但是如果后端做掉这一步的话,之后维护起来就会节省很多看代码思考逻辑的时间。

后记

请尊重项目的 deadline。

对于后端来说,一个项目究竟应该怎么做相关推荐

  1. 新做了一个项目,一个人做的,关于数据传输的项目(架构说明)

    HI,很久没有写博客了,因为最近在做一个大项目,之所以说它大,是因为它是我一个人干的,做的挺吃力的,呵呵,做的过程中,我感觉,我确实是一个干事主义者,呵呵. 项目结果图 新技术 用到了一个新的技术th ...

  2. vue项目跨域的问题(一个项目对接两个不同的域名、端口接口导致跨域,最好的办法是后端解决)

    vue项目跨域的问题前端解决方法(一个项目对接两个不同的域名.端口接口导致跨域,最好的办法是后端解决) 前端解决方法: ①打开config文件---->index.js文件,找到 proxyTa ...

  3. 初入前端,面对一个项目应注意哪些?

    前言: 对于初入职场的前端小白来说,一整个项目来了,顿时感觉压力山大,张皇失措,也总会感到手忙脚乱.其实不用怕,拆分步骤,把每个步骤做好,做细,一切都迎刃而解,犹如顺藤摸瓜般畅快淋漓. 目录: 概念的 ...

  4. Java 后端开发实践 - 项目模板(16 步)

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  5. 如何做好一个项目经理

    第一部分:软件项目经理的要求 首先是一个管理者,其次熟悉某些工具,某几种语言,行业背景,项目管理技能. 软件项目经理面临的恶劣环境,我们绝大部分软件企业运行在相对混乱的状态(CMM一级),组织不大可能 ...

  6. [收藏]进退两难—一个项目经理的日记{作者john.shen}与四位专家的点评

    一篇写实风格的项目实录,看完之后心有戚戚焉啊,很多时候项目就是这样,让人爱让人恨,成也萧何败也萧何:   进退两难--一个项目经理的日记 :http://blog.csdn.net/manager_c ...

  7. 进退两难——一个项目经理的日记(精典)[转]

    日记一2001年10月2日 晴 香港主题:得意的夜晚东方之珠,我爱你! 我真想打开君悦酒店的落地窗,对着维多利亚海湾的夜空喊它几嗓子,好好宣泄一下自己的兴奋.今天我忙得连轴转,上午由京抵港,下午就与盛 ...

  8. 分享:新入职时,如何快速熟悉一个项目的代码

    一.总体思路 昨晚是深夜撰文的阿菌,希望通过这篇文章和大家分享一下,初入职场时,如何才能快速地熟悉一个项目的代码. 说实话,感觉自己去年入职时上手项目的速度是比较慢的,可能是没有一些系统的方法论参考吧 ...

  9. 借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗

    在<Android开发进阶,从小工到专家>一书的第26页中有这么一段话,说Android之父Andy Rubin在被采访时说过,在设计Android之初他就希望Android能像FaceB ...

最新文章

  1. Linux 环境变量配置
  2. docker安装mysql指定_Docker安装MySql,并且使用外部客户端链接
  3. dhcp MySQL 超时_mysql导入sql文件过大或连接超时的解决的方法
  4. 若依前后端分离版实现基于el-tree实现选中部门树节点同步选中多选框的操作
  5. Oracle12C的卸载过程
  6. 一站式机器学习平台建设实践
  7. 一加8系列再次开售 全渠道销售额破亿
  8. 50 岁老码农:Python Bug 太多,我选 Rust 和 Go!
  9. mounted钩子函数_怎样实现Vue中mounted钩子函数获取节点高度
  10. ---调试-用try-catch语句检查错误
  11. 一周学会php 视频,一周学会PHP视频 普通下载
  12. 家用nas的过去现在和未来--2008n年
  13. 随机函数_巧用随机函数,生成各种姓名组合。
  14. R 语言的安装(详细教程)
  15. GitHub的安装及使用
  16. 单独计算机械台班费套什么定额,机械台班费用定额
  17. off-by-one(大小差一)错误介绍
  18. 解决latex伪代码标题序号问题
  19. 透彻理解高斯过程Gaussian Process (GP)
  20. 【美团 技术篇】美团推荐算法实践

热门文章

  1. CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
  2. 并发异步处理队列 .NET 4.5+
  3. 如何设置VSS源代码管理工具使用KDiff3
  4. 我的服务器有硬件防火墙,而且只开了80端口,是不会有网络安全问题的
  5. 玩转GridView
  6. python设计模式(九):外观模式
  7. Python代码编写中的性能优化点
  8. Android -- 多线程下载
  9. git warning: LF will be replaced by CRLF in 解决办法
  10. Android多媒体分析-通过MediaStore获取Audio信息