Est-il possible pour un amateur de devenir un bon programmeur? [fermé]


46

Un programmeur professionnel à temps plein peut faire un excellent travail en apprenant continuellement de son travail. Comment un programmeur amateur peut-il s'entraîner à devenir un bon programmeur?

** Si vous aimez jouer de la musique ou chanter, vous pouvez le faire parce que c'est votre passe-temps et que cela vous intéresse, et vous pouvez devenir un bon chanteur ou un bon lecteur de musique. Mais vous n'avez pas besoin de devenir un chanteur professionnel ou de chanter pour gagner sa vie. Est-ce aussi vrai pour les programmeurs? Un programmeur amateur qui est célèbre?


3
Droite. Wozniak n’était donc pas un bon programmeur avant la vente de la première pomme (et il est donc devenu un "professionnel").
KeithS

Définir "bien" ..

2
Chaque "bon" programmeur était autrefois un amateur.
spudwaffle

Réponses:


84

La clé pour devenir vraiment bon est de travailler dans une bonne équipe. Beaucoup d'amateurs travaillent seuls, alors ils ne vont que très loin. Dans une équipe, vous apprenez des autres et vous devenez discipliné parce que vos pairs vont vous frapper avec tout ce qui vous sera utile autrement.

Pour cette raison, je vous propose de rejoindre une équipe, par exemple un projet open source, ou de créer un projet de loisir avec des amis.


9
+1 Pour travailler dans une bonne équipe. Il est extrêmement motivant d’avoir des collaborateurs de niveau égal ou supérieur dans votre équipe.
BenR

J'ai oublié le rôle de l'équipe dans ma liste de 'pièges', +1
keppla

2
+1 Je pense que c'est la clé: apprendre de bonnes personnes qui ont plus d'expérience que vous. Rejoindre une bonne équipe est beaucoup plus facile à dire qu'à faire.

1
+1 pour le bon bit d'équipe. Si l'équipe n'est pas aussi bonne ou meilleure que toi, tu n'apprendras pas.
Spencer Rathbun

4
Vous n'avez pas besoin d'être en équipe pour apprendre des autres.
Emanuil Rusev

53

Pour devenir un bon programmeur, le chemin est le même que pour chanter ou jouer de la musique: pratique, pratique, pratique. Si vous passez suffisamment de temps à développer des logiciels régulièrement pendant plusieurs années, il y a de fortes chances que vous y arriviez bien, que ce soit en dehors ou en dehors des heures de travail.

