Quelles sont vos suggestions pour apprendre à penser? [fermé]

22

Tout d'abord, ce n'est pas la question générique «faites de moi un meilleur programmeur», même si le résultat de la question peut sembler similaire. Sur programmers.SE, j'ai lu et vu ceux-ci se fermer ici , ici , ici , ici et ici .

Nous savons tous qu'il existe une multitude de suggestions génériques pour perfectionner vos compétences en programmation (par exemple, lire SO, lire des livres recommandés, suivre des blogs, s'impliquer dans des projets open-source, etc.). Ce n'est pas ce que je recherche.

Je remercie également le lectorat actif de ce site Web et j'espère que cela fonctionnera en ma faveur en apportant d'excellentes réponses. D'après la lecture de la correspondance ici, il semble y avoir un grand nombre de personnes expérimentées qui travaillent ou ont travaillé dans des domaines liés à la programmation. Et la plupart d'entre vous peuvent exprimer leurs pensées de manière éloquente et concise.

J'ai récemment remarqué la distinction entre quelqu'un qui est capable de programmer et un programmeur qui peut vraiment penser . Je refuse de croire que pour devenir un grand programmeur, nous nous soumettons simplement à une vie de comportement semblable à une éponge (c'est-à-dire absorbons tout ce qui concerne notre domaine en lisant, en écoutant, en regardant, etc.). Je dirais même que connaître simplement chaque concept de programmation unique qui vous permet de résoudre le problème X plus rapidement que tout le monde autour de vous, si vous ne pouvez pas penser , vous vous limitez énormément - vous n'êtes qu'un robot rapide.

J'aime à croire qu'il y a un tout autre visage à être un grand programmeur qui n'est pas lié à ce que vous savez sur la programmation, mais c'est à quel point vous pouvez entrelacer de nouveaux concepts et les appliquer à votre profession de programmation ou à votre passe-temps. Je n'ai vu personne approfondir ou aborder cette facette de l'esprit humain et de la programmation. (Oui, il est également possible que je n'aie pas regardé assez fort aussi - désolé si c'est le cas.)

Donc, pour quiconque a passé du temps à réfléchir à ce que j'ai mentionné ci-dessus - ou peut-être que c'est tout le monde ici parce que je suis un peu en retard dans mon développement personnel / professionnel - quelles sont vos suggestions pour apprendre à penser? Mis à part la lecture habituelle, qu'avez-vous fait d'autre pour être meilleur que les autres personnes dans votre / notre domaine?

JK
la source
Tu devrais penser comme moi parce que je suis génial.
ChaosPandion
Prenez des drogues dures comme Steve Job.
Job
La programmation fonctionnelle apprend à penser. Tout le reste enseigne à programmer;)
Dario

Réponses:

13

Mes suggestions pour apprendre à penser:

  • Apprenez de nouvelles langues . Langages naturels et de programmation. Ayez toujours une nouvelle langue à apprendre. La réflexion se fait plus ou moins dans une langue. Chaque langue a une «vision» différente de la pensée. Plus de langues que vous connaissez, plus d '"outils mentaux", de concepts, de points de vue et d'abstractions sont à votre disposition.

"Le langage façonne notre façon de penser et détermine ce à quoi nous pouvons penser." - Benjamin Lee Whorf

Et plus important encore, le langage détermine ce à quoi nous ne pouvons pas penser.

  • Lisez avec voracité . Lisez largement. Pas seulement sur la programmation, mais sur l'histoire, la sociologie, la biologie, les arts, etc. Élargissez vos perspectives. Obtenez de nouvelles informations. Vous n'êtes pas seulement ce que vous mangez - vous êtes aussi ce que vous lisez. Les nouvelles idées consistent davantage à combiner deux idées (apparemment) différentes, qu'à un éclair divin de créativité sorti de nulle part.

