在一家机器人公司的近两年:除了机器人,其余的系统都是我建的

我上一份工作在斯坦德机器人(Standard Robots),深圳的一家工业 AMR(自主移动机器人)厂商。我是公司全部内部系统的唯一开发,这些软件负责把一台机器人从一张 BOM 变成一台交付出去、有人维护的机器。他们的车队调度软件不是我写的,我也不会这么说。我得到的是另一样不那么常见的东西,如果你自己造机器,它更有用:近两年时间,从内部看一家机器人公司怎么运转。

我在那里真正做的

除机器人之外,公司日常运转依赖的系统。作为内部系统唯一的开发,我负责带 BOM 结构的供应链平台、替换外购产品的 CRM、报销系统、文件存储引擎和发版流水线。具体来说:

  • **一层中间件,让平台迁移几乎零成本。**公司系统和钉钉绑得很深,却必须迁到飞书。我没有逐个重写集成,而是做了一层:对上层系统表现得和钉钉一样,对下调用飞书 API,文件处理、事件回调、响应格式都兼容。最后迁移只需要改一行。
  • **发版从数小时到一分钟。**十几个系统靠手工发布,每次一小时到半天。我把它换成脚本化、区分环境的自动部署,前面挂一个内部页面。
  • **一次数据恢复。**有人误删了某个系统里最顶层的一个大分类,两天后才发现。直接回滚会把这两天的新数据也冲掉。我读代码找出所有受影响的表,从日志里定位误删的时间点,用 MySQL binlog 还原当时的状态,再写了一个幂等、可撤销的修复程序。数据全部找回,业务没有停。
  • **更快的文件存储。**把 S3 兼容的对象存储换成对小文件更友好的方案,小文件性能提升 50% 以上。

如果你造机器,这段经历为什么有用

一家机器公司实际怎么运转,就体现在这些系统里,所以这近两年我几乎看了个遍。一份配置怎么变成一张 BOM;一个机型变体怎么变出一堆料号;销售答应的和生产能出的差多少;售后电话从哪来,接电话的人最想知道什么;这些问题里,哪些最后靠软件解决了,哪些只能忍着。

这是我能带进你项目的东西,也是大多数外包开发没有的。只写过应用的开发会先找你要需求文档;在机器公司内部待过的人,知道那份文档为什么还没有。

相关经验,准确地说

大家会问的两件事,照实回答。车队调度:他们的不是我做的。我在别处做过一个任务依赖调度器,把多级依赖转成有向无环图,执行前先检测环路,避免死锁,再按拓扑顺序执行。结构上,这和把一个复合任务拆成有序子任务是同一类问题,只是领域不同。设备协议:我实际做过的协议工作(Modbus、OPC UA、MQTT、PLC)来自我自己的合同项目和本站的 demo,不是那份工作。如果你需要的是某家机器人厂商 SDK 的经验,直接问,我会告诉你我的经验具体到哪为止。

证明

还能用在哪

如果你造设备,需要一个不用别人解释车间怎么回事的人:随机出货的界面、设备对接,以及决定一台机器能否按时出厂的内部系统。我在机器公司内部做过这样的角色,知道写代码之前该先问哪些问题。