AGI +1 CHA +5 INT -200

In 2001, un grup de nimeni suferind de Complexul Sf. Paul si-au cumparat un domeniu si au publicat pe el Manifestul Agil. Drept raspuns imi voi permite sa-l citez pe Eddie:

Dear Paul (Saint, apparently),

FUCK OFF!

Who are you? Why do you keep sending us letters? You arrogant bastard, to send a letter to an entire city! What do you want us to do, put this up on a board or something? Just fuck off!

Din pacate oamenii sint prosti si fricosi, asa ca jegurile astea despre prieteni imaginari si ritualuri care te scapa de moarte si/sau overtime si bug-uri prind repede. Zece ani mai tirziu avem o religie in toata regula bazata pe manifestul muistilor si practicantii sint la fel de agresivi si dezgustatori ca gunoaiele alea care se zbat sa bage creationismul in programa scolara la americani. Hasa diga Eebowai!

In caz ca ati locuit intr-o pestera pe Marte din 2001 pina acum si nu stiti ce-i Agile, o sa va explic pe scurt. Agile este o metodologie de project management care ne spune ca atunci cind avem de facut un proiect, trebuie sa-l spargem in task-uri cu dimensiuni de bun simt si sa le facem. Atit. Asta e singura chestie concreta din Agile. Serios.

Sigur, nu poti construi o religie doar pe o revelatie, chiar si pe una clar venita din sfere mai inalte, inaccesibile muritorilor de rind, cum e asta. Ai nevoie de profeti, misionari, adunari, organizatii, cuvinte magice, precepte, carti, ritualuri si prosti; multi prosti care sa infecteze si mai multi prosti cu Revelatia. In concluzie, Agile are SCRUM, Extreme Programming, stand-up meetings, sprinturi, porci, gaini, timeboxes, sashimi, scrum masters, kanban, kaizen, conferinte si un trilion de principii abstracte fara nici un fel de aplicabilitate sau relevanta practica. Da, porci; in caz ca nu stiti, in jargonul agil programatorii se numesc porci. Chestia asta ma face sa suspectez ca in agilitate e ca-n crestinism: aia de la virf sint niste infecti cinici care stiu ca totul e o mare vrajeala menita sa controleze prostii si sa le ia banii, dar simt nevoia sa-si si umileasca supusii ocazional pentru amuzamentul propriu, asa ca ii pun sa mearga in genunchi in jurul meselor, respectiv le spun ca numele Luminat pentru profesia lor este “porc”; porc imatur care pute, mai exact. Va explic mai jos cum e cu putoarea, dar pina ajungem acolo as vrea sa va inchipuiti ce misto e in prima zi de lucru intr-o echipa de agili, cind vine project managerul la tine si-ti spune ca esti un porc.

E amuzant sa vezi cum incearca victimele sa implementeze agilitatea in ograda proprie, dar cel mai amuzant e sa-i vezi p-aia care cred ca au reusit. Nu e nimic de reusit, pentru ca in afara de citeva ritualuri imbecile la care vom ajunge imediat, Agile este o metodologie care se remarca prin faptul ca nu specifica nici o metoda. Totul este optional si dupa ce dai la o parte metaforele jenante si citatele din karatisti si frecatori de menta chinezi ramii cu indicatii pretioase marca Captain Obvious gen aia cu despartitul in task-uri sau aia ca dupa ce faci niste treaba, e o idee buna sa ramii cu mai putine chestii de facut decit la inceput (pe bune, asta chiar e un pilon al agilitatii). Partea misto, ca la orice religie cu pretentii, este ca modul vag si intortochiat in care sint formulate directivele sacre baga in ceata mintea prostanilor practicanti, care inteleg ce pot si aplica cum vor, iar daca le iese, o pun pe seama agilitatii. Daca nu iese, e vina lor ca n-au respectat litera legii si n-au crezut cu suficienta devotiune in puterea agilitatii. Foarte misto e si cum discursul subiectilor trece de la “hai ba sa facem si noi o treaba” la ceai chinezesc, koan-uri, software crafstmanship, filmari pe balcoane si alte cacaturi gretoase.

