为什么硬件公司做软件不行?
最近与一位资深硬件 RD 聊天 (有 20 年以上设计经验),言谈之中他不断跟我强调很多 IPC 厂想入门 SCADA/HMI 软件,但不知道怎么入门 blah~blah~
小弟在工控界搞了 7 年 HMI 软件,3 年 Remote IO,也算略有经验。现在就从个人角度来分析,为何硬件公司要入门软件这么难?
硬件公司不懂得如何带领软件开发团队
以小弟在幸福企业 M 公司的经验,做一个产品,时程最多一季至半年,一位 hardware RD 搭配一位 firmware RD,最多再加一个 software RD 帮忙写 PC Tool,这大概就是全部了。
但今天如果开发一个中大型规模的软件,就以刚刚提到的 SCADA/HMI 来说,国外的软件人力配置是 20 个 software RD,国内 cost down 的结果也至少要 7-8 人。
这马上就会产生很多问题,让我们来看看。
为什么需要这么多人?
Steve Wozniak 当年一个人就可以打造 Apple II 全部软硬件,但他也坦承现在的电脑软硬件太过复杂,非一人所能掌握。但很多硬件背景出身的人可不这么想,他们除了会设计硬件外,也会写程式验证,更别说单芯片这种东西几乎是全包 (可能除了机构外),所以他们会觉得为什么要这么多人?不要骗我我也会写程式喔!
以小弟手上正在维护的产品来说,里面用到了 4 种程式语言 (SQL、C++、JavaScript、Lua),PC/Emabedded 2 个版本完整编译要超过 1 小时以上,相较于单芯片编译只要数秒,可以快速不断用 ROM Emulator 上传重试,根本是完全不同的世界,不是当事人很难想像。所以才发展出 daily build 每日自动建置,避免昂贵 RD 人力用于这种重复性工作。
小弟当年唸书时,曾经有老师开了一门课叫做“大型软件个案研究”,试图带大家分析 Apache Web Server,不过很可惜的是这门课没开成,但也可以看出大型软件的复杂度已经到达需要开课研究的程度,绝非一人可以轻易掌握。如果您觉得自己天纵英才,可以试着在不借助 Source Insight 这种软件的协助下看能读懂这些流行的大型软件几成。
硬件公司抓不住软件潮流
就算 software 也很少人了解到现在是 读程式的技能比写程式重要 ,这个时代速度就是一切,没有人不是站在巨人的肩膀上,引用别人的成果,现在写程式也比过去更依赖工具 。
有件事实很多人不知道,其实台湾很多公司都有 DIY OS 过,如 M 公司、x 技、x 格… 但这些公司的 DIY OS 可以说全部淡出,因为相较于 Linux 这个由全世界一流高手打造,外加百万人验证过的 OS,一间公司能有多少客户来帮你验证?外加不断暴涨的各种 Layer 2,3,4 network protocols…,要养多少 RD 才能补齐?所以现在这些台湾公司,要不是直接用 Linux,就是直接移植 Linux 上的各式模组来用。
换个角度想,做硬件的人会放弃现成的积体电路、SoC,改用电晶体来兜产品吗?
硬件公司不懂软件开发流程
在纯软件不懂 Version Control System、Bug Tracking System、Daily Build System… 会被人笑没受过教育。但硬件公司却是晚了很多年才心不甘情不愿的导入了里面几样最基本的东西。
如果说对工具已经很陌生,那就更不说更抽象的规格设计、需求访谈… 乃至于之前流行的 eXtreme Programming 到现今的 Scrum 根本是外星人的语言。更何况里面很多工作根本不像在写程式,你们这些 software RD 没在打字是不是在混啊!
硬件公司唯一的施力点大概就只有 UI,但这也很可笑,因为一堆硬件公司对 UI 的要求全凭个人好恶,好一点的会套入企业形象加以配色,极少数是从使用者经验出发,像笔者这种还会去 阅读专著的大概纯属凤毛麟角了 。所以硬件公司也不用怪怎么大家都往 Kernel、Device Driver 这种领域去钻,没有人唸个 CS 硕士学位结果在那边搞对齐 pixel 跟用 PhotoShop 去背,那干么不去巨匠算了!
硬件公司无法掌握软件品质
这是压死骆驼的最后一根稻草,硬件公司没有能力验证软件的可靠度,不知道如何去做单元测试、回归测试、边界测试、压力测试… 硬件公司会做的测试大概就是人肉测试,用工人智慧进行测试,用人力代替 CPU 运算能力。
但软件测试发展至今,已经发展成一门专业,绝非某些外行人想的是这些做测试的是学经历比较差、当不上 RD 才做测试。做测试也是要写程式的!以小弟待过的 M 公司来说,很多资深测试工程师是资深 RD 转过来的,他们是用程式、自动化的方式来测试 RD 丢过来的东西,不是外行人想的,这边点一点、那边按一按… 喔,当掉了!这种土方法来测试。
硬件公司没有人想赔上官位
硬件公司不但不知道如何管理软件团队与开发流程,也不知道如何行销软件、教育训练 (非常花成本),花了多于 hardware RD 数倍的人力 (薪水) 后没有带来立即性的营收会有什么下场呢?负责主管好一点是考绩变差,惨一点就是请你走人了。
前面提到过,台湾硬件公司开发产品的习惯是 3 个月到一季最多半年,然后就要出货收钱了。大型软件不但无法这样做,半年后可能才略具雏型,可能还有不少 bug… 那高层会怎想呢?股东会怎么想呢?有钱的阿伯们才不会管你软件怎么开发的,他们会觉得这种生意不能做,软件还是给老外玩好了,国情不同!
硬件公司有这种思维早已其来有自,因为台湾电子业的成功秘诀是近亲繁殖 + 带枪投靠,很多大老板们之所以敢出来创业,早已有口袋名单内的客户支持,他想要拿出来创业的产品也早已 ready (怎么 ready 的大家自己猜),软件这种干法简直是… like 87,在这种浅碟、急躁的氛围中,硬件公司做软件就像落在水泥地上的种子,最多只能长出几颗杂草罢了~ 科科
你也许感兴趣的:
- 【外评】电脑从哪里获取时间?
- 【外评】为什么 Stack Overflow 正在消失?
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- 【外评】哪些开源项目被广泛使用,但仅由少数人维护?
- 【外评】好的重构与不好的重构
- C 语言老将从中作梗,Rust for Linux 项目内讧升级!核心维护者愤然离职:不受尊重、热情被消耗光
- 【外评】代码审查反模式
- 我受够了维护 AI 生成的代码
- 【外评】Linux 桌面市场份额升至 4.45
- 【外评】作为全栈开发人员如何跟上 AI/ML 的发展?
你对本文的反应是: