一、背景
2022年3月份接手IM024物联锁项目救火,此项目主要用于医院共享轮椅、共享病床。此项目是从2021年初开始立项开发,投入了大量的人力物力,但是在2022年3月份时产品工作仍然不稳定。此项目基本上可以判定为一个失败的典型,为了吸取教训防止自己重复踩坑,所以总结一下导致此项目的原因。下边将从宏观因素和微观因素两方面分析总结导。
二、导致失败的宏观因素
宏观因素上主要分析项目中的与人相关的因素和与项目管理因素。
2.1 项目上的人为因素
2.1.1项目参工程师专业知识短缺
目前市场上的中小公司的嵌入式工程师大部分都是电子电气类专业毕业。电子电气类专业毕业的软件工程师,在线程同步、内存安全方面存在大量的知识短缺,在工作几年后仍没有有意识的去学习补全专业知识。导致在开发稍微复杂的嵌入式软件项目时,很容易出现线程同步的问题,导致产品运行极不稳定。
从侧面来说公司的招聘环节存在严重的问题。目前公司的招聘环节主要考察学历、项目经验、面谈了解项目的参与过程。但是对工程师的专业知识考核基本没有,工程师专业知识考核主要有:逻辑能力、编程语言能力、MCU内核相关知识、操作系统相关知识、掌握技能考核。如果没有专业知识的考核在招聘阶段很容易出现漏网之鱼。
2.1.2 项目参与工程师对待项目的态度
前期项目参与工程师都是参与遥控器项目,遥控器项目大部分都比较简单。稍微复杂一点的蓝牙语音遥控器有芯片原厂提供的SDK。项目参与工程师抱着开发遥控器的心态去开发物联锁------实现功能即可。因为参与工程师等同于在开发设计原型,所以在软件设计开发时没有任何的规范可言。 开发出来的代码没有任何的编码规范、没有清晰的模块划分、没有任何的检错机制、毫无软件框架思想、没有进行任何的单元测试。工程师开发软件的态度就注定这个项目是要失败的。
2.1.3 工程师在前期设计的交互协议不严谨
工程师前期设计的交互协议,没有数据校验、没有协议版本、控制命令和应答没有明确对应。
2.2 项目管理因素
2.2.1 项目管理负责人
项目管理负责人,在项目开发过程中没有及时发现和纠正项目开发过程中出现的问题。没有利用自己的经验与知识为项目开发保驾护航。
2.2.2 项目管理过程
项目软件开发管理中没有建立编码规范、框架评审、代码审核、单元测试等有效的管理机制,即为公司管理层的错误,但是至今仍没有迹象表明公司在项目软件开发上建立有效的管理机制。
2.2.3 项目设计经验缺失
公司应该使用checklist 管理工具,通过checklist 管理工具去积累经验。 checklist 管理不是某个项目的check list管理。而是对项目中使用到的组件进行check list管理。IM024设计中最明显的失误,使用2.9V复位的扩展IO芯片,但是硬件工程师竟然没有发现。
三、导致失败的微观因素