Come progettare applicazioni di grandi dimensioni con poca esperienza di pianificazione [chiuso]

1

Capisco che ci sono molte informazioni su internet sulla pianificazione e l'attuazione di questo solido piano nella costruzione di una grande applicazione software, ma speravo di ottenere qualcosa di più specifico per aiutare il mio approccio a questa specifica istanza.

Alcuni sfondi:

Siamo una società di hosting web con un team di 3 sviluppatori. Il mio collega e lead developer è stato con la compagnia da alcuni anni, e fino a me, e un altro sviluppatore è stato assunto, è stato l'unico a occuparsi di tutti i progetti dell'azienda.

Tutti e tre abbiamo poca esperienza nel guidare una squadra, o anche lavorare con altri sviluppatori in senso significativo. Siamo venuti tutti da ambienti aziendali di piccole dimensioni in cui l'input è semplicemente passato nelle nostre orecchie e il codice è uscito.

Ci sono alcuni vantaggi anche per la nostra posizione; il nostro team è abbastanza autonomo. A parte alcune direttive impartite dal management, abbiamo il controllo totale e la libertà nella gestione dei nostri progetti, delle scadenze e degli strumenti utilizzati per implementare le nostre soluzioni. È un concerto grandioso, ma siamo tutti attorno alla stessa età (tra i primi e i vent'anni) e quindi non c'è così tanta esperienza nella squadra.

L'applicazione:

Il nostro attuale sistema di fatturazione è il WHMCS spesso denigrato, il che è certo di molte altre società di hosting. Di conseguenza, siamo stati incaricati di progettare un componente sostitutivo con tutte le funzionalità di cui abbiamo bisogno specificamente per le nostre operazioni.

All'inizio dell'anno, il mio sviluppatore principale ha iniziato a lavorarci. Questo era il caso tradizionale di 'iniziare la prototipazione e vedere cosa succede'. Mentre il suo codice era eccezionale, e le fondamenta solide, si stava verificando lo zilch in termini di scope (il designer non l'aveva ancora nemmeno guardato), e ora il codice base sta iniziando a scricchiolare sotto il suo stesso peso, ed è a malapena un terzo fatto.

Me:

Sono venuto da una piccola azienda di web design in cui ero considerato il "go-to", quindi mi sono assunto in molti casi per tentare di pianificare un progetto che più di una volta ha salvato il margine di profitto da immergendo nel rosso. Questo ha aiutato un po 'a convincere lo sviluppatore principale ad adottare un approccio più attento e strutturato che ci consenta di lavorare come una squadra, e fare in modo che questo non software abbastanza critico sia un pasticcio di correzioni di errori e hacky patch-up.

Sono uno sviluppatore esperto, quindi non sono esperto di buone pratiche, non conosco tre o cinque o dieci linguaggi di programmazione, ma posso programmare. E sono un grande comunicatore (nella vita reale, non quando scrivo domande come questa ~ _ ~), quindi spero che ciò che apprendo qui sarà in grado di tradurre direttamente in qualcosa che avvantaggia la nostra piccola squadra.

La domanda attuale :

Per un grande vecchio "TLDR"; qui: quali sono i metodi preferiti per la pianificazione di un codebase di grandi dimensioni? Siamo i nostri padroni in questo, quindi non abbiamo una guida. Muchas gracias in anticipo!

    
posta Jerricco 20.11.2014 - 22:28
fonte

1 risposta

2

Il problema che stai affrontando IMHO è una quantità crescente di debito tecnico . Generalmente attribuito a una progettazione scadente, attribuisco a pratiche di ingegneria del software complessivamente insoddisfacenti. Il problema è che, una volta accumulati alcuni, dovrai versare un mucchio di risorse per uscirne prima di iniziare a vedere miglioramenti importanti. Ma alla fine, prometto che il lavoro verrà ripagato.

Direi assicurati di costruirlo iterativamente. IMHO si desidera ottenere una base di codice utilizzabile e verificabile al più presto, in modo da capire il set minimo di funzionalità di cui avrete bisogno per avere un prodotto. Neanche un prodotto competitivo, solo una cosa che funziona. Questo dovrebbe aiutarti a rimanere concentrato e impedirti di aggiungere troppe funzioni YAGNI. Se entri nel vivo di iterazioni rapide, puoi anche usarle come veicolo per aumentare lentamente le capacità di controllo del software.

Non l'hai menzionato nel tuo post, ma è meglio usare una sorta di controllo di versione. Assicurati di avere un tracker dei problemi (tutto ciò che ho in testa è un modo terribile per tenere traccia dei problemi). Assicurati di correggere i bug prima di passare ad aggiungere funzionalità. Implementare un server di integrazione e test continui. Non tutti sono necessari per tutti i progetti e hanno un costo piuttosto elevato per l'installazione e la formazione, ma alla fine ne valgono la pena.

Se possibile, dividi il codice in moduli riutilizzabili. Hai un po 'di codice che gestisce l'autenticazione? Mettilo nel suo modulo. Ect. È molto possibile farlo troppo, ma fatto bene può aumentare la riutilizzabilità del codice. In alcuni sistemi di build, questo può anche essere un meccanismo per la memorizzazione nella cache della build, in modo da poter solo rifare o ritestare gli elementi del codice che sono stati modificati.

Infine, suggerisco di adottare uno standard di codifica aziendale e applicarlo attraverso le revisioni del codice. Uno dei punti salienti del tuo post per me è stato "lo sviluppatore principale ha iniziato a lavorarci". Sembra che solo un tizio stia toccando il codice ... questo mi spaventa. hai bisogno di avere la proprietà condivisa del codice, altrimenti quando il conduttore si stanca di lavorare su questo codice base e si trasferisce in una società diversa, sarai sul torrente senza una pagaia. Gli standard di codifica aiutano a far sì che tutto il codice all'interno dell'azienda "si senta" lo stesso, il che può aiutare la leggibilità, ma mi piacciono le revisioni del codice. Fatto correttamente, possono davvero essere usati come strumenti di apprendimento e aiutare tutti a comprendere tutto il codice in una certa misura (se eseguiti in modo insufficiente possono servire solo a far sì che tutti i tuoi tecnici si odino a vicenda).

    
risposta data 21.11.2014 - 01:50
fonte

Leggi altre domande sui tag