Dois-je être un bon programmeur immédiatement après l'université?


28

Duplicata possible:
j'ai obtenu un diplôme en informatique, mais je ne me sens même pas proche d'être un programmeur expert

J'ai récemment obtenu mon diplôme universitaire et j'ai depuis rejoint une équipe de développement où je suis de loin le développeur le moins expérimenté avec peut-être quelques stages à mon actif. Pendant ce temps, le reste de l'équipe a 5 à 10 ans d'expérience.

J'étais un très bon élève et un assez bon programmeur en ce qui concerne les affectations et les tests en bouteille. J'ai travaillé sur certains projets avec succès, mais maintenant je travaille avec une base de code beaucoup plus grande, et la courbe d'apprentissage est beaucoup plus élevée.

Je me demandais combien d'autres développeurs ont commencé leur carrière en équipe et sont partis comme ils étaient nuls. Quand est-ce que cela change? Comment puis-je accélérer le processus? Mes aînés m'aident mais je veux être formidable et montrer ma valeur maintenant.

Réponses:


50

Ce qui est intéressant avec le développement de logiciels, c'est que peu importe à quel point vous êtes bon - il y a toujours quelqu'un de meilleur ou au moins assez différent pour vous apprendre encore quelque chose. Il n'est pas rare non plus de regarder du code écrit il y a quelques mois et de penser qu'il craint, quel que soit votre niveau d'expérience.

Pour moi, une fois que j'ai réalisé l'écart entre mes compétences et les compétences de mes collègues, j'ai commencé à apprendre comme je n'avais jamais appris auparavant - en lisant le code des autres, les articles de blog, les livres, en faisant attention à la façon dont mes collègues ont accompli les choses, etc. L'université m'a préparé à l'informatique, mais pas vraiment au développement de logiciels. C'est presque 4 ans plus tard, et je suis un développeur de logiciels beaucoup plus fort qu'avant. Alors, accrochez-vous et apprenez autant que possible des gens qui vous entourent. Ça va aller mieux.


+1. J'ai aussi beaucoup aimé être celui qui aspire à quelque chose dans l'équipe, et cela m'a obligé à ajuster mes connaissances.

27
+1University prepared me for computer science, but not really for software development.
George Marian

1
J'espère avoir la même expérience lorsque je termine l'université et que j'obtiens mon premier (oh, attendez, deuxième) emploi dans le domaine de la programmation.
gablin du

4
@George: Ce qui est pire, c'est que beaucoup de développement de logiciels dans le monde réel relève du parapluie "IT", qui se résume généralement à gifler des interfaces utilisateur laides sur des tables de base de données. :( Pas exactement quelque chose que l'université pourrait vous préparer.
Adam Paynter

@adam Absolument. Bien que j'en comprenne parfois la nécessité, l'approche «assez bonne» me rend fou.
George Marian

23

Non. J'ai appris beaucoup plus sur la programmation / génie logiciel au cours des 6 premiers mois de travail après avoir quitté l'université que dans les années précédentes. Cependant, cela ne signifie pas que l'université était une perte de temps, cela a préparé mon esprit et fourni les connaissances de base sur lesquelles s'appuyer.

Là encore, en regardant en arrière maintenant, je ne savais toujours pas vraiment ce que je faisais depuis 6 mois.


4
Bien dit, mes professeurs ont toujours dit "Il y a une grande disparité entre l'industrie et le milieu universitaire." Difficile à croire jusqu'à ce que vous sortiez dans le monde réel et que vous réalisiez que c'est le cas!
Chris

Cette. C'est exactement pourquoi un stage, non rémunéré ou tout ce que vous pouvez obtenir, est si précieux. Enfer, même un stage hors programmation est tellement plus précieux en expérience que n'importe quelle classe, car vous apprenez certains des pièges de «travailler avec des gens».
Kzqai

10

