Łukasz Rybka
"Przysięga Programisty" [PL]
2021-05-12
Kim jestem?
- Łukasz Rybka
- CTO i współzałożyciel @ Cloud Corridor (www.cloudcorridor.com)
- Trener @ infoShare Academy bootcamp (infoshareacademy.com)
- Twórca Git Guts (www.gitguts.io)
- Full-stack developer z domieszką DevOps, wielbiciel legacy code
Agenda
- Geneza
- Uncle Bob
- Przysięga Programisty
- Dalsze kroki
- Q&A
Geneza
- Wolnym strzelcem stałem się w wieku 24 lat
- Własną firmę założyłem w 2017
- W 2019/20 roku wybuchła pandemia SARS-CoV-2 COVID-19
- Od 2020 roku musiałem zmagać się z problemami jakie niesie za sobą pandemia COVID-19
Clean Coders
https://devchat.tv/show/clean-coders/
Robert C. Martin
- Znany jako "Wujek Bob" (Uncle Bob)
- Jeden z 17 twórców Agile Manifesto
- Adwokat ("twórca") zasad SOLID
- Autor wielu książek ("Agile Software Development, Principles, Patterns, and Practices.", "Clean Code: A Handbook of Agile Software Craftsmanship.", "Clean Architecture: A Craftsman's Guide to Software Structure and Design.", ...)
- Regularny gość podcastu "Clean Coders"
Przysięga Hipokratesa #1
Przyjmuję z szacunkiem i wdzięcznością dla moich Mistrzów nadany mi tytuł lekarza i w pełni świadomy związanych z nim obowiązków przyrzekam:
- "obowiązki te sumiennie spełniać,"
- "służyć zdrowiu i życiu ludzkiemu,"
- "według najlepszej mej wiedzy przeciwdziałać cierpieniu i zapobiegać chorobom, (...)"
- "nie nadużywać ich zaufania i dochować tajemnicy lekarskiej nawet po śmierci chorego,"
Przysięga Hipokratesa #2
Przyjmuję z szacunkiem i wdzięcznością dla moich Mistrzów nadany mi tytuł lekarza i w pełni świadomy związanych z nim obowiązków przyrzekam:
- "strzec godności stanu lekarskiego i niczym jej nie splamić (...)"
- "stale poszerzać swą wiedzę lekarską i podawać do wiadomości świata lekarskiego wszystko to, co uda mi się wynaleźć i udoskonalić."
Przysięga Programisty
- Powstała w 2015 roku w formie postu na blogu (https://blog.cleancoder.com/uncle-bob/2015/11/18/TheProgrammersOath.html)
- Jej celem było rozpoczęcie dyskusji o potrzebie ustandaryzowania pewnych aspektów naszej profesji
Treść Przysięgi Programisty
In order to defend and preserve the honor of the profession of computer programmers, I Promise that, to the best of my ability and judgement:
W celu ochrony i zachowania honoru profesji programisty, przysięgam, że w miarę moich możliwości oraz osądu:
Punkt #1
I will not produce harmful code.
- Kod może być szkodliwy w oczywisty sposób - celowo wyrządzić komuś krzywdę
- Może to być kod, który celowo wprowadza kogoś w błąd, oszukuje lub naraża na straty moralne lub fizyczne
- Kod trudny w utrzymaniu i rozwoju również jest uznawany za szkodliwy - dla reszty zespołu, klienta oraz użytkowników
- Pozostawienie systemu wrażliwego na niepożądaną eksploatację
Punkt #2
The code that I produce will always be my best work. I will not knowingly allow code that is defective either in behavior or structure to accumulate.
- Nacisk kładziemy na celowość działania
- Istnieje problem ze zdefiniowaniem "najlepszej pracy" w korelacji z czasem
- Mając świadomość istnienia wadliwych części naszego systemu musimy posiadać jasny i realny plan ich eliminacji
- Zasada dobrego harcerza jest dobrym sposobem na eliminację istniejących defektów
Punkt #3
I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should.
- Dowodem nie muszą być testy automatyczne
- Kryteria uznania kolejnej wersji/modyfikacji za prawidłową powinny zostać określone z góry
Punkt #4
I will make frequent, small, releases so that I do not impede the progress of others.
- Extreme Programming oraz Continuous Integration
- Problem dla całego zespołu z synchronizacją zmian i dostosowaniem się
- Problem klienta związany z długim czasem oczekiwania na kolejną wersję oraz zderzenie oczekiwań z rzeczywistością
Punkt #5
I will fearlessly and relentlessly improve my creations at every opportunity. I will never degrade them.
- Musimy zastanowić się dlaczego nasze systemy z czasem tracą na jakości, są trudniejsze w utrzymaniu i rozwijaniu?
Punkt #6
I will do all that I can to keep the productivity of myself, and others, as high as possible. I will do nothing that decreases that productivity.
- Naszym obowiązkiem jako usługodawców jest dbanie o siebie w sposób pozwalający nam na pracę na najwyższym poziomie
- Zdrowie oraz warunki pracy naszych współpracowników są równie ważne co nasze
- Rolą liderów i menedżerów jest stworzenie reszcie zespołu optymalnych warunków do produktywnej pracy
Punkt #7
I will continuously ensure that others can cover for me, and that I can cover for them.
- Brak sztywnych i niezmiennych ról w zespole (specjalizacji)
- Stały i otwarty proces przekazywania sobie wiedzy (demo, pair programming, knowledge base, warsztaty etc.)
- Bus Factor
- Fullstack Developer jako docelowy status każdego z programistów w zespole
Punkt #8
I will produce estimates that are honest both in magnitude and precision. I will not make promises without certainty.
- Iteratywne podejście do estymacji
- Szczerość powinna dotyczyć nie tylko planowanego czasu wykonania zadania ale także jego prawdopodobieństwa oraz potencjalnych problemów, które mogą wpłynąć na realizację
- Nie składamy obietnic, których nie możemy dotrzymać (nawet jeśli nasze stanowisko może od tego zależeć)
Punkt #9
I will never stop learning and improving my craft.
- Niezależnie od naszego doświadczenia pozostajemy w mentalnym przeświadczeniu, źe niczego nie umiemy i musimy się tego nauczyć
Materiały
- https://blog.cleancoder.com/uncle-bob/2015/11/18/TheProgrammersOath.html
- https://devchat.tv/clean-coders/cc-010-the-programmers-oath-with-robert-uncle-bob-martin/
- https://devchat.tv/clean-coders/cc-014-the-programmers-oath-part-2-with-robert-c-uncle-bob-martin/
- https://www.themoderncraftsman.org