当初坐在会议室里,对方轻描淡写问开发一个app需要多久,我随口报了两个月,现在回想起来,那个数字就是所有麻烦的起点。当时脑子里只想着基础功能,登录、内容展示、简单的提交表单,以为工作量可控,没料到后面一堆细碎的改动会把时间一点点啃干净。仅代表我个人情况,不同场景、不同人的体验会存在差异。
第一月还算平稳,原型图反复调整了两三轮,大部分时间耗在页面跳转逻辑上。产品那边今天想加个筛选选项,隔天又觉得按钮摆放不好看,每次改动都要同步给到技术,没人提前说清楚哪些功能是必须保留,哪些只是临时想法。开发的人嘴上应着,后台代码改来改去,进度条看着往前走,其实很多地方只是临时凑出来的,根本没有做扎实。
卡壳在接口对接。
原本约定好第三方数据接口在三周内准备完毕,结果对方那边项目延期,迟迟拿不到可用的联调文档。没法拿到真实数据,前端页面只能写静态的模拟内容,看着界面完整,点进去全是空的。那段时间每天都在等消息,白天刷聊天框,晚上坐在电脑前面干等着,想继续往下做也无从下手,原定的交付节点就这么直接往后推。我还抱着侥幸,觉得接口一到位,剩下的部分很快就能赶完,完全低估了联调阶段会冒出的各类报错。
接口终于交付的那一周,问题扎堆冒出来。字段名称对不上,部分接口返回的数据格式不稳定,偶尔成功偶尔直接报错闪退。排查问题的时候,一会是前端传参写错,一会是对方后端调整了规则又没有同步通知,两边来回核对,经常一个小bug就要耗掉大半天。测试的时候发现,安卓和苹果两个端的表现不一样,同一个操作,在安卓手机上正常运行,换到苹果设备就直接卡住,又要单独花时间去适配机型。
测试阶段的需求变更,才是最磨人的。已经进入收尾,本来计划一周内完成所有bug修复,准备打包上线。产品这边又提出来,要新增消息推送的分类,还要加上用户收藏和浏览记录模块。最开始我直接拒绝,说时间不够,对方反复沟通,说这个功能上线之后必须要有,不然产品没有办法对外使用。商量之后只能同意新增,开发要重新写逻辑,还要补对应的测试用例,整个周期又被拉长。
到第四个月末尾,基础功能全部跑通,但稳定性很差。连续压测的时候,用户并发量稍微上来一点,页面加载速度就明显变慢,偶尔会出现提交数据丢失的情况。优化性能不是简单改几行代码就能搞定,需要梳理整个请求链路,清理冗余的请求,调整缓存策略。那段时间几乎天天加班,反复上线测试包给内部人员试用,收集反馈再回头修改,很多问题藏得很深,不是跑一两次就能发现。
第五个月中旬,打包出正式版本。上线前最后一轮测试,依旧揪出来不少细小的问题,字体适配、弹窗位置、弱网环境下的提示文案,零零碎碎改了好几天。等所有流程走完,回头看最初定下两个月的预估,才明白当初的预估只是理想状态,一旦牵扯多方对接、需求变动、多端适配,时间完全不受控制。
项目交付那天,关掉电脑,没有想象里的松快。最后悔最开始没有把需求锁定在白纸黑字上,所有额外新增的内容,都没有重新评估周期。