移动开发的碎片化时代

移动开发的碎片化时代,我们该怎么办?

发表于 2013-04-26 17:005161次阅读| 来源 CSDN25 条评论| 作者 唐小引
摘要:在CMDN俱乐部第27期活动中,清源教育创始人程凯征以“移动开发的碎片化时代”为主题,结合自身经验,讲述在今非昔比的移动开发的碎片化时代,开发者该何去何从?体系不健全,小团队又当如何成就高质量的应用?

移动互联网的发展让移动开发工作变得越来越普及,越来越多的公司开始成立移动开发团队,应对公司的整体移动化战略。但是因为移动开发的特殊性,几乎每个移动开发团队都是小规模作战,1-2人承担了公司某个移动平台的所有开发任务。这种情况会有很多问题,人员的能力提升受限,没有人交流沟通,公司没有办法做知识体系的储备和沉淀,甚至代码和配置环境都没有办法备份,一旦有人员更替,最常见的情况就是推翻之前的代码,再做一遍。我们将这种现象称之为移动开发的碎片化时代,在这种环境下,开发人员怎么办?公司怎么办?


图:清源教育创始人 程凯征

为此,在CMDN俱乐部第27期活动中,清源教育创始人程凯征以“移动开发的碎片化时代”为主题,结合自身经验,讲述在今非昔比的移动互联网时代,开发者该何去何从。

程凯征(@程凯征),曾担任清华同方软件出口事业部高级工程师、新东方讲师、巴别塔北京科技有限公司首席技术官。拥有多年无线互联网从业经验,经过多年历练,具备了丰富的研发经验和产品经验,对无线互联网应用及产品设计有自己独到的见解。两年前创立移石创想(北京)科技有限公司,从事移动应用开发。

以下为清源教育创始人程凯征的演讲实录:

我觉得“移动教育”这个词可以正过来理解,叫做我们在移动平台上做教育,反过来理解就是教大家做移动互联网的东西。但今天我演讲的东西实际上是讲如何做移动开发的管理,包括产品质量的管控,这和实际的移动平台开发是密切相关的。

今非昔比:移动开发时代,我们做什么?怎么做?

在早期的IT开发领域,团队作战是一个非常常见的状态,任何一个所谓的IT公司或互联网公司,基本上都是规模化作战。有很强大的程序员团队,十几二十个算是比较小的了,大的基本上都有几十号人,从前端开发到测试都很完善。程序员进入之后会有学习的一个梯队,慢慢融入到研发的工序里面,技术也是一点一点的往上走。进入到移动开发时代之后,大家可以看到很常见的一个状态就是一个公司的移动开发程序员也就一两个人,全部团队加起来可能也就四五个人。除非是一些大公司的大型产品研发,一般的中小型公司,其移动开发团队成员都是少之又少的。这就带来一个非常严峻的问题,就是流程很难具体规划出来,没有架构师、程序员的角色,可能一个程序员就承担了开发的所有任务,从写代码、开框架,最后自己跑测试,一个人从前到后把所有事情都干完了。

这种状态到底是对是错?实际上,在进行移动咨询和开发的工作,包括在做移动教育时,我们就已经发现了这个问题。许多培训学校在向企业输送工程师之后,这些工程师的能力其实还处于初级水平,现在的普遍情况就是,在各个公司,拥有3-4年以上开发经验的工程师是少之又少。

程序员,还是经验丰富的好

据DCCI(中国互联网数据中心)统计,2012年,国内移动开发者开发年限集中处于三年以下,这一情况直到今年4月份都没有发生太大的改变,最多只是增加了4-5个月的经验值。大部分的开发者开发经验都集中在1-2年的范围之内,这个经验实际上作为开发人员来讲还是相当浅薄的,一个资深程序员至少要有5-6年以上的经验,这样他才能在一个项目中起到主要作用。当然,在那些具有3年以下初级经验的开发者中,不乏有学习经验及个人能力都比较强的,但大部分还是不能达到一个真正意义上的高级程序员水平。而且从整个开发团队的规模来看,大部分都是2-5人的小团队。


图:2012,DCCI数据统计