L'éducation vous donne une base sur laquelle bâtir, mais elle ne vous préparera pas au développement de logiciels dans la vraie vie. Cela vient avec l'expérience. J'étais définitivement dans la même situation que vous lorsque j'ai commencé à programmer pour un emploi. Tant que vous continuez à apprendre, à lire des livres, des articles de blog et à appliquer ce que vous apprenez dans votre travail , vous allez vous améliorer. La clé est d'appliquer ce que vous apprenez. La lecture n'aidera pas, vous devez appliquer activement de nouvelles connaissances.


+1 pour appliquer ce que vous apprenez. J'ai oublié de mentionner cette partie. :)
Adam Lear

7

Je pensais vraiment que je l'étais, mais je ne l'étais pas.

Croyez-moi, à un moment de votre carrière, vous allez revenir en arrière et travailler sur du code que vous avez écrit, mais que vous n'avez pas touché depuis des années et que vous voulez désespérément qu'aucun autre développeur professionnel ne voie ce code ou sache que vous l'avez écrit. Cela signifie que vous grandissez.


4

À certains égards, ramasser un langage de programmation est un peu comme ramasser un langage naturel. Vous pouvez apprendre une bonne quantité de théorie à l'école. Vous apprenez la grammaire et les éléments de base du vocabulaire, et vous pensez que vous êtes assez bon, jusqu'à ce que vous vous retrouviez dans une vraie conversation avec un locuteur natif, puis vous êtes complètement perdu.

La façon dont vous apprenez vraiment la langue, au point où vous pouvez vous débrouiller dans une conversation avec des locuteurs natifs, c'est en parlant réellement la langue, à chaque heure de la journée. Cela signifie généralement aller vivre quelque part où elle est parlée. Et c'est là qu'une chose intéressante se produit. Bien que ce que vous avez appris à l'école soit sans valeur, en soi, dans les rues d'un pays étranger, il vous donne une bonne base théorique solide qui facilite beaucoup l'apprentissage réel des langues. (C'était mon expérience avec l'espagnol, au moins.)

La programmation est la même manière. Ce que vous apprenez à l'école ne vous prépare pas au travail que vous devrez faire en tant que vrai programmeur, mais (en supposant que vous êtes dans une école compétente qui ne fait pas tout pour la popularité), cela aide à préparer votre esprit afin que lorsque vient le temps d'apprendre à être un bon codeur, les concepts fondamentaux dont vous avez besoin soient déjà en place. (C'était mon expérience avec la programmation, au moins.) :-)


2
Bonne réponse, mais je n'irais pas jusqu'à dire que "ce que [j'ai] appris à l'école ne vaut rien". Je sais cependant ce que vous visez.
gablin

4

Beaucoup de bons programmeurs sortent des diplômes universitaires en informatique, principalement ceux qui les ont suivis.

La chose à propos de l'informatique, c'est que, comme les gens l'ont dit plus haut, ce n'est pas la même chose que la programmation. Beaucoup de choses que j'ai étudiées à l'université auxquelles je n'étais pas prêt pour l'essentiel - il y avait beaucoup de choses qui ressemblaient à des bêtises académiques dans le ciel quand j'entendais des conférences à ce sujet, mais quelques années plus tard, je souhaitais y avait prêté plus d'attention alors que je finissais par réapprendre un tas de choses que j'avais classées comme inutiles. En fait, je pense que l'on pourrait utiliser faire quelques années de programmation dans un environnement commercial avant de commencer un diplôme en informatique si c'est ce que vous voulez faire.

Je pense aussi que souvent à l'université, vous ne savez pas nécessairement comment apprendre. Beaucoup de choses que j'ai apprises par erreur ou en apprenant d'autres développeurs sont sûrement des choses que mes professeurs et étudiants diplômés savaient à l'université, mais je ne savais pas qu'il serait utile de les comprendre. Poser des questions sur les problèmes que vous rencontrez pendant que vous apprenez à faire quelque chose (et cela s'applique à tout) rend le processus d'apprentissage plus fluide et moins douloureux. La plupart des choses que vous pouvez apprendre par vous-même ou par d'autres personnes - étant donné que bon nombre des leçons que j'ai apprises par moi-même ont été tirées de mes douloureuses erreurs, je choisirais d'apprendre des autres quand je le pourrai ...


