7 aprilie 2011

Ce este documentele de design și ce vrea ei

Am bătut la cap un coleg să facă un design document și cred că nu am fost suficient de convingător în a explica la ce e bun. Încerc să remediez situația în scris și în public.

Dacă ești obișnuit cu un anumit fel de a dezvolta programe, a scrie un document de design pare pierdere de vreme. Cum adică, în loc să scriu cod cum fac ceilalți copii io stau în Word pentru o chestie pe care oricum n-o s-o citească nimeni? Și care peste două luni oricum n-o să mai țină pasul cu codul? Doar așa, de dragul birocrației? Îs super-programator, îmi ies programele perfect din prima. Design documents are for sissies, nu? Cui la ce ajută?

Ei bine, ajută la fel cum ajută fițuicile. Dacă ai petrecut timpul scriind tot ce trebuia scris pe fițuici, înseamnă că deja ai reținut informațiile respective și poți să te duci bine-mersi la examen și să lași fițuicile acasă. Știi suficient ca să nu mai ai nevoie de ele.

La fel și un document de design. Dacă l-ai scris suficient de detaliat încît să convingă pe altcineva care-l citește că știi ce trebuie făcut, că designul îndeplinește cerințele mușteriului, că te-ai gîndit la toate aspectele, că ai tratat toate cazurile, că ai considerat și alte alternative și ai ales-o pe cea mai potrivită atunci poți să și ștergi respectivul document pentru că și-a făcut treaba. Scopul nu e crearea documentului în sine, ci procesul prin care l-ai creat.

O să zici bine-bine, da' nu mai bine mă apuc să scriu direct cod? Găsesc io pe parcurs ce-mi scăpat acuma, bag un refactoring, o piruetă, pam-pam.

