web-dev-qa-db-fra.com

Comment puis-je avoir plus confiance en mes compétences en programmation?

La programmation ne m'est pas étrangère. J'ai 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 savais beaucoup sur les organigrammes, les pseudocodes à ce stade), mais ensuite j'ai été averti Biologie au lycée et donc raté la "vraie" connaissance en programmation de langages tels que C, Java, etcetera. J'ai pris CS pour mon UG B.E. (similaire à BS, mais beaucoup plus théorique). J'ai appris le C & C++ (dans une moindre mesure) par moi-même (mon prof était une douleur totale et la classe était remplie de codes-jocks (qui l'avaient déjà appris à l'école, et donc ne prêtaient aucune attention à la classe et ne l'ont pas fait) laissez les moindres mortels comme moi faire attention à la classe non plus)) et pourrait concocter un programme d'addition ou de multiplication génial (ceux qui maintenant même les jardiniers plus gentils concoctent avec beaucoup plus de finesse) et une connaissance sans pitié de Java (qui a même rouillé ces derniers temps).

Mon principal problème est que je me suis toujours senti insuffisant et étranglé par mes compétences de programmation limitées et déprécié par les codes-jocks (croyez-moi, je suis tombé sur ce site il y a longtemps, mais je pouvais à présent me donner le courage de poster 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 le langage mais l'état d'esprit de la personne et les techniques qu'elle utilise pour résoudre les problèmes/problèmes. Je suis d'accord avec de tels sentiments, mais puis-je jamais acquérir un tel "état d'esprit", et si tel est le cas, comment dois-je aborder la "Programmation/Codage", et s'il existe des moyens et des étapes définis que l'on peut suivre pour atteindre le "Zen" de codage ". Comment dois-je procéder? De plus, cela ne ferait pas de mal si un saint voulait encadrer ce morceau opprimé de $ #! ^.

P.S. Je serais éternellement reconnaissant à toute personne qui me considère comme méritant son temps, et en prime, je nommerais mon premier logiciel que j'expédierai après eux. (Si j'arrive à en expédier un, c'est-à-dire)

TL; DR: Jamais vraiment appris "Programmation/Codage", ne peut pas résoudre les problèmes même si j'essaye. Aidez moi!

37
Ameen

Je dirais que la meilleure façon est de simplement y consacrer plus de temps (recherchez la règle des 10000 heures). Trouvez quelque chose que vous voulez faire et préparez-vous à le faire. Choisissez quelque chose qui dépasse vos capacités actuelles, mais pas si loin que vous ne pourrez pas terminer dans un délai raisonnable. Si vous l'appréciez vraiment, vous vous retrouverez à le répéter jusqu'à ce que vous soyez vraiment bon dans ce domaine. Si vous ne l'appréciez pas, ce n'est peut-être pas la bonne chose pour vous. Essayez de vous mettre au défi, vous l'apprécierez probablement.

26
WhiteFang34

Expédiez les choses . C'est la seule solution. Faites avancer les choses. Au travail, vos propres projets, projets open source. Commencez à expédier des choses. Il peut s'agir de très petites choses, comme une correction de bogue ou une fonctionnalité minimale commercialisable. Juste commencez à expédier des choses . Rien de plus satisfaisant ou de 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 l'expérience principale n'était pas d'expédier des choses (et de trouver des excuses pour ne pas les expédier). Navire de vrais artistes .

16
Rein Henrichs

"problème", "inadéquat", "étranglé", "compétences en X limitées", "déprécié", "déprimé", "incapacité" en une seule phrase, tous dirigés vers vous-même me suggèrent des blessures non cicatrisées du passé encore douloureuses vous. Si vous trouvez des moyens de les surmonter, la programmation ou tout autre art/artisanat serait très facile à maîtriser. Peut-être que la lecture de la résilience des autres aiderait ici. Tout le monde traverse des moments difficiles dans sa vie. Si ces blessures/blessures ne sont pas guéries, leurs succès n'auraient pas pu arriver. Guérissez d'abord votre/vos blessure (s). 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 d'autres qui programment déjà dans cette langue est, tout d'abord, de lire tout ce que je peux mettre la main sur ce qui est lié à cette langue. Ensuite, quand j'en ai lu assez, commencez à écrire de petits programmes.

12
vpit3833

Quelques choses dont vous aurez vraiment besoin pour commencer:

Persévérance: Devenir un bon programmeur prend du temps à s'entraîner. Vous aurez besoin d'écrire beaucoup de mauvais code avant d'écrire tout bon code - un lot de mauvais code. Heureusement, vous avez des ressources comme ce site pour vous aider. Tant que vous vous engagez à apprendre à programmer, vous pourrez créer des jeux et des utilitaires simples en un rien de temps!

Objectifs: Fixez-vous des objectifs. Dites apprendre à utiliser STL en C++ en deux semaines. Voyez à quel point vous faites bien. Si vous prenez plus de temps, gardez une trace de combien de temps, cela vous aidera à faire mieux à l'avenir. J'ai appris cette astuce d'un collègue; il pouvait estimer, à ce jour, combien de temps presque n'importe quelle tâche lui prendrait. Cela m'a aidé à garder un œil sur le temps que je passe sur des projets personnels et à les empêcher de devenir incontrôlables (la gestion de la portée, ils l'appellent).

