Nasza strona używa cookies. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

Pisz mniej dzięki generatorom kodu

Adam Kukołowicz CTO / Bulldogjob
Sprawdź, jakich narzędzi do generowania kodu warto używać, aby uniknąć bootstrappingu i boilerplate’u.
Pisz mniej dzięki generatorom kodu

Już we wrześniu odbędzie się kolejna edycja Konferencji Infoshare 2020. W tym roku wyjątkowa, gdyż odbędzie się w wersji online. W dniach 23-25 oraz 28-30.09 uczestnicy zdalnie dołączać będą do streamów online, emitowanych prosto z Gdańska. Prelegentami będą polscy i światowi eksperci, którzy chętnie dzielą się wiedzą na scenie, jak i poza nią. 

Jako CTO Bulldogjob.pl, przeprowadziłem wywiad z Dmytro Zharkovem na temat generatorów kodu w kontekście unikania bootstrappingu i boilerplate’u.



Adam: Jaki procent Twojej codziennej pracy wypełnia tworzenie boilerplate'u? Jakie są najczęściej powtarzalne zadania, które widzisz jako programista frontendowy?

Dmytro: Praca nad projektem wymaga przestrzegania konwencji i standardów kodowania, nazewnictwa plików, struktury katalogów oraz wzorców projektowych. Jest to nawet ważniejsze w przypadku projektów na dużą skalę, w których wiele zespołów pracuje razem, niezależnie od tego, czy chodzi o jedno repozytorium z wieloma pakietami projektów, czy o mikroserwisy frontendowe. 

Biorąc to pod uwagę, programista zawsze powinien sprawdzić, jakie praktyki są stosowane w projekcie i ich potem przestrzegać. W zależności od konfiguracji i architektury, musisz utworzyć wiele plików w celu dodania nowej funkcji. Np.:

  • działania redux, reduktory, selektory
  • pliki stylów
  • pliki z komponentami
  • pliki testowe


Można tu wymieniać i wymieniać. Niektóre z tych rzeczy mogą być podatne na błędy i niespójne, gdy wykonujemy je manualnie.


Adam: Prawdopodobnie najłatwiejszą automatyzacją jest wymuszenie standardów kodowania podczas code review. Jakie narzędzia przetestowałeś? Jakie są Twoje wnioski z ich używania?

Dmytro: Jednym z najlepszych narzędzi do obsługi code review jest Husky. Wymusza on sprawdzanie kodu, konwencje i zgodność przed wykonaniem polecenia git/push. Husky obsługuje wszystkie hooki gita.

Innym sposobem jest połączenie hooków GitHuba z narzędziami CI/CD i budowanie systemów, takich jak Jenkins, AWS Code Pipeline i AWS Code build, które są oparte na chmurze oraz CircleCI i wiele innych. Systemy CI/CD zapewniają potencjalnie nieograniczone możliwości quality assurance kodu, gdy tworzymy pull request, takie jak wykonywanie testów end-to-end, testów integracyjnych, regresyjnych i jednostkowych oraz automatyczne kompilowanie i wdrażanie gałęzi pull request.


Adam: Jakie narzędzia warto sprawdzić przy generowaniu kodu?

Dmytro: Istnieją 2 główne typy generatorów kodu:

  1. narzedzia do bootsrapowania
  2. CLI z wieloma funkcjami (interfejsy wiersza poleceń)


Narzędzia do rozruchu umożliwiają generowanie początkowego projektu ze wstępnie zdefiniowaną strukturą katalogów, konfigurowanie testów i linting. Dobrymi przykładami narzędzi do rozruchu są:

creat-react-app - create-react-app pomaga w załadowaniu samej podstawy projektu ReactJS z naprawdę elastycznymi i bogatymi opcjami wyboru technologii CSS i preprocessingu, wykorzystania TypeScript oraz konfiguracji webpacka.

