有道无术,术尚可求;有术无道,止于术
背景
向单片机嵌入式开发小伙伴推荐了几本书,阅读量破10+
1. 适用范围
2. 书籍推荐
3. 大师介绍
4. 大师书籍编写逻辑
25年大师出版的关于:嵌入式单片机开发方向的书籍
- 思想:
- OOP OOA OOD
- UML建模
- 软件开发生命周期
- 软件开发模型
- 螺旋模型
- 软件开发方法论
- DDD
- 敏捷
- 极限编程
- 实时嵌入式操作系统
- 设计模式
- 故障分析:FMEA
4. 实战
5. 读后感:
“Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit” 这本书的复杂性和专业性让很多读者难以理解,主要原因在于它覆盖了多个高级主题和专业领域。为了充分理解书中的内容,读者需要具备以下方面的知识和经验:
-
专业背景:主要面向有嵌入式系统学术或工作背景的读者。对这一领域缺乏经验的读者可能难以理解复杂的概念。
-
编程和软件设计知识:书中设计模式和实例主要基于C语言,同时涉及面向对象分析(OOA)、设计(OOD)和编程(OOP)的理念。
-
设计模式的复杂性:设计模式是解决特定问题的抽象方案。没有一定的软件设计经验可能难以理解其应用和好处。
-
交叉学科知识:书中还涉及如统一建模语言(UML)、实时操作系统(RTOS)等领域的知识。
-
项目周期管理和产品研发流程:理解整个项目生命周期和产品研发的各个阶段对实现嵌入式系统至关重要。
-
丰富的项目经验:没有丰富的项目经验,尤其是在嵌入式系统领域,可能导致读者难以将理论应用到实践中。
-
嵌入式系统的特殊性:这类系统通常对资源、性能和可靠性有特别要求,理解这些特性对于理解书中的内容至关重要。
-
理论与实践结合:理论知识和实际应用的结合是理解书中内容的关键。单纯的理论学习可能不足以领会书中的深层次知识。
9.硬件知识:嵌入式系统设计涉及硬件和软件的紧密结合,了解硬件对软件设计的影响是必要的。
8. 软件工程化
硬件设计有硬件设计图纸,
机械设计有机械设计图纸,
建筑设计有建筑设计图纸,
园林设计有园林设计图纸,
电气工程有电气设计图纸
服装设计有服装设计图纸。
各行各业都有设计图纸,都遵循各领域行业标准画图纸。
大到航空母舰小到盖个鸡舍都需要图纸。
然而,令人遗憾的是,在嵌入式实时系统软件设计领域,UML(统一建模工具)使用仍然不普及,有时甚至完全缺失。
尽管UML已有三四十年历史,但在嵌入式实时系统软件设计领域仍步履蹒跚。
在医疗仪器龙头企业干几年,没人使用UML统一建模工具绘制嵌入式实时系统软件设计图纸,仅绘制非标设计图。
在嵌入式实时系统软件设计领域内,常见的做法是先行写代码,再补充设计图纸,
这种做法类似于“先盖楼,后画图”,在没有图纸的情况下盖起高楼,待楼房建成后才绘制设计图。
“先盖楼,后画图”已经是很负责的了,绝大多数是没有图纸没有文档的,
这种现象在该领域中普遍存在,导致网络上频频吐槽代码晦涩难懂,
只有开发者自己努力回想才能理解(大多数没有图纸,这似乎成了一种“价值”,因为可见的未来无人能替代)。
这不仅体现了行业内某种程度的自满和保守,也暴露了对软件建模的忽视,
所以随之而来的超乎想象的产品投诉率、产品故障率、甚至产品召回,但可以肯定的是都与项目负责人有关系,
毕竟将帅无能累死三军,其中大多数故障都是嵌入式开发工程师们的“杰作”,
因为,其他方向工程师都有标准化图纸,都有实体,实体都有质量属性,
就只有软件只有逻辑没有图纸,甩锅小能手,扯呼起来舍我其谁,谁与争峰……
9. 从小工到专家
完全理解并掌握 “Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit” 这本书中的内容是达到高级研发工程师岗位要求的重要一步,但需要注意的是,成为一名高级研发工程师通常还需要以下几方面的能力和经验:
-
实际项目经验:理论知识固然重要,但高级工程师通常需要在实际项目中应用这些知识。成功的项目经验能展示一个人的技能不仅限于理论,还能在实际问题中找到解决方案。
-
问题解决能力:高级工程师应能独立解决复杂的技术问题。这不仅包括编程技能,还包括系统设计、性能优化、问题诊断和创新解决方案的能力。
-
团队合作与领导能力:高级工程师通常需要在团队环境中工作,有时还需要领导项目或团队。良好的沟通能力和团队合作精神是必不可少的。
-
持续学习和适应能力:技术领域不断进步,高级工程师需要持续学习新技术和方法论,以保持其技能的相关性和前沿性。
-
软件工程的全面知识:除了嵌入式系统,高级工程师还应对软件工程的其他方面有深入的理解,如软件架构、测试、维护和软件生命周期管理。
-
创新和研究能力:在某些情况下,高级工程师还需要能够进行技术创新和研究,以推动领域的发展。
总之,虽然完全理解这本书是成为高级研发工程师的重要条件之一,但还需要广泛的技术知识、丰富的实践经验和良好的软技能。在职业生涯中不断学习和积累经验是达到高级水平的关键。