前言
最近接手了一个项目,toB,那个团队业务逻辑已经自己摸清楚了。服务端已经开始设计、开发,缺前端,找到了我,当时的情况是:没有prd,没有原型,没有产品经理,没有前端能够使用的一切,时间节点已经定了,一共就7,8天,非常紧张,于是苦逼的日子开始了。
第一步: PRD
当我去问负责人(以下简称A)业务逻辑时,发生了以下对话:
我:我们的产品经理是哪位?
A:现在团队没有产品,不过人人都可以是产品经理,有什么不理解的地方你可以问他们(服务端同学)。
我:。。。
做过ToB产品的同学应该了解,ToB的业务是很复杂的,我算是中途加入,在这种时间节点下没办法及时消化庞杂的业务。prd闯关失败 。 我决定采取迂回战术,先确定原型,根据原型去熟悉对应模块的业务及交互。
第二步:原型设计
天真的我以为他们会提供给我原型,在我得知没有原型没有UI的时候,我感觉是这样的:

程序设计
设计程序的时候,在和团队前端沟通后,为保证后期集成时的兼容性以及UI,决定采用相同的框架开发(我开发的属于独立项目),此时的我开开心心(请记住我此处的心情)的认为框架都一样了,后期集成小事一桩。 根据原型设计好模块,定义好状态,和服务端梳理了接口,又找产品(人人皆产品)撸了一遍业务,万事俱备,开始开发。
程序开发(此时留给开发的时间还有三四天左右)
程序开发流一般程是先定义表现层和交互,预留接口请求。但是如果遇到表现层依赖接口输出的时候就需要接口参与了。我理想中的接口是
接口名:xxx,
入参: {
a: xxx,
b: xxx,
...
},
出参: {
code: xxx,
data: {
c: xxx,
d: xxx,
...
},
message: 'xxx'
}
现实中的接口:
接口名:xxx,
...
非常时期,我不要在mock上给我定义接口,起码上面的接口文档给我一份可行?
沟通得知和我对接的服务端小哥没有做过前后端项目,这个意外情况是我没有想到的,不得已,和服务端又确定接口形式,这在时间紧急的时候真是很要命。
另外,上面说过,当时我对业务还处于初步了解,终于在这个阶段开始还债,做页面交互的时候需要不断的了解交互逻辑,这里我麻烦的还是我们服务端的小哥(小哥人超 nice),不断问不断改,来来回回的摩擦,终于开发基本完成。下面就要进入自测阶段。
自测
测试的时间只有两天,可以说是短到不能再短了,因为我们的前端和后端都是边开发边确定和优化业务逻辑,所以,测试才是真正考验程序合格的阶段,太紧迫了。

写到这我就不想再写下去了,后面集成的时候也是问题重重,让人头大。我把这个项目写出来的目的是因为这个项目很特殊,但也不特殊,我相信很多前端都遇到过类似的项目,"边开发边讨论,不要在乎体验,我目前只想只想功能"等等话都应该听过。这种项目我们避不掉,遇上了,该怎么办,是个问题。我在开发这个项目的时候简直可以用手忙脚乱来形容,这也预见了我后面的失败。项目做失败,很可怕,咱得找原因啊,为什么会失败。
我发现我在项目参与过程中有很多问题需要改进:
1、位置
这个项目我在遇到时内心就是拒绝的,做的时候也是带有抵触情绪。我有抵触情绪的原因在于我本来是开发,现在需求不了解,原型未定,没有UI,那我还做什么?什么都没有你让我怎么做?

2、软件工程
大学时学这门课的时候睡着的时候比醒着时候多,工作之后才意识到它的作用,也仅仅是意识到,直到这次给了我当头一棒,我才明白,遵守软件开发流程有多重要。如果一开始我就清楚我的开发所处的只是【程序开发】阶段,前面还有程序设计、UI设计、原型设计、需要分析等,那我就不会浪费那么多的时间也没找到开发方向。
3、业务
我在抱怨的时候也有说,这么多业务逻辑怎么可能这么快就消化理解,即使有针对性了解也是事倍功半。以前我听别人说过,前端,不需要了解业务,那是服务端的事。我当时一直不敢苟同。同样是一个团队的,服务端就了解,前端就不需要?那介绍产品的时候前端怎么介绍?哪个页面是我做的,哪个效果是我实现的?这不是大家要听的结果,再说,作为最面向用户的技术岗位,不懂业务,怎么能做出用户满意的产品呢? A其实在一开始就说了,团队里人人都可以是产品经理,可怜的我没有把自己算进去。
4、底线
前端开发也要有底线的,交互、体验、请求规范这些都是我们必须要坚守的,在项目中一定要及时提出自己的诉求,不要一味妥协,妥协到最后,锅全是前端的。

5、心态
遇事莫慌,忙中出错。越是紧急时刻越要沉着冷静,别崩,千万别崩,我就是一个很好的例子。
我的leader和我说过一句话:成事不必在我,成事必须有我。送给深处水深火热、忙忙碌碌的同学们,找对自己的位置,找到最终的自己。