经验分享 | 开发新产品,如何有效地开展工作?
时间:2021-10-13 14:09:13
手机看文章
扫描二维码
随时随地手机看文章
[导读]这个话题其实我很早之前就想写一写了,但是一直抽不开时间,今天终于有时间来聊一聊这个话题,希望能借助我过往研发产品的经验帮助更多从事嵌入式行业的朋友们入门。一个新的产品立项了,接下来,就会有UI设计、结构、硬件、软件、产品经理、项目经理、测试工程师等角色来共同完成这个项目,当然这是...
这个话题其实我很早之前就想写一写了,但是一直抽不开时间,今天终于有时间来聊一聊这个话题,希望能借助我过往研发产品的经验帮助更多从事嵌入式行业的朋友们入门。一个新的产品立项了,接下来,就会有UI设计、结构、硬件、软件、产品经理、项目经理、测试工程师等角色来共同完成这个项目,当然这是最理想的状况。但现实的情况可能并没有这么理想,在小公司里,有可能你一个人就得把大部分的活干了,对于大部分的工程师来说经常摸不着头脑,想了很久却没思路,这的确是很让人难受的事情。笔者作为一名嵌入式软件工程师,在嵌入式行业也有将近5年的产品开发工作经验,从一个什么都不懂的小白摸爬滚打到现在,总算对产品的软件开发上有了自己的一点见解,当然我并不是大佬,世界那么大,我就只是一个小兵而已。在写这篇文章之前,我要感谢我曾服务过的防卫等公司给我带来的成长。
大学毕业以后出来参加工作,我做过很多产品,不单单是代码设计同时也负责了一部分的UI修改和设计(熟悉Photoshop的设计和应用),我的开源项目上就做了一些简单的UI设计;同时我也能从零把一个产品的软件从头到尾干出来,那我是怎么培养这种职业能力的?2、产品选型的方案
这个产品最终使用什么方案来做开发?是单片机类的方案?带RTOS还是裸机?是Linux类的方案?还是Android类的方案?(1)不计较成本,想快速做出产品,不想浪费在各种复杂的界面调试上单片机 串口屏 裸机开发/RTOS开发优点:初入职场的工程师短时间学习就能够轻松驾驭缺点:万一要是串口屏玻璃没了,找不到替代品的话,这是个很麻烦的事情(2)计较成本,想GUI框架自己做,规划更加自由不受限单片机 普通LCD/OLED(带触摸/不带触摸) GUI框架 裸机开发/RTOS开发优点:操作逻辑不受限,自由组合;后续即使是屏幕缺货,但UI软件的框架的思路是自己团队搞出来的,只要定好了一般不会大动。缺点:调试起来麻烦,坑比较多,需要有一定经验的工程师才能胜任。(3)功能丰富,拓展性更强,追求高性能的方案Linux、Android,现在有大量的开源软件和组件,可以满足我们的各种定制需求,前提是研发团队的实力要强才能Hold得住。
优点:主流市场玩法雨露均沾,图像识别、音视频等等想玩多高大上都行。缺点:涉及驱动、SDK、各种工具链,需要有一定经验的工程师才能胜任。
拿之前我做的一个基于TencentOS-tiny的开源项目:
TencentOS tiny危险气体探测仪产品级开发
开源作品:基于TencentOS tiny英国达特甲醛探测仪产品级开发(二)
【腾讯连连IoT开发大赛】基于TencentOS tiny云打印机
大学毕业以后出来参加工作,我做过很多产品,不单单是代码设计同时也负责了一部分的UI修改和设计(熟悉Photoshop的设计和应用),我的开源项目上就做了一些简单的UI设计;同时我也能从零把一个产品的软件从头到尾干出来,那我是怎么培养这种职业能力的?
1、想象产品的最终是什么样子的?
如果想做一名富有竞争力的工程师,首先他对行业信息一定是非常敏感的,市面上对应产品有的功能,那我们的产品也得有啊,如果他们没有的功能我们有,这就叫产品的功能创新,一旦你做出增项的功能出来了,你甚至可以为公司的新产品去申请实用新型专利。这个产品的外观是怎样的?是手持式的?是台式的?还是大型设备?它有哪些部分构成?具备什么样的功能?等等。当我们能够不断的去思考,不断去拓宽自己的知识面的时候,那我们就真正进入了深度学习和思考的模式,我们不再是单纯的嵌入式软件开发工程师,而是嵌入式产品开发工程师。2、产品选型的方案
这个产品最终使用什么方案来做开发?是单片机类的方案?带RTOS还是裸机?是Linux类的方案?还是Android类的方案?(1)不计较成本,想快速做出产品,不想浪费在各种复杂的界面调试上单片机 串口屏 裸机开发/RTOS开发优点:初入职场的工程师短时间学习就能够轻松驾驭缺点:万一要是串口屏玻璃没了,找不到替代品的话,这是个很麻烦的事情(2)计较成本,想GUI框架自己做,规划更加自由不受限单片机 普通LCD/OLED(带触摸/不带触摸) GUI框架 裸机开发/RTOS开发优点:操作逻辑不受限,自由组合;后续即使是屏幕缺货,但UI软件的框架的思路是自己团队搞出来的,只要定好了一般不会大动。缺点:调试起来麻烦,坑比较多,需要有一定经验的工程师才能胜任。(3)功能丰富,拓展性更强,追求高性能的方案Linux、Android,现在有大量的开源软件和组件,可以满足我们的各种定制需求,前提是研发团队的实力要强才能Hold得住。优点:主流市场玩法雨露均沾,图像识别、音视频等等想玩多高大上都行。缺点:涉及驱动、SDK、各种工具链,需要有一定经验的工程师才能胜任。
3、产品软件的构架与功能模块开发
这个产品的软件功能模块,它符合什么标准?国标的要求?行标的要求?企标的要求?为什么要有这三标?因为这三标就是给你做产品的时候,你需要仔细去看去读的东西,这些标准会告诉你,你的产品里至少需要具备的软件功能,没有这些东西,难怪你不知道怎么来做产品,如果都告诉你具备这些功能了,在只有大方向的前提下,难道你就不能先实现这些标准上要求的小模块的功能吗?比如你就为一个功能实现一个函数=>调节亮度、音量,最后在整体架构的时候,再以接口的形式集合进来进一步实现应用逻辑。那么有的人就会说了,最后到底要做成什么样子呢?三个字:多沟通!永远不要想着一版就成型,因为做产品的过程中不断重构不断迭代是很频繁也是很常见的事情。关于标准化的学习可以参考以下文章:谈谈做产品、做项目以及标准化相关的话题拿之前我做的一个基于TencentOS-tiny的开源项目:
危险气体探测仪
来说,这个项目在我开源前我就给它制定了相应的功能,包括项目的UI、软件框架、应用逻辑等等,最后花了一点时间实现了出来,详细文章可以看看我之前写的几个开源项目,因为它们足够简单,也足够入门了。表驱动 状态机法AD传感器驱动检测框架TencentOS tiny危险气体探测仪产品级开发
开源作品:基于TencentOS tiny英国达特甲醛探测仪产品级开发(二)
【腾讯连连IoT开发大赛】基于TencentOS tiny云打印机