J'ai tendance à comprendre les choses assez rapidement, mais après 2 ans de programmation en Python je tombe toujours sur des choses (comme Flask aujourd'hui) qui m'étonnent. Je regarde au code, je n'ai aucune idée de ce qui se passe, puis je me sens très humble. Je me sens comme un expert absolu chaque fois que cela se produit, jusqu'au moment où cela se produit. Ensuite, pendant environ 2 semaines, je me sens comme un débutant absolu.
Cela arrive-t-il souvent ou indique-t-il que j'ai encore beaucoup à apprendre avant de pouvoir être considéré comme un "bon" programmeur?
Je l'appelle le "Freshman Feeling". Quand il semble que tout le monde est réuni, va plus vite, connaît tous les bâtiments du campus, ne se débat pas, etc. c'est la peur.
Le sentiment disparaît quand je reconnais la peur de ce que c'est, puis je l'ignore, je plonge et commence à apprendre - en luttant contre chaque problème un par un.
Le truc c'est que maintenant je m'en sers comme jauge pour me dire quand j'apprends vraiment. Si je ne le ressens pas de temps en temps, je sais que je n'avance pas - je stagne.
L'un des programmeurs au travail a cette devise, "Le confort est l'ennemi".
Ce sentiment dont vous parlez peut être votre meilleur ami si vous voulez vous améliorer.
Vous ne serez jamais, jamais, jamais, jamais, jamais, dans l'ensemble de votre carrière, dans une position où vous comprendrez immédiatement toutes les technologies de programmation simplement en les regardant. Il y en a tout simplement trop. C'est l'accumulation de recherches et de connaissances de millions de personnes sur plusieurs décennies. Si jamais vous pensez que vous êtes à ce point, cherchez un thérapeute pour discuter de vos délires.
Le trait dont vous avez le plus besoin est la capacité et la volonté d'apprendre. Si vous avez cela, rien ne vous dépassera.
Non, ce n'est pas le signe d'un mauvais programmeur. Vous devez toujours apprendre et vous devez généralement supposer qu'il y a autre chose à apprendre sur un sujet donné.
Le mauvais programmeur est celui qui croit qu'il connaît déjà la meilleure façon de tout faire et n'est pas ouvert à la possibilité qu'il ait quelque chose à apprendre.
La seule constante sur mon chemin en tant que programmeur est que j'ai toujours plus à apprendre. Cela semble cliché, mais c'est vrai.
Cela ne veut pas dire que je n'ai pas sentir à tout moment, même maintenant, comme j'ai appris la plupart de ce que j'apprendrai dans ma vie. Le truc, c'est que je sentais que l'année dernière - en y repensant maintenant, j'avais clairement encore beaucoup à apprendre à l'époque. Même chose pour l'année précédente et l'année précédente.
Vous apprenez toujours - vous exposer à un très bon code et aux développeurs est un excellent moyen de vous le rappeler.
Il existe un modèle d'apprentissage où vous passez par quatre étapes:
De toute évidence, le niveau 1 est un problème, mais c'est là que tout le monde commence, mais a rapidement quitté. Au fur et à mesure que vous apprenez jusqu'à ce que vous le fassiez au niveau 4. Avec quelque chose comme un autre module ou une bibliothèque sur une plate-forme existante, vous revenez inévitablement à 1 ou 2 (si tout va bien 2). C'est normal.
(BTW. L'étape 4 peut être un problème, trop facile pour ne pas suivre les dernières techniques.)
Promenez-vous dans une bibliothèque. Si cela ne vous fait pas vous sentir très, très petit, vous ne l'obtenez pas. Si vous le voulez en nerd-parler, c'est tout sur le dérivé, pas la quantité réelle de vos connaissances. C'est bien de se sentir mieux dans ce que vous apprenez que dans ce que vous savez, bien que vous ne devriez pas non plus en faire trop. Après avoir appris quelque chose est un accomplissement, c'est juste que vous ne pouvez jamais le considérer comme complet.
Soit dit en passant, deux ans, ce n'est pas beaucoup d'expérience. J'avais plus que beaucoup d'expérience avant de quitter le collège (sans compter les cours), bien que j'ai eu la chance de bénéficier de ces opportunités.
J'écris du code de temps en temps depuis plus de 20 ans maintenant, il y a eu des moments où je me considérais comme inattaquable pour les compétences et l'expertise, mais j'ai découvert qu'il y avait toujours quelqu'un de mieux. Ce que vous devez garder à l'esprit, c'est qu'il existe une multitude qui est aussi pire, bien pire, que vous. Le génie logiciel n'est pas un domaine statique, de nouvelles approches, techniques et même des langages sont constamment développés et il serait impossible de suivre tout cela.
La chose qui me fait habituellement m'asseoir, l'air abasourdi par un nouveau code que je viens d'ouvrir, c'est le style de codage. C'est généralement une fonction de la façon dont le programmeur était à l'aise avec l'espace du problème, plus de confort tend vers un code plus abstrait dans mon expérience. Si vous ouvrez un morceau de code et qu'il ne saute pas aux yeux, ne vous battez pas, ne vous asseyez pas, ne le lisez pas attentivement, ne prenez pas de notes (oui, sur papier) et parcourez le code manuellement (si vous avez le temps) . La compréhension viendra et c'est vous devez la comprendre qui fait de vous un bon programmeur! :)
Cette habitude m'arrive. Puis ça s'est arrêté. Pas parce que j'ai arrêté de progresser et que je n'ai pas regardé le code difficile mais parce que je suis finalement devenu très bon. Pour moi, cela se produit en C++. Boost (code source) ne me fait pas peur.
Je ne sais pas si tu es un mauvais programmeur ou pas, mais je me considère comme un bon programmeur: D, même je ne sais pas tout. Pour moi, la différence entre un bon et un mauvais programmeur est la capacité et la méthodologie pour faire le travail. Si j'avais un pgrammer BASICA, qui peut construire l'application dont j'ai besoin dans le temps et qui fonctionne bien, et être capable de maintenir sa base de code pour effectuer des changements raisonnables en fonction de la demande, je le considérerais comme un bon programmeur même il ne connaît que BASICA et rien d'autre.
Cependant, se sentir humble est également une bonne chose pour les programmeurs - la carrière qui nécessite un apprentissage constant tout le temps.