为什么开发一款软件只要 3 个月,开发一款硬件却要一年

标签: 开发 软件 开发 | 发表时间:2021-01-07 08:28 | 作者:
出处:https://blog.devtang.com/

背景

我们公司在软件开发上的速度极快:

  • 2012 年猿辅导公司刚成立的时候,想做一款教育微博,我们花了 3 个月的时间做完上线。
  • 2013 年我们想做猿题库,我们花了 2 个月的时间做完上线。
  • 2014 年我们想做小猿搜题,我们仅花了 1 个月时间,就完成了功能开发。

而我们在开发斑马点读笔(题图)的时候,前后却花了将近 10 个月的时间,远远超过软件开发的时间。

2020 年我们有多款在研的硬件产品,我们试图压缩硬件产品的研发周期。但是执行下来发现,在极端顺利的情况下,也需要 6 个月的开发周期。稍有一些意外,就可能拖到 8 个月甚至 10 个月才能完成量产。

教育硬件还算简单的,我们再来看看手机产品。熟悉苹果的朋友都知道,苹果一般需要花 2 年时间,才能发布一个全新的手机设计。中间间隔的那一年,苹果仅仅会做一个小改款,升级一下 CPU 主频或者摄像头像素,整体的设计并没有什么变化。

问题

为什么硬件研发的周期远高于软件研发呢?

答案

原因一:硬件的链条长,环节复杂,但是对调整的容忍度低

软件研发的时候,最后一刻有严重 Bug,我们可以熬熬夜修好再上线。上线之后有小问题,我们可以在几天之后发布一个小版本升级。所以,软件可以用 Scrum 来快速迭代,业界常见的迭代周期是两周一次发布。

硬件如果最后一刻发现有严重的 Bug,那么不好意思,你需要重新制作模具。而不算模具的修改评审时间,仅仅开模的时间通常都需要 30 天左右。而开模前还需要重新做结构设计的调整,开模之后需要重新试模,外观调整之后可能涉及的 IC 排布的调整,包装设计的调整,3C 重新认证,运输测试重做等等,基本上相当于一夜回到解放前。

打个比方,硬件的外观大的调整有点类似于大家玩陶瓷,你好不容易做好了,进熔炉烧制好了,然后你发现有一个设计缺陷,那这个陶瓷只能完全报废掉了。

不止是硬件部分,电子部分的调整其实也很难。教育硬件产品通常逻辑不复杂,为了节省成本和功耗,硬件产品的逻辑通常使用 掩模 的工艺来进行烧录。这种烧录的能力现在还是集中在台湾地区,所以烧录时间要好几周。而且烧录有量的要求,一次烧录的起订量通常是 5K 左右的。

如果你研发到量产阶段,才发现有一个逻辑要修改,那么对不起,整个 IC 部分至少 5000 的起订量需要报废掉重做,重做周期可能好几周。这还没有算上 PCBA 电路板的重新贴片带来的时间成本。

所以,硬件的外观、电子逻辑在研发过程中的调整,都可能对整个产品的研发进度产生极大的影响。

为了防止这种事件发生,硬件在研发环节中,加入了多次的确认和检查,比如在开模之前先做 EVT 验证,又比如工业(ID)设计和结构(MD)设计做出来要打手板验证等。于是,我们就有了一个相对来说比较复杂的项目管理流程。

下图是小米公司的项目计划模版,可以看出一个硬件的研发牵扯的环节非常多。稍微不注意就会有差错。

即便这样,也还是很容易出错。我们在实践中,单单在包装工程上就出现过多次失误。比如和供应商时,不能很好地控制包装方案与成本;又比如设计的包装不利于运输,使得物流箱的成本变得很高。又或者打样的时候来回多次沟通,每次都打样不到位等。

但就像只要有程序就一定有 Bug 一样,硬件研发过程很难保证一定是完美的。所以如果有大问题只能召回或者报废,小问题只能忍着先发布,下一版再迭代。iPhone 每一代新品发布,就还是伴随着一些问题,历史上最有名的是 iPhone 4 的死亡之握,最终苹果没办法,所有人免费送了一个手机壳才解决。

原因二:硬件的资金成本更高

硬件当前的 3D 打印技术和电子电路的技术,仅可以用来做用户试用,验证一些功能设计上的问题。

但是硬件产品从一个高保真的原型手板到量产,其实需要克服很多工艺上的问题,在这个过程中,就需要花很多钱。这些钱都是需要摊薄到未来的大规模量产上的,否则就很不经济。

打个比方,我们做一款玩教具,假设这个玩教具的开模费用是 20 万,那么如果我们只生产 2000 台,那么摊到每台上的模具费用都有 100 块钱。而一个模具通常可以用 50 万次,正常量产后的每台玩教具的模具费用只有 0.5 元。这里面差了 200 倍的成本。

所以为了把产品的成本控制下来,同时也为了保证开模注塑工厂的利益(不然别人不跟你玩),通常首批玩教具生产的量都需要是 5000 左右的,这就是一笔不小的投入费用。

IC 的部分也一样,掩模烧录的起订量通常也是 5000,这也是一笔不小的费用。

最后假设我们什么都很顺利,花 20 万开了模,做了 5000 套玩具,假设每款玩具的制造成本是 100 块,那么一共就花了 70 万元。