"Le hasard ne favorise que les esprits préparés." -- Louis Pasteur

  • L'humilité . Vous devez en savoir beaucoup pour comprendre à quel point vous en savez peu. L'humilité aide à garder votre esprit ouvert à de nouvelles façons de penser.
  • Demander pourquoi? Ne vous contentez pas de savoir comment.
  • Apprenez les mathématiques . Un outil vraiment puissant, une sorte de langage, pour travailler avec la logique et les abstractions. L'étude des mathématiques renforce votre cerveau. Équivalent mental de «aller au gymnase».
Maglob
la source
Je ne suis pas sûr des langues naturelles. Les apprendre a de la valeur, mais pour réfléchir? Dans un contexte de programmation? La valeur des mots pour la réflexion est parfois surestimée - nous pouvons avoir des idées que nous ne pouvons pas exprimer facilement avec des mots, donc nous ne sommes pas totalement dépendants des mots pour former des idées. En outre, le vocabulaire le plus pertinent (jargon pour les mathématiques et autres domaines techniques) est fortement partagé entre les langues.
Steve314
6

D'après mon expérience, cela se résume à deux choses:

  1. Passion, si vous êtes intéressé par le métier, vous apprendrez, vous adapterez et serez plus rapide à sortir des sentiers battus que de nombreux programmeurs qui sont dans le domaine tout comme un travail. (Certains d'entre eux n'ont pas d'ordinateurs à la maison.)
  2. Certaines personnes viennent de naître avec une capacité à résoudre des problèmes techniques. Certaines personnes ont naturellement la possibilité d'abstraire une solution flexible.

Au-delà de cela, tout le monde est assez différent dans sa façon de penser la programmation ou d'apprendre de nouvelles compétences en programmation. Je vous suggère de continuer d'essayer de nouvelles choses et de garder ce qui fonctionne bien pour vous.

jzd
la source
Bons points, en particulier le deuxième point.
Orbling
5

Quelles sont vos suggestions pour apprendre à penser?

Entraine toi. Entraine toi. Entraine toi.

Sérieusement, l'activité mentale (c'est-à-dire la pensée) est comme l'activité physique. Plus vous le faites, mieux vous le faites. (En fait, l'activité physique implique également une sorte d'activité mentale. Les sportifs de haut niveau n'ont pas seulement les muscles au bon endroit ...)

Alors, comment pratiqueriez-vous (efficacement) la réflexion?

