Quelles techniques aident à conserver les connaissances en programmation? [fermé]


44

Comment te souviens-tu de la programmation? Avez-vous eu le sentiment d'avoir rencontré l'erreur que vous aviez devant vous maintenant, il y a quelques années, et vous pouviez jurer que vous connaissiez la cause à l'époque, mais maintenant vous l'avez oubliée?

Avez-vous travaillé avec l'analyse de chaîne de xsl il y a quelque temps, mais maintenant vous ne pouvez pas vous rappeler exactement quelles sont les fonctions de chaîne de xsl et vous devez recommencer à zéro? Ou peut-être oubliez-vous une fonctionnalité d’Apache Commons telle que "filtrer une collection par un prédicat" que vous avez sûrement utilisée dans le passé.

Alors, comment fais-tu? J'ai essayé d'avoir un blog, mais lorsque je développe des applications, je ne trouve jamais le temps de mettre à jour le blog ou d'écrire sur mes expériences. De plus, utiliser un wiki est une bonne chose, mais j’ai eu du mal à garder une séparation nette entre eux, car j’ai souvent eu besoin de changer de blog pour ajouter de nouvelles informations sur ce sujet. Cela m'a fait penser que j'aurais effectivement dû mettre ce sujet dans le wiki plutôt que dans le blog.

Avez-vous des systèmes qui vous aident à vous souvenir de votre expérience en programmation? Quelle est votre configuration?


82
ma configuration: 1.google 2.bookmark page 3. oublier le signet 4.goto-> 1.
e-MEE

4
Utilisez un wiki personnel. Notez chaque problème que vous avez résolu afin que vous et les autres puissiez le voir plus tard. Faites-le simplement pendant quelques mois et vous aurez une mine d'informations. J'utilise WikidPad et c'est très agréable
Ubermensch

2
google est fantastique pour les réponses mais je ne pense pas qu'il répond vraiment à cette question sur les techniques de mémoire. Bien sûr, ce n'est qu'un commentaire cependant.
Michael Durrant

4
Mon cerveau est mon processeur et mon cache. Je mets des choses dans ma cache en les faisant. Le reste de mes connaissances se trouve dans d'autres endroits tels que l'ancien code source, les notes et stackoverflow.com.
Distortum

5
@ e-MEE: bien que la situation que vous décrivez soit souvent utilisée, c'est une mauvaise pratique et vous ne pouvez pas vous en prévaloir. Cela prend du temps et est redondant. Vous pouvez utiliser ce temps pour construire des fonctionnalités géniales, pas pour réinventer la roue :)
Claudiu Constantin

Réponses:


64

Oublier des choses est normal. Ne pas se souvenir de certaines astuces qui vous ont aidé dans le passé est également normal. C'est la première étape à reconnaître. Ensuite, il existe des moyens de "stocker" des connaissances pour une révision ultérieure:

  • Trouvez le temps et blog à ce sujet . L'avenir, vous serez très reconnaissant au présent, à vous;
  • Travaillez avec de petites démos et archivez-les d'une manière ou d'une autre. Vous allez sûrement parcourir ces archives plusieurs fois;
  • Utilisez votre profil stackexchange . Marquez les questions / problèmes / problèmes / conseils / astuces intéressants comme des favoris pour des recherches plus approfondies;
  • Gardez à faire , garder la programmation. Plus vous utilisez une certaine partie d'un framework, plus vous le familiarisez et plus vous vous en souvenez.

5
+1 pour la partie "continue à faire", un peu comme rafraîchir les connaissances.
Tehnyit

Le point 1 me rappelle un épisode de The Office ...
JBRWilkinson

Je me suis inscrit ici juste pour faire passer votre réponse. Parfait
Martin.

3
+1 pour la valeur d'un journal / journal. La journalisation améliore le succès des régimes, des finances, de la forme physique, presque tout… les gens qui ne prennent pas le temps d'écrire un journal pensent que l'avantage d'un journal est de rechercher quelque chose, mais que la valeur réelle est de vous obliger à réfléchir. au cours des événements passés récents, considérez-les de manière critique et formez-les dans une histoire. Ce processus aide la mémoire et amène le rédacteur à penser au futur. L’avantage d’un journal pour la plupart n’est donc pas de le lire après le fait mais de la valeur personnelle et réelle lors de sa création.
Quaternion

