Agile este o metodologie pentru abordarea dezvoltării de software. Acesta constă din diferite cadre, cum ar fi SCRUM sau Kanban, care ajută echipele de dezvoltare să construiască, să testeze și să adune feedback în mod continuu cu privire la produsul lor.

Agile constă din patru principii esențiale:

  1. Indivizi și interacțiuni asupra proceselor și instrumentelor
  2. Software de lucru peste documentație cuprinzătoare
  3. Colaborarea clienților la negocierea contractului
  4. Răspunsul la schimbarea în urma unui plan

Voi revizui aceste principii mai târziu și le voi da mai mult sens. Pentru a face acest lucru, este important să faceți un pas înapoi și să înțelegeți practicile de dezvoltare software care au fost utilizate anterior.

Cascadă

Dezvoltarea cascadei este o abordare foarte liniară pentru construirea unui produs. Are puțin sau deloc spațiu pentru feedback sau iterație până când produsul nu este complet construit și testat.

Iată cum funcționează: echipele petrec săptămâni (și uneori luni) elaborând documente privind cerințele produsului.

Înainte ca vreun cod să fie scris de fapt, managerii de produse, analiștii și designerii vor realiza împreună un document masiv care prezintă cerințele produsului în detaliu extrem.

Pentru a spune cel puțin, acesta este un proces lung și laborios în care, inevitabil, unele lucruri sunt ratate.

Iată un experiment de gândire simplu. Gândiți-vă la căutarea Google sau la un client căutător de e-mail.

Acum încercați să încercați să imaginați documentul de cerințe pentru aceste produse.

Fără îndoială, lucrurile importante vor fi ratate. Pur și simplu nu se poate concepe cazul de utilizare, amploarea sau scopul modului în care aceste produse vor evolua în timp.

Dacă ați construit un produs – ca constructor solo sau ca membru al unei echipe – probabil că vă puteți raporta la această afirmație.

Când totul este convenit, specificațiile sunt predate echipei de ingineri care apoi construiește produsul în funcție de specificații, de pârghie date calitative și cuantificate și intrări.

Când totul este codificat, testele încep.

Dacă este un produs complex, testarea și remedierea erorilor pot dura săptămâni sau luni, întrucât întregul produs trebuie să treacă printr-o revizuire riguroasă. Atunci când testerii și managerii de produs semnează cerințele de testare, produsul este gata să fie livrat la producție.

Există o serie de neajunsuri în dezvoltarea cascadei și iată câteva.

Lipsa mecanismelor de feedback încorporate

Ce se întâmplă dacă echipa de dezvoltare respectă exact specificațiile și se dovedește că a vedea că prinde viață nu este atât de convingător pe cât a crezut-o echipa de produse? Sau, mai rău, ce se întâmplă dacă a existat o eroare în documentul de specificații?

În dezvoltarea cascadei, nu veți ști răspunsul la aceste întrebări până când produsul nu este deja construit.

Dezvoltarea produsului poate duce la costuri fixe mari. Dacă produsul nu funcționează, aceste costuri ar putea deveni costuri scăzute.

Costurile scufundate sunt dușmanul constructorului, deoarece un cost scăzut este un cost care a fost deja suportat și nu poate fi recuperat.

Ce se întâmplă dacă se schimbă foaia de parcurs?

Acest lucru se întâmplă tot timpul. Se întâmplă pe computerul pe care îl utilizați pentru a citi acest articol, se întâmplă în compania dvs. și se întâmplă la firmele de tehnologie mari și mici.

Ce se întâmplă dacă foaia de parcurs se schimbă și echipa trebuie să-și îndrepte atenția spre altceva? Sub Cascadă, rămâneți un produs inutilizabil. Gândiți-vă: rigiditate.

Din nou, dacă nu vă puteți transforma costurile fixe în ceva flexibil, veți rămâne cu o factură mare și nu veți arăta prea multe pentru ea.

Toată munca dedicată, termenele stresante, calandrarea tablei albe, iar noaptea târzie nu va duce la rezultatele dorite la începutul proiectului.

Produsul colectează praful până când este expediat în cele din urmă

În loc de îmbunătățiri incrementale livrate producției pe o perioadă de timp, metodologia cascadei așteaptă să livreze întregul produs până la sfârșit.

Deși aceasta este o abordare rezonabilă pentru construirea unei mașini, aceasta nu este o abordare excelentă a software-ului.

