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?
Réponses:
Mes suggestions pour apprendre à penser:
Et plus important encore, le langage détermine ce à quoi nous ne pouvons pas penser.
la source
D'après mon expérience, cela se résume à deux choses:
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.
la source
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.
la source
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 .
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.
la source
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.
la source
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.
la source
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.
la source
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.
Etc ...
la source
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é.
la source
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).
la source
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.
la source
Les mathématiques apprennent à penser. L'application nécessite de la créativité et de l'expérience.
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.
la source
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.
la source