Le blog est le meilleur. Je tiens un blog de certaines choses que je fais - des articles sur des problèmes que je rencontre (et rarement sur des choses que j'aime ou que je trouve intéressantes). De cette façon, quand je rencontre un problème (comment installer cette bibliothèque ici encore?), Je vais sur mon blog et continue. Travaille comme un charme, et pourrait même aider quelqu'un un jour.
MatthewRock

20

Ma clé est

Variété


Répétition. Une fois peut être fugace. Voir le 100ème événement fait la différence!

Mémoire par les doigts . Je me souviens beaucoup mieux du code quand je l’ai tapé quelques fois.

Bibliothèque de codes - Conservez une réserve personnelle de codes et d’astuces que vous avez utilisées et vues.

Centralisation. Je garde 1 fichier avec tous mes noms d'utilisateur (des centaines) sur 1 pc. J'applique la sécurité.

Discipline - vous avez mentionné ne pas avoir le temps / de faire l'effort de mettre à jour votre propre blog, etc. Vous devez simplement travailler plus fort et vous assurer de le faire.

Acceptation - les compétences, techniques et choses que vous avez apprises pendant la semaine seront fraîches. Certains des articles que vous dites il y a trois ans seront difficiles à retenir. C'est normal car le cerveau fait de la place pour plus.

Des sens multiples - parfois j'utilise des mnémoniques, parfois je laisse tomber une image avec des concepts clés dessinés de manière distincte. Je lis, j'écoute des podcasts, je regarde des vidéos, j'utilise la couleur dans les éditeurs. Le plus de sens que j'utilise le mieux.

Mnémoniques , p.ex. Ordre css à la frontière Tarball (TaRBalL) TopRightBottomLeft. J'utilise aussi des couleurs et des formes pour me souvenir des mots et des thèmes. Souvent, le plus bizarre, le plus mémorable!

Utilisation continue - C'est l'effet «utilisez-le ou perdez-le». Toute connaissance s'estompe avec le temps. Time ++ Fade ++

The Stack Exchange Network - J'utilise Stack Overflow dans plusieurs domaines pour essayer de conserver autant de compétences et de techniques différentes «actuelles» et «mémorisées», même si je ne les utilise pas dans mon travail / projet actuel.

Dropbox - Je garde des petits fichiers avec des éléments liés à la mémoire

Livres - J'aime toujours l'imbécile et la sensation des livres physiques. J'ai aussi plusieurs livres en ligne et autres ouvrages techniques en ligne auxquels je peux me référer n'importe où. Évidemment, ma bibliothèque technique peut être accessible n’importe où quand c’est numérique, ce qui est énorme.

L'effet Google - aucune liste d'éléments ne serait vraiment complète sans le mentionner. C’est davantage ce dont vous n’avez pas besoin de vous souvenir, car vous pouvez le rechercher sur Google et le trouver. C'est aussi une considération importante. Alors que de plus en plus de gens deviennent plus adeptes de cette façon d’acquérir des connaissances, il est de moins en moins nécessaire de mémoriser un fait donné. Cependant, ceci constitue également un «relèvement de la barre» pour les travailleurs du savoir qui découvrent de plus en plus qu'une compréhension conceptuelle profonde est nécessaire pour fonctionner dans l'environnement actuel. Bien sûr, quelle sortie pour les CME !

Mon propre blog

Mon propre site de favoris .

  • Comment garder mon blog et mes favoris mis à jour? Eh bien, à la fin de la journée, je pense que c’est de la discipline et de la nostalgiec’est-à-dire qu’un certain dévouement est nécessaire. Cependant, si vous êtes allé à l'école pour obtenir un diplôme et que vous aviez payé 100 000 dollars (voire 10 000 dollars) ou si vous êtes autodidacte, vous savez ce que signifie dévouement et persévérance. Ce n'est pas différent. La niftyness, ou «facteur astucieux», c’est que lorsque vous voyez un site Web génial avec un tutoriel, une technique ou quelque chose de sympa, ou que vous surmontez un problème épineux, vous dites "hé, c’est génial!" - Ainsi, lorsque vous sentez ceci (ou le slogan que vous utilisez), associez maintenant cela à "Je dois bloguer ou enregistrer ce signet". Il est fort probable que vous ne soyez pas sur un ordinateur pour mettre à jour votre blog au même moment. Envoyez-vous donc un e-mail, un texte ou même un message vocal, ou une nouvelle tâche dans votre liste de tâches - celle qui vous convient le mieux .- pour vous rappeler de le faire! Par exemple, mon téléphone Android a une application de tâches qui est utile pour cela.

Merci pour votre réponse réfléchie. Est-ce qu'il reste discipliné à propos de la mise à jour de votre blog? Je pense que le problème que j'ai est soit la paresse, soit je ne publie pas quelque chose parce que je ne pense pas que d'autres en bénéficieraient.
Kyle Hayes

+1 pour la variété. Ça marche vraiment et j'en ai fait l'expérience plusieurs fois.
Karthik Sreenivasan

Kyle bonne question, j'ai mis à jour ma réponse. Cependant, ma réponse concerne davantage la nécessité de rester à jour que la discipline. À un moment donné, cela revient à une motivation personnelle.
Michael Durrant

7

Au cours de la dernière année, Evernote est devenu un programme dont je ne pouvais plus me passer. Je copie tout dans Evernote. Extraits de code, captures d’écran, données de contact, historique des versions, etc. Donc, je n'ai pas à me rappeler autant de détails. Je sais juste que c'est quelque part.

La version de base est gratuite. Alors essayez-le!


1
Alors, que feriez-vous si les services d'Evernote étaient en panne ou s'il n'y avait pas d'internet (parce que votre opérateur a été neutralisé, par exemple)? Je ne recommande pas de faire appel au «nuage» pour stocker un savoir-faire important.
Monsieur Smith

J'utilise actuellement Evernote, mais si vous mettez tout dans cet emplacement, la section des balises deviendra très encombrée et vous commencerez à l'utiliser moins. Si vous avez de bonnes astuces à ce sujet, cela aiderait beaucoup à partager! Merci!
lumière brillante

@danleadgy, je suis d'accord avec les tags. J'ai dû être plus sélectif, ce qui ne devrait vraiment pas m'inquiéter.
Kyle Hayes

Après avoir posé la même question sur Stack Overflow, j'ai commencé à utiliser Evernote et cela fonctionne très bien. En plus des informations de programmation, je stocke des processus de procédure. Par exemple, comment configurer ma machine de développement à partir de zéro (installer le système d'exploitation, installer le logiciel, configurer). Cela a été extrêmement utile. En outre, vous pouvez accéder aux mêmes informations depuis n’importe quel appareil. Vous pouvez donc lire sur un ordinateur ou une tablette et travailler sur un autre.
B Seven