2

Je citerais le post de Brian Hurt

L'informatique et la programmation sont des choses distinctes

qui fait également référence à la programmation de premier cycle de Joel Spolsky et à un brillant article intitulé Who Killed the Software Engineer

Toutes ces discussions décrivent assez bien la réalité et, à mon avis, répondent à votre question par "Non", car l'université ne fera pas de vous un bon programmeur. Vous devez vous faire un bon programmeur par vous-même.

Je n'ai pas de diplôme en CS, mais je programme et développe des logiciels depuis 8 ans. Toutes les compétences en programmation que j'ai, je les ai moi-même apprises.


1

Non du tout, je faisais semblant d'être programmeur et je l'ai appris à la dure. J'ai obtenu mon premier client en tant que pigiste et j'ai très mal combattu avec C / C ++, et j'ai finalement gagné. Je me souviens qu'il a fallu quelques heures pour comprendre que faire malloc sur une structure n'était pas suffisant pour allouer également de la mémoire aux pointeurs de la structure.


Quel était votre diplôme d'origine? Votre dur labeur a-t-il finalement porté ses fruits?
rwong

Je suis ingénieur en électronique, j'étais plutôt bon en Matalb, mais avec très peu de connaissances en C / C ++ et Java. Croyez-le ou non, mon premier vrai travail de programmation consistait à écrire des pilotes pour Windows CE et à le porter sur cet appareil: eurotech.com/EN/innovation.aspx?pg=wearable . J'ai eu un peu d'aide de la part de l'entreprise, mais en gros je travaillais seule à la maison, perdant beaucoup de temps pour très peu de choses. Mais tu paries que je n'ai rien oublié! J'apprends toujours, mais maintenant je possède une startup qui fait un programme vraiment grand ... donc ça a payé.
martjno

1

J'étais un assez bon programmeur lorsque j'ai obtenu mon diplôme universitaire. J'ai également eu une offre d'emploi élégante quelques mois avant même d'avoir obtenu mon diplôme (que j'ai pu refuser pour une offre encore plus brillante).

La clé était que j'avais fait beaucoup de travail en tant qu'amateur, avec un travail de développement Web pendant l'année scolaire, et des stages d'été de qualité avec IBM ("ExtremeBlue speed-teams" et le programme ExtremeBlue proprement dit). Bonne expérience préprofessionnelle va vous faire sauter un peu des choses d'entrée de gamme après obtention de votre diplôme.

(Cela dit, je me suis encore beaucoup amélioré dans la programmation au cours de mes six premiers mois environ à Real Job (tm). Non pas que j'en ai fini par la suite, mais c'est à ce moment-là que ça montrait vraiment beaucoup.)


1

Je peux vous donner une réponse inverse, car je suis allé directement du lycée au travail. J'ai commencé à travailler en tant que programmeur réfléchi et j'ai été presque immédiatement productif sur le projet que mes employeurs m'ont donné. J'avais des collègues qui avaient un nouveau diplôme en informatique, et ils n'étaient pas productifs du tout.

Au fil du temps, certains collègues diplômés ont considérablement amélioré leurs compétences, tandis que d'autres ne le font pas, ce qui n'était pas lié à leur moyenne cumulative.


1

L'université ne vous apprend pas à devenir un programmeur du monde réel. Je suppose que cela est similaire avec beaucoup d'emplois par rapport à leurs programmes d'études. Je ne dirais pas que je n'ai rien retiré de mon diplôme, mais c'était beaucoup moins utile que de passer 4 ans sur le tas.

Mais c'est d'accord. Pour chaque travail que j'ai commencé, j'étais probablement sous-qualifié. Si vous avez confiance en vos capacités et que vous vous consacrez à l'apprentissage, vous pouvez intensifier et faire le travail.


1

