你该在什么时候重新思考你的产品,or重写代码?
2013年9月,苹果公司正式发布了iOS 7操作系统,并暗示此操作系统将会解决SDK支持的遗留问题。在DoubleDutch公司(我们伟贸易展览和贸易大会开发社交活动的移动应用程序),iOS7此举对于我们而言提供了一次绝佳的机遇,可以让我们重新评估当前产品的状态。
在过去的数年时间里,我们开发的软件已经得到了长足的发展,而且公司也在不断完善自己的愿景。但是,围绕着我们的应用程序,公司仍然需要承受较大的负担(技术性债务)。我们当时做了一个决定,那就是,公司需要立刻重新开始、重新改写我们的应用程序,并且不去关注短期收益,优先考虑可长期执行的战略。
在这个过程中,笔者在创业阶段学到了很多,并且感受到了成长的收获,更重要的是,我知道了应该在什么时候、从最基础的地方重新思考你的产品。
一家初创公司的几个阶段
在一家初创公司成立初期,除了创意之外应该就没有太多东西了。你需要花了好几个月的时间忙这忙那,比如学习市场营销,与潜在的客户见面,还要形成一个可行的公司发展方向。
当企业的方向开始越来越具体,你所开发的东西就会变成一款最低可行性产品(MVP),而且会努力找到自己的首批客户。这一过程将会持续进行,直到你获得到理想的客户,然后收集用户反馈,接着再不断地循环这个过程。你的市场,其实就是你产品需要解决的那些问题,将会变得越来越重要。
从一个技术角度来看,如果时间严重短缺,初创公司的早期团队可以由几个工程师组成,但是,如果对市场了解有限,加上缺乏资源和分配,可能导致产品和结构性的决策无法按时完成。
在这个阶段,客户要求会不断融入,每个客户都代表了业务的一大块比例,你别无选择,只能接受他们。
有些客户要求和产品预期较为相符,但是有些则是一些“一次性”的需求。千万不要有“不惜一切代价满足客户需求”这样的想法,你必须要不断地提升产品,并保持核心客户的满意,这点是至关重要的。
在经历上述过程之后,你的客户群将会迅速增长,同时你的产品功能和复杂度也会随之增加。由于对更大的市场有了一定了解,你会逐渐找到自己的核心竞争力,并且意识到有必要把自己的产品扩展成一个平台。
由于产品更新换代变得越来越快,产品代码可能会变得过于臃肿,支持成本会随着时间变得越来越高。过去对增长非常有帮助的产品可配制性,也迅速成为了一种负担,导致产品更新的节奏越来越慢。由于此时的企业变得越来越复杂,从而影响到新员工的招聘,由于人手不足,加上产品配置错误增多,产品Bug也会越来越多。
不过,现在你的工程团队无论是在规模还是在专业技术上都已经变得非常成熟了,而且企业此时也实现了与市场的契合,并准备开始积极扩展。有了明确的目标,加上具有较强执行力的团队,一切就只等时间帮你解决技术债务了。现在你所要做的,就是为高速增长做好准备。
增长的好处和坏处
实现产品和市场的契合是一种很奇妙的感觉,但你必须保持有足够的灵活性,保持创新,快速做出改变。
一旦你的初创公司实现了这种契合,那么就需要考虑如何应对日益增长的技术性债务,以下有两个很明显的选择:1)迭代重构,并不断提升产品组件2)对于重写(部分)全部产品的工作,要加大投入。
第一个选择可以延长支持技术债务所需要的时间,但是前期如果没有大量成本投入则很难得到持续性的改观。重写App应用不仅涉及到的前期成本非常高,而且回报也具有较高的风险。不仅如此,重写App应用是对产品未来不必的一种结构性设计,它不是要解决产品的遗留问题。
在评估App应用代码库的时候,有几个重要的指标,这些指标会影响我们做出决定,是否需要重写绝大部分代码:
未来的产品核心件需要做大量结构性改变才能实现
该产品的技术债务让开发速度变慢,并给工程师带来负担
从产品的核心体验被越来越多的功能取代
一个迫在眉睫的事情(比如iOS 7发布)要求必须进行重新架构产品
工程团队对产品和未来有着非常深刻的理解
如果你身处在一个类似的情况下,比如产品的最后期限迫在眉睫,比如要投入大量时间,而且你的产品可以从一些关键性改变中受益,那么重写代码可能是你必须要做的正确选择。
权衡风险
也有人会说,重写代码也许不是一个非常明智的决策。让公司整个工程团队重新构建一些东西,而且更重要的是,原来的产品已经积累了庞大的客户群,这些用户很可能会重复安装很多次更新,直到重写应用完成。因此,如果要获得更大回报,重写代码的确是有较高风险的。
如果你决定在长远发展上下个赌注,决定重写代码,那么就需要增加更新的速度,并且要专注于提供最好的终端用户体验,并用最快的时间找到新的工程师。
对于笔者所在的DoubleDutch公司来说,重写App应用意味着我们必须要用四个月的时间转移绝大部分工程团队的注意力,因为我们选择了改良自己的应用程序接口(API),安卓应用程序,以及iOS应用。在iOS 7兼容性更新上,我们没有做太多架构性的改变,因此我们两名工程师在不到两个月的时间里完成了这项工作。
当然,我们这么做也是一个非常冒险的举措。展会活动类型的App应用现在竞争性越来越大,我们之前的App应用的销售非常出色,因此当时整个公司的目标就是尽可能快的发展壮大,而重写产品似乎和抢夺市场份额的目标不大吻合。随后,我们重新评估了风险,认为竞争对手暂时还无法追赶或超越我们,所以如果要迅速有效的获得未来创新的能力,我们最终决定重写App应用。
实现飞跃
接着上面的话题,你肯定会问出一个非常重要的问题,那就是,哪个风险更大一些呢?是减缓几个月时间去开发新功能,还是让竞争对手重复快速更新?
对于笔者所在的公司而言,我们坚信自己的执行能力,并决心要成为行业领导者。考虑到这一点,我们的希望用创新压倒竞争对手,但是我们也会承担一定的风险,比如竞争对手有可能在短期内超越我们。
一开始,在我们开发自己的应用程序的时候,对于市场并没有一个较为成熟的认识,我们只是随波逐流地去构建自己的产品。事后看来,我们在同行业中需要有一个强大的立足点,从以往的经验中得到教训,才能为未来做更好的准备。
那么,我们是否做出了正确的决策呢?现在来看还为时过早,但是从公司的发展速度和表现来看,我们有足够的理由保持乐观。
注:作者Nicholas Clark是DoubleDutch公司首席技术官,该公司主要为贸易展览和贸易大会开发社交活动App应用。
(via:tnw 译/快鲤鱼)
关键字:业界动态, 产品, 代码重构
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!