Entwickler-Aphorismen: Weisheiten aus Stand-ups und Code-Reviews
Im Laufe der Jahre in der Embedded-Entwicklung sammelt sich eine Sammlung von Phrasen an, die zu Aphorismen avancieren. Sie fassen die Realitäten des Mikrocontroller-Codings, Schaltungsdesigns und Projektmanagements zusammen. Hier eine Auswahl aus 12 Jahren Praxiserfahrung: von Code-Prinzipien bis zu MCU-Peripheriegeräten.
Aphorismen über Code und Architektur
Programmierer teilen sich in zwei Lager: die, die Code von Grund auf schreiben, und die, die Open-Source-Bibliotheken portieren. Die Universalität eines Computers als Rechengerät ist die Lehrbuchdefinition – auch wenn nicht jeder Physik- und Technik-Absolvent das kauft.
Wichtige Prinzipien:
- Für alles gibt's eine Konfig: Der beste Code ist reine Konfiguration.
- Code getrennt, Konfigs getrennt.
- Guter Code kristallisiert sich über Jahre.
- Prinzip der geringsten Überraschung beim Schreiben.
- Der beste Algorithmus ist eine Tabelle (eine endliche Zustandsmaschine reduziert sich auf Graph und Tabelle).
„Programmieren ist ein Marathon, kein Sprint.“ (Robert Martin)
Code-Uniformität schlägt Schönheit: „Schreib Code einheitlich – hässlich ist okay.“ Arrays sind die Basis von allem. Jeder Setter braucht einen Getter: xxx_write() erfordert xxx_read(). Der Name einer Funktion ist ihr Kommentar. Weniger Textkommentare bedeuten saubere git diff.
In C: Wenn eine Funktion nicht auf einen Bildschirm passt, funktioniert sie wahrscheinlich nicht. Jede Aufgabe lässt sich in einer Zeile lösen – einem Funktionsaufruf. Der beste Kommentar ist der Dateiname.
Tests und CI/CD
Ein Repo ohne CI ist nur Schrottpapier. Das Build-System muss einheitlich sein, egal welcher Editor. Code ohne Unit-Tests? Gleiches Kaliber.
„Ein Programm, das nicht getestet wurde, funktioniert nicht.“ (Bjarne Stroustrup) „TDD ist die Wahl der Profis.“ (Robert Martin)
Wissen wird schriftlich weitergegeben, für reibungslose Übergaben. Ein portabler Codebase ist die Grundlage zukünftiger Projekte. Alle Protokolle reduzieren sich auf memcpy zwischen Geräten.
Schaltungsdesign und Hardware
Hardware-Leute witzeln: Sei wie eine CPU – weigere dich, Überspannung zu akzeptieren. Elektrotechnik ist die Wissenschaft der fehlenden Verbindungen. Entwicklung beginnt mit Debug-Tools.
Alle Sensoren messen Temperatur, nur auf ihre Weise. Oberhalb 100 MHz werden Signale analog. Alles in der Elektronik ist ein ADC oder DAC: Codecs, Transceiver, sogar GPIO als 1-Bit-DAC.
Interface-Wahl: SPI schlägt I2C. Russen layouten Boards für europäischen Code, Europäer coden für chinesische Boards. Das beste Bauteil ist keins.
Mikrocontroller und Firmware
Hardware zuerst, Software danach. Je simpler das Schaltbild, desto kniffliger die Firmware – und umgekehrt. Firmware ohne Hardware ist wie Skulpturieren nach Foto.
Peripheriegeräte synchronisieren zum Core-Takt. Firmware beginnt mit einem Bootloader. Ein Reset heilt sieben Übel. Das Killer-Feature? Firmware-Updates.
Universelle Protokolle vermehren sich: von 12 auf 13. Assembler ist wie Buchweizen mit der Pinzette essen. NVRAM levelt alles auf. UART-CLI ist Pflicht: Ohne ist's Stecken und Beten.
UART-Logs sind die Blackbox der Firmware. Ein MCU ist ein Mörser zum Zahlenmahlen; x86 ein Mixer. CLI weckt Kreativität, GUI sperrt ein. Endliche Zustandsmaschinen sind der goldene Hammer für MCUs.
Ein ordentlicher MCU braucht: Uptime-Timer, Heartbeat-LED, UART-CLI, NVRAM, Unit-Tests. Sonst ist's eine nutzlose Kette. Firmware schreibt sich nicht von allein.
Modularität bedeutet, für mehrere Plattformen gleichzeitig zu bauen.
Management und Projekte
Wir bauen es nicht, weil es einfach ist, sondern weil wir dachten, es sei einfach. Die Hälfte von dem, was sie lehren, ist Unsinn – der Trick ist, rauszufinden, welche Hälfte (Larrabees Gesetz).
Nach Spezifikation entwickeln: kein Übertreiben. Verhandeln ist der Job. „Nichts tun“ auf Anfrage? Aufgabe erledigt.
„Ein negatives Ergebnis ist immer noch ein Ergebnis.“ (Niels Bohr)
Eine schlechte Lösung mit gutem Report wird irgendwann gekappt; eine gute mit schlechtem Report gleich gekillt (Akins Gesetz). Managen heißt, aus dem Weg zu gehen.
Qualitätsabstriche gleichen sich positiv aus. Kein Gastank an den Hund schrauben. Besser Bug jetzt finden als im Regal. Brainstorming? Nur Ideen rösten.
Bauen, was sie brauchen, nicht was sie wollen. Das Perfekte ist des Guten Feind. Schlechtes passiert von allein. Schnell und schlampig bleibt als schlampig in Erinnerung; langsam und solide als solide (Koroljow).
Was wichtig ist
- Code muss portabel und testbar sein: TDD, Unit-Tests, einheitliches CI.
- Im Embedded: UART-CLI, Logs, endliche Zustandsmaschinen – die Debug-Essentials.
- Hardware zuerst: einfache Boards erleichtern Software.
- Projekte nach Spez, Docs schriftlich.
- Nachfolgeplanung: Wissen festgehalten, Repo sauber.
— Editorial Team
Noch keine Kommentare.