5 modi per correggere l'entropia del software per le startup
Pubblicato: 2019-01-21Le startup drenano la maggior parte delle loro risorse per raggiungere il mercato il prima possibile
Una buona qualità richiede una grande quantità di tempo e costi per essere raggiunta, ed è qui che soffre la maggior parte delle startup
Scrivi e riscrivi una parte integrante del codice e prendi l'abitudine di farlo man mano che vai avanti
"Una 'startup' è un'azienda confusa su: 1. Qual è il suo prodotto, 2. Chi sono i suoi clienti 3. Come fare soldi." – Dave McClure, fondatore di 500 startup
Durante il suo viaggio, una startup tecnologica ha tre leve del successo: costo, velocità e qualità.
Sfortunatamente, puoi sceglierne solo due alla volta. Quindi, se scegli velocità e costo, potresti dover sacrificare la qualità. Oppure, se hai scelto velocità e qualità, è probabile che ti costi milioni. Questa scelta di due su tre porta all'entropia del software, che è un caso di "ciò che è stato fatto non può essere annullato", come dice Lady Macbeth, o in termini tecnologici, diresti: "In un sistema chiuso come la tecnologia software, un l'esaurimento della qualità del prodotto non può essere migliorato in un periodo di tempo.
Discuteremo di più sull'entropia del software, sui fattori che la portano e sulle possibili soluzioni. Prima di ciò, è importante capire cosa porta all'entropia del software.
Tre leve delle startup
Velocità
Una volta che ti addentri nelle acque delle startup, ti rendi conto che il tempo è la risorsa più limitata di tutti e tre i fattori sopra menzionati. Fino a quando una startup non inizia a vedere una certa trazione in termini di entrate, non viene mai definita un'azienda.
Per sfruttare al meglio la quantità di bootstrap, viene rilasciato un prodotto rapido solitamente chiamato "versione beta" e spesso di "qualità modesta" (rispetto al prodotto obiettivo), per conquistare il mercato il prima possibile.
Le startup assorbono la maggior parte delle loro risorse per raggiungere il mercato il prima possibile, impegnandosi al massimo per raggiungere la "velocità", che nella maggior parte dei casi è la leva più popolare delle tre.
Costo
Se confrontato con il tempo, il costo è tangibile in tutti i sensi. È il battito cardiaco di una startup.
"Ci sono solo due priorità per una startup: vincere il mercato e non rimanere senza liquidità". – Ben Horowitz
Più è il saldo nel tuo account, più a lungo sopravvivi. Durante la fase iniziale di una startup, la maggior parte delle risorse viene spesa per organizzare attività importanti (leggi anche le passività) per la tua organizzazione, come pagare l'ufficio, i mobili, Internet, gli stipendi e molto altro ancora.
Il più delle volte, le startup faticano a permettersi i migliori sviluppatori del settore a causa dei vincoli di budget. Di solito, i top coder o i senior manager vengono lasciati per dopo, con l'intenzione di assumerli quando il denaro scorre.
Qualità
Un buon lavoro è costoso, un ottimo lavoro è più costoso e un lavoro di qualità ha un costo eccezionale. La qualità è la cosa più difficile da raggiungere. Una buona qualità richiede una grande quantità di tempo e costi per essere raggiunta. Ed è qui che soffre la maggior parte delle startup.
La maggior parte delle startup inizia con fondi limitati e si sforza di realizzare profitti il prima possibile. Mirano a essere pronti per la produzione ea vendere prima che esauriscano il capitale. Fino a quando l'azienda non è in una fase di crescita, un imprenditore si sforza di produrre rapidamente e di penetrare nel mercato. Ciò consente a queste startup di acquisire quote di mercato e collaborare per sfruttare il feedback dei clienti.
La maggior parte delle aziende inizia con una "versione beta" che può generare un po' di trazione e finanziare i loro fabbisogni mentre salgono la scala in un mercato caratterizzato da una forte concorrenza per il loro prodotto.
Le startup in genere assumono nuovi sviluppatori e ingegneri (pochi hanno il budget per assumere sviluppatori senior) che comprendono le loro esigenze, hanno un certo senso dello sviluppo e possono creare il prodotto con la minor quantità di risorse. E senza dubbio, questi sviluppatori hanno un costo inferiore. Sono facili da modellare e spesso possono lavorare in turni dispari.
Raghav Chandra, co-fondatore/CTO, Urbanclap, afferma
“La qualità è spesso vista come un compromesso su velocità (sprint più lunghi, più scrittura/test di codice, ecc.) e costi (più ingegneri, migliore qualità infra, ecc.). Tuttavia, nelle fasi più giovani, una buona qualità è un enorme aumento di velocità e costi.
La qualità ha molteplici aspetti: è il design architettonico (!= infra) che gioca la maggiore leva nei primi giorni.
Il più grande dispendio di tempo si verifica sia nella ricerca di bug (attraverso la catena di chiamate) sia nella creazione di funzionalità su codice mal progettato, entrambi prodotti di cattiva segregazione e manutenzione del software".
Quando l'azienda inizia a crescere e realizzare un profitto, emerge l'esigenza di costruire un prodotto stabile. La versione precedente del prodotto creato deve essere migliorata e i codici devono essere rielaborati.
Quando i clienti iniziano ad apparire, la qualità diventa presto una priorità. Per migliorare questa qualità, al team viene aggiunto un dipendente con più esperienza e una migliore comprensione del mercato. Gli sviluppatori senior che hanno un costo maggiore vengono assunti per lavorare sul prodotto esistente. Questi sviluppatori trascorrono la maggior parte del loro tempo a migliorare le vecchie linee di codice sviluppando rapidamente nuove funzionalità di alta qualità.
Correggendo vecchie righe di codice per sviluppare nuove funzionalità, la maggior parte degli sviluppatori fatica a ottenere il risultato desiderato. Ma con il passare dei mesi e con tutti gli sforzi dei team per migliorare un prodotto, la qualità si rifiuta di migliorare.
Questo fattore è chiamato entropia del software .
Che cos'è l'entropia del software?
In base alla definizione di Wikipedia, rispetto alla seconda legge della termodinamica in un sistema chiuso (in cui non vengono effettuati input o output), il disordine non può essere ridotto in un periodo di tempo.
Questa legge sembra essere rilevante anche nel caso dei sistemi software; man mano che un sistema viene modificato in un periodo di tempo, il suo disordine tende solo ad aumentare anziché diminuire con tutto lo sforzo.
Man mano che i nuovi sviluppatori cercano di migliorare la parte di codice esistente per migliorare la qualità, la qualità del prodotto si allontana sempre più dai risultati desiderati. Poiché le modifiche vengono apportate per correggere le righe di codice esistenti, l'"entropia" continua ad aumentare, portando a un codice più complesso che è difficile da correggere. Questo spesso porta alla frustrazione tra gli sviluppatori e gli ingegneri del software. Il più delle volte, le startup in crescita prendono la difficile strada della scrittura di codici da zero per riparare questa entropia.
Raccomandato per te:
Nel libro The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt e David Thomas scrivono,