Désormais, outre le fait de passer plus de temps à pratiquer, il existe une autre raison pour laquelle les professionnels deviennent généralement meilleurs que les amateurs dans un certain sens (en musique comme en programmation). Si vous êtes un professionnel, vous devez effectuer des tâches qui ne vous plaisent pas forcément, mais qui appartiennent au travail plus général de développement de logiciels (par exemple, tests, discussions avec des clients, rédaction de documentation, configuration d'un environnement de développement / développement, rédaction de scripts de construction, etc. ). Et de temps en temps, vous êtes également pressé d’entrer dans des domaines inconnus, d’apprendre de nouvelles langues ou de nouvelles plateformes. En tant qu'amateur, vous n'êtes pas obligé de faire ce que vous ne voulez pas, ce qui vous laisse susceptible de rester dans votre zone de confort pendant la plus grande partie de votre vie. En d’autres termes, vous pouvez facilement vous limiter à un ou plusieurs domaines spécifiques qui vous tiennent à cœur,

De nombreux développeurs professionnels tombent également dans le même sac, restant dans la même entreprise et effectuant le même travail de routine, n’apprenant pratiquement rien de nouveau depuis des décennies ... La clé pour devenir meilleur est donc votre attitude. Si vous continuez à apprendre et recherchez consciemment les opportunités de sortir de votre zone de confort vers un nouveau territoire inconnu, vous finirez par surpasser ces essaims de "professionnels" qui fossilisent lentement. Un bon moyen d'y parvenir peut être de contribuer à certains projets open source.

Une lecture recommandée est The Pragmatic Programmer: De compagnon à maître , avec de nombreux conseils judicieux et très pratiques sur la manière de continuer à devenir meilleur.


3
+1 La règle des 10 000 heures de Malcolm Gladwell de en.wikipedia.org/wiki/Outliers_(book)
StuperUser

Bien qu'un professionnel doive faire les travaux désagréables, il existe un autre aspect: les emplois désagréables sont souvent des tâches ennuyeuses et fastidieuses qui enseignent peu. IOW, l’amateur peut souvent en apprendre davantage en même temps en choisissant de développer des projets intéressants. MAIS une leçon importante est, bien sûr, que vous devez être prêt à faire le travail ennuyeux et fastidieux. J'apprécie tout particulièrement votre "contribution à des projets open source", car cela signifie travailler avec du code elses - apprendre par exemple, comment lire du code inconnu, etc.
Steve314

@StuperUser votre lien est cassé (la deuxième parenthèse n'est pas incluse dans l'hyperlien).
Paperjam

Certains des meilleurs conseils que j'ai jamais lus, "Si vous voulez devenir un artiste décent, dessinez. Chaque matin, faites un croquis, vous ne pouvez pas vous empêcher de vous améliorer" ... trouvez un projet .. il y a beaucoup de les bénéfices sont là-bas et ont besoin d'aide. demandez conseil ("Je construis un système de facturation, par où commencer?", "Comment gérer la sécurité contextuelle?", etc.) .. le coût d'une défaillance est faible, et vous pourriez bien en obtenir un concert payant ..
Bobby D

@ Steve314, de meilleurs professionnels écriront des outils pour automatiser des tâches fastidieuses banales. En utilisant les bons outils pour le bon travail, j'ai réduit le temps nécessaire à l'exécution de certaines tâches par centaines. (Même de meilleurs outils auraient pu automatiser complètement cette tâche, mais j’ai atteint ce qui semblait être un bon équilibre entre effort d’écriture d’outil et gain de temps.)
sarnold

18

Mais pour un programmeur amateur, comment se former pour devenir un bon programmeur?

Vous devenez meilleur en apprenant, ce qui fait partie de faire, de réfléchir à ce qui a été fait.

Donc, fondamentalement, il n'y a pas de différence entre amateur et professionnel, mais les "pièges" sont disposés un peu différemment.

Les pièges amateurs sont, à mon humble avis

  • quoi qu'il en soit, la nécessité de terminer votre projet n'est pas aussi forte lorsque vous n'êtes pas professionnel . Cela peut être une bonne chose, parce que vous ne vous habituerez pas à couper les moindres détails en matière de qualité, mais finir (en tout cas, c'est encore mieux) est une compétence très importante, qui est plus difficile à entraîner en amateur, car il est facile de laisser un projet mourir et d’en démarrer un autre.

  • le besoin de bien communiquer n'est pas aussi fort. Sur un projet professionnel, il existe une forte incitation à vraiment comprendre les clients, même s'ils sont totalement incapables de former une phrase cohérente du problème qu’ils veulent que vous résolviez. Si vous les comprenez mal, ou (dans le cas habituel), ne remarquez pas qu'ils ne parlent pas de quelque chose que vous devez comprendre, cela deviendra votre problème, tôt ou tard. Un projet amateur peut facilement perdre tous les utilisateurs potentiels, du fait de ne pas résoudre leurs problèmes, et être "fini" de manière technique.

Les pièges professionnels sont

  • il y a souvent peu de motivation pour aller mieux . Vous y restez 40 heures par semaine, que vous trouviez un remède contre le cancer ou que vous buviez du café d'une manière qui semble productive. L’apprentissage est une tâche que vous accomplissez principalement pour vous-même et, souvent, si vous essayez d’appliquer ce que vous avez appris, certaines forces s’opposent à cela (pensée de groupe conservatrice, hiérarchies, voire guide-styles peuvent être utilisés pour vaincre les améliorations). Pour la profession, il faut beaucoup d’amour pour ne pas abandonner, réduire vos heures et chercher d’autres objectifs dans la vie.

  • il y a souvent peu à apprendre . Oui, on PEUT essayer de prendre tout comme un défi, mais il faut être honnête: après 1 an du code Spaghetti, vous n'êtes plus autorisé à refactoriser ("vous le compliquez!") Dans une langue dont vous avez plus d'années d’expérience, il n’apprend que la tolérance vis-à-vis de la frustration et de la politique d’entreprise.

Si vous jouez de la musique ou chantez, vous pouvez le jouer par intérêt, vous pouvez toujours devenir un bon chanteur ou un bon lecteur de musique, mais vous n'avez pas besoin de devenir un chanteur professionnel, ni de chanter pour vivre.

Vous n’avez bien sûr pas besoin de le faire, mais combien de musiciens refuseraient une occasion de quitter leur emploi et de gagner de l’argent avec leur musique?

En informatique, ces opportunités sont un peu plus probables qu'en musique, donc je pense que ce n'est pas qu'il soit impossible de devenir un amateur célèbre, mais souvent, les amateurs font de leur passion leur métier (avec des problèmes similaires comprendre leur ligne entre le commerce et l'art)