(Ici je généralise à partir d'autre chose ...)

Je pense que vous identifieriez les problèmes de réflexion que vous trouvez difficiles (mais pas impossibles), et essayez de les résoudre (réfléchissez-y) et plus comme eux.

Stephen C
la source
Je soutiens en quelque sorte cela. Chaque fois que je fais quelque chose de répétitif qui ne nécessite pas de réflexion, je pense à autre chose. J'ai également tendance à faire cela lorsque je fais des choses répétitives auxquelles je devrais penser, comme la conduite, mais d'une certaine manière, j'ai l'impression de mieux conduire quand je n'y pense pas.
Earlz
1
@Earlz - Je ne comprends pas votre point. Si vous faites quelque chose de répétitif, vous n'avez pas besoin d'y penser. Je parle de pratiquer la résolution de problèmes qui nécessitent une réflexion.
Stephen C
l'expérience l'emporte sur tout (une sorte de déclaration générale, je sais) mais vous apprenez avec le temps, je veux dire combien de fois avez-vous rencontré un problème qui vous a pris une éternité à résoudre, pour le rencontrer à nouveau et vous en occuper en quelques minutes. De plus, c'est la façon dont vous abordez un problème, ne vous concentrez pas sur le blocage, concentrez-vous toujours sur ce que je n'ai pas encore essayé, du plus simple au plus complexe
farinspace
Pratique délibérée . Vous devez apprendre quelque chose à chaque itération.
4

Ces deux éléments peuvent vous intéresser:

Le flux

Mihály Csíkszentmihályi , professeur de psychologie hongrois, a présenté le concept du flux .

Le flux est l'état mental de fonctionnement dans lequel une personne dans une activité est complètement immergée dans un sentiment de concentration énergisée, de pleine implication et de réussite dans le processus de l'activité.

J'ai la chance de pouvoir entrer dans le flux tous les jours en utilisant une ancienne technique que j'apprends de mon application de GTD qui est la prochaine action .

Je peux vous dire que cela fait vraiment la différence. Quand je suis dans le flux, je produis une meilleure qualité et plus vite que lorsque je ne suis pas dans cet état. Je suis totalement concentré sur ce que je fais, et donc je pense plus efficacement.

pleine conscience

J'ai posé une question sur la méditation il y a quelque temps parce que j'étais préoccupé par le fait que la méditation pouvait diminuer mes capacités de programmation (et de créativité).

Je viens de commencer la formation sur la méthode Jon Kabat-Zinn , il est donc trop tôt pour partager avec vous de vastes expériences, mais d'après les quelques informations que j'ai apprises jusqu'à présent, je peux vous dire que c'est probablement quelque chose que vous voudrez faire.

Communauté
la source
+1 Bien que je déteste qu'il existe un livre et une "théorie" complète sur ce qui équivaut à une approche de bon sens à un problème, GTD a certainement des jambes.
Orbling
1
@Orbling: oh je suis totalement d'accord avec vous là-dessus. Mais comme dans la plupart des livres, il y a de la merde et de la valeur. Ce qui est de la merde et de la valeur dépend de qui lit le livre. Le problème avec GTD est qu'il est si puissant qu'il peut vous écraser si vous ne prenez pas le temps de réduire votre entrée au lieu de vous concentrer sur sa gestion quelle que soit sa taille. C'était mon erreur;)
Le problème que j'ai dans ma vie est qu'il y a tellement de contributions et tellement à faire que je n'aurais pas le temps de mettre en œuvre une telle procédure. Bien que je puisse certainement en voir la valeur.
Orbling
1
@Orbling: Je pense que c'est la clé. Le filtrage de vos entrées est la technique de productivité ultime, en plus de Covey ou GTD. Il faut être très fort mentalement.
Je trouve qu'il a besoin de personnes supplémentaires pour accomplir les tâches que vous filtrez, lol.
Orbling
2

J'ai toujours cru que de bons ingénieurs étaient nés, pas faits.

Vous avez besoin de l'esprit pour cela, de l'esprit logique, analytique et déductif, combiné à la ténacité et à la curiosité nécessaires pour obtenir une vue d'ensemble et une vue structurelle d'un problème de manière efficace et marcher rapidement de A à B, acheminer votre esprit à travers la solution.

De nombreuses recherches suggèrent que cette compétence est considérablement renforcée par une bonne exposition précoce à de telles choses, la musique aussi. Après un certain temps, vos cartes mentales sont assez câblées. Pas en termes de ce que vous pensez, mais comment vous pensez.

Pouvez-vous apprendre à penser en tant qu'adulte? Eh bien, vous pouvez certainement apprendre des techniques pour résoudre les problèmes, mais alors vous avez des algorithmes à suivre, vous pouvez devenir un "robot très rapide" comme vous le dites avec éloquence. La compréhension intuitive est probablement innée.

Ceci n'est nullement limité à notre profession, de nombreux ensembles de compétences sont dominés par des compétences innées, plutôt que par des réponses acquises. Les gens ne veulent peut-être pas que cela soit vrai, mais c'est très probablement le cas.

Orbling
la source
2

Trouvez un forum en ligne sur quelque chose qui vous passionne. Quelque chose qui a une sorte de communauté. De préférence pas de programmation - les forums de programmation sont généralement plus orientés vers les solutions que vers les discussions. Prendre position. Défendez-le. Utilisez des arguments. Vous pouvez également bloguer, mais avoir un adversaire, c'est mieux. Le but est d'avoir une communication significative et écrite sur quelque chose avec quelqu'un. Où vous échangez des morceaux de texte un peu plus gros.