Ajunsi in punctul acesta al analizei, se impune sa ne uitam mai cu atentie la profilul si activitatea celor care raspindesc cuvintul agilitatii in lume. Ce mari realizari au avut Parintii Agilitatii si ce proiecte indispensabile pentru umanitate s-au dezvoltat mai curat si placut uscat ca urmare a folosirii acestei metodologii? Ei bine, aia care chiar au facut software inainte sa devina agili (jumatate din ei se ocupa doar cu conferintele si datul cu parerea) au facut state de plata si site-uri. Acum nu ca ar fi ceva intrinsic injositor in proiectele de genul asta, dar totusi, mai dati-o in pula mea. Pai evident ca ajungi sa aberezi milioane de pagini si mii de ore de conferinte despre clienti care se razgindesc si programatorul social, daca tu faci site-uri de dating si agende pentru cabinete stomatologice. Nu-i chiar limita cunoasterii, virful tehnologiei, punctul focal al cercetarii in programare, nu? E vorba de cod care se scrie singur. Cineva trebuie sa-l scrie, dar nu conteaza cine. Normal ca incepi sa spui ca programatorii sint porci si conteaza mai mult sa fie “sociali” decit sa stie sa programeze, daca singurii programatori pe care ii cunosti sint aia care calculeaza impozite pe salarii. La fel de normal, daca esti manager la asemenea proiecte de mare angajament, te plictisesti si incepi sa-ti pui intrebari in legatura cu utilitatea proprie, asa ca inventezi metafore proaste si principii evidente, ca sa para ca faci si tu ceva important, nu doar te uiti intr-un excel la cite ore au lucrat porcii de programatori vs. cite ore te-au mintit ca o sa dureze. Totusi, e nevoie de un grad foarte mare de nesimtire sa bati dupa aia toba despre cum trebuie sa programeze oamenii si sa te dai in spectacol despre pair programming sau ce inseamna sa fii programator bun. Sugeti pula, ba. Eu nu vin la voi in birouri sa va spun cum sa mutati cartile la solitaire sau cum sa comandati pizza cind se lasa cu overtime, asa ca as aprecia daca nici voi nu ati lansa in eter pareri despre cum trebuie sa scriu eu cod, sau cum sa ma evaluez, sau cum se dezvolta software in general.

Ziceam mai sus de ritualuri si porci imputiti. Puroaiele astea umblatoare au descoperit ca atunci cind ai de scris cod atit de plictisitor incit ai prefera sa-ti smulgi unghiile decit sa mai stai un minut in fata monitorului, ajuta sa ai un coleg de suferinta. Asa au aparut “pair programming” si “collective ownership”. Pair programming inseamna sa stea doi porci la un calculator, ca atunci cind unul ajunge la limita plictiselii, sa preia celalalt. Ala care sta pe bara are rolul sa-l exaspereze pe alalalt spunindu-i cum ar scrie el codul daca ar fi la timona. Agilii nu pot concepe proiecte in care cineva chiar trebuie sa stea sa se gindeasca cum s-ar face ceva inainte de a scrie codul corespunzator. Ei nu cred ca pot exista experti in anumite domenii, pentru ca la statele lor de plata n-ai cum sa fii expert sau diletant. Daca poti sa aduni numere si te exprimi semi-coerent in PHP, stii tot ce va trebui sa stii vreodata pentru ca sa lucrezi la site-urile lor. De aici si ideea de “collective ownership”, adica oricare din porci poate prelua fara efort orice parte a banalitatii pe care o dezvolta cocina, ca doar nu-i nimic complicat, care sa necesite gindire sau cunostinte speciale. Si tot de aici si ideea ca nu conteaza sa fii programator bun, ci sa ai o personalitate agreabila. Si sa nu puti, si sa faci laba din cind in cind daca n-ai ce fute. Pun pariu ca nu stiati ca Bebe Sexologul si Laura Andresan au pus-o de o carte despre pair programming:

