Je suis une majeure en informatique de première année. Je suis allé à un salon de l'emploi, j'ai remis des CV, à ma grande surprise j'ai eu une interview et finalement un stage en tant que développeur.
J'ai expliqué à l'intervieweur (qui sera mon patron) que je ne suis qu'une première année et que je n'ai pas beaucoup d'expérience en programmation. Il m'a simplement dit que parce que j'ai une solide formation en mathématiques (j'ai presque terminé mon baccalauréat en mathématiques, et j'ai quelques cours de diplômé à mon actif), il est confiant que j'irai bien.
Je réussis bien dans tous les cours de programmation mais je sens toujours que je suis désavantagé. En ce moment, je veux vraiment faire du bien dans ce travail quand il commence. Le travail utilisera principalement C #, mais en plus évidemment d'apprendre du C #, quelle est la compétence que vous souhaiteriez avoir apprise avant de devenir un vrai programmeur?
Tout conseil est grandement apprécié, mais si vous avez des livres en tête, dites-le-moi. Merci!
Réponses:
À l'école, vous apprenez à écrire du code. Ce que vous ne connaissez pas, c'est le reste du développement de logiciels. Les principales choses que je n'ai jamais apprises à l'école sont:
Ce sont des compétences très importantes pour tout développeur, et vous ne les obtiendrez probablement pas en classe, malheureusement.
la source
J'aimerais pouvoir savoir plus tôt dans ma carrière qu'en tant que développeur, j'ai un rôle très important dans l' entreprise . Je ne suis pas seulement un singe de code.
En tant que développeur, vous avez une main importante dans les parties de l'entreprise liées au logiciel sur lequel vous travaillez.
Si votre entreprise n'écrit pas de tests pour son code, commencez à écrire des tests maintenant.
S'ils ne suivent pas les bogues, trouvez maintenant un outil de suivi des bogues approprié.
Si votre patron veut que vous commenciez immédiatement à travailler sur une animation de fantaisie pour l'écran de démarrage de votre application de feuille de calcul - mais vous avez encore des dizaines de bogues à corriger et plusieurs fonctionnalités critiques inachevées avant la prochaine date limite de publication du client - discutez de la priorisation correcte du travail .
Même si vous n'êtes qu'un «employé normal», agir comme un consultant est un excellent moyen de vous démarquer des autres développeurs qui écrivent simplement du code et n'agissent pas comme s'ils avaient un intérêt direct dans l'entreprise.
la source
Mon école ne m'a jamais appris à résoudre des problèmes. Ils m'ont appris la mécanique du codage, mais pour pouvoir étudier un problème, le comprendre et trouver une solution, c'est quelque chose qu'ils n'ont pas enseigné. Cela demande de la patience, de la rigueur et de l'intuition en plus de la compréhension d'un langage de programmation.
Ils n'ont pas non plus enseigné le travail d'équipe, le contrôle de version et l'importance d'écrire du code facile à maintenir. Ils n'ont également pas beaucoup appris sur la façon de tester les logiciels. Ils ont peut-être abordé les tests unitaires, mais ils ne se sont pas trop plongés dans les concepts de tests d'acceptation, de tests de régression, etc.
Avertissement: je suis allé au collège dans les années 80. Cependant, j'en vois des preuves chez des personnes que j'engage aujourd'hui - de nouveaux diplômés qui ont très peu de connaissances sur le monde réel de la programmation: contrôle de version, test, codage propre, compétences en débogage, etc.
la source
À mon avis, certaines des choses les plus importantes non apprises (ou correctement apprises) à l'école sont:
VCS, les systèmes de suivi des bogues, les outils de construction, etc. sont des outils que vous devez apprendre pour pouvoir travailler avec une équipe; ils ne nécessitent pas beaucoup de temps pour être appris à un niveau de base, et sont assez simples après cela (au moins au début); la liste ci-dessus contient des subtilités qui, si elles sont connues, augmentent votre productivité.
la source
La plus grande chose que je vois manquer aux nouveaux diplômés est une bonne compréhension du contrôle de version.
Si vous avez de l'expérience dans le développement de logiciels open source utilisant des référentiels de code source (comme GitHub ), vous avez une longueur d'avance
most
sur vos camarades de classe.La deuxième chose est une compréhension de la complexité (
big O
). La plupart des gens qui sortent de l'université en ont entendu parler, mais n'ont pas encore développé de véritable logiciel là où il entre en jeu et ne comprennent donc pas sa véritable importance.Lorsque vos ensembles de données sont si volumineux que la force brute ne les coupera jamais et que la compréhension d'autres techniques est utile et pouvoir deviner quand la force brute conviendra à la situation, c'est quelque chose que vous développez avec l'expérience et en faisant des erreurs.
la source
Comment bien déboguer, en particulier en utilisant un débogueur et en adoptant une approche appropriée pour s'attaquer à un bogue, c'est-à-dire découvrir ce qui est à l'origine, savoir pourquoi il est à l'origine et comprendre pourquoi votre solution le résout plutôt que d'essayer simplement et d'espérer.
La plupart des diplômés en informatique sont remarquablement pauvres en débogage et, par conséquent, mettent beaucoup plus de temps à corriger les problèmes que nécessaire et à créer plus de bogues.
D'autres choses telles que le contrôle de version, le suivi des bogues, etc. méritent d'être mentionnées, mais à mon avis, le manque d'approches sensées pour le débogage est un problème beaucoup plus important et qui nécessite plus d'apprentissage.
la source
D'après mon expérience, la programmation consiste à résoudre des problèmes. Dans mon école, ils vérifiaient seulement si vous pouvez écrire un programme sans erreur de syntaxe. Ce qui est réellement requis n'est pas fourni en entrée. La syntaxe est juste quelque chose que vous pouvez rechercher dans tous les livres si nécessaire. Mais la capacité de résoudre un problème ne peut être obtenue de n'importe où, sauf si vous vous entraînez bien et vous vous entraînez pour le résoudre.
Que ce soit de n'importe quel type, essayez de répondre au plus grand nombre de questions possible afin de vous faire confiance. Essayez de le faire avec une certaine passion dans votre esprit et vous y arriverez sûrement.
la source
Prenez le temps d'apprendre quelques modèles de conception courants: usine, singleton, adaptateur, commande et observateur (mon collège ne les a pas enseignés).
Si l'entreprise utilise la méthodologie Agile pour le développement de logiciels, il serait utile de la comprendre.
la source
Beaucoup de compétences dont vous aurez besoin en tant que programmeur professionnel sont presque impossibles à chacun dans un environnement universitaire / académique.
Ils ne peuvent provenir que d'une expérience de travail directement sur le terrain.
Apprendre à collaborer et à communiquer avec des personnes extérieures à votre "profession", comme les graphistes, les concepteurs de produits, les gestionnaires, etc.
Comprendre que votre travail n'est pas d'écrire du code, mais de donner vie à un produit. Plus facile à dire qu'à faire.
Savoir comment équilibrer les bonnes pratiques de codage avec des considérations pratiques. Acquérir la capacité de juger quand le code est «assez bon», «trop conçu» ou «doit être refactorisé».
Apprendre à surmonter vos propres faiblesses et insécurités. Acquérir la capacité de résister aux critiques. Lâcher votre ego. Apprendre ce que signifie prendre la responsabilité personnelle, puis la prendre.
Il est facile de lire tout cela. C'est une toute autre chose que de mettre cela en pratique. La seule façon est de le faire. Vous serez mordu plusieurs fois et cela vous fera probablement mal, mais vous en sortirez plus fort et meilleur.
Lecture pertinente: modèles d'apprentissage
la source
Tout dépend de l'école. Dans mon collège, nous avons beaucoup de projets pratiques. Assez souvent en équipe et en utilisant différents contrôles de source. Je pense donc que certaines écoles se concentrent là-dessus.
Mais une chose que l'école n'enseigne pas: les détails. Très souvent, lorsque l'école enseigne une technologie ou une pratique (comme le développement Web, le développement de l'interface utilisateur JAVA, les bases de données avancées), elles ne feront qu'effleurer la surface et ne rentreront jamais dans les détails, ce qui serait nécessaire pour utiliser cette technologie ou cette pratique dans les affaires du monde réel. Vous obtiendrez un aperçu général des moyens possibles de résoudre vos problèmes, mais vous devrez vous apprendre les détails nécessaires.
Le seul moment où l'école enseigne quelque chose dans les détails, c'est quand il y a une solide base mathématique ou théorique derrière quelque chose. Des choses comme les langages formels ou les bases de données SQL font souvent partie intégrante du programme scolaire, car elles reposent sur une base mathématique et sont beaucoup utilisées en informatique ou en ingénierie.
la source
la source
J'aurais aimé avoir décidé plus tôt dans le jeu si je voulais ou non être un programmeur général, apprendre de nombreuses choses, langages, bases de données et plates-formes, et finalement devenir développeur web, ou devrais-je simplement me spécialiser dans un CMS, ou même simplement se spécialiser dans Photoshop, étant un spécialiste, vos compétences seraient tout aussi précieuses et rentables que de savoir ce qu'un véritable programmeur devrait savoir. En d'autres termes, si vous avez juste besoin de gagner beaucoup d'argent, il vous suffit de vous spécialiser dans UNE CHOSE. Si vous aimez l'ordinateur et aimez résoudre des problèmes, alors soyez programmeur.
[en réfléchissant sur et après avoir appris comme 4 ou 5 «frameworks» javascript différents avant que JQuery ne se révèle vraiment fort, obtenant la certification en JAVA et n'obtenant jamais une position java, et après avoir travaillé sur plusieurs plateformes; AS400- rpg,> .NET - c # et PHP, avant de souhaiter, je viens de maîtriser photoshop et de gagner de l'argent sans avoir à corriger des bugs ou écrire des logiciels. ]
Je veux dire qu'il y a une certaine satisfaction à connaître un large éventail de sujets, mais la satisfaction est entravée lorsque vous voyez quelqu'un qui connaît juste Photoshop payer le même salaire.
la source