Cela fait mal à mon âme, c'est tellement vrai pour moi atm, lol. 1 année du code Spaghetti que vous n'êtes pas autorisé à modifier ("vous le compliquez!")
Terrance

1
"il y a souvent peu de motivation pour aller mieux." Si jamais un de mes employés traitait le développement de logiciels de cette manière, je préférerais le renvoyer à une personne qui essaie de faire mieux, même si elle échoue par inadvertance.

@ Chris Marisic: alors je serais heureux de travailler avec vous. malheureusement, vous seriez l'exception dans la lignée de mes employeurs
keppla

8

Je crains qu'il n'y ait plus de possibilités d'apprentissage pour les amateurs que pour les drones d'entreprise à temps plein. En tant qu'amateur, vous n'êtes pas confiné dans une technologie, un environnement, une conception et une méthodologie de développement donnés. Vous pouvez faire tout ce que vous trouvez utile pour votre développement personnel. En tant que développeur à plein temps, vous travaillerez probablement sur le même produit pendant des années, en suivant la même procédure, dans les limites des mêmes directives d'entreprise. Pour la plupart d'entre nous, ce n'est rien d'autre qu'une stagnation. Un peu peut être appris dans un environnement d'entreprise, une fois que vous êtes familiarisé avec les bases communes.

C'est la raison pour laquelle de nombreux développeurs à temps plein sont aussi des amateurs, ils continuent à coder après le travail, ils jouent avec leurs propres projets de jouets - c'est un peu de liberté nécessaire à la croissance.


6

En tant que programmeur amateur, vous disposez de nombreuses possibilités pour améliorer vos compétences. J'ai fait ce qui suit pour améliorer mes compétences tout en étudiant en génie logiciel.

Bien sûr, vous devez également appliquer vos connaissances. Faites-le par le biais d'un stage, d'un projet avec des amis ou d'un cours. Il existe de nombreuses façons de s’améliorer, il suffit d’être disposé à investir son temps libre. Amusez -vous aussi à apprendre quelque chose de nouveau !


4

Est-il possible pour un amateur de devenir un bon programmeur?

Oui, c'est possible , mais cela prend du temps:

Il faut environ dix ans pour développer une expertise dans une grande variété de domaines, notamment les jeux d'échecs, la composition musicale, le télégraphe, la peinture, le piano, la natation, le tennis et la recherche en neuropsychologie et en topologie. La clé est la pratique délibérative: ne pas le faire encore et encore, mais vous mettre au défi avec une tâche qui dépasse vos capacités actuelles, l'essayer, analyser votre performance pendant et après l'avoir fait, et corriger les erreurs éventuelles. Alors répète. Et répétez encore.


Comment un programmeur amateur peut-il s'entraîner à devenir un bon programmeur?

Encore de la même source :

  • S'intéresser à la programmation
  • Programme
  • Parler avec d'autres programmeurs
  • Si vous voulez, mettez en quatre ans dans un collège
  • Travailler sur des projets avec d'autres programmeurs
  • Travailler sur des projets après d'autres programmeurs
  • Apprenez au moins une demi-douzaine de langages de programmation

Je fais souvent pas +1 réponses constituées uniquement de liens, mais cet article est digne d'être lu. Merci.
sarnold

cela vous dérangerait-il d'expliquer ceci plus en détail - comment et pourquoi répond-il à la question posée? Les "réponses en lien uniquement" ne sont pas les bienvenues à Stack Exchange
Gnat

1
@gnat Le lien dit tout - j'espère que c'est mieux après le montage.
Février

3

En tant qu'amateur, vous avez plus d'options que de nombreux professionnels pour rechercher de meilleures pratiques. Les professionnels sont souvent sous pression pour "simplement y arriver".

Je n'ai pas vu de cours tels que ceux sur lesquels j'ai appris la programmation, mais j'ai tiré des enseignements de courts cours gratuits (1 à 3 heures) présentés par l'université que je suivais. Ils étaient destinés à permettre aux gens d'affaires de comprendre le code écrit pour eux. Les cours présentaient un code très bien écrit (commentaires inclus) qui résolvait un problème commun de la vie réelle. Le code a ensuite été passé en revue avec une explication des caractéristiques linguistiques et de leur utilisation telle quelle. Aucun des cours de langue complets que j'ai vus n'entraîne un code proche de la qualité de ce que j'ai appris grâce à ce cours. C'était quelques années avant que je passe à l'étude en informatique.

