La programmation ne m'est pas étrangère. J'ai d'abord commencé à faire du balisage (HTML, maintenant s'il vous plaît, ne vous moquez pas de moi) quand j'avais 12 ans et un peu de BASIC quand j'avais 13 ans (je connaissais beaucoup de diagrammes, de pseudocodes à ce stade), mais j'ai ensuite été averti Biologie à l’école secondaire et manquait donc une connaissance "réelle" en programmation de langages tels que C, Java, etc. J'ai pris CS pour mon UG BE (similaire à BS, mais beaucoup plus théorique). J'ai appris le C & C ++ (dans une moindre mesure) tout seul (mon prof était une douleur totale et la classe était remplie de code-jocks (qui l'avait déjà appris à l'école et ne faisait donc pas attention à la classe). Que les petits mortels comme moi accordent une attention particulière à la classe) et puissent créer un programme d’addition ou de multiplication impressionnant
Mon principal problème est que je me suis toujours sentie inadéquate et étranglée par mes compétences en programmation limitées et rabaissée par les codes-jocks (croyez-moi, je suis tombé sur ce site il y a bien longtemps, mais je pourrais à présent avoir le courage de publier une question) et ont même parfois été déprimés par cette incapacité. La plupart des gens disent que la programmation ne concerne pas nécessairement la langue mais l’état d’esprit de la personne et les techniques qu’elle utilise pour résoudre des problèmes. Je suis d'accord avec de tels sentiments, mais pourrais-je jamais acquérir un tel "état d'esprit", et si tel était le cas, comment aborder la "Programmation / Codage", et s'il y avait des chemins et des étapes prédéfinis pour atteindre le "Zen de codage ". Comment je le fais? En outre, cela ne ferait pas de mal si un Saint voulait parrainer ce morceau malmené de $ #! ^.
PS: je serais éternellement reconnaissant à toute personne qui estime que je vaux son temps et, en prime, je nommerais mon premier logiciel que j'expédie après eux. (Si j'en arrive à en expédier un, c'est-à-dire)
TL; DR: Je n'ai jamais vraiment appris la "programmation / codage", je ne peux pas résoudre les problèmes même si j'essaie de le faire. Aidez moi!
Réponses:
Je dirais que le meilleur moyen est simplement de passer plus de temps dessus (recherchez la règle des 10 000 heures). Trouvez quelque chose que vous voulez faire et décidez-vous de le faire. Choisissez quelque chose qui dépasse vos capacités actuelles, mais pas si loin que vous ne pourrez pas terminer dans un laps de temps raisonnable. Si vous l'appréciez vraiment, vous vous retrouverez à le répéter jusqu'à ce que vous y excelliez vraiment. Si vous n'aimez pas ça, alors peut-être que ce n'est pas la bonne chose pour vous. Essayez de vous mettre au défi, vous l'apprécierez probablement.
la source
Expédier des choses . C'est la seule solution. Obtenez des choses faites. Au travail, vos propres projets, projets open source. Commencez à expédier des choses. Il peut s'agir de petites choses, comme une correction de bogue ou une fonctionnalité minimum commercialisable. Commencez juste à expédier des choses . Rien n’est plus satisfaisant ni ne renforce la confiance que le succès.
Edit: Vous devriez lire Ship It . C'est bien.
Modifier à nouveau: L'expérience de faire autre chose que l'expédition est simplement une expérience d'échec. J'ai vu beaucoup de développeurs "seniors" dont la principale expérience n'était pas l'expédition (et la recherche d'excuses pour ne pas les envoyer). De vrais artistes expédient .
la source
'problème', 'inadéquat', 'étranglé', 'compétences limitées en X', 'rabaissé', 'déprimé', 'inapte' en une phrase, tous dirigés vers vous-même me suggèrent des blessures non guéries du passé qui font encore mal toi. Si vous trouvez des moyens de les surmonter, la programmation ou tout autre art ou métier sera très facile à maîtriser. Peut-être que lire sur la résilience d’autres personnes serait utile ici. Tout le monde traverse des moments difficiles dans leur vie. Si ces blessures / blessures ne sont pas guéries, leurs succès ne seraient pas passés. Soignez votre blessure en premier. La programmation peut attendre plus tard.
En ce qui concerne les compétences en programmation, la façon dont j'apprends une nouvelle langue et commence à penser comme les autres qui programment déjà dans cette langue consiste, en premier lieu, à lire tout ce que je peux mettre en main sur cette langue. Puis, quand j'ai assez lu, commencez à écrire de petits programmes.
la source
Quelques choses dont vous aurez besoin pour vraiment commencer:
Persévérance: Devenir un bon programmeur prend du temps, c'est une pratique. Vous aurez besoin d'écrire beaucoup de mauvais code avant d'écrire un bon code - beaucoup de mauvais code. Heureusement, vous avez des ressources comme ce site pour vous aider. Tant que vous continuez à apprendre à programmer, vous serez capable de créer des jeux simples et des utilitaires en un rien de temps!
Objectifs: Fixez-vous des objectifs. Dites comment utiliser STL en C ++ dans deux semaines. Voyez comme vous allez bien. Si vous prenez plus de temps, notez combien de temps, cela vous aidera à faire mieux à l'avenir. J'ai appris cette astuce d'un collègue; il pouvait estimer, au jour le jour, combien de temps n'importe quelle tâche le prendrait. Cela m'a permis de garder un œil sur le temps que je consacre à mes projets personnels et de les empêcher de prendre de l'ampleur (contrôle de la portée, qu'ils appellent cela).
Curiosité: Vous devez être intéressé et engagé. Si vous n'êtes pas le genre de personne qui n'aborde pas les problèmes avec le désir de trouver la solution, lancer la programmation sera difficile au début, et le débogage peut être cauchemardesque. Mais il n'est pas nécessaire que ce soit le cas. Si vous avez un problème, demandez sur des sites comme celui-ci, recherchez votre erreur sur Google. Si vous ne savez pas comment mettre en œuvre quelque chose, demandez! Il y a toujours des gens prêts à aider!
Confiance: Ayez confiance en ce que vous voulez faire et assez en confiance pour poser des questions. Si quelqu'un vous montre une autre façon de faire quelque chose, ne soyez pas sur la défensive ou ne vous laissez pas aller en pensant que vous l'avez mal fait; Pensez-y en apprenant une approche différente pour résoudre votre problème!
Surtout, gardez une attitude positive, lisez beaucoup de tutoriels, posez beaucoup de questions et vous serez un bon programmeur! Un autre conseil que je dois donner est de choisir une langue, un bâton avec cela jusqu'à ce que vous soyez plus confiant. Vous avez beaucoup de temps pour apprendre différentes langues, mais lorsque vous débutez, travaillez avec une seule.
Bonne chance! Et rappelez-vous, c'est censé être amusant! = D
la source
En développement, il semble que le paradoxe "plus vous en savez, plus vous en savez, vous ne le savez pas" est vrai.
Si vous êtes une personne honnête et réfléchie, vous devez accepter ce fait et apprendre à le gérer.
La confiance, au sens implicite de la question, est une chose très personnelle qui n'a vraiment rien à voir avec un ensemble de compétences ou une méthodologie particulière.
Sur une note plus superficielle, le sentiment décrit dans http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ (section: Vous surestimez radicalement les compétences moyennes de la concurrence en raison de: la foule avec qui vous traînez) m'a toujours aidé.
Je suggérerais que vous appreniez à être plus confiant dans le travail que vous avez fait, par opposition à renforcer la confiance dans l'ensemble de vos compétences. La meilleure façon de procéder consiste à écrire des tests répétables pour tout votre code. Cela fera des merveilles sur votre psychisme.
la source
WhiteFang34 a totalement raison. En tant que biologiste moi-même, j'ai découvert que la seule façon d'apprendre la programmation est de commencer à le faire. Lisez quelques livres, ayez toujours Google et SO à portée de main et "faites-le". Vos programmes seront très basiques, mal codés et bogués au début, et vous irez de mieux en mieux avec le temps. Je n'ai pas le temps de prendre des cours de programmation, mais je passe beaucoup de temps à coder (parce que c'est amusant de le faire).
Choisissez une langue qui vous permettra de réfléchir davantage à ce que vous voulez faire et moins à la manière de le faire. c n’est pas un très bon exemple de cela. Essayez des langages de niveau supérieur tels que java ou c #, car ils vous permettront de faire plus, vous aurez ainsi le courage d'essayer de plus en plus.
(C'est, bien sûr, en supposant que vous ne poursuivez pas une carrière de programmeur professionnel, auquel cas je dirais simplement de retourner à l'école ...)
Bonne chance et bon codage
PS: Oh, et vous aurez besoin de beaucoup de paresse, d'impatience et d'orgueil
http://c2.com/cgi/wiki?LazinessImpatienceHubris
la source
La chose drôle est:
Il s'agit de comprendre les subtilités du monde réel, l'interaction entre les choses. Capacité à penser abstrait . Capacité à remarquer des choses et à s'en souvenir . Cela conduit inévitablement à une bonne résolution de problèmes.
L'implémentation, le code lui-même vient seulement après cela - après avoir
résolu avec succès un problème donné dans votre esprit.
la source
La confiance n'est pas quelque chose que vous devriez essayer de ressentir à propos de vos compétences. La confiance est faiblement corrélée (probablement même négativement) aux compétences réelles. Vous devriez travailler à améliorer votre ensemble de compétences professionnelles (ou votre passe-temps apprécié), peu importe ce que vous pensez de votre niveau actuel.
La confiance est une chose que les autres personnes, celles que vous jugez compétentes, devraient ressentir à propos de vos compétences après avoir travaillé avec vous ou avoir vu votre travail.
la source
C'est très simple: s'y intéresser ! Vous semblez l'être déjà. Trouvez quelque chose que vous pensez qu'il serait cool de faire, puis posez-le, posez les questions qui vous intéressent, utilisez toutes les ressources possibles pour mettre en place le projet comme vous le souhaitez. le veux. Rincez et répétez, et vous vous retrouverez comme un programmeur génial sans même avoir déployé beaucoup d’efforts, car c’était intéressant / amusant en cours de route.
En outre, trouvez un juste équilibre entre comprendre et poser beaucoup de questions. Au début, en particulier, il est très utile que d’autres personnes vous disent où vous vous trompez et vous encouragent en quelque sorte au début de la courbe d’apprentissage. À partir de là, essayez de comprendre vous-même et si vous êtes bloqué au bout d’un moment, posez une question à ce sujet. Ce que je fais souvent, c'est poster une question sur SO, puis aller chercher la réponse, en vérifiant SO de temps en temps. Parfois, je trouve la réponse en premier, parfois, il me trouve en premier.
Ne vous inquiétez pas trop de la technologie, même si cela peut être amusant de créer des graphiques avec HTML5 + JavaScript + la balise canvas, car il est assez facile à configurer, les récompenses sont immédiates et vous pouvez les partager.
la source
Approche de la programmation avec une attitude plus positive des apprenants. Personne ne sait tout. Deuxièmement, découvrez pourquoi vous êtes intéressé par la programmation, que vous appréciiez:
Une fois que vous savez ce que vous aimez dans la programmation, vous pouvez concentrer vos efforts d'apprentissage dans cette direction. Je suis un bricoleur / solutionneur de problèmes. Cela me rend extrêmement pragmatique. Les algorithmes et les structures de données, la théorie informatique en général m'endormissent.
Mon parcours est similaire au vôtre. A commencé à construire des ordinateurs à l'âge de 10 ans. Est-ce qu'un peu de HTML / C ++ à l'âge de 15 ans ... m'a ennuyé ... s'est arrêté pendant quelques années. Je n'ai jamais arrêté de jouer avec l'ordinateur.
Maintenant, j'aime la programmation. Alors qu'est-ce qui a changé? J'ai trouvé ma motivation. J'ai commencé à travailler là où on me donne une pléthore de problèmes à résoudre. Trouver des solutions simples et intelligentes à des problèmes complexes allume vraiment mon feu.
Enfin, ne vous inquiétez pas de la manière dont les autres codent, de la "droit" ou non. C'est juste si cela fait ce que vous voulez. Une fois que vous commencez à travailler en équipe, les normes deviennent importantes. Cela tient en grande partie au fait que d’autres personnes devront pouvoir interpréter et modifier votre travail. Les normes de conception ne sont pas quelque chose qu'un nouveau programmeur devrait se préoccuper.
la source
Il y a toujours une inertie à surmonter pour apprendre de nouvelles choses. Les programmeurs curieux que j'ai connus ont du mal à trouver la motivation pour continuer à apprendre de nouveaux langages et paradigmes. Ils diront: "J'ai besoin d'un projet pour essayer X." pour apprendre X. Quelques-uns trouveront / inventeront ce projet.
Sachez qu'une carrière dans la programmation sera un processus de frustration, d'étude, d'expérience et de lutte contre les moulins à vent qui durera toute la vie. Jusqu'à ce que les IA prennent tout en charge.
Si vous faites encore de la vraie science, vous devriez pouvoir imaginer un projet / besoin. Par exemple, combiner des données provenant de sources multiples sur ou hors d’Internet. Cela pourrait vous inspirer pour apprendre javascript, R ou même Excel / VBA. Si vous pouvez connecter des points à d’autres personnes de votre domaine, vous serez reconnu et le tour est joué, vous serez programmeur.
Utilisez mais méfiez-vous des mentors. Question autorité.
Et au fait, "coder zen" est un oxymore.
la source
Vous ne serez jamais confiants dans vos compétences en programmation.
La façon dont vous décrivez vos compétences indique un état d'esprit dans lequel vous ne serez jamais satisfait de vos compétences. Vous maîtrisez le C ++? Attends, il y a Java! Vous avez maîtrisé Java? Attendez, il y a la programmation parallèle. Vous maîtrisez la programmation parallèle en C ++ et Java? Attends il y a SOA! Il y a du OOD! Et MVC! SOLIDE! Programmation fonctionnelle! Programmation web! Programmation en nuage! Programmation mobile!
Le but est de ne pas se sentir déprimé à cause de cela. Vous devez pousser des boutons dans votre tête: Votre doute sur vos compétences est du carburant pur. Vous n'atteindrez probablement jamais un niveau satisfaisant de compétences en programmation. Tant que c'est le cas, vous irez de l'avant. La partie difficile est de le réaliser et de faire quelque chose contre cela, bien qu’il n’y ait jamais d’objectif. Plus vous pourrez le supporter longtemps, plus votre niveau de compétence sera élevé.
la source
J'avais l'habitude de ressentir la même chose, et ce sont en fait les sites Stack Exchange qui m'ont aidé à me donner confiance.
J'ai commencé à utiliser StackOverflow pour trouver des réponses à mes questions et un jour, j'en ai vu une dont je connaissais la réponse. J'ai posté la réponse, obtenu quelques votes positifs et un commentaire disant que c'était une bonne réponse, ce qui m'a encouragé à chercher d'autres questions auxquelles je pourrais répondre.
Cela m’a rapidement transformé en une dépendance, en trouvant des questions sans réponse que je pouvais résoudre, et au fil du temps, j’ai commencé à prendre confiance en mes réponses. Je n'avais plus à dire "Je pense que c'est parce que ..." ou "Cela devrait causer ..." mais pourrais plutôt dire avec une certaine confiance que "C'est parce que ..." ou "Ceci cause ..."
J'aime les énigmes et, pour moi, les questions SO étaient comme des énigmes de mini-programmation, avec l'avantage supplémentaire d'obtenir des retours positifs si j'ai la bonne réponse. Si je me suis trompé dans une réponse, je l'ai simplement supprimée et j'ai appris des solutions d'autres personnes au même problème.
Donc, ma recommandation serait d'aller sur SO et de parcourir les questions dans les balises qui vous intéressent, et de chercher celles pour lesquelles vous pensez pouvoir trouver des réponses. Il n'y a rien de tel que les gens vous disent que les réponses de votre programmation sont utiles / bonnes pour vous donner confiance en votre capacité de programmation :)
la source
Votre cerveau n'aime pas travailler trop fort. Étant donné le choix, il préfère choisir la solution de facilité. C'est pourquoi il est facile d'abandonner les choses lorsque vous essayez de vous attaquer à quelque chose de trop ambitieux - trop à apprendre, trop de détails délicats à résoudre, trop de rasage de yak.
Vous pouvez faire plusieurs choses pour lutter contre cela. Tout d'abord, il y a l'énergie. Essayez de vous entraîner lorsque vous êtes bien reposé et nourri, sinon votre cerveau n'aura littéralement pas assez de carburant pour une pensée abstraite complexe. Le deuxième tour est l'intérêt ou l'importance. Si vous parvenez à convaincre votre cerveau que la connaissance de maven est indispensable pour échapper au tigre qui vous poursuit, vous en apprendrez et retiendrez plus que lorsque votre cerveau pense que c'est une tâche secondaire insignifiante sur la voie de ce que vous voulez vraiment. Un troisième facteur important est de s’étirer sans trop en faire. Certains efforts vous donneront le bourdonnement de la réussite et aideront à créer de nouveaux chemins mentaux, sans être irréalisables.
Il y a aussi quelque chose à dire pour une pratique répétée. Vous voulez assez de variation pour être nouveau, mais suffisamment de similitude pour pouvoir exercer les mêmes actions et les enraciner.
Un autre point est que vous devriez essayer de vous retrousser les manches et vous salir les mains. Il est facile de passer beaucoup de temps à réfléchir à d’autres approches ou à la solution idéale, dans la mesure où vous n’avez jamais commencé. Ceci est un exemple de votre cerveau essayant de prendre le moyen le plus facile. Essayez de savoir quand cela vous arrive et évitez-le en essayant de vous lancer. Même un test ou une expérience est bon. Cela a également pour avantage de donner à votre cerveau le désir de terminer la tâche ou de trouver la meilleure solution.
la source
Trois choses à considérer: (ou pas, bien sûr.)
la source
Il y a beaucoup de bons commentaires sur la pratique ici, cela fait vraiment toute la différence.
Vous devriez vous soucier moins de "code jocks" et de prendre leurs conseils ou commentaires pour ce qu'ils sont. S'ils sont difficiles à gérer dans un fil, ils sont probablement difficiles à gérer dans la vie réelle également; et vraiment, qui a le temps de s'inquiéter de leur inaptitude sociale?
Le résultat final est qu'il existe des milliers de façons d'aborder les tâches de programmation. Beaucoup de choses se résument à des préférences personnelles. Je déteste, par exemple, la lecture de code avec des opérateurs temporaires. Les autres les aiment. Est-ce que je pense qu'ils ont raison ou tort? .. en fait, ni l'un ni l'autre. C'est une préférence personnelle bien que de nombreux débats passionnés aient lieu sur le sujet.
Si quelqu'un réprimande votre code parce que vous avez pris 25 lignes au lieu de 20, j'aurais tendance à les ignorer à moins que cette dernière ne trouve un défaut réel dans la logique. Parfois, dans le monde réel, nous devons simplement faire avancer les choses (et qui veut vraiment écouter la poitrine de quelqu'un dire à quel point c'est compliqué ... euh, élégant, ils ont réussi à faire un morceau de code qui aurait dû être fait en 10 minutes) . Pouvez-vous apprendre quelque chose à partir de débats philosophiques sans fin sur la distance aux choses abstraites? Bien sûr ... mais il y a des rendements en baisse en se faisant sucer dans une élégance constante à 100%. Ce n’est pas réaliste tout le temps autant que nous voudrions le prétendre. Certains de mes codes les moins élégants que je serais gêné de partager avec qui que ce soit (que j'ai écrits au début de ma carrière) ont fait gagner du temps à des personnes, semaines après semaines,
Joel Spolsky a publié un excellent post sur le blog, intitulé Duct Tape Programmer. C'est une excellente lecture et l'OMI met en perspective certaines de vos peurs.
http://www.joelonsoftware.com/items/2009/09/23.html
Je ne dis pas écrire du code merdique et ignorer les meilleures pratiques, mais prenez les programmeurs téméraires avec un grain de sel.
la source
Demandez-vous pourquoi vous ressentez réellement un manque de confiance en vous. Je pense que c'est parce que vous vous souciez de ce que vos pairs pensent et c'est tout à fait compréhensible. Mais pour être vraiment zen à ce sujet, vous devez effacer ces pensées et vous comparer à vous-même au fil du temps. Soyez guidé par votre intérêt, apprenez et travaillez fort, et vous deviendrez un bon programmeur sans tous les BS psychologiques.
Ce n'est pas vraiment la confiance dont vous avez besoin, c'est moins de bruit sur votre chemin de progrès.
la source