Personal hygiene and health are important issues when pairing. Cover your mouth when you cough. Don’t come to work when you are sick. Avoid strong colognes that might affect your partner.

Working effectively together feels good. It may be a new experience in the workplace for some. When programmers aren’t emotionally mature enough to separate approval from arousal, working with a person of the opposite gender can bring up sexual feelings that are not in the best interest of the team. If these feelings arise when pairing, stop pairing with the person until you have taken responsibility for and dealt with your feelings.

Revin la software craftsmanship, ca ma roade. Software craftsmanship inseamna, in mare, sa faci software-ul asa incit sa fie bine, ca-i mai bine sa fie bine decit sa fie rau. Sa n-ai bug-uri, sa scrii cod pe care sa-l poti citi si peste 6 luni, chestii d-astea la care nu v-ati fi gindit fara sa va zica agilii de ele. Evident, si craftsmanshipu’ asta are un manifest, ca fara un manifest si o petitie online nu mai faci nimic in zilele noastre. La fel de evident, nici o conferinta, nici un site si nici o carte de-a mesterilor nu-ti spune ce sa faci ca sa n-ai bug-uri, ci cel mult iti toarna niste metafore despre unit testing. In consecinta, am incercat sa semnez si eu manifestul cu “sugeti pula”, dar mi-a zis asta:

Astia, ba. Astia ne invata pe noi cum sa fim mesteri programatori, cind ei fac proiecte in care oricine poate face orice si nici astea nu le merg; panselutele astea care isi dau aere filosofice spunind cum urmarind textu’ din stinga au descoperit ca ala din dreapta e indispensabil. Mars inapoi la saiba voastra, ba gunoaielor. Nu intereseaza pe nimeni cum vi se pare voua ca trebuie scris codul.

Bonus: pe site-ul lui Aurel este in desfasurare o discutie despre agilitate. TV preacher-ul de serviciu este Mihai Lazar, un autodenuntat student indragostit de dotniet, care dupa ce zapaceste audienta cu citeva acronime si buzzword-uri bine plasate, termina in forta cu doua citate dintr-un mare emitator de metafore cu spectru larg, Bruce Lee:

Empty your mind, be formless. Shapeless, like water. If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot it becomes the teapot. Now, water can flow or it can crash. Be water my friend.

We don’t rise to expectations, we fall to the level of our training.

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

