iOS界面开发
余果 iOS过去一个月我都在推进团队项目流程上的改变:把APP界面和逻辑分开开发,让两个团队去做自己擅长的事。
为什么要分离界面和逻辑?传统的iOS开发流程是这样的:
- 设计师设计完PSD稿之后,做好标注,切出各种状态的图片,给到开发。
- 开发拿到切片,根据标注设计稿和切片,同时实现实现界面和逻辑。
从工程质量和进度上讲,有这样几个问题:
- 开发周期长。因为一个开发要同时完成界面和逻辑的部分,所以二者只能串行进行,需要较长的开发期。如果发生了设计或者逻辑的变更,他会需要更多的时间去修改。
- 代码耦合强。一个人去实现一个模块的时候,代码中难免出现耦合比较强的情况,没有很好地MVC分离。这为后期的修改带来了隐患。
- 沟通成本高。因为设计师跟开发人员之间是通过标注和切片来沟通,但是标注首先就是很不可靠的,一个标注了所有间距的设计稿往往并不是我们需要的,我们需要的是一些常量,以及当界面发生变化时的“规律”。再比如标注了按钮与按钮之间的距离是20px并无意义,因为按钮周围可能会有空白区域。如果开发人员迷信标注上的数字,在代码中直接写标注的数字,就会和设计稿效果出现很大的偏差。
- 设计还原质量低。因为开发在逻辑、健壮和成本上有非常敏锐的把控能力,但是再设计还原和用户体验方面的经验就略差一些。而且由于设计师和开发沟通之间的问题,还有开发时间紧急的问题,代码耦合的问题,综合导致设计还原的质量低。
所以我希望推进的流程是从web开发中借鉴经验,让我们原本擅长用户体验的前端同学来进行APP界面开发,整个流程大概是这样:
- 界面开发拿到需求单和设计稿之后,跟逻辑开发一起沟通明确哪些界面是新做,哪些可以复用界面或者组件。
- 界面开发对于修改已有的界面,而无需动逻辑的,直接修改提测。
- 界面对于新增的界面和逻辑,跟逻辑开发约定API之后,自己在view中实现API的细节,并且在controller中使用假数据来提醒开发如何使用API。逻辑开发则同时启动工作,关注后台和APP逻辑,涉及视觉层就调用约定的API。
- 界面和逻辑一起在测试环境上联调。
关于API的制定和沟通细节,在后面的文章会单独讲。
理想状态下,这个方案能解决上面的所有问题。
但是在大公司推进新的流程往往不会很容易,仔细分析下,会有这样几个风险点:
- 前端同学自己的iOS开发能力不够,造成项目延误或者bug骤增。
- PM不信任前端同学的能力,担心bug骤增。
- 开发leader不信任前端同学的能力,担心项目延误。
其实信任是相对的,如果没有经验和产出,空口无凭让人信任是很难的。好在我曾经有iOS APP上架的经验,团队里还有一位Android开发经验的同学,所以就尝试在一个小项目中开始接入。从产品和设计入手,他们是最希望改进产品质量的人。然后拉开发leader求着接入代码权限,算是取得了小小的一步进展。
要在任何流程中做出改变,推进自己的理念,自己一定要让所有人都觉得比以前更舒服。所以第一点是要做超出自己责任外的事情,对开发而言,把界面的API第一时间给到他,跟他讨论,方便他设置信息。对PM而言,时刻主动反馈进度,在项目群里在互动沟通。第二点是对自己不熟悉的项目,反而要更快地输出成果,付出的代价就是自己要加倍工作。
比如自己评估一周可以完成的项目,就跟PM说预留一周的时间(甚至更短)。但是自己实际上工作可能不止是5天8小时了,可能是5天14小时。刚开始那段时间我基本每天都是9点以后离开。
说句比较鸡汤的话,要想人前显贵,必须人后受罪,还是很有道理的。
最终这个项目比较成功,跟我接口的开发对合作方式很满意,时间和质量上也让PM很满意,设计师更加高兴,所以一步一步,我终于能把自己的理念在更多、更大的项目中铺开,现在唯一的问题就是我们没有足够多的iOS和Android界面开发同学。
那就发个广告,腾讯ISUX招聘iOS和Android的界面开发,希望你:
- 非常熟悉iOS或者Android的界面实现和动画效果
- 熟悉界面相关的性能优化
- 擅长沟通
- 有推行MVC或MVP的理念
- 为自己的APP运行在几亿手机里感到光荣
- 有其它灵活的加分项
所以本篇文章算是一个预告,自己在过去的界面开发中积累了一些经验,所以后面会分几篇文章沉淀一下。大部分内容都是自己已经整理的一些资料,然后进行一些编排。我个人主要是负责iOS端的代码,所以经验也只适用于iOS。
余果
一个产品设计师。 了解详情