Powrót do strony głównej

Cytaty deweloperów: kod, MCU, schemotechnika

Zbiór cytatów z praktyki embedded-rozwoju obejmuje kodowanie, schemotechnikę, firmware MCU i zarządzanie. Aforyzmy podkreślają ważność testowania, debugowania CLI i ciągłości. Przydatne dla middle/senior specjalistów.

Mądre cytaty embedded-deweloperów o kodzie i sprzęcie
Advertisement 728x90

# Aforyzmy programistów: mądrość z planerek i code review

Przez lata w rozwoju embedded gromadzi się zestaw fraz, które przechodzą w kategorię aforyzmów. Odzwierciedlają rzeczywistość kodowania mikrokontrolerów, projektowania układów i zarządzania projektami. Podsumowanie z 12-letniego doświadczenia: od zasad kodu po peryferię MCU.

Aforyzmy o kodzie i architekturze

Programiści dzielą się na tych, którzy piszą kod od zera, i tych, którzy portują open-source. Uniwersalność komputera jako maszyny obliczeniowej — to podstawowa definicja, choć nie wszyscy fiztehowcy się z tym zgadzają.

Kluczowe zasady:

Google AdInline article slot
  • Na wszystko jest config: najlepszy kod — to konfiguracja.
  • Kod osobno, configi osobno.
  • Dobry kod formuje się latami, jak kryształ.
  • Zasada najmniejszego zaskoczenia przy pisaniu.
  • Najlepszy algorytm — tabela (skończony automat sprowadza się do grafu i tabeli).

«Programowanie — to maraton, a nie sprint.» (Robert Martin)

Jednolitość kodu ważniejsza niż piękno: «Kod trzeba pisać jednolicie — brzydko». Tablica — podstawa wszystkiego. Dla każdego settera potrzebny jest getter: xxx_write() wymaga xxx_read(). Nazwa funkcji — jej komentarz. Mniej tekstowych komentarzy — czystszy git diff.

W C: jeśli funkcja nie mieści się na ekranie, prawdopodobnie nie działa. Każde zadanie rozwiązuje się jedną linią — wywołaniem funkcji. Najlepszy komentarz — nazwa pliku.

Google AdInline article slot

Testowanie i CI/CD

Repozytorium bez CI — papierowy listek. System budowania musi być jednolity, niezależnie od edytorów. Kod bez testów modułowych — to samo.

«Program, który nie był testowany, nie działa.» (Bjarne Stroustrup) «TDD — wybór profesjonalistów.» (Robert Martin)

Wiedza przekazywana pisemnie, dla ciągłości. Przenośna baza kodu — podstawa przyszłych developów. Wszystkie protokoły — memcpy między urządzeniami.

Google AdInline article slot

Schematyka i hardware

Schematycy żartują: bądź jak proc — odmawiaj nadmiernego napięcia. Elektrotechnika — nauka o braku styków. Rozwój zaczyna się od narzędzi do debugowania.

Wszystkie sensory mierzą temperaturę, ale inaczej. Po 100 MHz sygnał jest analogowy. Wszystko w elektronice — ADC lub DAC: kodeki, transceivery, GPIO jak jednobitowy DAC.

Wybór interfejsów: SPI lepsze niż I2C. Rosjanie trajsują płytki pod europejski kod, Europejczycy piszą pod chińskie płytki. Best part is no part.

Mikrokontrolery i firmware

Hardware pierwotny, soft wtórny. Im prostsza schematyka — tym bardziej złożona firmware, i odwrotnie. Firmware bez urządzenia — rzeźba z fotografii.

Peryferia dostosowuje się do taktowania rdzenia. Firmware zaczyna się od bootloadera. Siedem nieszczęść — jeden reset. Najlepsza funkcja — aktualizacja firmware.

Uniwersalny protokół mnoży się: z 12 zrobiło się 13. Asembler — kasza szczypcami. NVRAM poprawia każdą rzecz. UART-CLI niezbędna: bez niej plug and pray.

Logi UART — czarna skrzynka firmware. MCU — moździerz do liczb, x86 — mikser. CLI rozszerza wyobraźnię, GUI ogranicza. Skończony automat — złoty młotek dla MCU.

Pełnowartościowy MCU wymaga: timera UpTime, heartbeat-LED, UART-CLI, NVRAM, testów modułowych. Inaczej — bezużyteczny łańcuch. Firmware sama siebie nie napisze.

Modułowość — budowa dla wielu platform jednocześnie.

Zarządzanie i projekty

Robimy nie dlatego, że proste, ale dlatego, że myśleliśmy, że proste. Połowa tego, co wykładane, to bzdury, zadanie — zrozumieć, która (prawo Larrabiego).

Rozwój na wymaganiach: nie poprawiać ponad. Dogadywanie się — to praca. Nic nie robić na prośbę — wykonane zadanie.

«Negatywny wynik — to też wynik.» (Niels Bohr)

Złe rozwiązanie z dobrym raportem odrzucą z czasem, dobre ze złym — od razu (prawo Akina). Kierować — to nie przeszkadzać.

Bilans jakości dodatni. Nie trzeba, jak psu bak na benzynę. Lepiej wada teraz, niż na rynku. Burza mózgów — drwiny z pomysłów.

Robić nie to, o co proszą, a to, co trzeba. Najlepsze — wróg dobrego. Źle samo wyjdzie. Szybko i źle zapamiętają jako źle; wolno i dobrze — jako dobrze (Korolow).

Co ważne

  • Kod musi być przenośny i testowalny: TDD, testy modułowe, jednolita CI.
  • W embedded: UART-CLI, logi, skończone automaty — podstawa debugowania.
  • Podejście hardware-first: prostota schematów upraszcza soft.
  • Projekty na wymaganiach, dokumentacja pisemna.
  • Ciągłość: wiedza i czysty repozytorium.

— Editorial Team

Advertisement 728x90

Czytaj dalej