Vous apprendrez à communiquer vos idées et à les argumenter. Puisque vous devrez défendre vos opinions, vous devrez les soutenir avec des faits. Vous devrez penser à quelque chose, articuler votre position et la soutenir; peut-être même le changer.

Ensuite, prenez cette capacité pour analyser le problème et synthétiser l'opinion et l'appliquer à n'importe quoi. Même programmation.

Domchi
la source
Je dois dire que c'est une façon de pratiquer la réflexion. Ce n'est pas le seul.
Domchi
2

Une chose à laquelle je pense, c'est qu'il faut voir les choses comme des systèmes, et tous les systèmes sont liés. Chacun dans l'univers. L'humanité, les planètes, la galaxie, les plantes, la lumière du soleil, la photosynthèse, les insectes, les roches, les océans, tous les systèmes en interaction. De même, dans le temps, les cycles: naissance, croissance, décomposition, mort, d'insectes, de personnes, de civilisations, de chaînes de montagnes, de systèmes stellaires. La lutte sans fin pour l'énergie. Tous les systèmes.

C'est l'étude de la vie et de la nature au sens large de l'étude. Voir toutes les choses liées, voir toutes les choses en interaction. Concentrez-vous sur cela lorsque vous regardez le coucher du soleil et sentez la profondeur des forces de gravité qui nous font tourner autour du Soleil, nous tirent vers le bas à la surface de la planète, et la lumière du soleil refluante qui rougit avant d'entrer dans votre rétine à 300 000 000 mètres par seconde et de faire des images dans votre cerveau de primate.

Lorsque vous commencez à penser à cela, à la façon dont tout est lié, à la façon dont le prix de l'or et du travail forcé et des tempêtes à travers le Pacifique et les complexes industriels au Japon sont tous liés, et vous prenez le temps, prenez vraiment le temps de vous asseoir et pensez à tout cela, alors votre "muscle" pensant va vraiment fléchir et grandir.

Maintenant, beaucoup de cela sera en dessous du seuil d'expressivité, mais ne vous laissez pas arrêter. Votre cerveau est plus puissant que l'ordinateur le plus puissant. Poussez. Je ne pense pas qu'il soit possible de l'overclocker.

Je me souviens d'une photo en noir et blanc montrant Albert Einstein allongé sur une chaise de jardin sur la plage en regardant l'océan. La légende dit: "Ici se trouve Albert Einstein. Avec son cerveau."

Le prochain défi est de pouvoir communiquer la complexité et l'interdépendance de toutes choses de manière simple. Cela vous donnera quelque chose à faire jusqu'à ce que vous soyez très vieux.

Christopher Mahan
la source
2

Une approche est la pratique délibérée .

La simple répétition ne mène à aucune acquisition de compétences - vous devez être introspectif, évaluer vos performances, identifier des façons de faire mieux.

Une illustration: Un de mes proches parents participe au tir au pistolet. Pendant l'entraînement, une grande concentration continue de revoir chaque tir, en se concentrant sur les étapes qui se déroulent correctement. Contre intuitivement, peu de mise au point se fait dans les mauvais plans, car rejouer (répéter) l'erreur le renforce.

Le simple fait de tirer 100 coups dans la portée n'apporte rien. Pratique délibérée de tirer 20 coups renforcera les bonnes habitudes et conduira à de meilleures performances.

La même chose s'applique à la programmation - pensez à ce que vous faites. Ne le faites pas mensuellement, hebdomadairement ou quotidiennement - faites-le instant par instant, action par action.

  • Pourquoi ce défaut s'est-il produit dans mon code?
  • Comment aurais-je pu éviter de créer ce défaut?
  • Comment aurais-je pu trouver la solution plus rapidement?
  • Quelle hypothèse était erronée?
  • Ai-je demandé de l'aide assez rapidement? trop vite?
  • Ai-je déjà fait cette erreur?
  • Ce défaut est-il isolé ou fait-il partie d'un modèle?
  • Y a-t-il un défaut de conception sous-jacent?
  • Si oui, puis-je faire quelque chose?

Etc ...

