5 moduri de a repara Entropia software pentru startup-uri
Publicat: 2019-01-21Startup-urile își consumă majoritatea resurselor pentru a ajunge pe piață cât mai curând posibil
Calitatea bună necesită o cantitate mare de timp și cost pentru a fi obținută, iar aici suferă majoritatea startup-urilor
Scrieți și rescrieți o parte integrantă a codului și fă-ți o obișnuință să o faci pe măsură ce mergi mai departe
„Un „startup” este o companie care este confuză cu privire la – 1. Care este produsul său, 2. Cine sunt clienții săi 3. Cum să câștigi bani.” – Dave McClure, fondator 500 Startup-uri
Pe parcursul călătoriei sale, un startup tehnologic are trei pârghii de succes: cost, viteză și calitate.
Din păcate, puteți alege doar două odată. Deci, dacă alegeți viteza și costul, s-ar putea să trebuiască să sacrificați calitatea. Sau, dacă ai ales viteza și calitatea, probabil că te va costa milioane. Această alegere a două peste trei duce la entropia software, care este un caz de „ceea ce s-a făcut nu poate fi anulat”, așa cum spune Lady Macbeth, sau în termeni tehnologici, ați spune: „Într-un sistem închis, cum ar fi tehnologia software, un epuizarea calității produsului nu poate fi îmbunătățită într-o perioadă de timp.”
Vom discuta mai multe despre entropia software, factorii care conduc la aceasta și soluțiile posibile. Înainte de aceasta, este important să înțelegeți ce duce la entropia software.
Trei pârghii ale startup-urilor
Viteză
Odată ce intri în apele startup-urilor, îți dai seama că timpul este resursa cea mai limitată dintre toți cei trei factori menționați mai sus. Până când un startup începe să vadă o anumită tracțiune în ceea ce privește veniturile, nu este niciodată numită companie.
Pentru a folosi cât mai bine cantitatea bootstrapped, un produs rapid numit de obicei „versiunea beta” și adesea de „calitate redusă” (comparativ cu produsul obiectiv), este lansat pentru a capta piața cât mai curând posibil.
Startup-urile își consumă majoritatea resurselor pentru a ajunge pe piață cât mai curând posibil, depunând toate eforturile pentru a atinge „viteza”, care în cele mai multe privințe este cea mai populară pârghie dintre cele trei.
Cost
În comparație cu timpul, costul este tangibil în toate sensurile. Este ritmul inimii unui startup.
„Există doar două priorități pentru un startup: câștigarea pieței și nu rămânerea fără numerar.” – Ben Horowitz
Cu cât este mai mare soldul în cont, cu atât supraviețuiți mai mult. În faza inițială a unui startup, majoritatea resurselor sunt cheltuite pentru aranjarea unor active importante (a se citi și datorii) pentru organizația ta, cum ar fi plata pentru birou, mobilier, internet, salarii și multe altele.
De cele mai multe ori, startup-urile se luptă să-și permită dezvoltatorii de top din industrie din cauza constrângerilor bugetare. De obicei, codificatorii de top sau managerii superiori sunt lăsați pentru mai târziu, cu intenția de a-i angaja atunci când intră banii.
Calitate
Munca bună este scumpă, munca grozavă este mai scumpă, iar munca de calitate are un cost excepțional. Calitatea este cel mai greu de atins. Calitatea bună necesită o cantitate mare de timp și costuri pentru a fi obținute. Și aici suferă majoritatea startup-urilor.
Majoritatea startup-urilor încep cu fonduri limitate și se străduiesc să obțină profit cât mai curând posibil. Ei își propun să fie pregătiți pentru producție și să vândă înainte de a rămâne fără capital. Până când compania se află într-un stadiu de creștere, un antreprenor se străduiește să producă rapid și să pătrundă pe piață. Acest lucru le permite acestor startup-uri să dobândească cote de piață și să colaboreze pentru a construi pe baza feedback-ului clienților.
Majoritatea companiilor încep cu o „versiune beta” care poate genera o anumită tracțiune și își poate finanța cerințele pe măsură ce urcă pe scară pe o piață caracterizată de concurență severă pentru produsul lor.
Startup-urile angajează de obicei dezvoltatori și ingineri noi (puțini au bugetul necesar pentru a angaja dezvoltatori seniori) care le înțeleg cerințele, au un anumit simț al dezvoltării și pot crea produsul cu cea mai mică cantitate de resurse. Și fără îndoială, acești dezvoltatori vin la un cost mai mic. Sunt ușor de modelat și pot lucra adesea în schimburi ciudate.
Raghav Chandra, co-fondator/CTO, Urbanclap, spune
„Calitatea este adesea privită ca un compromis asupra vitezei (sprinturi mai lungi, mai multe scriere/testare a codului etc.) și costuri (mai mulți ingineri, infrastructură mai bună, etc.). Cu toate acestea, în etapele mai tinere, calitatea bună este un impuls uriaș pentru viteză și cost.
Calitatea are multiple aspecte: este designul arhitectural (!= infra) care joacă cel mai mare efect în primele zile.
Cea mai mare pierdere de timp are loc fie la găsirea de erori (care trec prin lanțul de apeluri), fie la construirea de funcții pe coduri prost proiectate – ambele produse de segregare proastă și de întreținere a software-ului.”
Pe măsură ce compania începe să crească și să facă profit, apare cerința de a construi un produs stabil. Versiunea anterioară a produsului creat trebuie îmbunătățită, iar codurile trebuie reluate.
Pe măsură ce clienții încep să apară, calitatea devine curând o prioritate. Pentru a îmbunătăți această calitate, în echipă se adaugă un angajat cu mai multă experiență și o mai bună înțelegere a pieței. Dezvoltatorii seniori care vin cu un cost mai mare sunt angajați pentru a lucra la produsul existent. Acești dezvoltatori își petrec cea mai mare parte a timpului îmbunătățind liniile vechi de cod, în timp ce dezvoltă rapid funcții noi, de cea mai bună calitate.
Fixând linii vechi de cod pentru dezvoltarea de noi funcții, majoritatea dezvoltatorilor se luptă să obțină rezultatul dorit. Dar pe măsură ce lunile trec și cu toate eforturile echipelor de a îmbunătăți un produs, calitatea refuză să se îmbunătățească.
Acest factor este denumit entropie software .
Ce este entropia software?
Pe baza definiției Wikipedia, în ceea ce privește a doua lege a termodinamicii într-un sistem închis (unde nu se realizează nicio intrare sau ieșire), dezordinea nu poate fi redusă într-o perioadă de timp.
Această lege pare să fie relevantă chiar și în cazul sistemelor software; pe măsură ce un sistem este modificat într-o perioadă de timp, dezordinea lui tinde doar să crească mai degrabă decât să scadă cu tot efortul.
Pe măsură ce noii dezvoltatori încearcă să îmbunătățească fragmentul de cod existent pentru a îmbunătăți calitatea, calitatea produsului se îndepărtează din ce în ce mai mult de rezultatele dorite. Pe măsură ce modificările sunt făcute pentru a corecta liniile de cod existente, „entropia” continuă să crească, ceea ce duce la un cod mai complex, care este greu de remediat. Acest lucru duce adesea la frustrare în rândul dezvoltatorilor și inginerilor de software. De cele mai multe ori, startup-urile în creștere iau calea grea de a scrie coduri de la zero pentru a remedia această entropie.
Recomandat pentru tine:
În cartea The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt și David Thomas scriu:
„Entropia software-ului este contagioasă și, dacă nu este controlată, devine o epidemie.”
Atunci, cum putem rezolva problema și care ar fi cele mai bune măsuri pentru a angaja un dezvoltator care poate produce lucrări de calitate în mai puțin timp și buget?
Deci, ar trebui startup-urile să se concentreze pe cost, viteză sau calitate?
Anand Thaker, CEO și fondator, Intelliphi spune:
„Calitatea sistemului ar trebui să atingă un prag minim, astfel încât să nu creeze dureri de cap constantă cu experiența utilizatorului”
Există excepții în care sistemele operează operațiuni critice sau de moarte.
În aceste etape incipiente, startup-urile încă își dau seama de potrivirea produsului-piață. Într-o lume zgomotoasă și extrem de competitivă bazată pe SaaS, potrivirea produsului-piață face sau distruge un startup. În plus, dinamica echipei și conducerea echipei sunt, de asemenea, într-o etapă de dezvoltare rapidă. Lean startup fail-rapid-cheaply este o filozofie solidă din acest motiv. Considerați-o prima provocare de entropie.
Pe măsură ce piața produselor se solidifică, un startup fie plănuiește reconstrucția calității pe părți, fie pe întreaga platformă. În acest moment, mergând mai departe, eforturile de calitate care se traduc în experiențe mai bune pentru clienți influențează creșterea. O creștere bună oferă o finanțare mai mare și reținerea clienților.
Personal, prefer startup-urile conduse de produse și fondatorii de startup-uri. De obicei, soluțiile și viziunea sunt robuste, iar abordarea lor încorporează reziliența... iar ieșirile și multiplii lor sunt mult mai mari (de 3 până la 5 ori mai mult decât alte startup-uri tipice). Pentru aceste tipuri de startup/fondatori, este foarte probabil să respecte entropia, cu toate acestea, chiar și înțelegerea lor a etapelor anterioare se referă la viteză și capacitatea de a câștiga un impuls inițial critic.”
Cum pot startup-urile să reducă entropia software-ului?
Începeți cu o tehnologie minimă
UrbanClap CTO vorbește despre utilizarea tehnologiei minime și reutilizabile ca fiind „incapacitatea de a segrega în mod corespunzător preocupările, ceea ce duce la designuri proaste și umflate ale echipelor și costuri de infrastructură supra-umflate. Pentru a o rezolva bine, cea mai mare și cea mai importantă pârghie este de a promova cultura designului arhitectural intenționat.
- Cultură puternică de revizuire a designului, concentrată pe modularitate și proiectare intenționată pentru reutilizare
- cadre peste orientări – cu echipe mici, evanghelizarea celor mai bune practici este un proces lent. Este mai bine să „automatizezi” cele mai bune practici de către ingineri care construiesc cadre și instrumente pentru a standardiza diferite piese de inginerie.”
Majoritatea startup-urilor încep cu o anumită idee și evoluează pe o perioadă, adăugând idei noi, caracteristici și uneori se transformă într-un produs complet nou. Asigurați-vă că tehnologia A pe care o utilizați în primele zile ale fondului de ten este compatibilă cu tehnologia B care se poate îmbina cu tehnologia C pe care o puteți utiliza în viitor.
Pe măsură ce viziunea unei companii evoluează, la fel evoluează și produsul și diverse tehnologii sunt introduse (sau perturbate) pe parcursul acestei călătorii. Asigurați-vă că utilizați o tehnologie minimă până când produsul dvs. este stabil și gata de utilizare. Optimizați-vă codul.
Luați în considerare optimizarea codului
Scrieți și rescrieți o parte integrantă a codului și fă-ți o obișnuință să o faci pe măsură ce mergi mai departe. Acest lucru vă ajută să țineți o evidență a întregului cod care se lansează în partea de sus a unui produs lucios.
Scrierea unei părți integrante a codului ajută un nou angajat să revizuiască părți importante înainte de a trimite un nou commit. Părțile integrale ajută la diferențierea părții bune a codului de cea proastă.
Verificați din nou comiterile
Ai comis vreodată un cod? Dacă nu, puneți-l pe lista dvs. de găleți.
Este o măsură a efortului și angajamentului depus de dezvoltatori într-o organizație. Primul cod comis este celebrat în majoritatea startup-urilor. Este timpul să verificați din nou aceste comite. Nu primul, nu ultimul, ci toate.
Faceți obligatoriu ca colegii să treacă prin toate angajamentele de cod pentru a vă asigura că nu se lasă piatra nereturnată în obținerea codului de cea mai bună calitate.
Nu uitați de instrumentele de evaluare în timpul angajării
Într-o perioadă de timp, îți vei da seama că nu poți justifica calitatea proastă a codurilor clienților tăi, dând vina pe timp și cost.
Utilizarea software-ului de evaluare a tehnologiei de la prima angajare vă asigură că aveți de-a face cu angajați care vă înțeleg cerințele și sunt capabili să obțină rezultate sub presiune.
Fiecare angajare greșită într-un startup costă aproape 18.000 USD, de la salariu și beneficii până la toate procesele implicate în angajare - cel mai important, orele de interviu și evaluare petrecute de o echipă mică, care lucrează la proiecte importante.
Software-ul tehnic de recrutare vine cu caracteristici precum mai multe limbaje de programare, crearea automată a testelor și rapoarte detaliate ale candidaților. Funcțiile extinse de plagiat ajută echipele să rămână libere de bătălia obișnuită de a „a ține un ochi”.
Sarcini precum „Proiectul Java” (parte a unui proiect existent care este partajat ca sarcină) ar putea fi partajate cu candidații care lucrează într-un mediu de codificare real, comitând coduri reale, ceea ce oferă imaginea corectă a muncii care trebuie făcută.
Fă-ți tema
Nu în ultimul rând, fă-ți temele. Urmărește influenți, citește cărți, conectează-te cu oameni dintr-un domeniu similar.
Există o mulțime de oameni care au muncit din greu pentru a îmbunătăți entropia software în organizația lor.
Anand Thaker spune:
„Cunoașterea și comunicarea sunt esențiale pentru îmbunătățirea entropiei. Am experimentat entropia atunci când are loc o plecare a unui membru al echipei care avea cunoștințe profunde într-o parte a sistemului.
Un altul este atunci când anumite părți ale software-ului rămân neatinse câteva luni sau ani. Asigurați-vă revizuiri regulate ale acelor capabilități și ale codului/logicii de bază.
De asemenea, luați în considerare să setați un ton/cultură filozofiei dezvoltării.
Entropia va exista întotdeauna, oricum reducerea creșterii acesteia este o artă. În calitate de lideri tehnici sau executivi, este posibil să știți deja acest lucru, dar dezvoltarea de software este un proces disciplinat. Membrii echipei bune sunt mândri de munca lor. Recunoașterea acestui efort din partea colegilor lor este un drum lung.” Discutați și discutați despre învățările pe care oamenii le-au învățat de-a lungul timpului.
Concluzie
În faza lor inițială, startup-urile ar trebui să se concentreze pe calitate?
Calitatea proastă a codului a fost un motiv major pentru eșecul multor startup-uri. S-au pierdut mult timp, bani și eforturi pentru a-l îmbunătăți de-a lungul unei perioade de timp. Comentariile simple precum „codul este rău” pentru a „îmbunătăți această linie” sunt mai bune decât să nu faci nimic pentru a îmbunătăți codul.
Startup-urile sunt un fenomen economic care deschide noi baze și schimbă lumea.
Sugestiile lui Raghav Chandra pentru startup-urile care suferă de entropie sunt „Pentru echipele mai mici, am găsit o pârghie mai bună în a avea mai multe echipe și a menține organizația uniformă, în care toată lumea este la îndemână.
În calitate de lideri tehnologici / manageri, este important să pregătiți echipa pentru a „gândi” mai bine. Eforturile depuse pentru a gândi mai bine sunt cele care ajută, ceea ce duce la mai puțin timp pentru a remedia lucrurile mai târziu.
Iar brainstormingul și gândirea profundă înainte de implementare nu reprezintă un compromis asupra timpului sau costurilor – este într-adevăr cel mai ieftin mod de a construi pentru calitate la nivel de sistem.”
Este timpul să ne pasă de entropie și să angajăm cei mai buni dezvoltatori care ne pot ajuta să o reducem din produsele pe care le construim.