Curiosité: Vous devez être intéressé et engagé. Si vous n'êtes pas du genre à ne pas aborder les problèmes avec le désir de trouver la solution, commencer la programmation va être difficile au début, et le débogage peut être cauchemardesque. Mais il ne doit pas en être ainsi. Si vous avez un problème, demandez sur des sites comme celui-ci, google votre erreur. Si vous ne savez pas comment mettre en œuvre quelque chose, demandez! Il y a toujours des gens prêts à aider!

Confiance: Soyez confiant dans ce que vous voulez faire et suffisamment confiant 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 déprimez-vous en pensant que vous avez mal agi; Pensez-y comme vous apprenant une approche différente pour résoudre votre problème!

Surtout, gardez un Outlook positif, lisez beaucoup de tutoriels et posez beaucoup de questions, et vous serez un programmeur heureux! Un autre conseil que je dois donner est de choisir une langue, de coller avec ça jusqu'à ce que vous soyez plus confiant. Vous avez beaucoup de temps pour apprendre une variété de langues, mais lorsque vous commencez, travaillez simplement avec une.

Bonne chance! Et rappelez-vous, c'est censé être amusant! = D

9
bryanegr

En développement, il semble que le paradoxe "plus vous en savez, plus vous savez que vous ne savez pas" est vrai.

Si vous êtes une personne réfléchie et honnête, vous devrez accepter ce fait et apprendre à y faire face.

La confiance, au sens sous-entendu par 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 le la compétence moyenne de la compétition à cause de la foule avec laquelle vous traînez) m'a toujours aidé.

Je suggérerais que vous appreniez à être plus confiant dans le travail que vous avez fait au lieu de renforcer la confiance dans vos compétences dans leur ensemble. La meilleure façon de procéder consiste à écrire des tests reproductibles pour l'ensemble de votre code. Cela fera des merveilles sur votre psyché.

7
smp7d

WhiteFang34 a tout à fait 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 Google et SO toujours à 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 mieux et mieux avec le temps. Je n'ai pas le temps de suivre 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 comment le faire. c n'est pas un très bon exemple de cela. Essayez des langages de niveau supérieur comme Java ou c #, car ils vous permettront d'en faire plus, vous aurez donc 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 juste 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

4
Aleadam

La chose drôle est:

l'esprit du programmeur ne concerne pas tant l'ordinateur, le langage de programmation,
modèles de conception ou algorithmes

Il s'agit de comprendre les subtilités du monde réel, l'interaction entre les choses. Capacité à penser abstrait. Capacité de remarquer les choses et rappelez-vous les. Cela conduit inévitablement à une bonne résolution de problèmes.

Implémentation, le code lui-même ne vient qu'après cela - après avoir réussi
a résolu un problème donné dans votre esprit.

4
Arnis Lapsa

La confiance n'est pas quelque chose que vous devriez essayer de ressentir à propos de vos compétences. La confiance est mal (probablement même négativement) corrélée avec les compétences réelles. Vous devez vous efforcer d'améliorer vos compétences professionnelles (ou vos loisirs préférés), peu importe ce que vous pensez de votre niveau de compétence actuel.

La confiance est quelque chose que d'autres personnes, celles que vous pensez compétentes, devraient ressentir vos compétences après avoir travaillé avec vous ou vu votre travail.

4
hotpaw2

C'est très simple: soyez intéressé! Vous semblez déjà l'être, alors trouvez quelque chose que vous pensez que ce serait cool de faire, puis faites-le, posez toutes les questions dont vous avez besoin en chemin, en utilisant toutes les ressources que vous pouvez, pour assembler le projet comme vous le souhaitez. le veux. Rincez et répétez, et vous vous trouverez être un programmeur génial sans même avoir déployé beaucoup d'efforts, car c'était intéressant/amusant en cours de route.

