Comment les programmeurs approchent de codage et de résolution de problèmes?

Je suis un étudiant en informatique, mais nul en programmation. Je ne suis pas créatif et l’impression que je suis loin d’être bon. Comment être bon en résolution de problèmes et de codage?

Réponse

La pensée vient avant tout avoir à faire avec la langue : il s’agit d’avoir une approche rigoureuse de la pensée à travers des problèmes et en les divisant vers le haut. Le codage réel dans une langue est une sorte de processus cathartique avec un grand bravo à la fin.

Voici comment cela fonctionne pour moi :

  1. Tout d’abord, je pense que sur le problème. J’ai examiné les bords et la forme de celui-ci. Je m’assure que je suis résoudre le problème de droit et examiner ce qui est en la Meta-problème est que je dois résoudre. Si c’est un gros problème, j’écris mes hypothèses et mes objectifs.
  2. J’ai rédiger la forme de base de la structure de données de base / abstraction. Si c’est trop dur, faire l’étape suivante et de revenir à celui-ci.
  3. Maintenant la conception de l’algorithme. Pensez-y un peu, puis rédiger simple pseudo-code dans une routine unique. Aucun sous-classes assez codage, non significatives, juste un long morceau de pseudocode, avec commentaires C++ ' / /' et la mise en retrait pour indiquer le niveau de sélection ou de bouclage.
  4. Une fois l’algorithme et structures de données sont prêtes, j’ai commencer à coder dans un seul fichier et écrire du code qui résout le cas heureux. Partout j’ai besoin d’y revenir trop - sauf si c’est vraiment partout - j’ajouter "/ / todo' commentaires indiquant ce que je dois retenir.
  5. Étoffer le code, écrire quelques tests simples pour vérifier que cela fonctionne car je veux qu’elle.
  6. Écrivez des tests plus compliqués, polir le code, puis Refactoriser.
  7. Ajouter la documentation des classes, méthodes et algorithmes principaux.

C’est un début lent pour moi, comme une aiguille à sauter à travers un disque vinyle. Finalement, je reçois une traction, obtenir des choses écrites vers le bas et les feuillets de l’aiguille dans la rainure, jouant de la musique magnifique.

Quelque part entre l’algorithme et les structures de données, j’obtiens idéalement dans « la zone ». D’ici, tout le reste sauf l’algorithme et le problème disparaît alors que je me concentre sur l’algorithme de finition, écrivant le code principal et l’obtention de fonctionner. État mental important est requis par le biais de cette partie du problème. Si je m’arrête, je peux perdre cet État et être incapable de retrouver ce. Plusieurs fois j’ai dû jeter mon travail à cause d’une rupture mal chronométrée.

Test driven développement est sans doute la meilleure voie à suivre, mais je n’ai pas eu la discipline pour cela. Mais dans tous les cas, le principal problème à résoudre partie est relativement agnostique tout langage d’implémentation.


Tags: Apprendre à programme, Programmation informatique, Programmeurs/programmeuses