在这种情况下,我们就会有这样一种感觉,就是大家都关注移动和教育,也都在Android、iOS等移动平台上下过很多相关应用,但在这些平台上,80%到90%的应用都称不上很漂亮或者能让人用起来感到很舒服。好应用基本上都出自大公司,比如腾讯、网易等大公司生产出的高质量应用,还包括国外的一些公司,这是为什么?因为这些公司实力雄厚,在这些公司的程序员,都已经积攒了许多工作经验,有5年甚至更高的程序员。当他们转移到移动平台上时,就会把原来的经验或研发流程、代码管理、自动化测试等东西带到这个平台上,只有这样才能保证移动平台上的软件开发质量。

至此,对移动开发的碎片化时代的特点进行一番总结,具体如下:

  • 小规模、小制作,1-2两个,1-2个月,这是很常见的状态;
  • 流程不完备、体系不健全,很多需求张口就来,改完就上,根本没流程可言;
  • 没有沉淀,人来人往,一穷二白。没有文档,新人新版,前人种树,后人砍树再种树,根本成不了高质量的App。

那些年,程序员的黄金时代

想当年,在微软的开发团队就有几百号人,有高级程序员、架构师、初级程序员,大家在电脑边上互相讨论问题,初级程序员从提问中学习、成长。整个团队的结构是比较完整的,项目周期也很长,菜鸟们有足够的时间来长见识,当然也具备完整的开发流程,从做分析、概要设计、代码编写到单元测试以及最后测试中工程师的讨论,体系都是非常健全的,而菜鸟在老鸟的带领下,也具备着完整的知识库及学习途径。


图:这才是真正的“程序猿”Team

因此在当时,程序员的能力增长可以说是非常之快,但现在在移动互联网的背景下,这种情况却不复存在了,因为移动互联网是一个新行业,有经验的人实在不多,其次,就是团队的碎片化,菜鸟根本就没有完整的环境可以进行学习,因此,在移动开发领域,无论于谁而言,教育都显得尤为重要。

移动开发时代的开发流程

这里讲一下我们公司的移动开发团队经历,我们的一个团队大概有10到20个人,当然也包括一些资深的程序员。我在2004年第一次涉足移动互联网,当时我们做的一款应用叫做MSG,是一款用来拍照片进行朋友分享、评论的应用。很多时候,各行业总会出现因为走得太早,所以一不小心死在了沙滩上的境况,当时我们只用了一个64K的限制,在发布的第一周,便有了一千用户。当时智能手机和移动互联网还没有风行起来,后来我又经历了各种系统的开发,但现在可能都看不到了。

在整个开发流程中,我们主要分为三个环节。

  • 产品的设计

在整个移动互联网中,产品设计是一个非常重要的环节,这个环节包括两部分,一个是交互设计,另一个是视觉设计。交互设计是根据我们对产品的构想或想法去做光线图,然后再和用户进行需求确认,在这个设计部分完成之后再进行视觉设计,就是怎么配色、做阴影,怎么去让产品更好看。

  • 程序开发阶段

这一环节细节很多,但总体而言,就是进行功能开发。

  • 测试发布

这一环节在小型团队中很容易被忽略掉,因为有许多地方都是自动集成测试。我们现在就有着完备的自动测试及发布,在这个开发过程中会有许多代码管理、程序集成及自动化测试。

如果将整个流程跑全,就会发现,琐碎的事情实在是特别多,但我还是要强调一句——勿以善小而不为,永远不要因小失大,因为很多程序员开始做东西时总会想着省点时间,也节省点劳动力,但最后却付出了巨大的代价。

移动开发关键环节探讨

  • 移动产品切图谁来做?

在做移动产品时,切图究竟该由谁来完成?绝大部分公司都是美工完成的,但在我们公司,所有的切图都是程序员做的。为什么这么做?因为美工不理解移动应用上的图片如何管理、如何放置、需要哪些图?可能有些程序员想着我只要一个像素的小条就够了,但美工却会给你切一整块。如果想要保证应用界面更加流畅、高效,我建议给所有程序员对如何切图进行培训,这个非常重要。