硬件第一批产品出去后,多多少少会有一些问题,这个时候你就需要尽快把存货卖出去,否则你回收不回来资金,很难启动第二轮的生产。我看 《马斯克传》,当年 Tesla 的第一代车就是因为有很多小毛病差点卖不出去,最终他没办法让所有员工都出去卖车,才逃过一劫。乐视当年做手机,手机卖不出去,最后好多都直接送出去,因为放在仓库里面电池亏电太久也报废了。

第一代产品有小毛病没卖好,资金又都压在存货上,有大量公司都被库存和资金周转搞死了。

小结

  • 硬件研发链条长,在研发过程中的任何调整,都可能对整个产品的研发进度产生极大的影响。
  • 硬件的研发需要基础量和开模,使得资金门槛高,给后续库存和资金周转带来挑战。

相关 [开发 软件 开发] 推荐:

软件开发的核心

- - 博客园_知识库
  「我们一直这样做开发,时间做久了,便忘了当初的本意.   有关软件系统开发,我们谈些什么.   我们谈过程,编码规范、开发流程、同行评审、结对编程、持续集成,从瀑布到敏捷再到极限编程.   我们谈架构,企业级、J2EE、容器化、SOA(面向服务架构)、Microservices(微服务化).   我们谈规模,大容量、高并发、大数据.

开发软件有多贵

- - 透明思考
有个朋友的朋友想做一个公益的事. 因为出资的都是教育水平较高的精英人士,所以对项目的监控透明度要求比较高. 于是这个朋友的朋友就想了,信息时代嘛,IT工具不是可以促进交流提升效率么. 于是他对我说:我们想做个app,可以干这个这个这个……. 我打断他说,别着急,做软件很贵的,你不一定玩得起. 市场上定制开发软件的人工成本按一人月20,000人民币来算,平均每人天1,000人民币.

软件吞噬软件开发

- - PingWest中文网
软件蚕食世界,自互联网特别是移动互联网连接线上线下服务后,已成为不可逆的趋势. 每一项实用的服务可以由小团队来完成. 以WhatsApp为例,这款被高调收购的IM应用,拥有4.5亿月活跃用户,70%的日活跃率,至今还保持每天新增用户1000万的速度. 但这些服务居然由32名工程师支撑下来了,所以有了业界八卦“每位员工价值20亿”的说法.

Facebook是如何开发软件的

- Felix - 互联网的那点事
Facebook的工作方式让我着迷. 那是一个非常独特的工作氛围,无法复制(也并不适用于其它公司). 下面的是我从很多在Facebook工作的朋友那里搜集到的关于这个公司如何开发和发布软件的只言片语. 看起来对Facebook感兴趣的大有人在. 这个公司以程序员为主导的企业文化受到人们的极大关注,很多公司都在努力现实这样的企业文化.

软件开发的“三重门”

- - 酷壳 - CoolShell.cn
自从上次写了“ 程序员技术练级攻略” 以来,就觉得似乎还有很多东西没有谈到,但当时没有继续思考了. 而春节前有人问我,是做底层技术,还是做业务. 这问题让我思考了很多,不由自主地回顾了一 下我这十多年的软件开发经历,并顺着整理分类了一下自己解决过的若干问题,还发散想了很多,经过了一个春节假期的发酵,产生了下面这篇文章.

软件开发的人文关怀

- - 博客园_知识库
  几年前,我从温伯格的《技术领导之路》中学到一点:技术人员往往更喜欢和机器打交道,因为他们“认为”自己更适合和机器打交道;但是,优秀的技术人员必须(也必然)具备好的沟通能力. 所以,温伯格鼓励各位技术人员多加练习和其他人打交道的能力. 温伯格的这个观点我是非常赞成的,好的技术人员一定需要“勇敢”面对他人,不能被“自实现的预言”局限在机器的世界里.

软件开发中的两种态度

- - 外刊IT评论网
一种态度认为,应该对程序员在软件开发中的行为进行约束( DirectingAttitude). 持这种态度的人认为大部分的程序员水平都不高(谣传说有50%的人低于平均水平),所以应该对他们所做的事情进行管教约束. 要防止他们做一些可能会给他们正在开发的系统带来危害的事情. 通常,这种态度体现在一些系统设计和工具中时,你会发现它们会试图阻止程序员去做某些事情,限制程序员的一些做法,以此避免他们陷入过于复杂的境况.

软件开发的人文关怀

- - 极客公园-GeekPark
我是极客公园黑板报认证值日生. [核心提示]软件可以没有活力,而软件开发却不能没有活力;程序可以像机器一样,程序员却不能像机器一样. 要改变这种状态,就应当增添更多的人文关怀,把开发人员当成活生生的人,而不是视为程序或者工具. 编辑注记:本文来自余晟的博客 乱象,印记. 作者从自己的经验出发,提出了一些给软件开发人员提供人文关怀的可行措施.

软件开发模型综述

- - CSDN博客推荐文章
                     软件开发模型概述. 最早出现的软件开发模型是1970年W·Royce提出的瀑布模型. 软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架. 软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段.

防火长城内的软件开发

- - Solidot
对于软件开发者来说,防火长城不只是屏蔽网站过滤流量这么简单——它是痛苦之源,尤其是如果你想开发针对中国市场之外的软件或想利用广泛使用的服务和软件库的话. 上海聊天机器人创业公司Rikai Labs的创始人DC Collier认为,中国的软件开发者写代码的时候一只手是绑在背后的. 防火长城的屏蔽范围日益扩大,这意味着越来越多的服务被永久性或不定期的屏蔽.