Bevan
la source
grand point, encore une fois tout cela vient avec le temps / l'expérience
farinspace
1
@farinspace, uniquement si vous prenez le temps d'évaluer et d'apprendre après chaque itération.
1

Allez piquer quelque chose que vous aimez jusqu'à ce que vous trouviez un avantage.

Profonde respiration,

Enjamber...

...

... Dites aux autres ce que vous avez trouvé.

Paddy3118
la source
1

Donc tu veux penser

Beaucoup de bonnes suggestions pour la plupart d'autres affiches sur la façon de penser ou d'apprendre à penser: le flux, la pleine conscience, les mathématiques, la passion, la pratique ... donc je n'irai pas là-bas, couvert.

Mais pas pourquoi. Quel est le but?

Personnellement, j'en suis venu à comprendre qu'avant de penser que vous devez savoir pourquoi.
La meilleure chose à faire est d'écouter et de regarder. (Je prends les deux comme une unité, vous ne pouvez pas les séparer)

La seule façon d'améliorer la programmation, que ce soit la collecte des exigences, la transformation de ces exigences en spécifications système détaillées, la correspondance avec les documents de conception, la mise en œuvre du code, le débogage pour votre vie, que vous ignoriez une ou toutes ces étapes, que vous ayez cinq minutes pour trouver une solution ou 20 ans, vous devez écouter et regarder.

Écoutez ce que veut l'utilisateur, écoutez ce que l'utilisateur vous a dit, écoutez la personne de soutien qui vous a vu. Ecoute. Écoutez même si cela n'a pas de sens. Écoutez même si vous êtes convaincu qu'ils ont tellement tort. Écoutez et ne jugez pas.

Cherchez des indices, non pas en cherchant mais en ouvrant les yeux. Regardez la réalité. Vous ne pouvez pas commencer à chercher des réponses avant d'avoir regardé la scène du crime. Vous ne pouvez pas trouver de solution tant que vous n'avez pas prouvé le défaut.

Un seul exemple de mon expérience(sur la résolution des bugs, mais il pourrait être vraiment adapté à tout). Pour des raisons évidentes (légales et autres), je garderai les détails juteux en dehors de cela. Sur un système critique pour la sécurité, un opérateur a signalé une grave faille. Certains dispositifs de suivi géographique ont en fait perdu le suivi alors qu'ils «n'auraient pas dû», avec un impact potentiel sur des vies (ce «devrait» était la véritable erreur et a bloqué nos enquêtes pendant trop longtemps). Heureusement, bien que cela ait été trouvé des semaines plus tard presque par hasard, car il y avait un autre système en fonctionnement dans un endroit éloigné pour lequel un autre opérateur est venu prouver que le suivi n'avait pas été perdu sur ce système. Cela nous a fait réfléchir à nouveau. Notre principal fournisseur de logiciels ne nous a pas crus une seule seconde, nous avons donc dû sortir et prouver la chose. La seule façon était par greffe: construire une simulation pour reproduire la situation opérationnelle exacte. Nous avons dû filmer la preuve pour que le fournisseur nous croie. Finalement, la simulation a produit des informations au-delà de nos espoirs et nous a amenés à comprendre l'ensemble du problème. Il n'a pas fallu longtemps pour réparer après cela.

La seule façon d'arriver à la fin était de connecter logiquement un système distant à un autre faisant un travail similaire mais pas tout à fait le même. C'est la recherche d'indices (Regardez). Cela n'a été possible qu'en faisant confiance au rapport unique et en ne le rejetant pas comme un problème aléatoire dans le système (écouter), puis en réentendant le deuxième rapport qui contredit le premier (écouter).

Donc, lorsque vous avez les bons indices (après avoir écouté et regardé), défini la zone à problème, compris la cause profonde ou les principes clés, vous pouvez alors penser à des solutions pour mieux comprendre d'abord (essais et erreurs, simulations, démonstration, preuve de concept, versions maquette, alpha, bêta), et éventuellement offrir une solution solide (qui peut parfois être encore améliorée après une opération réelle).

