What does a mature and capable embedded software organization look like? What do they do? What do they think? Who is on the team?
This project aims to catalog our answers to these questions. The capabilities, processes, mindsets, and roles we discuss have been informed by our experiences working in industry and advising our clients. They are informed by our own experience, conversations with other developers, reading, and observing what has worked (and not worked) at various companies.
Of course, there is no perfect team. What we describe here is an ambition. This is how we want to create embedded software at Embedded Artistry. We hope that it will inspire new practices in your own teams as well. Think of this as a menu of items to select from in order to improve your teams.
We have organized our markers of a mature embedded software development organization into the following categories:
- Device-side capabilities that aid in the development, testing, debugging, and quality assurance of embedded software.
- Infrastructure capabilities (tooling and systems) that support debugging, development, deployment, and quality assurance processes.
- Processes that aid in the design, development, and support of embedded systems.
- A team composed of diverse roles, capabilities, interests, and backgrounds
- Mindsets that aid in the design and development of embedded systems.
- Security Practices and Capabilities for Embedded Systems
