forked from stormzhang/9GAG
-
Notifications
You must be signed in to change notification settings - Fork 0
/
助手研效.drawio
261 lines (261 loc) · 28.6 KB
/
助手研效.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<mxfile host="app.diagrams.net" modified="2023-06-03T13:43:43.042Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36" etag="dgKCeJHJnr-0NBBiOL_8" version="21.2.1" type="github">
<diagram name="第 1 页" id="eiPTsz_sVFmBQd02ulrV">
<mxGraphModel dx="2069" dy="738" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="7GXHMdeB85PLB1f1P6ik-23" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;sketch=1;curveFitting=1;jiggle=2;" vertex="1" parent="1">
<mxGeometry y="160" width="1010" height="130" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-1" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="7GXHMdeB85PLB1f1P6ik-2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="40" y="210" as="sourcePoint" />
<mxPoint x="1000" y="210" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="7GXHMdeB85PLB1f1P6ik-2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="40" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-2" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="30" y="200" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-3" value="天刀助手" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="10" y="250" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-4" value="2015年" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#660000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="10" y="170" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="7GXHMdeB85PLB1f1P6ik-14">
<mxGeometry relative="1" as="geometry">
<mxPoint x="460" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-14" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="450" y="200" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-15" value="掌火、DNF、掌飞、其它各种长尾" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="410" y="245" width="130" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-16" value="2018年" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#660000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="430" y="170" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="7GXHMdeB85PLB1f1P6ik-20">
<mxGeometry relative="1" as="geometry">
<mxPoint x="925" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-20" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="915" y="200" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-21" value="方舟" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="860" y="245" width="130" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-22" value="2023" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#660000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="895" y="170" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-24" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;width=14;endSize=6.67;fillColor=#dae8fc;strokeColor=#6c8ebf;endWidth=14;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="459.5" y="110" as="sourcePoint" />
<mxPoint x="459.5" y="170" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-25" value="助手团队介入<font color="#cc0000">(用于说明助手业务的周期较长,到助手团队接手时已经几经转手,历史包袱重)</font>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="480" y="120" width="540" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-29" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=3;strokeColor=#333333;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="70" y="290" as="sourcePoint" />
<mxPoint x="70" y="410" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-30" value="P0" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=2;fontSize=21;" vertex="1" parent="1">
<mxGeometry x="70" y="340" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="7GXHMdeB85PLB1f1P6ik-32">
<mxGeometry relative="1" as="geometry">
<mxPoint x="290" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-32" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="280" y="200" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-33" value="王者助手" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="260" y="250" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-34" value="2017年" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#660000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="260" y="170" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-37" value="项目代码质量差,极易产生Bug" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;" vertex="1" parent="1">
<mxGeometry x="10" y="400" width="130" height="90" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-40" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="70" y="410" width="20" height="140" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-41" value="1. 助手代码历史悠久,早已失优雅,大家在一堆质量较差的代码上去迭代开发,很容易破罐子破摔, 导致缺少写好代码的激情" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="10" y="520" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-42" value="2.&nbsp; 助手项目经过多年后缺失完整的需求沉淀,很多代码已无法看懂要表达的逻辑,开发同学也不敢随意去动,担心引入bug,导致缺少写好代码的勇气" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="10" y="610" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-43" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=3;strokeColor=#333333;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="370" y="290" as="sourcePoint" />
<mxPoint x="370" y="510" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-44" value="P1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=2;fontSize=21;" vertex="1" parent="1">
<mxGeometry x="380" y="400" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-45" value="通用与割裂并存,幸福与痛苦交织" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;" vertex="1" parent="1">
<mxGeometry x="310" y="500" width="130" height="80" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-46" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="360" y="510" width="20" height="140" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-47" value="1. 助手的这边虽然有很多业务App,但除少数长尾业务,其它业务功能基本通用,这样可以让开发同学尽量用一套代码来产出多个业务App,在一定程度上提升效率,这是幸福所在" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="300" y="640" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-48" value="2.&nbsp; 通用的功能往往无法达到100%真通用,在一个通用功能中,可能又在不同的业务中存在着UI、交互、逻辑等等许多粒度大小不一的差异性,这给业务之间的沟通成本、开发同学在处理这些不一致的成本带来了极大的负担" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="300" y="770" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-50" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=3;strokeColor=#333333;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="650" y="290" as="sourcePoint" />
<mxPoint x="650" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-51" value="P2" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=2;fontSize=21;" vertex="1" parent="1">
<mxGeometry x="670" y="510" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-52" value="技术栈陈旧,但升级难,研发效率低" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;" vertex="1" parent="1">
<mxGeometry x="590" y="670" width="130" height="80" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-53" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="645" y="680" width="20" height="140" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-54" value="1.&nbsp; 助手业务的架构和技术栈还是从15年立项时确定的,这么多年,随着代码量越来越多,包袱越来越重,团队对于升级技术栈心有余而力不足" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="580" y="800" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-57" value="2.&nbsp; 和项目组的合作过程中,项目组一般偏强势,他们更强调稳定性,对于技术升级的接受度没有那么高,而且项目组对版本周期时间卡的比较严,也很少允许在需求增减上讨价还价,导致大家很难抽出时间去做技术优化" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="580" y="900" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-58" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=3;strokeColor=#333333;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="955" y="290" as="sourcePoint" />
<mxPoint x="950" y="850" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-59" value="P3" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=2;fontSize=21;" vertex="1" parent="1">
<mxGeometry x="970" y="680" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-60" value="每个业务的合作模式不一样,导致很难形成标准,各自为战" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;" vertex="1" parent="1">
<mxGeometry x="880" y="850" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-61" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="950" y="870" width="20" height="140" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-62" value="1. 在UI设计上,不同的项目组找不同的设计团队(有内包,有外包),从而导致没有一套统一的设计标准,开发同学需要花费很多精力处理不同业务之间的样式差异" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="885" y="990" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-63" value="2. 测试人力不足,测试同学对不同业务的熟悉度不一样,这导致他们经常会因为和开发理解不一致,测出较多无效bug,从而导致开发在分析bug,解决bug,做需求的死循环中疲于奔命" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="885" y="1100" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-64" value="CodeRivew执行机制、量化标准、复盘例会组合拳在短时间内迅速提升团队代码质量" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-10" y="880" width="170" height="80" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-66" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=3;strokeColor=#994C00;fontColor=#FF8000;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="70" y="690" as="sourcePoint" />
<mxPoint x="70" y="850" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-67" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="60" y="880" width="30" height="180" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-68" value="1. 责任制,团队内绝大部分同学的代码质量需要经过几个资深同学的把关,Leader需以身作则,花费大量精力去审查代码,同时也能倒逼大家对代码更严谨" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-20" y="1020" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-70" value="2. 开发一个代码质量量化系统,通过具象的客观数据而不是模糊的主观感受去考察团队内每一位同学的代码能力" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-20" y="1100" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-71" value="3. 定期复盘,总结最近一个周期内大家在写代码过程中遇到的共性问题,以及优化措施,让团队内每一位同学对好代码有一个具象认知,同时界定代码的下限,什么样的代码和设计在团队中是坚决不能出现的" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="-20" y="1200" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-74" value="优化方案" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=2;fontSize=21;fontColor=#994C00;" vertex="1" parent="1">
<mxGeometry y="760" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-75" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=3;strokeColor=#994C00;fontColor=#FF8000;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="369.5" y="860" as="sourcePoint" />
<mxPoint x="369.5" y="1020" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-76" value="优化方案" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=2;fontSize=21;fontColor=#994C00;" vertex="1" parent="1">
<mxGeometry x="300" y="920" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-77" value="从你进我退的拉扯到开发与产品各进一步,形成共赢" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="292.5" y="1030" width="155" height="40" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-80" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="355" y="1000" width="30" height="180" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-81" value="1. 对于通用功能中夹杂的针对不同业务粒度大小不一的差异性,开发侧通过模块抽象、接口抽象、静态配置、动态配置四套规范来解决不同场景下的不一致问题,同时通过上述的CodeReview尽量约束大家按照规范执行" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="277.5" y="1150" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-82" value="2. 和产品约定好,他们在规划通用需求时需要更加细致,将通用的功能细粒度化,逻辑通用、UI通用还是交互通用?让开发同学在需求开发过程中就能处理好差异点,避免后续的反复沟通和返工" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="280" y="1220" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-83" value="3. 开发同学拓展自己的技术栈,同时熟悉Andorid/iOS开发,这样可以从之前的按不同端不同人力来分配需求逐渐转变为同一个需求在不同端上都分配给同一个人力,提升各角色沟通和开发同学编码的效率,减小之前经常出现的多端因为对产品细节和技术方案理解的不同导致最终实现的不一致性" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="280" y="1330" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-84" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=3;strokeColor=#994C00;fontColor=#FF8000;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="645" y="1010" as="sourcePoint" />
<mxPoint x="645" y="1170" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-85" value="优化方案" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=2;fontSize=21;fontColor=#994C00;" vertex="1" parent="1">
<mxGeometry x="580" y="1075" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-86" value="&nbsp;从不可能到逐步改善" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="580" y="1180" width="135" height="40" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-87" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="632.5" y="1145" width="30" height="180" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-88" value="1. 经过分析,助手中产品规划的70%的需求都集中在资讯和动态两个模块,那我们将对助手全量代码进行技术栈升级的思路转变为只对这两个大模块的代码进行技术栈升级能达到最高的ROI" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="552.5" y="1295" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-89" value="2.&nbsp; 为了将技术栈升级的过程中对产品稳定性的影响降到最低,我们采取将大模块再拆分成小模块,逐步重构,逐步替换,同时开发了按照业务、模块、页面、功能等多维度开关来控制重构后的模块在线上的灰度策略,一旦出现严重问题可实时回滚到重构前的模块" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="552.5" y="1410" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-92" value="3.&nbsp; 为了获得项目组对于技术栈升级的认可,以及能让开发同学在紧张的产品需求之余能挤出一些buffer进行技术工作,我们一方面积极梳理技术栈升级能为我们带来研效提升的相关材料,给到产品侧去项目组游说,另一方面不断优化研发流程,能尽量挤出各种buffer去提升技术栈升级的速度" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="552.5" y="1500" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-94" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=3;strokeColor=#994C00;fontColor=#FF8000;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="969" y="1200" as="sourcePoint" />
<mxPoint x="969" y="1360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-95" value="优化方案" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeWidth=2;fontSize=21;fontColor=#994C00;" vertex="1" parent="1">
<mxGeometry x="900" y="1260" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-96" value="从差异中寻找共性,并积极推动改善" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="905" y="1370" width="135" height="40" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-97" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="957.5" y="1335" width="30" height="180" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-98" value="1. 不同项目组UI设计的千差万别给开发同学在处理这些碎片化的样式差异上带来了很多的工作量,由于新的方舟团队已经由我们自己的设计团队接手,那么可以借助方舟项目,通过我们的设计先制定出一套统一的标准,然后由他们和其它业务团队的外包设计对接,推动他们在后续的设计严格按照我们的标准执行,逐步收敛差异" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="880" y="1480" width="215" height="65" as="geometry" />
</mxCell>
<mxCell id="7GXHMdeB85PLB1f1P6ik-99" value="2. 项目接入的越来越多,功能也越来越多给测试同学在每次的回归测试工作带来越来越重的负担,也逐渐给产品功能的稳定性带来了诸多挑战。因此,开发同学在自研一套基于录制回放的自动化测试方案,尽量将之前大部分人力的重复工作转变为自动化机器执行,让人力去投入到更有价值的工作中" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="880" y="1620" width="215" height="65" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>