Internet et la bibliothèque fournissent de nombreuses ressources et exemples. Je trouve que beaucoup d'exemples ne sont pas très bons à autre chose que de réussir. Lorsque vous regardez des exemples, regardez d'abord le code. Pouvez-vous comprendre le but et la structure sans explication? Si oui, vous avez peut-être trouvé un bon exemple.

Quelques pratiques clés que vous devriez apprendre et appliquer:

  • SEC (Ne te répète pas).
  • DRO (ne pas répéter autre); Utilisez les bibliothèques de langage standard, utilisez d'autres bibliothèques.
  • Gardez le code simple. Le code élégant a tendance à être plus difficile à maintenir. Pire encore, les optimiseurs produisent souvent un code machine plus lent que pour le code plus simple.
  • Les modules ne devraient avoir qu'un seul objectif. (Il est préférable que ce soit pour faire du travail ou pour prendre des décisions.)
  • Utilisez de bons noms. N'utilisez pas de noms abrégés pour éviter de taper, utilisez plutôt un IDE avec auto-complétion. Comprendre les conventions de nommage de votre langue.
  • N'optimisez pas votre code. Attendez de pouvoir mesurer ses performances et sachez que son optimisation aura un effet notable.
  • Continue d'apprendre. Apprenez à identifier les ressources qui fourniront des informations utiles que vous pourrez utiliser maintenant.

2

Si vous aimez jouer de la musique ou chanter, vous pouvez le faire parce que c'est votre passe-temps et que cela vous intéresse, et vous pouvez devenir un bon chanteur ou un bon lecteur de musique. Mais vous n'avez pas besoin de devenir un chanteur professionnel ou de chanter pour gagner sa vie. Est-ce aussi vrai pour les programmeurs? Un programmeur amateur qui est célèbre?

Pas du tout. C'est du génie logiciel . Ce n'est pas basé sur le "talent naturel". Être un bon programmeur est basé sur des années d'éducation et d'expérience . Vous ne faites que travailler sur de vrais projets .


2
En réalité, il s'agit d'un talent naturel dans une large mesure. Vous ne pouvez pas former un mauvais ingénieur logiciel pour être bon, mais vous pouvez généralement entraîner n'importe qui pour être bon. C'est un peu comme un talent musical ou artistique, vous pouvez former presque n'importe qui à être assez bon mais vous ne pouvez pas entraîner quelqu'un à être bon, ils se forment eux-mêmes et sont probablement meilleurs que tous leurs entraîneurs. En outre, à l'instar des athlètes de classe mondiale, peu de gens ont déjà rencontré un talent exceptionnel en matière de programmation, ce qui peut expliquer pourquoi la plupart des programmeurs ne savent pas qu'ils existent :)
Bill K

2

Lors des entretiens d'embauche, je suis allé (du côté de l'employeur), j'ai toujours demandé des choses que l'enquêté programmait en tant qu'amateur (à l'exception des devoirs d'école). passion d'apprendre par soi-même. Ce n'est pas seulement possible, c'est presque une exigence pour devenir bon.


2

C'est possible? Oui. Cependant, plus vous passez de temps à programmer, plus vous avez de temps pour vous améliorer. Il a été dit qu'il faut 10 ans / 10 000 heures de pratique délibérative pour développer une expertise technique. Ce n'est pas 10 000 heures de codage identique dans votre zone de confort (par exemple, l'écriture de code jQuery simple pour différents sites Web), mais 10 000 heures d'apprentissage / de lecture sur la programmation / la lecture de code source / l'écriture de code source / l'apprentissage d'autres langues / travailler avec les autres, etc.

Si vous allez y consacrer autant de temps; vous pourriez aussi bien obtenir un emploi de programmeur et abandonner le statut d’amateur. (Sauf si vous êtes indépendamment riche).


1

Tout le monde est amateur à un moment donné. Si vous voulez devenir un bon programmeur et que vous aimez le faire, vous le ferez. La clé est la programmation par vous-même. L'école ne t'apprendra presque rien. La plupart de vos apprentissages se feront seuls et au travail. Si vous voulez être bon, allez-y bien.


1

