poniedziałek, 1 kwietnia 2013

Decisions, decision, Dan North

> Ręczne wykonywanie czynności, które można zautomatyzować, nie zawsze jest bezsensowne.
Uczymy się. Dostrzegamy, co zmienić, co można poprawić, co już nie ma sensu. Znając coś dobrze, szybko zauważymy niechciane zmiany. Kiedy automatyzować? Kiedy poznamy coś na tyle dobrze, że zaczniemy się nudzić.

> Spike and stabilize
Coś dla fanów TDD, którzy zapomnieli że można inaczej. TDD nie jest dobre do eksperymentowania. Eksperymentując, gdy jeszcze nie jesteśmy pewni, co i jak chcemy osiągnąć - po prostu piszmy i próbujmy. Jak już zrozumiemy, co i jak chcemy zrobić, można zacząć pisać testy. Tzn. kilka testów - trochę kodu, kilka testów - trochę kodu. Nie piszemy wpierw wszystkich testów, a później całego kodu. It's evil.

X: Writing tests at the begining *is* better, even with experimenting! How else do you fire it to see if it works?
D: I write main method.
X: But writing tests is faster!
D: Well, I'm pretty fast at writing main...

D: It's not always easy to get audience to join the discussion. When I was in Finland and tried the same thing, a guy came to me and said: 'Listen: we pay - you talk.'

> Nie spieszmy się z podziałem kodu na komponenty. Na wszystko przyjdzie odpowiedni moment. Na samym początku tylko utrudni to pracę. '10 for style, 0 for value.'

> Używamy obiektów, by pisać w sposób funkcyjny.
Co chcemy zrobić? Weź dane, przekształć, prześlij.
Co robimy? Weź dane... Czekaj, czekaj, nie jestem jeszcze gotowy. Konstruktor, zależności... o, ta jeszcze nie istnieje - kolejny konstruktor, pakujemy dane w dto, przesyłamy, rozpakowujemy, przetwarzamy, pakujemy ponownie, wysyłamy.

> Naucz się języka funkcyjnego nawet, jeśli nie zamierzasz go używać. Nauczysz się myśleć w inny sposób.

> Actors/CSP
D: Who understands thread based concurrency in Java? I guess we have Doug Lea here. If anyone alse has risen a hand, I won't believe him. It's really hard.

> Don'tRepeatYourself/Decoupled
'Sometimes just copy and paste. Let it mutate. You reuse idea, not code.' Dlaczego? By ograniczyć zależności. Coupling is evil.

> Podsumowując: 'Know what you're trading off and you can make decisions.'