Stai chiedendo il Santo Graal dell'ingegneria del software e nessuno ha ancora la "risposta" a questa domanda.
L'essenziale è tenere traccia dei tipi di errori che stai facendo e quindi eseguire un'analisi di tali errori per determinare se esiste una tendenza comune. L'analisi delle cause principali è il nome formale di questo tipo di introspezione e sul Web è presente materiale in abbondanza.
I professionisti usano un sistema di tracciamento dei bug in modo che possano (1) sapere che cosa deve essere corretto, ma anche (2) analizzare cosa deve essere risolto dopo il fatto. Non è necessario essere così formali, solo tenere un conto in un quaderno può andar bene per te.
Difetti fase di progettazione
Se ritieni che la maggior parte dei tuoi errori provenga da un fraintendimento dell'affermazione del problema, o continui a cercare di aver scelto l'algoritmo o il percorso sbagliato da seguire per risolvere i tuoi problemi, hai problemi nella fase di progettazione.
Dovresti prendere più tempo all'inizio del progetto e scrivere esattamente ciò che deve essere fatto e come dovrebbe farlo. Esamina attentamente questo lavoro e rivisita il problema originale e stabilisci se lo stai affrontando nel modo giusto. Un'ora o tre in più all'inizio potrebbe farti risparmiare molte ore lungo la strada.
Errori di codifica
Se il tuo progetto è solido, ma combatti costantemente con il linguaggio con cui stai codificando, procurati alcuni strumenti che analizzeranno il tuo codice per te e ti avviseranno in anticipo e spesso che stai commettendo errori.
Se stai programmando in C, attiva tutti gli avvisi del compilatore, usa un controllo semantico come lint
e usa uno strumento come valgrind
per catturare problemi comuni relativi alla memoria dinamica.
Se stai programmando Perl, attiva strict
e warnings
e fai attenzione a ciò che dice.
Indipendentemente dalla lingua che stai utilizzando, probabilmente esistono molti strumenti che consentono di individuare errori comuni molto prima di raggiungere la fase di debug.
Difetti fase di integrazione
Man mano che sviluppi il tuo codice seguendo le buone pratiche di modularità, devi iniziare a incollare i pezzi separati. Ad esempio, diverse sezioni del tuo codice potrebbero avere a che fare con input dell'utente, interazione con database, visualizzazione dati, algoritmi / logica e ognuno di questi è costruito relativamente indipendente l'uno dall'altro (ovvero, tendi a concentrarti sulla sezione a portata di mano). piuttosto che preoccuparsi dell'integrazione con tutto il resto).
Qui è dove lo sviluppo guidato da test (TDD) è molto utile. Ogni modulo del tuo codice può avere test che verificano che funzionino in base a come sono stati progettati. Questi test dovrebbero essere scritti prima o molto presto nel processo in modo da poter avere una serie di "aiutanti" per mantenerti onesto. Quando inizi a far funzionare tutto insieme e scopri che stai cambiando il modo in cui questo o quello è implementato o interagisce con un altro sottosistema, puoi ricorrere ai test per assicurarti che ciò che hai fatto tutto funziona insieme non infrange la correttezza del codice.
E così via ...
Raccogli alcuni libri sull'ingegneria del software e sulle tecniche pratiche di codifica e imparerai molti modi diversi per rendere lo sviluppo meno caotico e più affidabile. Scoprirai anche che semplicemente una vecchia esperienza - guadagnare una laurea dalla scuola dei duri - ti aiuterà anche a metterti in forma.
Ciò che quasi tutto si riduce è che un po 'di tempo e il lavoro in anticipo ripaga in enormi dividendi più avanti nel processo di sviluppo / rilascio.
Il fatto che tu abbia notato questi problemi così presto nella tua carriera parla bene per il tuo futuro e ti auguro buona fortuna.