środa, 8 stycznia 2014

clean code - łagodne wprowadzenie

Chapter 1

Clean code - a gentle introduction part 1.

Wykorzystałem przemyślenia Roberta C. Martina zawarte w jego książkach, które stanowiły bazę do napisanie tego posta.

Profesjonalizm -> odpowiedzialność




1. Nie szkodzić.

Robert C. Martin porównuje oprogramowanie do ludzkiego ciała.
Jedno i drugie to złożone mechanizmy.
Jednak lekarze składają przysięgę, że nie będą szkodzić.
Skoro oni biorą odpowiedzialność na swoje barki to czy my możemy się wymigiwać?

Zawodowiec zawsze bierze odpowiedzialność za swoje błędy.
Nie zwala winy na innych. Tak robi mały człowiek.

Też kiedyś tak robiłem, zwalałem odpowiedzialność na inne rzeczy. Zwalając winę na kolegę zachowujesz się jak skurwysyn. (To jest moja opinia, chyba że ten faktycznie jest tzn szkodnikiem wtedy już nic nie poradzisz nie możesz robić za wszystkich)
Teraz staram się mówić wprost. Prawda czasem jest gorzka ale mówienie jej to symbol odwagi i profesjonalizmu.(rachunek sumienia)

Profesjonalista mówi prawdę niezależnie od sytuacji.

PM powinien doceniać ludzi, którzy grają w otwarte karty i potrafią się sprzeciwić. Ci z reguły są najbardziej wartościowi.

Tip : cały czas staraj się obniżyć współczynnik popełnianych błędów do zera.

2. Nie szkodzić funkcji

Przekazywanie do QA oprogramowania, które nie mamy pewności że działa i wcześniej tego nie przetestujemy - określa Ciebie samego.
Panie Kolego jest Pan pierdolonym partaczem. To jest totalnie nieprofesjonalne zachowanie. (Proponuje zmienić zawód.). Tyle.
(Kto jest odpowiedzialny jak zawali się most ?, uważasz że nikt, że to odpowiedzialność rozmyta ? :) )
Inaczej, Twoje błędy kosztują każdego. Cały team, firmę. Zastanów więc się jeszcze raz. Inaczej zgodziłbyś się pokryć koszty spowodowane przez Twoje błędy?, jeśli chodzi już tylko o bug fixing.

To nie znaczy, że ja nie robię błędów. Robię ich w cholerę. Ale po każdym staram się zastanowić co mogę zrobić by zminimalizować ich ilość.

Mój ulubiony cytat:
Tylko ten co nic nie robi nie popełnia błędów.

Każde znalezienie błędu przez testera powinno wzbudzać w Tobie większą determinację aby powstała sytuacja się już nie powtórzyła.(wszechobecne testy)

Tip : Automatyzuj swoje testy
Tip : TDD

3. Nie szkodzić strukturze
Jeśli zaszkodzisz strukturze naruszysz przyszłość projektu.

Tips:

OCP - podstawowy warunek który musisz spełnić.

Bezlitosna refaktoryzacja - zasada skauta.

Wprowadzanie zmian - potrzeba testów by czegoś nie spieprzyć. To proste.

Zmień instrukcje wyboru w rozwiązanie polimorficzne.

Zwiń hierarchie dziedziczenia w łańcuch dowodzenia.

Oraz moje ulubione: (from Joshua Kerievsky)

Replace Conditional logic with strategy
Replace State-Altering Conditionals with State
From Template method.
Compose Method
Introduce Polymorphic Creation with Factory Method
Move Creation Knowledge to Factory

Tip : nie znasz pojęć które wymieniłem wyżej to zainteresuje się.

4. Twoja atrakcyjność na rynku nie jest zadaniem Twojego pracodawcy.
Jego zadaniem nie jest posyłanie Cie na konferencje czy kupowanie książek.
Jeśli tak to jest jego dobra wola. I jeśli to robi chwała mu za to.

5. Czas na naukę wygospodaruj sobie sam.

Rodzina, prywatne życie nie może być ciągłą wymówką.
20 godz tyg na naukę to 3 godz dziennie  w każdy dzień. Każdy kto nie chce obudzić się z ręką w nocniku powinien to poważnie przemyśleć.

Totalne podstawy Twoje warsztatu bez względu na język programowania byle był on obiektowy:

- GoF
- Solid
- Grasp
- metodologie wytwarzania
- dziedziny
- CI
- artefakty
- UML

Nie wymieniam tu rzeczy bardziej wyrafinowanych. Według mnie :
EIP, Enterprise Patterns, AOP, Clean code, Guava, Joda.
To również podwaliny dobrego warsztatu.
(o Guava i spółce dowiesz się już następnych postach)