Aussi, établissez un bon équilibre entre trouver des choses et poser beaucoup de questions. Au début, en particulier, il est extrêmement utile que les autres vous disent où vous vous trompez, pour vous stimuler en quelque sorte pendant la première partie de la courbe d'apprentissage. À partir de là, essayez de comprendre les choses par vous-même, et si vous êtes coincé après un certain temps, posez une question à ce sujet. Ce que je fais souvent est de poster une question sur SO, puis d'aller chercher la réponse, en vérifiant SO occasionnellement dans le processus. Parfois, je trouve la réponse en premier, parfois elle me trouve en premier.

Ne vous inquiétez pas tellement de la technologie, même si cela peut être très amusant de faire 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.

3
Claudiu

Approchez la programmation avec une attitude plus positive envers les apprenants. Personne ne sait tout. Deuxièmement, découvrez pourquoi vous êtes intéressé par la programmation, que vous aimiez:

  • résolution de problème
  • apprendre de nouvelles choses
  • faire plier un ordinateur à votre gré
  • autre chose...

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 de l'informatique en général m'ont endormi.

Mon parcours est similaire au vôtre. J'ai commencé à construire des ordinateurs à l'âge de 10 ans. J'ai fait un peu de HTML/C++ à la mi-adolescence ... je me suis ennuyé ... j'ai arrêté pendant quelques années. Je n'ai jamais cessé 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 intelligentes et simples à des problèmes complexes fait vraiment brûler mon feu.

Enfin, ne vous inquiétez pas de la façon dont les autres codent ou si son "droit" ou non. C'est juste s'il fait ce que vous voulez qu'il fasse. Une fois que vous commencez à travailler en équipe, les normes deviennent importantes. Cela est dû en grande partie au fait que d'autres personnes devront être capables d'interpréter et de modifier votre travail. Les normes de conception ne sont pas un sujet de préoccupation pour un nouveau programmeur.

3
P.Brian.Mackey

Il y a toujours de l'inertie à surmonter lors de l'apprentissage de nouvelles choses. Les curieux programmeurs 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." afin d'apprendre X. Quelques-uns trouveront/inventeront ce projet.

Soyez avisé qu'une carrière dans la programmation sera un processus de frustration, d'étude, d'expérimentation et d'inclinaison contre les moulins à vent. Jusqu'à ce que les IA prennent le contrôle de tout.

Si vous faites encore de la vraie science, alors vous devriez être en mesure d'imaginer un projet/besoin quelconque. Par exemple, combiner des données provenant de plusieurs sources sur ou hors Internet. Cela pourrait vous inciter à apprendre javascript ou R ou même Excel/VBA. Si vous pouvez connecter des points pour d'autres dans votre domaine, vous serez reconnu, et voila, vous serez programmeur.

Utilisez mais faites attention aux mentors. Questionner l'autorité.

Et au fait, le "codage zen" est un oxymore.

3
stevej

Vous ne vous sentirez jamais sûr de vos compétences en programmation.

La façon dont vous décrivez vos compétences indique un état d'esprit où vous ne serez jamais satisfait de vos compétences. Vous maîtrisez le C++? Attendez, il y a Java! Vous maîtrisez Java? Attendez, il y a la programmation parallèle. Vous maîtrisez la programmation parallèle en C++ et Java? Attendez, il y a SOA! Il y a OOD! Et MVC! SOLIDE! Programmation fonctionnelle! Programmation web! Programmation cloud! Programmation mobile!

Il ne s'agit pas de se sentir déprimé à cause de cela. Vous devez appuyer sur quelques 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 avancerez. Le plus difficile est de le réaliser et de faire quelque chose contre cela, même s'il n'y aura jamais d'objectif. Plus vous pourrez le supporter longtemps, plus votre niveau de compétence sera élevé.

3
Theo Lenndorff

Je ressentais 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 des votes positifs et un commentaire disant que c'était une bonne réponse, et cela m'a encouragé à chercher d'autres questions auxquelles je pouvais répondre.

Cela est rapidement devenu une dépendance pour moi, trouvant des questions sans réponse que je pouvais résoudre, et avec le temps, j'ai commencé à gagner en confiance dans mes réponses. Je n'avais plus à dire "Je pense que c'est parce que ..." ou "Cela devrait causer ..." mais je pouvais plutôt dire avec une certaine confiance que "C'est parce que ..." ou "Cela cause ..."

J'aime les puzzles, et pour moi SO les questions étaient comme des mini-puzzles de programmation, avec l'avantage supplémentaire d'obtenir des commentaires positifs si j'avais la bonne réponse. Si j'ai une mauvaise réponse, je supprimé et appris des solutions d'autres personnes au même problème.

Donc, ma recommandation serait de continuer SO et de parcourir les questions dans la balise qui vous intéresse, et de chercher celles auxquelles vous pensez pouvoir trouver des réponses. Il n'y a rien de tel que les gens qui vous disent vos réponses de programmation sont utiles/bonnes pour vous donner confiance en votre capacité de programmation :)

