TL;DR:
Am primit pe email o “invitatie” la Manifesto for software craftsmanship gatherings . E din categoria 3G : grozavie groaznica gresita . Pare sa inceapa bine – dar o ia pe aratura imediat.
Pe larg:
Mozaic Works are un blog post despre “Manifesto For Software Craftsmanship Gatherings” .
E vorba despre “meetups, communities, conferences, unconferences” IT. Sa vedem care sunt punctele principale:“We believe software craftsmanship gatherings create the most value to their attendees when they feature:”
1 . “Practical, concrete discussions on code over generic talks Speakers should write or show code”
Aproape de acord. Programarea nu e doar practica sau doar teorie – e cite un pic din amindoua. Da , trebuie sa fie cod . Dar trebuie sa fie si o parte teoretica ( de exemplu , pe mobile trebuie sa intelegi evenimentele din viata aplicatiei inainte sa scrii cod)
2. “Solutions applicable in any language over vendor-specific tool marketing
Discussions should feature techniques usable in more technologies”
Mda si mnu. E adevarat ca design patterns sunt bune – dar in OOP. In programarea functionala unde se aplica SOLID ? Si poate revenim doar la Java versus .NET. In .NET avem cod de Lambda functions . In Java (inca) nu.
Dar poate vorbesc de baze de date . Sa ne gindim la implementari de Sql ( oracle, sqlserver, mysql, postgres ) si de diferente intre abordari ?Ati scrie cod la fel? Programarea in AzureTables este la fel cu cea de la Mongo? Dar RavenDB versus SqlServer ?
Daca te marginesti la cel mai mic numitor comun intre limbaje (exemplu: if ) , atunci da, aproape toate limbajele sunt la fel. Daca treci peste astea, atunci incepi sa dai de diferente – il las pe Andrei Rinea sa faca diferente intre java si .NET “http://blog.andrei.rinea.ro/category/java/”
Agnosticismul asta te face sa uiti ca programatorii nu sunt interoperabili . Limbajul in care programezi te face sa iei anumite decizii.
Mai mult, chiar in programarea pe Windows – Phone, Web, Desktop- in acelasi framework( .NET) tot nu reusesti sa scrii la fel codul . D’apoi daca vorbesc de iOS,Android si Phone – la care implementarile sunt diferite.
3.”Exchange of ideas in an open environment over passive listening
Opportunities should abound to meet and learn with fellow developers around the world working in various environments”
Titlu si descrierea sunt din categoria “Wishful thinking” .
Titlul : da , schimbul de opinii e super ok. Dar asta o fac oamenii – sau nu o fac. E alegerea lor. Nu o sa ii schimbi cu un manifest. Da, ii apreciezi pe cei care iti dau feedback.
Descrierea:
Eu tin un .NET user group din Bucuresti, cu intilniri lunare .Ar trebui , conform manifestului , ca la conferinta sa vina dezvoltatori din toata lumea ( da ,am avut pe un MVP din Estonia ) care lucreaza in RoR. Oare de ce nu or fi venit inca la prezentarile acestea ?
Am niste cerinte de programator pentru a intelege punctul 3:
- Va rog sa enumerati tarile “around the world” – si in cit timp trebuie sa vina programatorii din aceste tari.
- Va rog sa enumerati ce intelegeti prin “ various environments”. Daca vine cineva de la http://www.r-project.org/ credeti ca ar intelege o conferinta avansata de prgoramare Windows Phone? Dar invers ?
- In ce fel v-ati gindit ca ar putea fi realizat acest ”Opportunities should abound ” ? Faceti intelegeri private cu companiile de avioane ca sa ii transporte gratis la conferinte? Daca e asa, vreau si eu gratis la citeva conferinte din America…
4. “Learning by practicing with peers over hearing and forgetting
Practice should be encouraged with formats such as hands-on workshops, open space, code with a stranger or pair programming”
Sa incepem cu cea mai evidenta greseala , cea de logistica .
“Open space” – hmmm.Din definitiile de pe wikipedia , probabil ca se refera la asta: http://en.wikipedia.org/wiki/Open-space_technology . Sa vedem: “The approach is most distinctive for its initial lack of an agenda, which sets the stage for the meeting’s participants to create the agenda for themselves, in the first 30–90 minutes of the meeting or event.” . Si daca eu fac un event in care agenda exista de la inceput ( ca la cel de pe 11 martie ), inseamna ca nu e bun?! Si nu mai pomenesc “participant chairs arranged in a circle;” – cum rezolvati punctul unu, la care speaker-ul prezinta cod si trebuie ca ceilalti sa vada ce scrie ? Cite ecrane puneti si cum, astfel incit cei asezati in cerc sa vada?
Iar celelalte cerinte sunt mai draconice “hands-on workshops, […], code with a stranger or pair programming “ . Asta inseamna ca fiecare sa vina cu laptopul sau sa avem suficiente calculatoare echipate cu TOT ce le trebuie pentru fiecare om( de exemplu, mie sa imi dea Visual Studio – nu as fi la fel de productiv in Eclipse /Java – si ar intirzia dezvoltarea codului ) . Pentru “meetups, communities, conferences, unconferences” IT e destul de dificila conditia.
Rezumat:
Un manifest prost scris si fara aplicatie practica.
PS: Da, stiu diferenta intre “should” si “must”.
- Daca cei de la http://agilemanifesto.org/ ar fi scris cu should, n-ar mai fi ramas nimic …
- Daca toate sunt cu “should”, inseamna ca pot sa nu fie respectate, corect?
- Cele cu “should” sunt implementarea. Ar trebui sa fie cu “must” …
PPS: Da , o sa fac hands-on workshop la Global Windows Azure Boot Camp 2014 Bucuresti. Dar acolo se specifica clar “prerequisites”.
PPPS: O sa ma gindesc la un manifesto in care sa descriu ce am facut la conferintele de programatori(.NET in majoritate , dar am avut si Android / PHP / altele) . Va rog sa ma ajutati !
Eu de ani buni am invatat sa ignor diversele chestii organizate de MozaicWorks, dupa ce am vazut ca interesul principal e sa isi vanda cursurile organizate de firma respectiva..
Nu zic ca nu or fi programatori la care prind chestiile astea de PR (“manifesto” etc..), dar pentru un inginer sau software developer lozincile aste vagi nu inseamna mare lucru.
Tot ce scrie acolo se poate rezuma foarte simplu: “e bine ca prezentarile si conferintele sa fie mai interactive si practice”, ceea ce nu neaga nimeni. In realitate, exceptand worksops care se intind pe mai multe zile sau exercitii de TDD gen code katas, e mai greu de pus in practica.