iThink icon indicating copy to clipboard operation
iThink copied to clipboard

来订货小结

Open hufeng opened this issue 9 years ago • 8 comments

“让订货更简单” —来订货使命 http://d2papp.api.qianmi.com/ 欢迎下载体验,反馈。

现状

经过小伙伴们通力协作,来订货已经全面支持iOS和Android双平台,目前已经发布2.0版。 天天买定制版,以及新的UI和订单流程的改进都在紧锣密鼓的进行中,很快继续双发。 我们实现了Web的迭代速度,Native App的体验。

回首整个开发过程,感谢我们这样一群很傻很天真的小伙伴,感谢我们无论是对产品体验还是技术都死磕到底的态度。

因为傻,所以我们耐磨。

立项

在D2P领域,我们主要的几个竞争对手,都有不错的移动端。且用户的活跃度还不错,xxx还是很贵的收费版。我们的用户也在一直询问观望我们什么时候推出移动端。 基于这样的背景,项目从八月开始立项,调研需求,技术上做好准备。

D2P之前没有任何移动端的开发经验,这对我们来说,任何技术方案都会碰到很多的压力。 此前,我们在React上面有一定的积累,加之今年的3月份,第一届ReactConf的大会在Facebook总部顺利召开,除了放出GrahQL和Relay等多个重量级的技术之外,最令人关注的肯定是React-Native,从此Facebook正式将React的这种创新燃烧到移动端。另外,外界可能觉得React-Native还是一个新的项目,这说明对Facebook的技术风格不是很了解。 Facebook每个开源的项目都是一定在自己的生产环境得到验证才放出来的,这是非常关键的一点,不然这里面的坑。。。React就用于Facebook.com,质量可以得到很好地保证。 另外,React-Native发布时天猫就在跟进,从放出来的零星资料来看,还是满足预期。 于是,我们就做出这个大胆的决定,使用React-Native来实现我们的app。现在,我们终于跨过前端,进入通用架构。

在正式项目开始之前,不断地写demo,测试api,实验一个个功能。另外学习最好的学习方式就是看高手怎么去使用,不断地follow React-Native的核心开发者,看他们的blog,写的项目,积累第一手经验。不断写demo交流的过程中,不断加深认识,小伙伴们都觉得开发体验真是爽直,心气都很高,连毛总都答应亲自搞定一个模块,还真的搞定了。赞!!

敬爱的万老师,就开始兢兢业业在双平台研究订货的业务流程和用户体验。

8月份-闭关修炼

在不确定的环境下,我们采取小规模快速试错,一旦探到底,快速推出来。于是,张峰,玉粉,万老师,我,我们mini团队成立。 感谢小伙伴的给力, 张峰同学快速地hold住react-native和业务,推进业务快速前进 玉粉很快的上手React-Native的flex box布局,一直到现在粉粉依然是我们最信任的FE,是FE,不是UE。 万老师,快速解决app交互设计,沟通业务流程 因为小伙伴的努力,让我有更多的时间去写公共组件,业务组件,解决架构上的难题,以及React-Native本身一些bug,为我们的业务快速推进护航。 期间,我和张峰还抽时间看完Objective c。

小团队快速前进,快速沟通,快速协调,我们喜欢这种燃的感觉。

8月底-冻结特性

我们iOS的UI基本成型,一边写,一遍不断地重构代码,后端的接口由于新人的经验不足,出了不少的问题,陪着后端调接口,花费了两周左右。 另外,移动端会让接口比以往要有压力,怎么设计一个好用的Restful Api真的很考验团队了。

9月-新生

在解决了几个非常棘手的bug和架构问题之后(PS,真的很棘手,夜不能寐,常常半夜起来看React-Native的源码,第二天不断地尝试各种解决办法),提交测试,修改完bug, 按计划顺利提交AppStore审核,因为我们too young,被AppStore打回2次。 (1) splash启动页的截图有问题,没有App的截图 (2) 我们升级接口,弹出一个提示让用户更新(应用内升级) (3) 最近,我们二期打回一次,是因为我们截图的商品列表中,出现了Android和三星的字样,Apple 你妹。。。。

天天刷新,天天等待的过程是煎熬的,我们期许明天,但不知道明天会怎样。 终于,希望照进现实,我们顺利通过AppStore正式上架,小伙伴都有种莫名幸福感。