3
Rachel

Votre cerveau n'aime pas trop travailler. Compte tenu du choix, il préfère emprunter la voie facile. 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 pour bien faire, trop de rasage de yak.

Il y a plusieurs choses que vous pouvez faire pour lutter contre cela. Tout d'abord, l'énergie. Essayez de faire votre pratique lorsque vous êtes bien reposé et bien nourri, sinon votre cerveau n'aura littéralement pas assez de carburant pour une pensée abstraite complexe. La deuxième astuce est l'intérêt ou l'importance. Si vous pouvez convaincre votre cerveau que connaître Maven est vital pour échapper au tigre qui vous poursuit, vous apprendrez et retiendrez plus que lorsque votre cerveau pense que c'est une tâche secondaire vide de sens sur le chemin de ce que vous voulez vraiment. Un troisième facteur important est de s'étirer sans en faire trop. Certains efforts vous donneront le buzz de la réussite et aideront à former de nouvelles voies mentales, sans être irréalisables.

Il y a aussi quelque chose à dire pour la 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 retrousser vos manches et de vous salir les mains. Il est facile de passer beaucoup de temps à réfléchir à des approches alternatives ou à la solution idéale, dans la mesure où vous ne commencez jamais. Ceci est un exemple de votre cerveau essayant de sortir plus facilement. Essayez de reconnaître quand cela vous arrive et évitez-le en essayant de commencer. Même un test ou une expérience est bon. Cela a également l'avantage secondaire de faire en sorte que votre cerveau veuille terminer la tâche ou trouver la meilleure solution.

3
CPhelps

Il y a beaucoup de bons commentaires sur la pratique ici, cela fait vraiment toute la différence.

Vous devriez moins vous soucier des "jocks de code" et 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 aussi; et vraiment, qui a le temps de s'inquiéter de son ineptie 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. Par exemple, je déteste lire du code avec des opérateurs tenary. D'autres, aimez-les. Est-ce que je pense qu'ils ont raison ou tort? ... en fait, non plus. C'est une préférence personnelle, même si de nombreux débats animés auront 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 qu'il n'ait trouvé un véritable défaut de logique. Parfois, dans le monde réel, nous devons simplement faire avancer les choses (et qui veut vraiment écouter quelqu'un souffler la poitrine à propos de la complexité ... euh, élégant, ils ont réussi à créer un morceau de code qui aurait dû être fait en 10 minutes) . Pouvez-vous apprendre quelque chose de débats philosophiques sans fin sur la distance à laquelle les choses peuvent être abstraites? Bien sûr ... mais il y a des retours graduels à se faire aspirer dans une élégance constante à 100%. Ce n'est pas toujours réaliste autant que nous aimerions 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 aux gens des semaines et des semaines de temps, utilisés depuis sa création il y a plus de dix ans et devraient être arraché aux doigts froids et morts des utilisateurs (et fonctionne aussi, n'a jamais cassé donc n'a jamais eu le temps de revenir en arrière et de "nettoyer" ce qui est toujours l'histoire).

Il y a un excellent article de blog de Joel Spolsky intitulé Duct Tape Programmer. C'est une excellente lecture et l'OMI met certaines de vos craintes en perspective.

http://www.joelonsoftware.com/items/2009/09/23.html

Je ne dis pas d'écrire du code de merde et d'ignorer les meilleures pratiques, mais prenez les programmeurs délirants avec un grain de sel.

2
b.pell

Trois choses à considérer: (Ou pas, bien sûr.)

  1. Entraine toi. Et si l'échec ne signifiait rien d'autre qu'une indication que vous pratiquez? Si vous abandonniez l'apprentissage de la marche la première fois que vous tombiez, vous seriez toujours en train de ramper.
  2. Jouez avec tout ce que vous faites. Jouer, c'est simplement essayer quelque chose et remarquer ce qui se passe. Renoncez à juger les bons/mauvais résultats, jouez et voyez ce qui se passe. Renoncez à être attaché à un résultat particulier, essayez simplement quelque chose et voyez ce qui se passe.
  3. Et si vous n'êtes pas le seul programmeur au monde à avoir ressenti cela?
2
David Pointer

Demandez-vous pourquoi vous ressentez un manque de confiance. Je pense que c'est parce que vous vous souciez de ce que pensent vos pairs, et c'est tout à fait compréhensible. Mais pour être vraiment zen à ce sujet, vous devez effacer de telles pensées et ne vous comparer à vous-même qu'avec le temps. Laissez-vous guider par votre intérêt, apprenez et travaillez dur, 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.

1
Kevin Hsu