Vous demandez le Saint Graal du génie logiciel, et personne n'a encore "la" réponse à cette question.
L'essentiel est de suivre les types d'erreurs que vous commettez, puis d'analyser ces erreurs pour déterminer s'il existe une tendance commune. L'analyse des causes profondes est le nom officiel de ce type d'introspection, et il existe de nombreuses informations sur le Web à ce sujet.
Les professionnels utilisent un système de suivi des bogues pour pouvoir (1) savoir ce qui doit être corrigé, mais aussi (2) analyser ce qui devait être corrigé après coup. Vous n'avez pas besoin d'être aussi formel - il suffit de garder un décompte dans un cahier.
Défauts de conception
Si vous trouvez que la plupart de vos erreurs proviennent d'une mauvaise compréhension de l'énoncé du problème, ou si vous continuez à trouver que vous avez choisi le mauvais algorithme ou la mauvaise voie à suivre pour résoudre vos problèmes, vous avez des problèmes au stade de la conception.
Il vous incomberait de prendre plus de temps au début du projet et d'écrire exactement ce qui doit être fait et comment il doit le faire. Examinez attentivement ce travail et revoyez le problème d'origine et déterminez si vous le résolvez vraiment de la bonne manière. Une ou trois heures supplémentaires au départ peuvent vous faire économiser de nombreuses heures sur la route.
Erreurs de codage
Si votre conception est solide, mais que vous combattez constamment le langage avec lequel vous codez, procurez-vous des outils qui analyseront votre code pour vous et vous avertiront tôt et souvent que vous faites des erreurs.
Si vous programmez en C, activez tous les avertissements du compilateur, utilisez un vérificateur sémantique comme lint
et utilisez un outil comme valgrind
pour détecter les problèmes courants liés à la mémoire dynamique.
Si vous programmez Perl, allumez strict
et warnings
et garde à ce qu'il dit.
Peu importe la langue que vous utilisez, il existe probablement de nombreux outils pour détecter les erreurs courantes bien avant d'atteindre le stade de débogage.
Défauts de l'étape d'intégration
Au fur et à mesure que vous développez votre code en suivant les bonnes pratiques de modularité, vous devez commencer à coller les pièces séparées ensemble. Par exemple, différentes sections de votre code peuvent avoir à voir avec l'entrée utilisateur, l'interaction avec la base de données, l'affichage des données, les algorithmes / la logique, et chacun d'eux est construit relativement indépendamment les uns des autres (c'est-à-dire que vous avez tendance à vous concentrer sur la section à portée de main plutôt que de se soucier de l'intégration avec tout le reste).
C'est là que le développement piloté par les tests (TDD) est très pratique. Chaque module de votre code peut avoir des tests qui vérifient qu'ils fonctionnent selon la façon dont ils ont été conçus. Ces tests doivent être écrits en premier ou très tôt dans le processus afin que vous puissiez avoir un ensemble d '"aides" pour vous garder honnête. Lorsque vous commencez à tout faire fonctionner ensemble et que vous constatez que vous devez changer la façon dont ceci ou cela est implémenté ou interagit avec un autre sous-système, vous pouvez vous rabattre sur vos tests pour vous assurer que ce que vous avez fait pour faire tout cela fonctionne ensemble ne rompt pas l'exactitude du code.
Etc...
Prenez quelques livres sur le génie logiciel et les techniques de codage pratiques, et vous apprendrez de nombreuses façons de rendre le développement moins chaotique et plus fiable. Vous constaterez également qu'une simple expérience ancienne - obtenir un diplôme de l'école des coups durs - vous mettra également en forme.
Ce que presque tout se résume à cela, c'est qu'un peu de temps et de travail d'avance porte ses fruits dans d'énormes dividendes plus tard dans le processus de développement / sortie.
Le fait que vous ayez remarqué ces problèmes si tôt dans votre carrière en dit long sur votre avenir et je vous souhaite bonne chance.