Ostatnią sobotę spędziłem na konferencji zaprzyjaźnionego JUG Łódź. W przerwach między wspieraniem organizacji wydarzenia, wysłuchałem prelekcji o MVVM i CI/CD w budowaniu aplikacji mobilnych. Dzisiaj podzielę się wrażeniami z wykładów.
“Building a CI/CD pipeline for your mobile app”
Ponieważ w Sidnet stosujemy procesy ciągłej integracji i ciągłego dostarczania (CI/CD), chciałem sprawdzić, jak robią to inni i upewnić się, że niczego nie pomijamy.
Peter-John Welcome, który przyjechał aż z Johannesburga, przedstawił cały proces od początku do końca w sposób klarowny, w większości zbieżny z moim doświadczeniem. Continuous Integration i Continuous Deployment (/Delivery) to nic innego jak automatyzacja manualnych zajęć z codziennej pracy programistów i usprawnianie różnych jej aspektów.
Prelegent przypomniał, że procesy w IT nie muszą być sztywne. Jeśli pojawia się potrzeba wyeliminowania któregoś kroku, to można to zrobić. Przykładowo, poruszył temat wykorzystania botów sprawdzających kod źródłowy (np. weryfikujących ustalone standardy kodowania czy formatowanie kodu), które wyręczają programistów. Uznał, że gdyby programiści nie prowadzili ze sobą zażartych dyskusji w Code Review na temat różnych standardów, to kontrolę przez boty można by pominąć.
Pomysł nieszkodliwy, ale w moim odczuciu nieoptymalny. Moje doświadczenie podpowiada, że wprowadzenie standardów eliminuje niepotrzebne dyskusje. Dla wszystkich w projekcie staje się jasne, jakiego formatowania kodu powinni się trzymać. Także bot ma wówczas proste zadanie – upewnić się, czy dany fragment kodu jest napisany zgodnie z określonym standardem. Automatyzacja tego kroku zaoszczędzi czas całego zespołu, dlatego nie rezygnowałbym z niej.
“MVVM as good (anti)pattern in iOS”
Wielu developerów zachwyciło się ostatnio wzorcem MVVM (Model-View-ViewModel). Czy robią słusznie, wykorzystując go w aplikacjach na iOS? Mateusz Szklarek uważa, że nie. Swój pogląd opiera na doświadczeniu m.in. z pracą nad aplikacją mobilną z 250 tysiącami linijek kodu źródłowego.
Jak zauważył prelegent, MVVM eliminuje problem ogromnego pliku kontrolującego widok („Massive View Controllers”), który często występuje przy używaniu wzorca MVC (Model-View-Controller). W MVVM pojawia się jednak inny problem – ogromne pliki View Model (“Massive View Models”).
Model-View-ViewModel nie jest doskonały, bo doskonałe rozwiązania nie istnieją. To, czy dowolna idea lub narzędzie zda egzamin, w dużej mierze zależy od sposobu wykorzystania przez samych developerów. Zdaniem prelegenta nie warto podążać za tłumem i bezrefleksyjnie sięgać po MVVM.
Rozwiązanie? Jak zwykle – rozsądek. Ze wszystkich wzorów czy narzędzi należy korzystać racjonalnie. Rozwiązania powinny pasować do problemów, nie odwrotnie. Chcę też podkreślić (za prelegentem), jak ważne są zasady programowania. Trzymanie się ich umożliwia dopasowanie wybranego wzorca i przezwyciężenie problemów występujących w każdym z wzorców.
Chociaż nie było mi dane uczestniczyć w całej tegorocznej konferencji, to cieszę się, że mogłem pomóc organizatorowi.
“Krzysztof, szacun za gotowość do działania ramię w ramię w dniu konferencji. Dzięki za mobilizację!”
Marek Defeciński
Organizator Mobilization