Zespoły IT są na ogół różnorodne. Składają się z osób posiadających różne doświadczenia życiowe oraz zawodowe. Również powszechnym przekonaniem jest, że programiści mają skłonności introwertyczne oraz rozwinięty indywidualizm, przez co w branży krąży opinia, że zarządzanie programistami jest jak wypasanie kotów. Dodatkowo samo programowanie jest procesem w dużej mierze twórczym, przez co owoc pracy zespołu programistów – kod źródłowy – jest nierzadko nieuporządkowany i niespójny. W takich okolicznościach lider zespołu musi walczyć, by statek, którym dowodzi bezpiecznie dopłyną do portu docelowego. W tym ma mu pomóc standaryzacja.

Standaryzacja

Na przestrzeni lat zostało opracowanych wiele metodologii, metodyk oraz dobrych praktyk związanych z prowadzeniem projektów oraz wytwarzaniem oprogramowania. Przykładowo popularny Scrum1 wskazuje na iteracyjne rozwijanie oprogramowania (sprints) oraz na rejestr zadań (backlog), natomiast nad całym procesem czuwa dedykowany Scrum Master.

Zachodząca standaryzacja jest również dostrzegalna w historii rozwoju języków programowania. Przykładowo języki maszynowe zostały zastąpione językami niezależnymi od sprzętu, a przez to przyjaznymi programistom2. Zostały wprowadzone paradygmaty programowania strukturalnego oraz obiektowego. Poprzez zdefiniowanie specyfikacji języka określony został pewien porządek. Jednak wśród tego porządku panował również nieład, dlatego zostały opracowane wytyczne takie jak Google Style Guides, PEP 8 czy MISRA.

W zespole ujednoliceniu najczęściej podlega formatowanie kodu oraz styl pisania komentarzy. Poza tym może to być zalecenie do korzystania lub ograniczenie używania wybranych funkcji języka, lub uzyskanie pewnego poziomu pokrycia kodu testami.

Dla wielu programistów wprowadzone wytyczne są ciężarem i dodatkowym obowiązkiem związanym z przestrzeganiem tych wytycznych oraz nieustannym ich weryfikowaniem podczas przeglądu kodu.

standaryzacja kodu źródłowego

Narzędzia

Z tego powodu warto wdrożyć kilka narzędzi automatycznie weryfikujących wybrane aspekty kodu źródłowego:

  • C/C++
    • uncrustify / clang-format – narzędzia do formatowania kodu źródłowego
    • cppcheck – narzędzie do statycznej analizy kodu
    • clang-tidy – narzędzie do diagnostyki typowych błędów w oprogramowaniu,
    • cmake-lint – program do sprawdzania najpopularniejszych problemów w skryptach CMake.
  • Python:
    • black – bezkompromisowy formatter kodu
    • pylint / flake8 / pycodestyle – narzędzia do statycznej analizy kodu
    • mypy – narzędzie do statycznej weryfikacji zgodności typów
    • bandit / safety – narzędzia do statycznej analizy kodu pod kątem jego bezpieczeństwa
    • pydocstyle / darglint – narzędzia do sprawdzania poprawności komentarzy docstring.

Wymienione powyżej programy są opublikowane w formie otwartej. Istnieje również wiele komercyjnych narzędzi tego typu udostępniających podobną funkcjonalność. Najważniejsze jednak, by wdrożyć w zespole narzędzia, które odciążą programistów od monotonnych i rutynowych zadań.

Czy mogę zrobić coś jeszcze?

Poza wprowadzeniem zaleceń, wytycznych i narzędzi wskazanych powyżej programiści w twoim zespole mogą również zadbać o czysty kod.

Twój zespół jest zbyt zajęty lub nie wie jak wdrożyć powyższe narzędzia i techniki?

  1. opis: Wikipedia ↩︎
  2. mowa o językach trzeciej generacji ↩︎


Leave a Reply

Your email address will not be published. Required fields are marked *