Generatory Yeoman - Yeoman oferuje katalog bootstrapów i generacji kodu dla dowolnego możliwego frameworka lub technologii JS, który jest prężnie rozwijany przez jego społeczność.

Z drugiej strony mamy CLI, które są jeszcze lepsze. Za ich pomocą możliwe jest nie tylko wygenerowanie, czy bootstrap projektu początkowego, ale także zapewnienie pełnej obsługi przez cały czas trwania projektu. Mam tutaj na myśli egzekwowanie standardów kodowania, generowanie zaawansowanych komponentów, serwisów, modułów aplikacji oraz publikowanie i wdrażanie projektu.

 


Adam: W jakich obszarach nie ma odpowiednich narzędzi, ale można łatwo wykorzystać inne techniki generowania i konfigurowania?

Dmytro: Jeśli z jakiegoś powodu narzędzia nie są dostępne - najlepiej jest sporządzić dobrą dokumentację ze sprawdzonymi przykładami. Nie staraj się jedynie nie powtarzać przy API, ale także faktycznie zapewniać działające fragmenty kodu.

Spraw, aby dokumentacja była widoczna i łatwo dostępna dla wszystkich członków zespołu. Nie zajmuj się tylko dokumentację kodu, ale także wszystkimi procesami związanymi z pracą i opisuj je na bieżąco. 


Adam: Czy automatyzacja prozaicznych zadań wpływa na produktywność? Czego niespodziewanego się do tej pory nauczyłeś?

Dmytro: Najzwyklejsze zadania mogą wpływać na produktywność na wiele sposobów, zarówno bezpośrednio, jak i pośrednio. Programiści to cenne i drogie zasoby, dlatego najlepiej, aby wszystkie strony odpowiednio w nie inwestowały. Nie warto spędzać czasu na czymś małym, co trzeba i tak zrobić każdego dnia - lepiej to zautomatyzować.  

Prozaiczne, powtarzalne i manualne zadania są również bardziej podatne na błędy, które prowadzą do wydłużania deadlinów oraz do problemów ze zgodnością itp.

Pośredni wpływ to możliwe wypalenie zespołu oraz brak czasu na rozwój osobisty i zawodowy. Widziałem ludzi odchodzących z zespołu, co potęgowało jeszcze ich zmęczenie i brak motywacji.


Autor o sobie

Dmytro Zharkov (lub po prostu Dima). Jestem Senior Software Developerem i naprawdę kocham swoją pracę. Inżynieria oprogramowania rzadko się nudzi i zawsze pozwala się nauczyć czegoś nowego i poprawić tempo. Uwielbiam dzielić się swoją wiedzą i doświadczeniem z innymi. Robię to, występując na konferencjach technicznych, doradzając młodym inżynierom i pomagając moim znajomym zostać programistami.


Pracowałem w małych agencjach i dużych korporacjach oraz w lokalnych, rozproszonych i zdalnych zespołach. No i wiele się przez ten czas nauczyłem:

  • Jak pracować samodzielnie i w zespole.
  • Pracy w różnych rolach: programisty, product ownera, site reliability engineera, mentora i rekrutera.
  • Pracowałem z ludźmi z wielu krajów i kultur.


Poza pracą - jestem fanem sportu (trening funkcjonalny, pływanie, bieganie), fantasy, seriali science-fiction i filmów.



Infoshare 2020 Online - wirtualny festiwal społeczności napędzanej technologią!

Najnowsze trendy technologiczne, startupy, innowacje, wyzwania biznesu w czasach pandemii. To wszystko podczas Infoshare 2020. Największa konferencja technologiczna w Europie Środkowo-Wschodniej w formacie online, transmitowanym na cały świat z Gdańska potrwa 6 dni i odbędzie się w dniach 23-25 i 28-30 września. Na uczestników czeka aż 9 scen tematycznych z prelekcjami na żywo i niespotykane dotąd możliwości networkingu. 

Kup bilet już dziś!

Rozpocznij dyskusję

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 160 tysiącami naszych czytelników

Dowiedz się więcej