Je ne pense pas avoir appris de faits sur la programmation en général auxquels je n'étais pas au moins exposé au collège. Bien sûr, j'ai choisi de nouveaux langages de programmation ici et là, appris de nouvelles API, de nouvelles bases de code et de nouveaux outils, mais les concepts généraux étaient tous présents dès la sortie de l'école.

Ce que vous prenez avec l'expérience est une sorte d'instinct qui accélère la façon dont vous vous affinez sur un bogue signalé, ou vous amène directement à la manière la plus robuste d'écrire du nouveau code. Lorsque vous êtes nouveau, vous pouvez toujours corriger ce même bogue ou implémenter la même fonctionnalité, mais cela prend plus de temps et vous êtes plus susceptible de devoir revenir en arrière et le corriger pour un problème imprévu.

C'est pourquoi il est important d'avoir des collègues plus expérimentés pour vous encadrer. Allez vers eux et dites: "Voici comment je pense que cela devrait être géré. Pouvez-vous penser à une meilleure façon?" Cela vous donne l'avantage à la fois de découvrir par vous-même et d'apprendre de l'expérience des autres.


0

J'étais un meilleur programmeur que mes professeurs à l'université.

Ensuite, j'ai appris de bonnes pratiques de programmation lorsque j'ai commencé à travailler.


0

Un bon programmeur apprend toujours ... apprenant une façon différente de faire ceci ou une meilleure façon de le faire. Quoi que vos collègues programmeurs aient à vous apprendre, j'écouterais.


0

Personne n'a mentionné que les problèmes que vous avez à résoudre à l'école sont délibérément simplifiés pour vous permettre de voir facilement comment utiliser la technique spécifique qui vous est enseignée. Vous savez généralement quelle technique vous êtes censé utiliser pour ce problème particulier, car c'est celle que vous venez de couvrir en classe. Les projets d'un semestre entier sont un peu bette, r mais toujours limités en portée et en complexité par rapport au monde réel.

Les projets de la vie réelle sont désordonnés et évoluent au fil des ans (notre logiciel a plus de dix ans et évolue constamment depuis ce temps) et sont touchés par de nombreuses personnes différentes avec de nombreux niveaux de compétence différents. Vous pouvez toujours toucher à une version de base de données vieille de 10 ans et ne pouvez pas utiliser du tout de nouvelles techniques SQL. Vous utilisez peut-être un outil qui était génial il y a 8 ans, mais que vous n'avez pas appris à l'école car il a été remplacé par autre chose. Mais l'entreprise ne veut pas payer des mois d'efforts de développement pour la remplacer totalement.

Vous êtes coincé dans un monde où le temps de développement est fortement limité par ce que le client paiera et par quels délais, parfois (OK généralement) artificiels.

Vous pouvez être contraint d'utiliser des outils que le client a spécifiquement demandés. Vous pouvez avoir des exigences vagues ou qui n'ont pas de sens. Vous avez peut-être affaire à un domaine commercial très complexe dont vous ne savez rien et ne pouvez donc même pas juger si les exigences ont du sens.

Les problèmes du monde réel ne sont en rien comparables aux beaux problèmes de propreté qu'ils vous posent à l'école. Si vous n'êtes pas confus et ne vous sentez pas à sa place pendant la majeure partie de la première année, je m'inquiéterais pour vous.


0

C'est pire que ça ... après quelques années dans ce travail, vous vous sentirez plutôt bien avec ce que vous avez appris. Mais ensuite, vous changerez d'emploi et votre nouvelle entreprise (ou peut-être même un nouveau groupe au sein de la même entreprise) fera les choses différemment, et vous aurez l'impression d'être de retour à la case départ. Il y aura différents codes, différentes normes de codage, différents outils et différents processus, et après deux jours, vous vous demanderez si vous avez vraiment appris quelque chose lors de votre dernier travail. Vous vous en sortirez plus rapidement de cette sensation de poisson hors de l'eau cette fois, mais cela prendra encore plus de temps que vous le souhaitez.

Il y a une période d'adaptation chaque fois que vous changez d'emploi. Il raccourcit à mesure que vous acquérez de l'expérience, mais il est toujours là.

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.