Mission & Philosophies#
Create both software and process foundations for sustained, robust, and rapid embedded product development with large teams.
Each component of our mission has additional meaning:
Software - Our modular components and surrounding tooling are our primary deliverable. The software is the product of our philosophies.
Process - Developing robust software processes is hard, and not something all teams have time for. Our mission is to create reusable processes that can save time and increase team happiness. Our approach is to offer tooling and standards. For example, our integrated code formatting, module directory structure, style guide, test processes, and more are all designed for reuse.
Sustained - Products often live a long time or are part of a series of related products; and over time the requirements change. Our mission is to make these sustained development situations easier. Our approach is to create flexible and reusable foundations to gracefully handle changes. For example, our porting abstractions make switching a microcontroller vendor easier.
Robust - Creating robust products is hard, yet important for finding market and product success. Our mission is to assist teams in creating robust products. Our approach is to:
Invest heavily in software reliability tooling and processes (unit testing, sanitizing, formatting, etc)
Comprehensively apply said tooling and processes to Pigweed, making Pigweed a robust foundation
Make said tooling available for downstream use, so teams can ensure code they write is robust
Rapid - Creating products quickly is critical in today’s market. Our mission is to make shipping products faster with Pigweed. Our approach is to accelerate product development by offering reliable foundations (less bug hunting), having great onboarding tooling (low engineer churn/setup), offering modules solving common but hard problems (RPC), etc.
Embedded - Our mission is to support software embedded in products such as earbuds, watches, phones, thermostats, satellites, cars, drones, and related.
Large teams - Developing software with large teams in the embedded space is increasingly frequent due to more capable embedded processors. Traditionally, teams were 1-5 people, but are increasingly much larger (50-200 person) teams. Our mission is to make developing larger products with correspondingly larger teams easier and faster, with an eye to support rapid prototyping where there is a chance to scale from an idea to production. Our approach is the investment in common abstractions, common practices, common standards, tooling around those standards, and a focus on automation and repeatability.