10月-继续战斗,Android我们来了

按照社区计划,预计在10月份才会放出的React-Native Android版本。 但是,很多人也在一些不存在的网站比如twitter和facebook上面去问vjuex(React,React-native绝对灵魂人物)什么时候Android发布,我也掺合了下,甚至还有同学做出一个倒计时的网站给Vjuex压力。:)

一万个没有想到的是,居然在9月快底的时候,提前放出来了,矮油,我的小心脏。

本来打算把二期的需求快速地完成,到时候实现Android版本,但是现在的计划就要被提前了。 React-Native Android版本的开发,要比iOS门槛难一些,因为暴露出来的组件比较少,很多关键组件没有释放出来。Facebook目前放出来的都是自己项目用到的。 但是却提供了很好地扩展自定义模块和组件的方式,毕竟是Java比看OC还是舒服很多。前景诱惑,目前困难存在就是这样的感觉。 这是一道坎,咬牙也要跨过去。就像,吹出去的牛,含泪也要实现。一样的做法,小团队快速试错,快速前进。

于是,小伙伴们继续2期需求,我去承担Android的版本开发。给了自己一个星期的时间,快速地补上Android开发基础,熟悉Android的开发,以及常用的组件,View的生命周期等基础。 一遍遍看ReactAndroid的源码,并不强求每行看懂,而是快速地得出对于我们开发有帮助的结论。

另外,我最关心的部分是React-Native和Android原生自定义组件的打通,经过不断的努力, 不知道熬了多少晚上,看了多少代码,报了多少错,恨不得抓破头,终于明白了很多的东西,很多风景在我面前开始慢慢展开,原来是那么美。

我们从来不排斥原生,我们喜欢原生,更喜欢用一种更爽的方式来开发原生的app。 我们排斥造轮子,但不代表我们没有能力去造轮子。

就这这样,花费了一个星期补齐Android缺乏的原生组件,SwipeRefreshLayout, WebView, AlertDialog, DatePickerDialog等。都找到了很好地方式去融入React-native.

剩下的事情就变得简单,花费1.5周做完iOS向Android版本的移植,因为期间去上海参加QCon耽误了两天,1.5周测试+修改bug。

上线前,祖鹏和我一起测试,一直不满意Android版本的性能,让我压力非常的大,当时的状态和Hybird没有什么区别,不是特别的流畅。 很多时候就是这样,山穷水尽疑无路,柳暗花明又一村。祖鹏和我,尝试做release预发布的时候,去掉js的log,压缩js,干掉react-native的debug状态,瞬间惊诧到像换了一个手机, 非常的流畅,最后心中的一个大石头落地了,除了兴奋,我感觉从未有的累。

从此,我们站在一个新的起点。

感悟:

  1. 团队对了,一切都简单了
  2. 小团队快速试错,快速响应,ok,大部队快速推进
  3. 技术可以自我驱动,主动的去解决问题
  4. 不管用什么技术,我们要坚持产品体验不打折
  5. 码农要耐磨,不要碰到一点困难,就给产品反馈搞不定
  6. 产品给技术空间(收敛,欲望是一种小恶魔),技术也同样给产品空间(不仅仅是砍需求,或者砍需求方)

hufeng avatar Nov 16 '15 16:11 hufeng

没有找到赞按钮,手动写个 赞!

wadekun avatar Nov 17 '15 03:11 wadekun

@wadekun 受宠若惊啊 :+1:

hufeng avatar Nov 17 '15 05:11 hufeng

手动写赞👍

maoyongming avatar Nov 17 '15 10:11 maoyongming

:+1: 标题得加个 react native

luqin avatar Nov 26 '15 05:11 luqin

怎么注册帐号啊,进去就让登录..怎么体验

matt0614 avatar Jan 08 '16 03:01 matt0614

@matt0614 这个不是2C的产品,是我们2B的产品,明天我找下测试账号,给您体验下。

hufeng avatar Jan 14 '16 15:01 hufeng

哦哦 好的,谢谢~

matt0614 avatar Jan 16 '16 13:01 matt0614

@hufeng 哦哦 好的,谢谢~

matt0614 avatar Jan 16 '16 13:01 matt0614