6

Sherlock Holmes a un jour déclaré quelque chose comme "L'esprit d'un homme est comme un grenier. Si vous le remplissez de futilités, il n'y a pas de place pour quoi que ce soit qui soit vraiment important. Pour tous ces détails, nous avons l'encyclopédie."

À moins que vous n'ayez une mémoire photographique et ses problèmes, vous ne vous souviendrez pas de tout. Construisez un ensemble de ressources, une bibliothèque personnelle d’informations et de techniques de résolution de problèmes.

Vous ne vous souviendrez peut-être pas de la réponse et même de ne pas vous rappeler où la réponse a été écrite. Mais si vous savez comment résoudre le problème, vous pouvez toujours trouver la réponse. Espérons que cela inclura la documentation de votre solution de manière consultable et réutilisable.


4

Eh bien, peut-être que mon cas est particulier… mais: j'ai tous les logiciels que j'ai écrits depuis 76 sur mon ordinateur portable, mes programmes, scripts, configurations, etc. Ainsi, avec le temps (je dois l'avouer), ma mémoire est devenue moins lourde » trucs 'à se rappeler des méta-données sur des trucs. Bien sûr, beaucoup d’entre elles ne sont plus pertinentes, mais j’estime que le plus difficile est d’avoir les idées et non de les mettre en œuvre. Les métadonnées sont donc essentiellement un index des «idées» pouvant être trouvées où.

De nos jours, lorsque je découvre de nouveaux territoires, j'ai tendance à trouver une base de code volumineuse qui utilise les nouveaux aspects et à passer du temps de qualité avec la base de code. Je l'étudie, j'essaie de le faire fonctionner dans un environnement de test, puis j'essaye de l'augmenter pour pouvoir accéder à de nouveaux outils (bibliothèques, langages, technologies de construction, etc.). Ce processus me permet de tracer mes modèles, idées, sur un exemple. Je peux prendre le temps de faire quelques-uns de ces mini-projets et de choisir celui avec lequel je me sens le plus chez moi. Une fois que cela est fait, je vais éventuellement réutiliser cette base de code pour construire le squelette de mes propres applications.

Lorsque les archives personnelles échouent, je me connecte au réseau, auquel j'ai récemment ajouté SO. Je vais avoir un coup sur les «nouveaux» concepts (nouveaux d'un point de vue personnel) sur SO avant gaagle. En fait, je retourne rarement (de nos jours) à Gaagle. La première réponse pertinente est généralement un lien vers des questions intéressantes sur les SO.


