|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
为什么要提高研发效能,因为技术本身是为业务服务的,产品的价值体现在业务上,技术的所有价值最终都要通过业务结果来呈现,我们的根本目的是帮助业务成功,促进业务腾飞。# w$ p0 {- g8 ]/ g7 e! H. X3 ~
) j8 ~5 ~' `4 ~$ k' N, x6 a
那技术就不重要了吗!重要,因为所有的业务价值最终都要通过软件服务来变现,两者相辅相成,互相促进。7 | O9 X5 n* N G& b* e$ R) ^1 b
& O* v4 G" x1 P9 U/ k 那如何提高研发效能?# d% Y! e, I5 }+ s x1 r" o
: O' ?$ C) U$ P+ x% ]# W# H# o 一个项目从立项到上线涉及到角色包含客户、运营、客服、产品、技术、测试。; _! F" a& C7 s* W A
3 c% S1 d9 [% G* r6 s0 i1 Q0 K8 f
涉及到关键流程如下。
6 h1 o" l5 b/ _; ?- F1 ]
( j3 E8 O3 k6 x1 ~8 _- R: H/ h需求收集,运营/老板 -> 产品,关键产出:想法/idea/业务需求文档
7 ]3 j, n" V x0 l) p/ X5 `/ [" N& M) {) v* Y) Y/ r# q
需求评审,产品 -> 运营/老板/技术,关键产出:产品需求文档. n" s/ Y% R+ M/ l6 g/ D
( O; K/ R7 v+ X) a) e需求内部评审,产品 -> 运营/老板/技术/若干项目负责人,关键产出:产品需求文档+ v9 F+ D" t& K! o- b- w+ b# ?/ r
% I0 b% ~: F+ n" |! |
需求宣讲,产品 -> 研发/测试,关键产出:大家对于问题,目标,需求的理解达成一致
" h" G0 F' Q$ W8 k% u' `+ v+ a! p6 p3 D% v ?- y+ h: S3 G8 n! K
技术方案评审,研发 -> 产品/测试,关键产出:技术架构/代码* s/ ^( ]( S( P7 \- {
& ~ M {- L7 ^+ h! f; e
测试用例评审,测试 -> 研发/产品,关键产出:测试用例/需求逻辑测试case全覆盖0 ?6 b1 @" j m+ i0 A
$ T p) }/ f- a$ ?8 i2 U系统上线,产品/研发/测试 -> 客户, o# L0 j6 J$ Y# P& O! A
3 D" {7 }. I$ a5 t需求复盘,客户->运营/老板/产品/技术,关键产出:需求客户满意度
( g' A/ l2 x! x* c- ?* b0 F
. j$ d X# C* @! o1 a: W( w- l3 I: W
Do things right还是Do right things?
$ Y' p+ W6 {$ @! e
7 l) J7 F/ e+ F* s9 Q 5 W2 v( I. v0 E% ~ [: {; ?
接下来主要从需求管理,研发,测试三个维度描述,如何Do right things。
6 j9 w2 `- I6 q: u2 U- ?' x: J4 ~5 \( G: e4 m2 i
$ Q( y: ]" W" _7 s* E l; c1.需求管理
, q0 ? m1 p& |4 f+ @
0 H# I2 y' u- Q O+ f: G( [0 q$ O团队什么时候对需求的理解最充分、最多?项目结束的时候!但项目中的绝大部分决策是什么时间做出的呢?项目开始的时候,这就导致了一个悖论,我们在最无知的时刻,做出了最重要而且是绝大部分决策,并把它作为随后执行的依据。$ n0 _! l' ]( a3 I$ }
3 I1 _$ T! h2 N0 ]( Y! s7 D0 R( b! N
这个需求是运营提的,做!这个需求是老板提的,做!
$ V: U" X6 O+ w, b1 J3 o( S# Y( l+ w2 b( t+ v/ W* Q
为什么要提这个需求,这个需求的目的是什么,有什么价值,凭什么这样做可以达到目标,哪些数据可以证明,上线后如何衡量此需求真实效果。
! G- {1 X! c5 W! E7 `/ {
2 Q) y6 D. U( W1 i7 T9 R5 u我们不是乙方外包公司,是和老板站在一条船上的人,有理由有义务搞清楚老板为什么要提这个需求,需求背景是什么,为了解决什么问题,达到什么既定目标,目标结果如何衡量,尝试下”5问法“。: L" `, k; Q# \7 o7 u
* o3 F1 F1 v4 B3 v0 |& J) p5 f9 N% j$ @" a& |! k
需求是泥沙俱下,如果不能正确的分析需求,把握需求的本质,就会沉浸在永无止境的接收需求状态,机械的干活却没有结果。5 M) O" l4 X# I3 `1 m8 ~( t l' u% u
7 } J2 Z9 `: S6 J* _2 M. r! q我们是有思想的手艺人,不是等待老板投食的宠物。* K) a7 _7 h% \# A4 Q8 I' W
6 K1 ]' G1 q! {# g
7 {* w! j7 E$ c1 \2 A3 V1 v0 t运营/老板讲解需求的时候,主要是和产品对接,研发、测试不知情不了解。这就会导致一定的信息误差,最后评审需求的时候,研发、测试是站在产品需求文档的角度考虑问题。如果这个文档自身就和业务的期望有差别呢?
# `" w; ^( Z* ]! F% ?) `8 Y# z% U3 t: E
我们应该以终为始,聚焦目标,需求前置。在和运营/老板最终需求方案终版的过程中,就应该拉着技术进来,提前介入,预见未来。
, V; ^0 d2 L0 R
{% Y' J! f7 R 在很多人的思维里,认为需求评审就是把需求跟开发详细过一遍,就进入开发阶段。
, `6 J( C/ G3 `$ g
+ y% [, l# N/ \- Q& U严格来讲,这会导致挺多问题,需求逻辑有缺陷,打回重做,浪费大家时间,经常如此造成大家对你个人能力的质疑。
7 ~# h$ U: `1 R- n4 q, V9 e# Y5 b! l, }% `% E
所以内部评审是有必要也非常重要的一个环节,但是很多产品不重视这个环节,甚至还有很多产品经理并不知道有内部评审这个环节的存在。
, b) g& [8 N/ c4 a, ?3 q. \+ @, c0 c% a: i p/ e2 D& y7 d6 D
产品不需要为单次故障负责,但全年故障数量纳入kpi考核之中,只有屁股在一起,大家才能在一个战壕里更好的思考问题。
; U1 m. g( N0 b' X0 t" [# Y+ ^6 [2 z/ b6 m7 R# `
2.研发环节) |: D& y. v# X' ~6 O
+ L, }. u$ ^0 |$ x# l7 w5 u' x
根据二八定律,20%的需求决定了我们80%的业务价值,它决定了我们的成就,客户的直接反馈,市场竞争力。; l! Y/ [0 |( p. F: ~
2 |* Y8 O. B' k; Z2 w, R“持续快速交付价值的能力“,这个价值指的是需求的多寡吗?
+ L/ X3 \# T% E- v% L+ O- T* O! S- x( ?8 N( w: `+ r# t
我们应该聚焦于单位时间内创造价值的效率,这个价值指的是需求上线后对于用户的实际价值。用户价值的流动串起整个系统,促进整体优化的不二选择。为了提高价值的流动效率,组织就必须关注用户价值在系统中端到端的流动过程,改进整个系统,而不仅仅是局部环节。
+ r: a I& v" F& `- `; v' @, C% j1 d9 }
所以对于大需求,批量性的需求,最好打散拆开,以2-4周作为研发周期,快速迭代,不断打磨优化上线,给予业务以反馈。
8 u0 h: v, y2 y% B H& \+ d ^) u4 Z- X8 o( b e
不要给业务surprise,要让业务感知到价值在流动,需求在流动,就像巴普洛夫的狗一样,这群人靠谱,值得信任。" Z5 R% D- X: x3 N6 K
3 G8 ^5 L6 N( _" m. b) Q
, n: l- s i7 I. w" z* t
如何保障价值流动的过程质量呢,把交付质量内内建到开发过程中,而不是依赖最后环节的测试。
' u( f0 v& n' c' J* V Y3 J
1 A& R8 {, m6 v首先要保证基本的单元测试,其覆盖率至少到50%,覆盖主流程,保证冒烟case是ok的。
5 b. L" b4 o+ _* X2 N3 [ R, X7 |; v0 P* M7 Y, O, V5 c
代码改动提交触发集成测试,编译是否出错,代码静态分析,单元测试覆盖率报告。; n$ [9 [9 n/ Q) ?' C$ ~
! ?' F% k6 ]1 H1 a2 i' D/ f( ^
0 {5 k3 s) g8 T
每月度工程质量梳理,代码缺陷,产品逻辑缺陷梳理,要让光照亮了问题所在,把问题暴露出来,暴露出来的问题,惦记在心里的问题,就不能在叫问题了,叫待优化需求。
9 a, O1 l7 ]- Y4 ~0 q- O/ e
. @* `- b& ]# M4 D8 Y( [ 研发对于需求要有一定的预见能力,做好适当的扩展。每半年各系统负责人串讲自己所负责系统设计架构,并提出系统最丑陋的三个地方,开发的时间久了,必然会有灰尘和垃圾,如果一个劲儿堆积需求,垃圾越级越厚,就会积重难返。打扫干净好接客。0 J! S: p- r& ~6 X, _1 o
& t* r6 n6 h& x
3 c& V% s) f. h; K# Q' i
3.测试环节1 U/ x; b8 l$ Z8 f8 {8 G/ s
3 b3 M4 C& \* b8 k- w1 }% S测试用例评审前置,研发、产品一起参与,把所有的case全部覆盖一遍,对于流程逻辑,直接现场解决,开发在过case的时候,也会不断考虑如何编写更健壮的代码,毕竟我们的目标是提高服务质量,全年无故障,而不是为了给测试冲业绩,比拼bug数量多少。# c2 J0 x) w6 P% I8 \& J3 i) u
2 [+ V$ d. a, n- n5 _2 s1 k
单元测试,集成测试,接口测试,开发环境,测试环境的搭建,上线前checklist检查点。3 b8 h7 u4 f3 ?) K$ P
3 k0 z& I6 w( ^
测试用例的评审,沉淀,积累,不同测试等级下需覆盖功能范围和测试用例。1 v/ Q* F. v0 A2 b
7 c1 N, |6 C4 p: p
2 O: N4 r- Q; z- r1 j综上
1 u2 [# K/ E: x- k1 E1 h; Y' `" ^* h
( [ n( W: c% \' Y+ T* [横截面主要主要聚焦于角色内,产品:搞清楚问题所在,明确的,清晰的,无歧义的,达成一致的需求;研发:代码的健壮性、可维护性、可扩展性;
& Q7 T l! N- n& a8 J; U6 f
) ?. p4 ~& ~7 m; K6 o测试:多维度的测试用例,测试系统的方方面面。
0 f( X- f- ^/ t8 k h$ B
0 N* B# g4 L) ~. t; K+ u% Z纵截面,共性就是组织与制度问题、能力问题、沟通问题、选用育留问题。0 U/ k( q$ a: }& n6 S
+ H8 H3 R5 y7 g j4 f* b
专业培训不足是导致研发效率未达预期的远因之一,既然如此,我们就要在平时加强员工各方面的培训。
6 j" _5 K5 O: ?: K( s2 u; k$ {! t, A
提升人员能力也是提升员工效率的一种方法,能够有效改善部门之间的沟通问题,减少矛盾。
+ A) u6 E7 ~* Y/ N) o. k8 u) [' @* D& r" ^( r" W
1 @- Y3 e( u6 H' V; C# }* P |
|