不久之前,我的一个客户就和我讨论这个问题,程序员需不需要避免美术或产品的审视?对此,我表示,不想做产品的程序员肯定不是一个好的CTO。因为其实每个程序员都需要对你的最终产品质量有一个理解,因此在此我强烈建议大家都学学如何切图,为什么这么说?此前,我做过一个简单的数据统计,从最早的美工切图,到程序员去套,这中间要花很长的一段时间来反复进行交流。但如果程序员自己切图,效率至少能提升三倍,也就是原来美工和程序员交流需要三天时间把所有细节敲定,现在程序员自己做只需要一天,甚至连一天都不到,而且质量还会大胜从前。因此,我们非常主张程序员学习PhotoShop,不要等着美工做切图,这对创业公司来说不失为一个好办法

  • 测试怎么做?全靠人手?错!

现在在Android市场或App Store中下载应用,很多时候用两下就崩溃了,这是一个很明显的问题,那就是应用没经过真正意义上的测试。在测试阶段,有很多内容,压力测试、功能性测试、适应性测试等等,因为太过繁杂,所以很多程序员就直接在设备上跑一遍,觉得没问题就提交发布了。那么,我们是不是要找专门的测试人员来做这个事情?其实完全不需要,因为现在无论什么平台都具有非常完整的测试体系。尽管现在设备类型繁多,山寨机更是不计其数。现在网上有一个叫做“云测”的项目,将应用程序提交上去,大概跑一边就可以了解到该App在各平台上的适应性情况。测试很重要,因为它也是保证应用最后质量的一个非常重要的环节。

  • 如何打包发布?

面向不同的开发渠道、市场及合作伙伴时,我们要如何打包?很多公司的开发团队都是直接手工打的,一个一个进行比对。其实通过使用一种输入ID即可查看所有内容的工具,要省事得多,当然,前提是你要做这样的工具。

经验无法复制,知识可以传承

在应用开发领域,许多公司都会通用应用代码,就是复制粘贴,将其他应用的代码运用到自己的应用中,这样太为浅薄,因为经验无法复制,但知识却是可以传承的。一个团队,即使初期比较薄弱,但一定要形成知识和经验分享的机制,如果闭门造车,那么这个团队一定不会有发展。在技术领域。很多东西是有共性的,即使是搞Android的程序员也照样能和iOS开发者沟通起来,比如ROS领域是如何做组建和数据存储的。如果是同一平台,则更应该交流,可以看对方的代码,做一下技术分享。这些事情也许看起来并不是很重要,但实际意义却非常大。

观众:对于切图应该由程序员来做这一块我有不同的看法,我觉得还是应该由美工来做,对于很多细致入微的事情,程序员并不能胜任,如果美工懂得分层和逻辑,懂CSS和浏览器渲染原理,也能更好地完成工作。

程凯征:这样的话,成本会很高。程序员究竟需不需要具备一些基本的审美和艺术、产品的感觉?我觉得这个其实是非常需要的,回到代码本身来讲的话,一段好的代码也是一个艺术品,不是说这个代码把功能实现了就是很好的代码,而是这个代码结构清晰、容易扩展、容易维护,这才是好东西。程序员怎么具备这样的素质?我相信这个东西是交叉性的,而不是单纯地说按照这个结构来做,这需要程序员具备美感,否则他写出来的东西也会不太漂亮。

而且,在这方面,我们从整个团队的效率和成本的角度考量,也做过很多尝试,最终,我们还是觉得程序员做切图是最节省成本,也是最高效的方法。而且美工和程序员之间的沟通就经常存在问题,交叉性质的活儿很难界定谁做更合适。当然可能各团队的情况不同,你们有更牛的UI设计,能够以比较低的价格请到这样的美工,这当然好,但我觉得作为普通的开发团队而言,让程序员适当懂一些界面设计的东西,或者做一些界面切图工作,也未尝不是一件好事。

观众:从做产品出身到做教育,你觉得这行的水有多深?

程凯征:这个问题很大,我可以告诉你,教育行业的水很深。为什么这么说?因为教育是一个很特殊的行业,现在在国内,大概有80%-90%还是公立性教育,是有目的性的,包括取证件、找工作、升学等各种不同的教育。目前比较赚钱还是公立教育。教育本身是需要分享的,我想把整个IT技能的教育都搬到互联网上来,在这个过程中,我们也看到了很多的问题。从某种程度上来讲,传统教育在互联网上其实是不合适的,新的内容,通过互联网来做教育的事情,肯定是要想一些比较特别的东西,能够发挥互联网的长处,而不是生搬硬套,完全复制。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值