4

Comme d’autres, je garde une trace des choses en utilisant des marque-pages.

J'avais l'habitude d'utiliser Delicious, mais je suis maintenant passé à Pinboard.

Mais je n'utilise pas cette méthode autant qu'avant. Il semble que tous les problèmes de programmation que je rencontre rencontrent une petite recherche google. Et depuis un an environ, j'ai commencé à utiliser Stackoverflow comme terme de recherche!

Chaque fois que je pose une question SO pour une question particulièrement difficile, je la préfère pour la suivre. Il s’agit là d’une autre forme de bookmarking.


J'ai déjà utilisé Delicious dans le passé, mais ils ont tout gâché avec ce projet. J'utilise maintenant Diigo pour les signets et les surlignages. Je vais devoir vérifier Pinboard.
Jmq

3

"Souviens-toi du tableau, oublie les traits fins"

Il est absolument normal de ne pas se souvenir des détails les plus fins. Cependant, ce qui vous préoccupe, c’est d’oublier les choses essentielles. Si vous corrigez un bogue, vous devriez au moins avoir une idée conceptuelle du problème.

Les marque-pages, les blogs, les cahiers sont parfaits pour stocker ces détails les plus fins. Mais en fin de compte, vous devez toujours vous souvenir de la "plus grande image". Sinon, redécouvrir ces détails "plus fins" sera d'autant plus difficile.


2

Gardez vos propres notes, exprimant les choses dans vos propres mots. Votre public cible est vous , personne d'autre, alors vous pouvez vous permettre d'être concis. (Un article de blog doit cependant être clair et bien édité, ce qui prend du temps.) Si vous trouvez de bons articles / articles de blog, enregistrez l'URL, mais expliquez quand même les choses avec vos propres mots.

Je garde une grande hiérarchie de petits fichiers courts contenant un seul sujet. Les fichiers sont pour la plupart de forme libre, mais je passe maintenant à Markdown. Recherchez avec grep / find. Je garde le dossier dans ma DropBox, il est donc toujours disponible pour moi.


J'avais l'habitude de le faire sous forme de fichiers comme celui-ci également, mais j'ai également constaté qu'Evernote était un bon référentiel pour ce type de données.
Kyle Hayes

1

Chacun peut avoir son propre style auquel il est habitué. Pour moi, je sépare les connaissances en catégories:

  • Livres

  • Des articles

  • Collections (les éléments que je trouve intéressants se limitent à quelques paragraphes - je copie en fait les informations et parfois j'annote la source) - Par exemple: développement OOD, génériques, etc.

  • Code réutilisable (texte et extraits) - Chacun sur un fichier séparé sous une bonne organisation arborescente. Par exemple, le noeud DataValidation contiendrait de nombreuses techniques pour valider différents éléments de données, chacun dans un fichier séparé.

  • Projets achevés

  • Didacticiels vidéo personnels (j’enregistre parfois des vidéos sur la façon de faire des choses lorsque le nombre d’étapes est trop élevé).

  • Liens

J'organise ce qui précède par sujet, chaque sujet étant présenté dans une arborescence appropriée.

Parfois, il y a des choses qui se chevauchent mais je réussis à trouver ce que je veux.

De plus, avec Google Desktop, la recherche de texte ou de fichiers est très rapide.


Il serait intéressant de voir votre arbre si vous êtes prêt à partager.
Kyle Hayes

@KyleHayes, je pourrais peut-être fournir un échantillon
NoChance

0

J'utilise OneNote. Je travaille avec beaucoup de langages de programmation différents. J'ai donc différentes sections pour chaque langue et différents onglets pour différents types de notes.

Maintenant, je commence à utiliser Stack Exchange également.


-1

Vous devez être équilibré entre mémoire et "stockage" .. Si vous comptez trop ou mal pour des choses fausses en mémoire, problème ==, si vous comptez trop sur tout stocker == inutile.

Mes règles:

-Ne pas trop embellir! écrivez le texte important même si la taille de la police varie dans votre document :)

-Ne pas trop à l'origine. Convainquez-vous que pour organiser vos pensées, vous avez besoin d'une arborescence à 10 niveaux