16 Responses to “AGI +1 CHA +5 INT -200”

  1. DarkByte Says:

    Putin off-topic, da’ am trecut pe la ronua intr-o mini-vizita si ma dispera formularile (nu stau sa le enumar pe toate)
    – “email primar principal personal cel mai citit” – sa mori tu ! cred ca mai bine iti dau o adresa pe care n-o folosesc
    – “P.P.P.P.S. Cere (buget plus liber luni, marti, miercuri) și ți se va da!” – evanghelia dupa Aurelian ?

  2. thefatredguy Says:

    Cand aud de Agile si SCRUM ma gandesc automat la asta : http://www.youtube.com/watch?v=g0cosKhRdbA&feature=watch_response .

  3. voidstar Says:

    astia cu agile ar trebui adunati toti si trimisi pe pluto ( cu provizii considerabile de ceai si filme cu bruce lee ). Ba nu-i mai suport, oricat ma lupt sa le dau the benefit of the doubt, nu-mi iese frate, imping aia cacat cu roaba ca si cum nu mai exista maine. Avea George Carlin un show in care spunea ceva de circle jerk, da nu-l mai gasesc… oricum e descrierea potrivita.. one big transcontinental circle jerk. Gata, nu mai suport, merg sa fumez o tigara. O sa trebuiasca sa trec pe langa astia care is adunati la “scrum meeting” pe drumul catre fumatoare.

  4. Ru Says:

    So what’s the “better” alternative? Here’s something to think about: http://secretsofconsulting.blogspot.com/2011/06/beyond-agile-programming.html

  5. Mihnea Says:

    Alternativa la ce? Daca Agile ar fi ceva mai mult decit povesti inspirationale, s-ar putea discuta de alternative, da’ asa…

    Putem vorbi de alternative la XP. O chestie mai buna decit XP este P, adica sa programezi. Less talking, more doing. Nu ne intereseaza timpenii despre programatori sociali si tensiuni sexuale in perechile de combatanti ezoterici. Daca ai de facut chestii triviale, mina pe tirnacop si ciocu’ mic. Daca ai de facut chestii mai complicate stii oricum ca aberatiile Aurelianistice despre collective ownership si inteligenta emotionala care e mai importanta decit abilitatile tehnice nu se aplica.

    Si la project management se aplica asta cu less talking. Rolul project managerului nu e sa “inspire” si sa “motiveze” cu citate din Bruce Lee si Osho. Era la un moment dat un cretin cu blog care povestea ca PM-ul ideal e o placa de rezonanta pentru porci: cind vine cineva la el sa-l intrebe cum face ceva, el il intreaba doar “dar tu cum ai face?”. Daca vreau ecou, ma duc in baie si tip la gresie. Treaba lui e sa descopere care-s task-urile si dependintele, sa afle estimari pentru ele, sa vada de ce se blocheaza, sa grupeze in milestone-uri, sa taie chestiile pentru care nu e timp si sa comande pizza cind se vine simbata la munca. Chestiile astea sint incompatibile cu inclinatiile de poet ezoterist. E nevoie de o minte analitica care sa inteleaga proiectul si dependintele. Daca te umectezi la metafore cu apa in pahar, n-ai cum sa ai minte analitica, deci mars la Cenaclul Flacara, ca software-ul nu e pentru tine.

    Alta chestie care le scapa conferentiarilor in general si agililor in particular e ca daca o chestie merge la tine, nu e obligatoriu sa mearga si la altii, sau tot la tine la urmatorul produs. De fapt cel mai probabil nu merge. Success story-ul tau e proiectul anulat al altora. Mi-ar placea sa iau niste programatori web d-astia care cred ca TDD este Solutia Finala si sa-i bag in citeva proiecte pe care le-am avut, sa-i vad cum stau sa scrie mock objects mai mult decit mi-a luat mie sa fac tot proiectul, dupa care sa rid de ei ca au mai multe bug-uri decit am eu, pentru ca mock-urile lor sint wishful thinking fara legatura cu realitatea. De fapt si agilii intrezaresc cumva chestia asta cu aplicabilitatea redusa (dar refuza sa inteleaga ce inseamna), ca iti spun ca adevaratul Zen e sa stii atit de bine Agile incit sa-ti dai seama ce reguli poti incalca. Cu alte cuvinte, Agile e orice vrei tu sa fie, cum ziceam si in articol, si ma doare la 3 metri in fata pulii de cum crezi ca l-ai aplicat in echipa ta la proiectul X.

  6. dijkstra Says:

    Blogul asta ar trebui pus ca lectura obligatorie pentru studentii de la calculatoare :). Astia sunt usor impresionati de design patterns si alte basini precum scrum la primul loc de munca.

  7. Gigel Says:

    Cred ca stii foarte bine cum au ajuns diversele metodologii agile asa de respandite in ultimii 6-7 ani: multe proiecte prost gestionate care au esuat din diverse motive, developeri satui de birocratia impusa din metodologiile “clasice” (gen RUP sau CMMI) sau developeri care incercau sa gaseasca o alternativa la “chaos development”..
    Cum nu toti care lucreaza in domeniul asta sunt capabili sa se organizeze singuri si sa si reuseasca in felul asta (ca de altfel in orice domeniu), multi s-au entuziasmat la setul de reguli relativ simple din Scrum sau alte asemenea, care promitea idealul de mult visat: proiecte care nu esueaza, fara o metodologie si hartogarie foarte complexa, o metoda prin care un proiect sa fie de success chiar si cu clienti care nu stiu exact ce vor, vin cu cerinte vagi si se pot razgandi la mijlocul proiectului..

    Normal ca si principiile alea din Scrum, multe evidente si oarecum subintelese pana atunci, ajung sa fie aplicate prost de management (care crede ca poate imbina CMMI cu Scrum ca asa au auzit nu stiu unde), si la fel ca la alte metodologii apar o gramada de “evanghelisti” care doar fac bani din traininguri si certificari..

  8. Mihnea Says:

    Da, evident ca Agile a aparut ca o reactie de panica la birocratia din RUP si celelalte dogme contabilicesti. Problema e ca incearca sa inlocuiasca birocratia cu misticismul. Agile nu e un set de reguli “relativ simple” care duc la succesul proiectelor cu cerinte vagi. Pretinde ca e, dar nu e. In afara de chestiile evidente cu impartit in task-uri, tot ce ne spune e sa “think happy thoughts”, sa avem incredere in proiect, sa “embrace change”, sa fim ca apa in pahar etc. Pun pariu ca daca ii intrebi pe sefii agililor care-i autorul lor preferat, o sa-ti spuna ca-i Coelho.

    La fel de evident e ca XP e o reactie a prostilor la codul plictisitor, dar asta nu-i o scuza pentru halul in care s-a ajuns. Scrierea codului de cacat ca mod de viata si orientare sexuala, FFS.

    La inceput e amuzanta si problema de perspectiva pe care o au cretinii infectati cu Agile si XP. Cum scriam mai sus, in capul lor cacatul ala cu “collective ownership” (ca sa luam un exemplu) se aplica peste tot, deoarece ei vad codul ca pe o insiruire de if-uri, inmultiri cu 1.24 si select-uri pe care le poate scrie oricine. Atit au vazut, n-au de unde sa stie ca exista si altceva. Din pacate devine foarte rapid neamuzant cind incep sa predice revelatia lor de cacat si sa incerce sa-i convinga si pe altii sa faca ca ei. Una-doua te trezesti cu un project manager care s-a plictisit de uitat la youtube-uri funny toata ziua si decide ca trebuie sa fie si el Agil si important, si ca unu’ cu 10 ani de experienta in rendering trebuie sa faca collective ownership (si eventual pair programming) cu junioru’ care pune butoane in inventory screen. Eventual si sa-i plateasca pe amindoi la fel, ca doar scriu toti acelasi cod, porcii dracu’. Acestor comunisti le urez muie.

  9. kellogs Says:

    >>Pun pariu ca daca ii intrebi pe sefii agililor care-i autorul lor preferat, o sa-ti spuna ca-i Coelho

    Lololol.

    Da acum serios, ce e asa mare suparare cu toata treaba asta ? Asta e, manageru tre sa faca si el ceva. Incolo, doar am auzit de agile sau scrum, nu stiu cu ce se mananca.

  10. Tomis Says:

    Eu zic ca supararea este justificata. Din experienta mea limitata Agile se foloseste pentru ca atunci cand un manager face o boacana acesta sa poata spune “asta-i viata, trebuie sa ne adaptam” (sa fim agili, cum s-ar spune). In alta ordine de idei, caietul pe care l-am primit de la firma are “Pigna” scris pe coperta. Subtil.

  11. Tomis Says:

    http://programming-motherfucker.com/

  12. Andrei Rinea Says:

    Nu, clar esti rautacios. La faza cu filmarile de pe balcoane a fost pur si simplu o neintelegere. Cineva i-a spus ca ar avea mai mult success cu filme cu balcoane. Doar ca nu stia jargonul.

  13. Andrei Rinea Says:

    Apropos de “cacaturi jegoase”, pe aia cu donatul de bani la copiii din Africa (ghici a cui idee) o stii?

  14. Andrei Rinea Says:

    … si in loc de kaizen prefer kaizer

  15. Tomis Says:

    Unul dintre semnatarii manifestului a avut o cadere nervoasa si a recunoscut totul:
    http://williamedwardscoder.tumblr.com/post/20054342100/agile-is-a-sham

  16. Tomis Says:

    Wrong link. http://pragdave.me/blog/2014/03/04/time-to-kill-agile/

Leave a Reply

Optionally add an image (JPEG only)