Software-ul, spre deosebire de mașini, este flexibil în intrările de proiectare.

Oamenii nu pot folosi mașini pe jumătate produse. Dar folosim software pe jumătate construit tot timpul.

Intră Agile

Agile ajută la rezolvarea acestor probleme, permițând echipelor de dezvoltare a produselor să construiască continuu caracteristici care adaugă valoare. De asemenea, permite echipelor să obțină în mod constant feedback cu privire la munca lor și să facă modificări după cum este necesar.

Prin utilizarea metodelor Agile, echipele expediază în mod constant și previzibil bucăți mici de cod către producție într-un ritm rapid.

Odată ce au finalizat orice fel de caracteristică care va adăuga valoare, o testează și o lansează în lume. Aceasta este o abordare iterativă a construcției tehnologice.

În loc să ia luni întregi pentru a construi un produs final și a rula un test end-to-end, dezvoltarea Agile permite echipelor să construiască continuu piese mai mici din produsul final și să le adauge la producție în timp.

Aceasta înseamnă că testarea merge mai repede, deoarece testați doar compatibilitatea celei mai recente bucăți de cod. Acest lucru înseamnă, de asemenea, că utilizatorii și părțile interesate sunt mai fericiți, deoarece pot vedea și utiliza cele mai noi îmbunătățiri ale produselor în mod continuu.

Luați în considerare ambele abordări ale unui exemplu real de cuvânt de remodelare a unei bucătării. Să presupunem că va dura șase luni pentru a face bine treaba de remodelare.

Cascada ar sugera ca antreprenorul și echipajul său să reconstruiască întreaga bucătărie, apoi să dezvăluie întreaga bucătărie clientului după expirarea celor șase luni.

În timp ce treaba se termină în același timp, proprietarul este lăsat în întuneric. Întrebări simple precum cum se întâmplă rămân în mare parte fără răspuns. Cel mai rău dintre toate, proprietarii nu pot folosi nici o parte a bucătăriei până la capăt.

Cu Agile, contractantul ar afla în schimb ce ar putea face echipa lor la fiecare câteva săptămâni, și apoi ar permite clientului să-l vadă și să-l folosească în timp ce remodelau restul.

Poate că pot înlocui dulapurile în prima lună, blaturile în a doua lună, iar până în a treia lună vor instala un frigider și o sobă noi. Nu este un rezultat rău pentru ambele părți!

În cea de-a doua abordare, proprietarul are avantajul de a folosi părți din bucătărie înainte ca totul să fie complet. În loc ca noua sobă să stea acolo și să colecteze praful, este de fapt utilizat imediat ce poate fi folosit.

Și poate proprietarul bucătăriei vrea să schimbe un dulap cu un raft?

Antreprenorul poate planifica acum cel puțin această modificare înainte de expirarea celor șase luni și poate informa proprietarul cum va afecta calendarul proiectului.

Aparent, ambele părți pot lucra împreună și pot comunica în mod transparent pentru a se asigura că rezultatele și munca potrivite sunt realizate.

Acestea sunt unele dintre numeroasele beneficii ale Agile. Ambele părți sunt mai bine.

Încercați să continuați această lecție pe măsură ce învățați noi abilități de dezvoltare pe Routech și aplicați-vă abilitățile pe proiecte.

Să luăm în considerare alte câteva exemple din lumea software-ului

Revizuind cele patru principii ale Agile, putem începe acum să găsim exemple de aplicații Agile în lumile reale și digitale.

Până acum sper să puteți vedea cum aceste principii sunt un atac direct asupra procesului de cascadă.

Principiul # 1: indivizi și interacțiuni asupra proceselor și instrumentelor

A avea un proces solid și un set de instrumente este foarte important în Agile. Cu toate acestea, evaluarea indivizilor și a interacțiunilor față de instrumente permite crearea și obținerea mai multă valoare.

Membrii individuali ai echipei pot inova.

În loc să forțați oamenii să se conformeze unor idei și specificații stricte, le puteți oferi mai multă lățime de bandă pentru a experimenta.

O parte din plasarea indivizilor peste instrumente este experimentarea cu noi fluxuri de lucru. Un exemplu relevant pentru inovația în dezvoltarea de software Agile este codecul, un program de computer care codifică sau decodează un flux de date sau semnale digitale.