6. Ciągła nauka.

Bieda architektowi,  który zaprzestał wytwarzania kodu....
Bieda programistom,  którzy zaprzestali się uczyć nowych języków
Bieda projektantom, którzy przestali się uczyć nowych technik i rozwiązań
Bieda PM, którzy nie śledzą nowych metodyk wytwarzania

Pytanie: chcesz zatrudnić doktora który nie śledzi najnowszych postępów w medycynie?
Jeśli boli Cię głowa to chcesz by:
ktoś leczył Cię jakimś świńskim gnojem ?, albo kazał zjadać korę z drzewa lub pierdolone pokrzywy?
Czy tego który poleci Ci rezonans magnetyczny ?

To samo ma się do programistów, mechaników samochodowych wszystkich.
 
Historia 1.
Teraz jestem na etapie wykańczania mieszkania. Potrzebuje jednak hydraulika. Jak myślisz, pojadę na (wieś) i wynajmę usługi gościa, który wie tylko co to żeliwny kaloryfer umie posługiwać się gwintownicą, gwintować rury i zakładać kolanka ?
Tak jest się to robiło 15 lat temu ?
Czy poszukam gościa który wie jak zaciskać rurki : plastykowe, miedziane, zgrzewać itd.
Który wiec co to jest o-ring i jak to działa. 

Ten przykład do Ciebie nie przemawia i uważasz, że jestem jakimś pojebanym pseudo wizjonerem. Ok.

Historia 2 .
W mieście Łódź, żyje  człowiek. Nie istotne jak się nazywa jest autentyczny wierzcie mi. Informatyk, lat 40 z kawałkiem. Może nie programista ale zajmował się sieciami i help deskiem w fabryce gumowców. Swego czasu był boom ma tego typu buty. Każda laska chciała mieć gumowce(nie wiem po jakiego diabła.)
Żyło mu się dobrze. Wypłata całkiem duża. Spokojna głowa. Brak chęci do nauki, jakiegoś progresu.
Przyszedł kryzys gospodarczy. Zakład upadł. Gość został bez pracy.
Zaczął szukać. Bez skutku. Nikt nie chciał go zatrudnić. W końcu jakaś agencja reklamowa zatrudniła go robienia jakiś prostych grafik czy czegoś podobnego.
Płaca 600zł miesięcznie. Problem praca była pod Łodzią, miejscowość nie ma tu znaczenia. Dojazd pochłonął prawie całą jego pensję.
Stan obecny. Na garnku żony.
Dziękuje.

Mogę przykłady podać dalej. Są smutne coraz bardziej.
Hasło: Mentalność to słowo klucz. Nikt nie będzie stał z batem i chłostał jeśli drugi nie chce dla siebie i swojej przyszłości dobrze. Jego wybór :)

Nie mówię tu o pracownikach administracji państwowej. Oni mogą nic nie robić. Odpierdolą 8 godzin a potem błogi sen i relaks.

7. Twoje źródła wiedzy:
- książki
- twitter
- blog
- grupy tematyczny
- konferencje
- youtube, etc


8. Ciągłe ćwiczenia zwiększają wydajność.

Kata - prosty problem programistyczny, który należy rozwiązać.
Celem nie jest wymyślenie sposobu rozwiązania problemu bo już każdy zna jego rozwiązanie. Celem jest ćwiczeniu umysłu.
Kata to ćwiczenie refaktoryzacji, wzorców projektowych, skrótów klawiszowych, specyfikacji danego języka.

Uruchamiając projekt w danej dziedzinie przeczytaj przynajmniej jedną książkę, która wprowadzi Cie w dziedzinę problemu.

Spróbuj też poznać specyfikę problemu. Porozmawiać z ludźmi, klientem etc.

Tip : Dobre praktyki wypracujesz sobie dopiero po kilku projektach o podobnej dziedzinie problemu. Wtedy będziesz wytwarzał zdecydowanie szybciej.

9. Problemy pracodawcy są Twoimi problemami.

10. Czy Twój projekt to domek z kart ? - oceń to sam.

11. Sztuka odmawiania.

Kłamstwo nie popłaca. Nie obiecuj że coś zrobić jeśli na to nie najmniejszych szans. Inaczej wychodzisz na kompletnego durnia i fajtłapę przez swoim przełożonym a jednocześnie wewnętrznie czujesz rozdarcie, bo okłamujesz częściowo sam siebie.

Mój ulubiony cytat to :

'Najgorszy rodzaj niewolnictwa to być niewolnikiem swojego strachu'
                               Vitali Klitschko - former heavyweight WBC champion


12. Zawsze negocjuj - z reguły obie strony muszą iść na kompromis.


dalej ->







Brak komentarzy:

Prześlij komentarz