"L'entropia del software è contagiosa e, se non controllata, diventa un'epidemia".
Quindi, come possiamo risolvere il problema e quali sarebbero le misure migliori per assumere uno sviluppatore in grado di produrre un lavoro di qualità in meno tempo e budget?
Quindi, le startup dovrebbero concentrarsi su costi, velocità o qualità?
Anand Thaker, CEO e fondatore, Intelliphi afferma,
"La qualità del sistema dovrebbe raggiungere una soglia minima in modo che non crei continui mal di testa con l'esperienza dell'utente"
Ci sono eccezioni in cui i sistemi operano operazioni critiche o mortali.
Durante queste prime fasi, le startup stanno ancora cercando di capire il loro adattamento al mercato dei prodotti. In un mondo rumoroso e altamente competitivo basato su SaaS, l'adattamento al mercato dei prodotti crea o distrugge una startup. Inoltre, anche le dinamiche del team e la leadership del team sono in una fase di rapido sviluppo. La lean startup fail-fast-a buon mercato è una solida filosofia per questo motivo. Considerala la prima sfida dell'entropia.
Man mano che il mercato del prodotto si solidifica, una startup pianifica ricostruzioni di qualità sulle parti o sull'intera piattaforma completamente. A questo punto, andando avanti, gli sforzi per la qualità che si traducono in migliori esperienze per i clienti hanno un impatto sulla crescita. Una buona crescita fornisce maggiori finanziamenti e fidelizzazione dei clienti.
Personalmente, preferisco le startup guidate dai prodotti e i fondatori di startup. Di solito, le soluzioni e la visione sono solide e il loro approccio incorpora la resilienza... e le loro uscite e multipli sono di gran lunga maggiori (da 3 a 5 volte di più rispetto ad altre startup tipiche). Per questi tipi di startup/fondatori, è molto probabile che rispettino l'entropia, tuttavia, anche la loro comprensione delle fasi precedenti riguarda la velocità e l'idoneità a ottenere uno slancio iniziale critico".
In che modo le startup possono ridurre l'entropia del software?
Inizia con una tecnologia minima
UrbanClap CTO parla dell'utilizzo di una tecnologia minima e riutilizzabile come "l'incapacità di separare adeguatamente le preoccupazioni che porta a progetti di squadra sbagliati e gonfi e costi infra sovra gonfiati. Per risolverlo bene, la leva più grande e più importante è quella di assecondare la cultura della progettazione architettonica intenzionale.
- forte cultura del design-revisione incentrata sulla modularità e sul design intenzionale per il riutilizzo
- strutture rispetto alle linee guida: con piccoli team, l'evangelizzazione delle migliori pratiche è un processo lento. È meglio "automatizzare" le migliori pratiche da parte degli ingegneri che creano framework e strumenti per standardizzare diversi elementi di ingegneria".
La maggior parte delle startup inizia con una certa idea e si evolve in un periodo, aggiungendo nuove idee, funzionalità e talvolta si trasforma in un prodotto completamente nuovo. Assicurati che la tecnologia A che utilizzi durante i tuoi primi giorni di fondazione sia compatibile con la tecnologia B che può fondersi con la tecnologia C che potresti utilizzare in futuro.
Man mano che la visione di un'azienda si evolve, anche il prodotto e varie tecnologie vengono introdotte (o interrotte) durante questo viaggio. Assicurati di utilizzare una tecnologia minima finché il tuo prodotto non è stabile e pronto per l'uso. Ottimizza il tuo codice.
Considera l'ottimizzazione del codice
Scrivi e riscrivi una parte integrante del codice e prendi l'abitudine di farlo man mano che vai avanti. Questo ti aiuta a tenere traccia di tutto il codice che va in diretta sul back-end di un prodotto lucido.
Scrivere una parte integrante del codice aiuta un nuovo dipendente a rivedere parti importanti prima di inviare un nuovo commit. Le parti integrali aiutano a differenziare la parte buona del codice da quella cattiva.
Ricontrolla i commit
Hai mai commesso un codice? In caso contrario, mettilo nella tua lista dei desideri.
È una misura dello sforzo e dell'impegno che gli sviluppatori mettono in un'organizzazione. Il primo codice commit viene celebrato nella maggior parte delle startup. È il momento di ricontrollare questi commit. Non il primo, non l'ultimo, ma tutti.
Rendi obbligatorio per i peer eseguire tutti i commit del codice per garantire che non venga lasciato nulla di intentato per ottenere il codice della migliore qualità.
Non dimenticare gli strumenti di valutazione durante l'assunzione
Con un certo periodo di tempo, ti renderai conto che non puoi giustificare la scarsa qualità dei codici ai tuoi clienti, incolpandoli di tempi e costi.
L'utilizzo del software di valutazione della tecnologia fin dalla prima assunzione ti assicura di avere a che fare con dipendenti che comprendono le tue esigenze e sono in grado di produrre risultati sotto pressione.
Ogni assunzione sbagliata in una startup costa quasi $ 18.000, dallo stipendio e dai vantaggi a tutti i processi coinvolti nell'assunzione: soprattutto, le ore di colloquio e valutazione trascorse da un piccolo team, lavorando su progetti importanti.
Il software di reclutamento tecnico viene fornito con funzionalità come più linguaggi di programmazione, creazione automatizzata di test e rapporti dettagliati sui candidati. Le numerose funzionalità di plagio aiutano i team a rimanere liberi dalla solita seccatura di "tenere d'occhio".
Compiti come "Progetto Java" (parte di un progetto esistente condiviso come incarico) potrebbero essere condivisi con candidati che lavorano in un ambiente di codifica reale impegnando codici reali, il che fornisce la giusta immagine del lavoro che deve essere svolto.
Fai i tuoi compiti
Ultimo ma non meno importante, fai i compiti. Segui influencer, leggi libri, entra in contatto con persone in un campo simile.
Ci sono molte persone che hanno lavorato duramente per migliorare l'entropia del software nella loro organizzazione.
Anand Thaker dice,
“La conoscenza e la comunicazione sono fondamentali per migliorare l'entropia. Abbiamo sperimentato l'entropia quando c'è una partenza di un membro del team che aveva una profonda conoscenza di una parte del sistema.
Un altro è quando alcune parti del software rimangono intatte per diversi mesi o anni. Garantire revisioni regolari di tali funzionalità e del codice/logica sottostante.
Inoltre, considera di dare un tono/cultura alla filosofia dello sviluppo.
L'entropia esisterà sempre, anche se limitarne la crescita è un'arte. In qualità di responsabili tecnici o esecutivi, potresti già saperlo, ma lo sviluppo del software è un processo disciplinato. I bravi membri del team sono orgogliosi del loro lavoro. Il riconoscimento di quello sforzo da parte dei loro coetanei fa molto”. Parla e discuti degli insegnamenti che le persone hanno appreso nel tempo.
Conclusione
Durante la loro fase iniziale, le startup dovrebbero puntare sulla qualità?
La cattiva qualità del codice è stata una delle ragioni principali del fallimento di molte startup. Un sacco di tempo, denaro e sforzi sono stati persi per migliorarlo in un periodo di tempo. Commenti semplici come "il codice non è valido" per "migliorare questa riga" sono meglio che non fare nulla per migliorare il codice.
Le startup sono un fenomeno economico che apre nuovi orizzonti e cambia il mondo.
I suggerimenti di Raghav Chandra per le startup che soffrono di entropia sono: "Per i team più piccoli, ho trovato una leva migliore nell'avere più team e nel mantenere l'organizzazione piatta, dove tutti sono coinvolti.
In qualità di Tech Lead / Manager, è importante preparare il team a "pensare" meglio. Gli sforzi fatti per pensare meglio è ciò che aiuta, questo si traduce in meno tempo per sistemare le cose in un secondo momento.
E il brainstorming e il pensiero approfondito prima dell'implementazione non sono un compromesso in termini di tempo o costi: è davvero il modo più economico per costruire per la qualità a livello di sistema".
È ora che ci preoccupiamo dell'entropia e assumiamo i migliori sviluppatori che possono aiutare a ridurla dai prodotti che costruiamo.