Aș zice că nu, pentru că:

  • din cod nu reies alternativele pe care le-ai considerat și motivele pentru care le-ai respins;
  • cînd scrii cod de multe ori te împiedici de obstacole de nivel jos care te fac să-ți pierzi șirul (gen „Cum o fi sintaxa pentru capturile cu nume în expresiile regulate din .NET?" sau „De ce satana nu scrie log4net unde i-am zis să scrie?”). Scrierea unui document îți permite să te concentrezi doar asupra nivelului de design;
  • o eroare de design descoperită acum e mult mai ușor de corectat în Word decît dacă o descoperi după ce deja ai deployat la client.

Cît de formal să fie un document de design? Nu contează. Vrei să fie după șablonul cu antetul firmei și cele 74 de secțiuni obligatorii? N-ai decît. Vrei să aibă diagrame animate cu efecte 3D și ponei roz? Foarte bine. Nu ai decît un txt și niște poze de pe-un whiteboard? La fel de bine. Cum ziceam, important este doar procesul de gîndire al cărui rezultat este documentul de design. (Totuși, un șablon bine făcut te ajută să iei în considerare toate aspectele necesare.)

Alt avantaj e că scrierea unui document de design este un exercițiu de comunicare. Reușești să te faci înțeles? Să-ți transmiți ideile celei care citește documentul? Reușești să convingi pe toată lumea că design-ul tău e optim? Ca la orice altceva, doar prin repetiție devii mai bun și, poate paradoxal, nu poți fi un bun programator fără a fi un bun comunicator (în fond, programele sunt scrise în primul rînd pentru alți oameni și abia apoi pentru calculatoare, dacă am vrea să scriem pentru calculatoare am scrie în assembler).

Toate bune și frumoase, pare corect tot ce zic, mai că v-am convins, nu? Doar că avem niște probleme. Una e că suntem, ca programatori, leneși și, în lipsa unei forțe exterioare, decît să facem ceva care nu e scris cod, mai bine nu facem. Soluția este, cred, ceea ce s-ar numi „team (& company) culture": dacă toată lumea din echipă face asta, dacă așa e obiceiul, fac și eu. Cum să creezi o asemenea cultură acolo unde nu există? Habar n-am. Poate ajută dacă scrii pe un blog pe care nu-l citește nimeni, nici măcar nevastă-ta? :)

Și apoi, chiar dacă există o asemenea cultură, entropia și presiunea datelor limită (na, ziceți voi mai bine „schedule pressure" pe românește) o fac foarte fragilă, una-două se revine la status-quo. E ca la flori, dacă n-o uzi se ofilește

Îmi cer scuze în mod oficial pe această cale metaforelor care au fost maltratate în alcătuirea acestui text.

19 decembrie 2008

Foarte mișto

Să mergi prin zăpadă și să asculți Esau Mwamwaya & Radioclit.

27 mai 2007

La Borders din Redmond Town Center, Alchimistul era trecut la best-seller non-fiction.

P.S.: La Amazon, pentru cei care nu au reușit să înțeleagă metaforele subtile ale auctorelui, Alchimistul are și un subtitlu lămuritor: „A Fable About Following Your Dream”. Eh, nu-i așa că se deschide o cu totul altă perspectivă asupra operei?

25 mai 2007

Acordul predicatului cu subiectul

Am folosit azi, într-un email, Netflix si Scarecrow ca subiecte în doua propoziții. Mi s-a părut interesant că pentru Netflix am folosit singularul („Netflix are doar filme region 1.“) iar la Scarecrow pluralul („Scarecrow au filme din toată lumea.“). În continuare mi se pare corect.

O fi, mă gîndesc, din cauză că Netflix e o corporație impersonală, pe cînd Scarecrow e o chestie mult mai mică, ce poate fi identificată cu indivizii care lucrează acolo?

23 mai 2007

Revelația #2

Tom's Diner nu e Tom's Dinner. Am mai avut o revelație acu' cîteva zile da' am uitat-o.

1 februarie 2007

Titlu

Mi-a venit chef să ascult Dimmu Borgir.

28 ianuarie 2007

To RSS or not to RSS

Observ în ultima vreme, tot mai mult, că există pentru mine doar saiturile care au RSS (sau Atom, care pare mai sexy, doar că "to Atom or not to atom" parcă nu sună la fel de bine). Cînd găsesc un sait care mi se pare interesant, primul lucru mă uit după feed. Dacă nu găsesc, ghinion, slabe șanse să mai revin pe acolo. De ce? De lene. De ce să mă duc eu pînă la sait, cînd Google Reader aduce saiturile la mine?

Exemplu: Zippy the Pinhead, o bandă desenată foarte mișto, da' care n-are feed, așa că tre' să mă mulțumesc cu bucățile care apar din cînd în cînd la Language Log (care are).

(Da, știu, cam lame titlul, asta tre' să fie mama snowclonelor. Apropo, ar fi fain un studiu al snowclonelor în românește.)

26 ianuarie 2007

Harry Potter creează dependență

Nu, pe bune. Îmi tot zic, băiețel, lasă cărămida aia, ai citit-o deja, mai bine pune mîna și citește altceva, ceva mai demn de aerele tale de intelectual. Dar nu, nu mă pot opri. Ce mă liniștește oarecum e faptul că nu mai am decît volumul șase și o bucată din cinci, și după aia îs liber să mă ocup de altele.

21 ianuarie 2007

Marketing…

… mai mult sau mai puțin subliminal: am cumpărat o pastă de dinți de cîteva ori mai scumpă decît alde Colgate și care bănuiesc că nu are nici o însușire magică, pentru simplul motiv că se numea Rembrandt. Da, am mai auzit prostii de alea despre chestii subtile care îți afectează subconștientul ca să te facă să cumperi, și într-adevăr pachetul arăta mult mai „de calitate“ decît cele din jur, dar mi se par bullshit: cine n-are chef să dea atîția bani pe-o pastă de dinți n-o să dea oricîte chestii subliminale ar fi, iar eu cred că aș fi luat-o oricum, pentru simplul motiv că se chema Rembrandt și era prea delicioasă incongruența dintre denumire și produs.

În fond, ce anume e subconștientul ăsta? Încă nu știm prea bine cum funcționează creierul uman, dar ne grăbim să etichtăm o parte a ceea ce face el ca „subconștient“. Cred că o denumire mai potrivită ar fi „chestiile-care-sunt-chiar-și-mai-puțin-înțelese“.

+ / -

+: Sufjan Stevens.

-: indivizii care n-au auzit de YouTube și trimit filmulețe ca attachmenturi.