-Passe du temps à trouver quoi enregistrer. vous pouvez trouver 5 solutions au même problème. Au moment où vous les écrivez, vous perdez. Ecrivez 1-2 qui VRAIMENT vous aider. Ne vous laissez pas vous dire que vous n’avez pas le temps pour cela maintenant. C'est plutôt étrange mais cela s'applique: "J'ai passé du temps pour avoir du temps"

Je n'aime pas mettre ces choses dans un "produit" parce que je veux être sûr qu'il existera 20 ans plus tard et que je ne veux pas migrer moi-même vers diverses plateformes.

Alors que faire?

Tout ce que vous pouvez obtenir les informations avec un minimum d'effort.

Par exemple, installez phpBB et écrivez-vous. la fonctionnalité de recherche est prête à l'emploi, elle est gratuite et vous pouvez extraire des données avec de simples instructions SQL et les mettre dans des fichiers. vous pouvez créer une tâche cron qui exporte vos pensées dans des fichiers pour les archiver. Donc, si vous avez besoin de les mettre dans un autre système, vous êtes prêt avec un minimum d'effort.

Un autre problème est que personne ne garantit que les liens que vous trouverez fonctionneront demain (imaginez 5 ans plus tard). Alors essayez de dupliquer l'info:

-Téléchargez la vidéo avec une extension du navigateur et attachez-la par exemple à votre message phpBB (ou wordpress ou autre).

Face à cela: vous êtes un programmeur et vous créez des applications pour d'autres personnes. Faites-en un simple pour vous et devenez VOTRE meilleur client.

mon 2c


-1

Réponse courte:

Pratique, pratique, pratique.

Réponse pas si courte:

Comment te souviens-tu comment marcher? Comment te souviens-tu comment parler? Certes, ces compétences ne sont pas exactement les mêmes et ne requièrent apparemment pas de connaissances encyclopédiques (pour les débutants, au moins), mais vous utilisez la même chose: la mémoire.

Bien que j'admette que, pour les débutants, la programmation peut sembler un sujet incroyablement vaste lorsque vous commencez à l'étudier, elle devient comme n'importe quel autre sujet une fois que vous maîtrisez les bases.

Dès que j'ai compris cela, j'ai commencé à diviser les choses en morceaux de plus en plus petits (ma propre version personnelle de l'abstraction). De cette façon, quelque chose qui semblait difficile à retenir devient plus facile (du moins avec moi).

Ecrire aide beaucoup plus que vous ne le pensez (après avoir travaillé dans l'éducation, je sais que cela peut avoir des effets positifs énormes sur la rétention). Surtout si vous pouvez le formuler avec vos propres mots, plutôt que de le copier mot pour mot. Si vous pouvez paraphraser ou assimiler cela à quelque chose que vous connaissez déjà, c'est encore mieux.

Par exemple: En C #, les objets String sont immuables. Cela signifie que chaque fois que je demande à mon programme de modifier le contenu d'un objet chaîne, ce qui se produit réellement est que la chaîne d'origine est détruite (techniquement, elle est placée au niveau le plus bas du garbage collector). Exactement comme lorsqu'un artiste commet une erreur lors de la création d'une sculpture en marbre, celle-ci ne peut pas être modifiée, elle est donc détruite et une nouvelle est créée.

Ce n'est pas un bon exemple, mais cela montre l'essentiel de ce à quoi je veux en venir.

Une documentation de qualité aide aussi. Quelque chose que mon conférencier m'a dit une fois m'a collé:

Faites votre commentaire commenté. Pas au point de la stupidité, mais vous devez être capable d'écrire des commentaires qu'un non-programmeur pourrait comprendre. De cette façon, vous savez que quelqu'un d'autre sur le projet peut le comprendre parfaitement. Imaginez que vous passiez des mois à mettre en place un système mais que vous soyez impliqué dans une sorte d'accident horrible sur le chemin du travail. Quelqu'un d'autre se verra attribuer votre travail, en particulier s'il approche du point critique, et s'il ne sait pas ce que votre code fait, la production s'arrête.

Les bons livres sont aussi une excellente ressource. Un tuteur différent m'a dit un jour que si un livre ne possède pas d'index (et qu'il en existe beaucoup, il n'en existe pas), son achat ne vaut pas la peine.

Google peut être une ressource incroyable, mais soyez conscient des codeurs copier-coller. Éloignez-vous des sites qui vous donnent simplement un bloc de code sans explication. Je préfère lire tout un article sur de petits blocs de code, de cette façon, vous partez en sachant exactement ce que le bloc de code est censé faire, comment il le fait et pourquoi le programmeur l'a écrit de cette façon.

J'espère que ça t'as aidé

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.