来谈谈最近上线的项目「百度师傅」
昨天是8月8号,百度的周年庆典summer party,而在同一天「百度师傅」一期项目终于也推出去跟小伙伴们见面,这两天的订单量也破了新高,收到一条条用户下订单的短信,作为研发同学的我也表示非常的开心和激动,这两个月没白忙有木有!
「百度师傅」是从百度知道衍生出来的新方向,一个从0到1的项目,目标是连接人与服务,哈哈,提供最优质专业的维修服务。 (目前仅限北京地区,有三个服务:电脑清灰、重装系统、碎屏修理)
不再打广告了,有需要的小伙伴点上面的链接下单吧 :)
这是一个让我百感交集的项目,有这么几个时刻,我想记录一下:
一、项目未启动前,对未知的彷徨和些许恐惧
- 这是一次对O2O的探索,需要保密,做维修方向,详情不明;
- 我被选中了,作为项目组唯一一个FE(前端开发),做pc、wap页面,可能还需要支持APP里的webview
- 排期很紧,上线时间在一个月后(当时MRD还没确定)
- 几乎每次跟老大聊这个项目,他都跟我说要做好加班的心理准备(貌似全世界都知道我没有加班的习惯,我后续再讨论下加班的问题)
除了上面那些,我什么都不知道,前奏铺垫得太恐怖,不知道未来是什么在等我,有点不安和抗拒。以前都有导师或者FE同伴一起做项目,这次感觉好孤单责任好重,而且排期紧会对技术/业务能力有较高的要求,快速开发和迭代,我没有足够自信能hold住,但没有办法,只能深呼吸,催眠自己,打算尽自己最大能力硬扛过去。
二、项目进行时,自由飞翔,打了鸡血一样
项目终于启动了,经过MRD评审和拿到UE图,松了一口气,页面的布局和功能也就那样,跟日常项目类似吧,而这个项目对我的挑战,我认为更多的是来自对整体架构/模块的设计(怎么针对一个全新的产品线去设计和搭建前端框架),以及排期真的很紧,要跟时间赛跑,项目从6月1号启动,预期上线点是7月6号,也就是一个月的时间,但是研发介入开发/联调时间只有2周,基础框架/公用组件的搭建 + PC的5个业务页面 + WAP的6个业务页面,我知道不眠不休身体和脑子肯定扛不住,哪怕每天愿意干12个小时也搞不掂,必须特别注意时间管理和风险管理,严格控制好排期,有风险立马提出来。
尽管条件比较恶劣哈,不过在调研、设计、开发这段时间,我还是非常享受的,因为终于可以把心静下来,好好想想、划划、敲敲。调研/设计阶段,去看文档看代码,把自以为最优的设计方案拿出来(有时不止一个)去找大神 @guizi @yuting 商量,他们总能给出更好更优雅的方案,甚至针对整个框架的设计给出很赞的意见,非常感谢;开发阶段,自己跑去楼下coffee shop,听着音乐,静静的敲代码,看着自己的设计慢慢变成真实的页面,也是一种很棒的享受。更棒的是,所有代码都是我写的,没有历史包袱,不用维护老得掉渣的代码,想怎么写怎么写,爽到没朋友,根本停不下来!(有时候我很庆幸,我是很喜欢自己的工作以及可以从中获取成就感的那一撮人之一)
三、机器人也会麻木,脑子累得差点转不动
但时间确实紧,为了平衡好关键的milestone,那段时间我们都是白天做开发,晚上约 @maxiao 联调,说好的决战到天亮。 (笑,其实没到天亮,一般到晚上10、11点,直接洗洗睡,接着第二天继续打鸡血)
- 白天开发晚上联调,就这样先经历了第一周的前5天,感觉还可以,写得很嗨嘛。
- 为了赶进度,PC关键功能进入提测阶段,我申请了周六的加班,修复QA报过来的bugs。
- 考虑到wap的排期本来就有点紧,PC的进度延了一点,周日也去了公司提前启动的wap的开发,很鸡血的像机器人一样度过了非常充实的7天。
- 到了第二周的周一,觉得有点累了,但是生活还是要继续~
- 接下来的周二周三周四,简直像行尸走肉一样,感觉脑子有点转不过来了,还在坚持着,终于在周四把所有事情都搞完!
- 周五就和 @沙滩小分队 去了@青岛,度过了一个轻松愉快的周末,满血复原回来。
另外,特别需要感谢一个人,很傻很天真的实习小伙伴 @文琳 ,她陪我一起度过了项目收尾的阶段,那段时间我还在天天跟新需求搏斗,她帮我修各种小bug,很耐心的天天陪着UI一个像素一个像素的抠,也是崩溃得不行,哈哈,如果不是她的友情协助,估计我会直接暴走,真的非常感谢。
当然还有在我背后默默支持我的那些女人和男人,精神上和物质上的鼓励也非常给力,支撑着我努力的完成,不一一点名不用生气哟,谢谢你们~
我去,本来的项目总结更偏技术,结果在blog这边一写竟变成回忆录也是醉了。
四、项目后的一些反省
在evernote写的那版,详解了我在项目中遇到的技术问题,可以简单拿出来列出来:
- wap开发,响应式布局,全局用的像素单位em,没考虑图片合并问题,导致最后重新改写图片的引用。
当时有疑惑过FIS能不能支持相对单位图片的合并,但抱着“到时再看”的想法,直接拖到wap快提测,最后才去问的FIS的同学,不支持 T_T 只能重改,所幸引用图片不多,花了小半天修改。但这个问题告诉我,以后做技术选型,必须先考虑所有可能遇上的问题,可以接受再采用,不然做完了才来想,这次修改成本不高,万一需要全部重写呢?代价太大。 - 设计规范,启动开发时,没问UI要设计规范,导致目前css代码中有部分冗余、重复的代码。
由于排期关系,UI没有一次性给完所有页面的图,都是按照出一个图开发一个页面的模式,最后才知道有“设计规范”这一说。其实在开发中,也发现有一些UI组件或者样式是可以复用,属于base类的样式,原本应该在项目启动开发时,先把base.css搭建起来,可惜最后才拿到,导致目前css代码中有部分冗余、重复的代码。 - 关于功能组件化(解耦)
大部分情况下,我都会按照规范,把每个独立功能的相关逻辑写成widget,但是也有由于时间紧,写出来的一坨长文件,写完了测完了上线,现在回头再看,想解耦,天哪,都是些什么鬼!虽然都是自己写的,但是改了会担心影响到线上功能,真是一步错步步错,磨刀不误砍柴工,必须花时间做好设计才能下手敲,不然剁手! - 打包/部署流程 这个topic不打算展开,主要是之前虽然用了FIS很久,但对它的打包或者上线,线上的文件引用原理没有很了解,上线后才踩的很多自己埋的坑。另外,上线前没有跟RD沟通打包的tar包有没有特殊要求,有次排查半天发现是tar包名字不对,妈蛋,坑死自己了!
除了反省,其实自己做得不错的还是有那么一点,就是同步写PC和WAP页面时,因为交互不大一样有时候会很凌乱,但数据逻辑是类似的,有时候先写PC,后来写WAP时发现,哎哟,还有更好的实现方案,为了实现思路的统一,于是花时间重写PC的逻辑。应该算是一种自我要求吧,在二次思考时,没有直接copy上一次的思路,而是用一个新的角度去思考,说不定真有新发现,在时间那么紧迫的情况下,自己还愿意花时间去重写那些不够好但能run的逻辑,强迫症不够严重是做不到的,哈哈,看来药不能停 :)
事实证明,师傅项目算是一次中期考验,而我从iknow和exp学到的东西,总算没白学,把能拿出来的货一次全拿出来,勉强hold住了,更多真的没有了,哈哈,真是论FE的自我修养呀,必须给自己点个赞!
非常感谢这个项目,经历了这么一段时间,我得到了一定的技术/业务能力的成长,也给自己科普了很多以前并不care或者不理解的东西,更多的还有自信和成就感。也许在程序猿的成长的路上,需要经历这么一个“从无到有”的项目,才能加深对架构/模块设计/资源打包/代码部署这一系列动作的理解。
继续加油吧,骚年!!!