TDD is dead czyli telenowela dla jajogłowych

David H Hannson, autor Ruby on Rails opublikował artykuł: http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html no i poszło… mleko się rozlało. Burza większa niż o sosnę (tą rozdartą – nie o brzozę, brzozy są niepolityczne).

tdd

Uncle Bob napisał http://blog.8thlight.com/uncle-bob/2014/05/11/FrameworkBound.html ale jak wieść gminna niesie to jest wersja politycznie poprawiona bo czyjeś uczucia religijne zostały obrażone – oryginalna wersja jest jeszcze w feedly i/lub cache googla. Generalnie wydarzyło się to tak szybki, że zanim przeczytałem artykuł to był już zmieniony – dobrze że koledzy z zespołu mi o tym powiedzieli bo dzięki nim przeczytałem oba te teksty.

Potem wielka debata Is TDD Dead z Martinem Fowlerem, Kentem Beckiem i Davidem Hannsonem, o której chyba pół internetu grzmiało (https://plus.google.com/events/ci2g23mk0lh9too9bgbp3rbut0k).

Następny odcinek czyli DHH problem http://codon.com/the-dhh-problem

W pracy pół poniedziałku TDD i tego samego dnia polska grupa celebryto.netowa wciągnęła się w telenowelę.

learn to use tdd

Co będzie dalej, gdzie ta telenowela się skończy? Podobno – znowu wieść gminna niesie że w 4 odcinku debaty Fowler – Beck – Hannson ma się okazać, że DHH jest synem (lub ojcem) Uncle Bob-a.

lodowka

Ci co oglądali South Park i pamiętają odcinek z piekłem i niebem wiedzą, że prawidłowa odpowiedź przyjdzie po śmierci (spoiler:  mormoni). Dla mnie na tą chwilę faktem jest to, że TDD jest trudne do ogarnięcia, ale nie trudne w podstawach bo te są łopatologicznie proste. Można je ogarnąć w kilka godzin czy dni. Problem jest taki, że wymaga to olbrzymiej determinacji od programisty oraz ciągłego trzymania się metodyki. Linijka po linijce, kawałek po kawałki dzień po dniu nabierać trzeba doświadczenia w TDD. Dzięki temu już po kilku latach jest szansa, że będziemy mieli wyczucie, kiedy używać TDD a kiedy nie, kiedy pisać wór testów na jedną mała klasę a kiedy napisać 5 testów na wór klas. Unit Testing testuje UNIT czyli jednostkę – jednostka to nie 1 klasa  czy 1 metoda, to może być zbiór klas. Żeby to czuć, kiedy iść w tą a kiedy w inną stronę to trzeba mieć dużo doświadczenia. Wydaje mi się, że czuję to, po ponad 4 latach z TDD (w różnym natężeniu), wydaje mi się, że to potrafię mimo, że jest jeszcze masa do nauczenia przedemną. Jedno jest pewne, TDD nie tworzy architektury i jej nie polepszy. TDD jedynie może zdegradować architekturę jeśli postawimy ołtarzyk tej metodyce. TDD to świetne narzędzie, które wymaga wprawy i umiejętności użycia.

Wg. mojej percepcji świata, TDD to przyszłość, to potężna umiejętność i warto w to inwestować. Jeśli mam rację to super, bo wszyscy przeciwnicy TDD odpadną z rynku i będzie jeszcze więcej miejsca. Jeśli się mylę, no cóż, zawszę mogę usunąć testy i wrócić do mozolnego „przeklikiwania” kodu lub zostać skrytym anonimowym tdd-owcem. Życie pokaże. Tymczasem czas iść do lodówki i mieć nadzieję, że telenowela tam nie zawitała, mieć nadzieję, że ostatni bastion spokoju u chłodu ostał się.

DevDay 2013 – wideo

Wideo z DevDay 2013 jest już dostępne i do oglądnięcia poniżej. Tak wiem, że już wszyscy o tym mówili i napisali ale używam tego bloga czasem jako własnej bazy wiedzy więc to taki wpis ku pamięci.

Jon Skeet – „Back to basics: the mess we’ve made of our fundamental data types”

Patrick Kua – „Implementing Continuous Delivery”

Dariusz Dziuk – „Scaling Agile”

Andreas Håkansson – „Guerilla Framework Design”

Tiberiu Covaci – „SPA Made Breezy”

Hadi Hariri – „Moving the Web to the client”

Ben Hall – „Building Startups and Minimum Viable Products”

Itamar Syn Hershko – „Full-text search with Lucene and neat things you can do with it”

Paul Stack – „Windows – Having its ass kicked by Puppet and PowerShell since 2012”

Marco Cecconi – „The Architecture of StackOverflow”

Dino Esposito – „Mobile is over: Start Planning Multi-Device Web sites Today”

Rob Ashton – „The software journeyman’s guide to being homeless and jobless.”

dotnetconf podsumowanie

Wideo z konferencji dotnetconfpl jest już dostępne. Jeśli jakimś cudem nie mogłeś oglądnąć “na żywo” to poniżej zamieszczam wykłady z moją subiektywną oceną:

1. Maciej Aniserowicz, Testy jednostkowe w .NET.

Bardzo dobry wykład wprowadzający do TDD i pokazujący jak można uniknąć tworzenia setek projektów aplikacji konsolowych aby zobaczyć jak jakąś bibliotekę można użyć. Fajny wstęp do  TDD pokazujący pragmatyczne wykorzystanie. W zespole w którym pracuję, mając tego typu testy, oznaczmy je atrybutem ignore – żeby NCrunch ich nie uruchamiał z automatu – oraz wrzucamy najczęściej do namespace-a Expensive. Może rzeczywiście lepiej wrzucić do oddzielnego projektu.

2. Filip Wojcieszyn, scriptcs – C# na diecie.

Dla mnie świetny wykład pokazujący scriptcs-a. O samym scriptcs pisałem już wcześniej i pokazywałem jak zrobić webapi, którego da się używać (poza wywołaniem z przeglądarki Puszczam oczko). Wykład Filipa wyjaśnił mi kilka rzeczy, kilka innych podpowiedział. Generalnie dla mnie, bardzo mięsny wykład.

3. Jakub Gutkowski, JavaScript dla C# developera

Bardzo zakręcony wykład. Jakub pokazał miejsca, gdzie C#-powcy mogą mieć problemy z JavaScriptem. Generalnie wykład bardzo fajny ale te nawiasy….. za dużo nawiasów, za dużo zależności, “magii” i wiedzy potrzebnej tylko po to, żeby zrozumieć dlaczego JavaScript robi to co robi. Co zrobić, takie jest życie z JavaScriptem (function(){/*fail*/})().

4. Tomasz Janczuk, Node.js, Edge.js i Windows Azure

To mnie sponiewierało, przemieliło, wypluło i zabiło. Połączenie Node.js (którego fanem nie jestem) z C# (którego fanem jestem) w ramach jednego procesu – Tomasz pokazał jak te dwa skrajne światy są połączone. Jak skrajne to są światy obrazuje choćby to, że node.js jest jednowątkowy zaś w C# zabawa z wątkami to nic specjalnie trudnego. Co ciekawe ta hybryda jest używana i to dosyć mocno. Jest taki projekt – Skype. Służy to do rozmów – chyba znany programik. No i Skype wykorzystuje node.js do uaktualniania statusów no podczas wybierania numeru. Część tego systemu wykorzystuje właśnie edge.js do wywoływania “pewnego rodzaju funkcjonalności” która jest dostępna tylko w .net framework. Wiele projektów node.js używa rownież edge.js do komunikacji z MS Sql-em (aby wykorzystać ADO.NET) Najlepsze w tym jest to, że edge.js może komunikować się ze wszystkim co działa na CLR czyli C#, F#, IronPython i wspomniany TSQL). KOSMOS.

5. Maciej Grabek, Windows Phone 8 Tips & Tricks

Ostatni wykład to Windows Phone 8 Tips & Tricks. Bardzo pragmatyczny i lekki wykład. Mimo, że nie piszę pod Windows Phone (ani na inne mobilniaki) to oglądało się przyjemnie. Dla zaczynających przygodę z WP8 to będzie bardzo wartościowy wykład.

Podsumowanie

Świetny pomysł z tego typu konferencją. Świetnie dobrani prelegenci i tematyka. Do tego, fajnie, że był chatroom i twitter, to pozwoliło trochę zmniejszyć wirtualność samego wydarzenia. No i wideo dostępne od razu. Super. Co mi się jeszcze bardzo podobało to tworzenie maszyny losujacej na żywo Puszczam oczko. Generalnie, z chęcią zapiszę się na kolejną edycję