Pour pouvoir écouter et regarder de cette manière, il faut un esprit ouvert, de la confiance et un dévouement absolu à vos objectifs. C'est le carburant sur lequel vous devez penser, ou plus au point que votre pensée se concentre sur la bonne cible (souvent le problème n'est pas l'incapacité de penser mais le manque d'une cible bien définie pour exercer votre esprit).

asoundmove
la source
+1 pour votre réponse, étudier votre domaine de problème et écouter les utilisateurs est essentiel. Bien que -1 pour le commentaire "ouais bien", donc pas de changement.
Orbling
@Orbling: Ok, tu as raison, c'était un peu exagéré. Commentaire supprimé. Je ne pense pas que le talent inné soit correct, mais pas besoin de le mentionner.
asoundmove
Eh bien, si vous aviez -1 ma réponse à la place, j'aurais tout de même marqué la vôtre, mais cela l'a empêchée dans ce problème, corrigé maintenant. Bien de le mentionner comme faux si vous n'êtes pas d'accord avec ce que j'ai dit.
Orbling
@Orbling, nah je n'ai pas envie de voter -1 pour personne, je préfère simplement passer à autre chose ... Seuls les scénarios extrêmes justifient -1, tout simplement pas d'accord.
asoundmove
Je suis d'accord avec vous sur les autres sites, car ils sont bons / mauvais dans l'ensemble. Programmers.SE est différent des autres car il est subjectif, donc le vote est essentiellement un accord, un désaccord. Que vous pensiez que cela est utile ou inutile. Je ne vote négativement que si je suis fortement en désaccord avec quelqu'un. Au moment de la rédaction du présent rapport, 2,6% de mes votes étaient des votes négatifs. Après tout, les opinions devraient être contestées.
Orbling
1

Je pense que vous devez faire la distinction entre différents types de pensée.

Pensée créative - comment trouver de nouvelles idées, des solutions innovantes et des résultats inattendus. Il y a toute une science derrière cela, recherchez Edward de Bono, les techniques de créativité, etc. Peu de programmeurs se penchent sur ce domaine.

Pensée analytique - j'entends par là un processus scientifique. Regardez les entrées, les sorties, mesurez ce qui est important, tirez des conclusions logiques. La plupart des développeurs connaissent la technique scientifique mais ne l'utilisent jamais vraiment. Faites-le!

Pensée critique - je pense que c'est plus de la philosophie. Prenez du recul et regardez la situation dans son ensemble, revoyez vos hypothèses, faites-vous vraiment ce que vous dites que vos valeurs sont? Étudiez la philosophie, il y a un tas de grands auteurs et d'idées.

Richard
la source
0

Les mathématiques apprennent à penser. L'application nécessite de la créativité et de l'expérience.

Je refuse de croire que pour devenir un grand programmeur, nous nous soumettons simplement à une vie de comportement éponge

Bon aperçu. En gros, les exigences de «grandeur» dépendent de votre définition personnelle de «grandeur» ... et ont changé au fil du temps. Aujourd'hui, la réussite d'un projet consiste à pouvoir reconstituer des concepts rapidement et sans plonger dans tous les petits détails. Le succès personnel pourrait être défini comme la maîtrise du C # comme Jon Skeet.

Lire le codeur au travail . Des codeurs beaucoup plus expérimentés que je n'en discute en détail.

P.Brian.Mackey
la source
0

Travailler à appliquer des idées et des concepts dans des domaines apparemment sans rapport. Pour moi, la brillance de l'iPod n'était pas l'ingénierie derrière la fabrication d'un excellent lecteur MP3, mais aidait à résoudre un énorme problème que l'industrie du divertissement musical rencontrait avec la musique piratée et le modèle CD / Album de vente de musique. Jobs a probablement appliqué plus de ce qu'il a appris chez Pixar en traitant avec l'industrie du cinéma. Il savait quel était le vrai problème.

JeffO
la source