Étant donné le véritable sens original du mot ( amateur français "amoureux de", de l'ancien français et finalement du latin amatorem nom. amator , "amoureux" - Wikipedia), on voudrait croire qu'un grand nombre de professionnels sont aussi des amateurs. Si vous n'aimiez pas votre métier, le pratiqueriez-vous?

Bien sûr, c'est possible - si vous aimez programmer, vous le pratiquez et, avec le temps, vous y arriverez bien. (Peut-être jamais génial, vu les talents personnels ou le manque de talent), mais au moins bon


La vraie signification de amateur est la signification que vous trouvez dans l'OED ou NOAD. L'étymologie d'un mot ne dicte pas sa signification. "Celui qui se consacre à la poursuite, aux études, aux sciences ou au sport comme passe-temps plutôt que comme profession".
Django Reinhardt

vrai. j'aurais peut-être dû écrire "sens original" plutôt que "sens réel". Il est regrettable que notre langue actuelle ne dispose pas d'un mot commun pour "les gens qui font quelque chose parce qu'ils aiment vraiment le faire". Je pense que cela aiderait à répondre à la question du PO, "Est-il possible pour un amateur de devenir un bon programmeur?" Bien sûr, c'est possible - si vous aimez programmer, vous le pratiquez et, avec le temps, vous y arriverez bien. (Peut-être jamais génial, vu les talents personnels ou le manque de talent), mais au moins bon.
StevenV

0

Je ne sais pas ce qui définit un bon programmeur. Mais apprendre quelque chose qui leur est propre et travailler avec un groupe de personnes est quelque chose de différent. Les programmeurs amateurs passionnés aiment vraiment apprendre de nouvelles choses et le piratage. Il y avait ils trouvent des choses plus intéressantes. Mais travailler avec un groupe de personnes est légèrement un acte discipliné dans le cadre duquel vous collaborez, communiquez, partagez / obtenez des informations auprès d'experts dans ce domaine.

Mais acquérir des connaissances n’est qu’une question de passion. Il y a des gens qui ont passé la nuit à apprendre par eux-mêmes et ont fini par apporter quelque chose de nouveau au monde, comme Bill G Mark Zuck, etc. On ne peut pas comparer facilement. mais si vous voulez être un meilleur ingénieur logiciel (je n'appellerai pas le programmeur), rejoignez une entreprise ou travaillez pour de bons produits utilisés par d'autres.

Enfin, lisez beaucoup pour améliorer vos compétences, votre attitude, les mises à jour de l'industrie, développer votre goût et partir avec passion. Les choses vont facilement vous suivre!


Bill Gates et Mark Zuckerberg ont tous deux étudié l'informatique à Hardvard jusqu'à ce qu'ils lancent leur propre entreprise et décrochent. Pas un bon exemple d' amateur .
vartec

Je doute que Harvard ait joué un rôle important dans le développement de ses compétences en programmation, à l'exception de l'environnement geek!
Sarat

0

A la question, "est-ce que des programmeurs amateurs sont devenus célèbres?" La réponse est "Oui, mais la plupart ne sont pas restés comme ça." L’exemple le plus célèbre auquel je puisse penser est Roy Fielding, qui a effectué une partie de son travail le plus important alors qu’il était (je crois) non rémunéré à l’Université (par définition, non rémunéré).

L'astuce pour être de qualité professionnelle consiste à avoir un mentor ou un ensemble de mentors (comme une équipe dans un projet open source) et à consacrer beaucoup de temps au sujet. En tant que musicien professionnel, mon expérience montre que ces deux éléments sont nécessaires pour être bon en tant que professionnel ou amateur. Certains peuvent être appris par des livres, mais sans critique externe cohérente, il devient très difficile de surmonter les mauvaises habitudes acquises en tant que novice.

Cela dit, dans le cas du programmeur, il est nettement plus facile à apprendre que celui du musicien. Mon expérience m'a montré qu'en tant que musicien, il est beaucoup plus difficile en tant que musicien de voir vos erreurs pédagogiques plutôt que de voir le code ne fonctionne pas. D'autre part, il faut également beaucoup plus de temps pour être un bon développeur.


0

Comme pour toute chose, le meilleur moyen d’améliorer quelque chose consiste à vous plonger dans l’environnement dans lequel vous souhaitez devenir bon et à vous entourer de personnes bien supérieures à vous, prêtes à vous tolérer et à vous enseigner. Ce n’est pas facile à faire, mais c’est ce que j’ai trouvé comme le meilleur moyen d’apprendre à être bon dans quelque chose le plus rapide.

Mais quand il s’agit d’être un programmeur vraiment doué, il faut être juste cela, doué. Si vous n'êtes pas un violoniste au talent naturel, vous ne serez jamais aussi bon que les maîtres, peu importe les efforts que vous essayez ou quel instrument vous achetez. De même, si vous n’avez pas ce cadeau qui rend les programmeurs vraiment génial, vous ne le serez jamais non plus.

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.