Codec H266 / VVC folosește aproximativ jumătate din date pentru a transmite în flux videoclipuri 4K. Și este recunoscut ca fiind cea mai eficientă soluție de codificare pentru viitorul streaming 4K și chiar 4K VR în timp real.

Cum a fost făcută această descoperire? A fost realizat de oameni care foloseau Agile pentru a rezolva problemele de compresie video.

Mai exact, a fost realizat deoarece indivizilor li sa dat libertatea de a construi, testa, experimenta și inova pe o perioadă de timp. Nu li s-a spus să construiască bucătăria de la zero și să revină în șase luni.

Au făcut pași mici în direcția cea bună. Acest rezultat este instructiv.

Iată un al doilea exemplu: când Lastpass a fost achiziționat de LogMeIn, LogMeIn a fost la fel de interesat de tehnologie pe cât erau cultura designului pe care Lastpass a implementat-o ​​pentru a construi produse.

Ce tip de cultură era asta? Unul care a acordat prioritate Agile.

Agile nu numai că aduce produsele pe piață mai repede, dar creează rezultate creative și sinergice care sunt valoroase.

Crearea valorii este încorporată în cultura Agilei.

Principiul # 2: software de lucru peste documentație cuprinzătoare

Acesta ar trebui să fie evident până acum. În loc de specificații detaliate și planificare, scrieți doar câteva rânduri de cod care funcționează.

Testează-l. Obțineți feedback despre asta. Trimite-l.

Apoi, fă-o din nou.

Repeta.

Un exemplu extrem de relevant al acestui proces de repetare se găsește în Formulare pe foc.

Au creat software pentru a facilita colectarea datelor mobile. Nu și-au scris întreaga companie înainte de lansare; au scris câteva rânduri de cod, l-au testat și l-au expediat.

Pe măsură ce aveau impuls, și-au accelerat testarea și pașii iterativi.

Și au repetat ceea ce a funcționat și au aruncat ceea ce nu. Rezultatele vorbesc de la sine.

Principiul nr. 3: Colaborarea clienților la negocierea contractului

Agile promovează o buclă rapidă de feedback pentru a obține feedback-ul clienților și al părților interesate.

Ce ar putea fi mai bun decât să lucrăm înapoi, din ceea ce își doresc clienții și utilizatorii reali?

Am un mentor de afaceri care a sfătuit că, în loc să supraexaminăm ceea ce doresc clienții printr-o planificare interminabilă, păstrați-l simplu. „Atenuați distracțiile”, a spus el.

Am scris despre principiul KISS în Routech și acest sfat este valabil cu siguranță în Agile: construiește ceva mic și vezi dacă le place clienților tăi.

Dacă o fac, continuați.

Principiul # 4: Răspunsul la schimbare în urma unui plan

Buclele de feedback rapid generează schimbări rapide și ajustări. Acesta este ceea ce face Agile atât de grozav pentru echipele de dezvoltare.

Acesta este motivul pentru care ar trebui să-l îmbrățișați.

Foile de parcurs se schimbă întotdeauna, aceasta este o constantă cunoscută. Folosind metodologiile Agile, echipele pot răspunde la schimbări ascultând feedback-ul clienților și făcând ajustările necesare.

Există momente în care a răspunde la schimbare înseamnă să vă ajustați produsul sau să schimbați modul în care credeți despre utilizatori sau despre concurență.

Un exemplu clasic la care studenții agili pot privi în spațiul de comerț electronic este vândând pe Amazon. Cum vă adaptați rapid la concurență? O modalitate este de a construi comunități închise sau de a încerca diferite strategii de lansare a produselor.

Este recomandabil să folosiți soluții tactice și maleabile.

Există un proverb minunat: „Nu putem schimba direcția vântului. Nu putem decât să ne reglăm pânzele. ”

Când mă gândesc la Agile, mă gândesc la această zicală.

Agile înseamnă învățare, Agile înseamnă predare. Agilitatea înseamnă flexibilitate.

Puteți exersa Agile în munca dvs. de zi cu zi sau să luați cursuri online să se dezvolte în continuare.

Unii oameni sunt suficient de inteligenți pentru a prezice ceea ce își dorește clientul. Știu pe ce direcție bate vântul.

Dar pentru noi muritorii, Agile este o metodologie pentru a naviga în jurul deficiențelor noastre în înțelegerea a ceea ce doresc clienții.

Este sistemul care ne permite să ne reglăm constant pânzele.