Pourquoi les développeurs doivent-ils se tenir au courant des technologies et des méthodologies? [fermé]

28

On me donne toujours les conseils dont les développeurs ont besoin pour rester à jour avec les dernières technologies - des choses comme webrtc, des mises à jour sur html5 et css3 et de nouvelles bibliothèques js, des méthodologies logicielles comme TDD, DDD et BDD.

La question est pourquoi ? Pourquoi devons-nous constamment nous mettre à jour? Ne pouvons-nous pas simplement nous en tenir à ce que nous savons et nous améliorer avec cela?

Ancheta Wern
la source
16
Dans le développement de logiciels, il y a une pression pour faire les deux: apprendre à connaître certaines technologies en profondeur et suivre les nouvelles technologies en constante évolution. C'est en partie pourquoi il est si difficile de trouver de bons développeurs.
joshin4colours
2
Pour répondre aux votes serrés jusqu'à présent, je pense que c'est une question juste et je ne trouve pas de doublon exact sur le site. S'il vous plaît, essayez de garder un œil sur les mauvaises réponses afin que nous puissions les nettoyer.
maple_shaft
4
Je ne vois pas pourquoi les programmeurs en tant que classe doivent "rester à jour" avec les dernières "technologies web" pour tout ce que ces deux concepts signifient réellement dans la pratique. Un esprit curieux et un apprentissage continu sont certainement essentiels à la croissance personnelle dans n'importe quelle profession, mais le faux dilemme supposant que la "technologie Web" est le seul axe de la croissance personnelle rend cette question un peu trop chargée à mon goût. En regardant d'un œil critique les réponses les plus votées - est-ce que certains d'entre eux répondent même à la question autre que d'offrir des platitudes d'encouragement et des slogans de motivation pour "rester dans le jeu"?
bmike
1
@bmike: Je suis d'accord avec vous: bien sûr, un esprit curieux voudra toujours apprendre de nouvelles choses. Dans ce cas, de nouvelles choses signifient quelque chose que vous ne savez pas, qui pourrait être un langage de programmation intéressant qui existe depuis 40 ans ou plus (par exemple Lisp). L'industrie nous pousse à mettre à jour et à considérer les dernières nouveautés intéressantes, plus efficaces par défaut. Mon point principal: apprendre une technologie dont vous n'avez pas besoin simplement parce qu'elle est nouvelle est une perte de temps.
Giorgio
1
@RobertHarvey Ce n'est pas comme si la question demandait "Comment?" ou quoi?" car ce serait NC. C'est demander POURQUOI et je pense personnellement que c'est pertinent et responsable.
maple_shaft

Réponses:

42

Les nouvelles technologies font surface pour une raison. Habituellement, cette raison est qu'ils sont plus efficaces ou plus puissants pour accomplir une tâche particulière.

Il est toujours utile de s'en tenir à l'ancienne technologie pour le bien des systèmes hérités, mais quand ils atteindront finalement leur fin de vie, vous serez derrière le jeu.

Mis à part les raisons commerciales, l'apprentissage constant de nouvelles technologies vous tient en haleine et vous ouvre les yeux sur différentes façons d'aborder les tâches, même dans les anciennes technologies, etc.

Anonyme
la source
3
+1: l'apprentissage de nouvelles technologies est souvent utile, même si vous n'appliquez jamais directement cette technologie: les nouveaux points de vue et perspectives qu'elle a fournis peuvent certainement être appliqués en utilisant des "anciennes" technologies.
Joachim Sauer
7
D'un autre côté, sauter à chaque nouvelle technologie peut également être contre-productif, car beaucoup d'entre elles disparaissent aussi vite qu'elles font surface.
Gordon Bell
@GordonBell - Vrai ... Je ne peux parler au nom de personne d'autre, mais je ne teste généralement pas les eaux avec de nouvelles technologies jusqu'à ce qu'elles montrent au moins des signes ou un potentiel de devenir plus «mainstream» - ce qui apporte les avantages de beaucoup de documentation pour aider l'éducation et une base d'utilisateurs, etc.
Anonyme
Ils surviennent souvent pour répondre aux besoins du monde universitaire, mais pas dans le monde réel. Tu dois écrire ta thèse sur quelque chose .
dbracey
@dbracey: Exactement, et vingt ans plus tard, une grande entreprise peut trouver cette thèse qui, pendant ce temps, les chercheurs sont devenus une technologie mature et commencent à la vendre en tant que nouvelle technologie .
Giorgio
27

Bien qu'il soit certainement possible de bâtir une carrière sur une seule pile technologique si vous avez de la chance 1 , il est presque certain que la technologie va changer plus d'une fois pendant la période où vous êtes salarié. Vous pouvez (et vous devriez) améliorer ce que vous savez déjà, mais apprendre de nouvelles choses à l'avance vous aidera à réduire la courbe d'apprentissage lorsque le prochain changement technologique arrivera dans votre coin de l'industrie.

Il y a aussi un côté moins apparent: apprendre de nouvelles choses vous aide très souvent à voir les choses que vous savez déjà d'un point de vue différent, de la même manière que l'apprentissage d'une nouvelle langue vous aide à en apprendre plus sur votre langue actuelle 2 .

Enfin, une pure valeur de divertissement d'apprendre de nouvelles choses ne doit pas être sous-estimée: pour moi, c'est mieux que de regarder la télévision de haut en bas.


1 Par exemple, en choisissant COBOL sur PL / I au début de votre carrière en 1965.

2 Cela fonctionne pour les langages naturels et de programmation.

dasblinkenlight
la source
1
+1 @dasblinkenlight J'adore cette déclaration: "... apprendre de nouvelles choses à l'avance vous aidera à réduire la courbe d'apprentissage lorsque le prochain changement technologique arrivera dans votre coin de l'industrie." C'est pourquoi j'apprends l' opa maintenant
Anthony
12

Ne pouvons-nous pas simplement nous en tenir à ce que nous savons et nous améliorer avec cela?

Vous pouvez , mais il est vraiment facile de tomber dans le piège de ne jamais vouloir apprendre quelque chose de nouveau. Vos perspectives d'emploi diminuent, vos coéquipiers cessent de vouloir travailler avec vous parce que vous êtes "ce programmeur complètement déconnecté".

Surtout, vous devez garder un équilibre. Essayer d'apprendre tout ce qui est nouveau tout le temps va vous conduire à être pauvre à bien des égards, perçu comme un bricoleur volage. Apprenez bien quelques choses et concentrez-vous au moins sur ce qui existe, même si vous ne pouvez pas l'utiliser efficacement.

Telastyn
la source
2
Rien ne me rend plus furieux au travail que de devoir faire partie d'une équipe avec un programmeur qui écrit du code comme il y a 10 ans. Les cadres ont évolué. Les outils ont évolué. Vous ne voulez pas vous faciliter la tâche? Vous ne voyez pas de charpentiers utiliser des perceuses à manivelle et des scies à main toute la journée quand ils ont des outils électriques maintenant. Ils ont évolué. Et comme chaque profession, de nouveaux outils sont inventés pour répondre aux besoins. Ne pas utiliser le nouvel outil et essayer de pirater quelque chose ensemble à l'ancienne est généralement préjudiciable à la qualité de ce qui est construit. Que ce soit en code ou en bois.
CaffGeek
2
"Les cadres ont évolué. Les outils ont évolué. Vous ne voulez pas rendre votre travail plus facile?": Il existe des façons infinies de résoudre certains problèmes et parfois un nouvel outil ou langage n'est pas meilleur mais juste équivalent à l'ancien. Mais vous avez beaucoup plus d'expérience avec l'ancien afin d'être plus productif avec lui. Nous supposons trop souvent que NOUVEAU == MEILLEUR. Au lieu de cela, nous devons toujours contester cette déclaration.
Giorgio
2
@Giorgio - C'est une chose d'avoir un scepticisme sain face à «la prochaine grande chose». C'en est une autre de vous mettre la tête dans le sable au fur et à mesure que de vrais progrès vous passent. Ce dernier est beaucoup trop courant.
Telastyn
4
@Telastyn: J'attribuerais 50% aux deux attitudes: j'ai parfois l'impression qu'une nouvelle technologie est poussée juste parce qu'elle est nouvelle. Et ce n'est qu'une façon alternative (pas meilleure) de faire les choses. Nous devons donc passer des mois à maîtriser la nouvelle technologie et après cela, nous sommes à nouveau aussi productifs que nous l'étions avec l'ancienne. Mais bien sûr, vous avez raison de dire que mettre la tête dans le sable est également mauvais et il faut toujours faire attention aux nouvelles choses.
Giorgio
@Giorgio, comment savoir si la nouvelle méthode est meilleure ou non si vous ne la connaissez pas ou ne l'essayez pas?
CaffGeek
7

Eh bien, c'est probablement dû au fait que vous êtes un développeur Web et que les technologies dans ce domaine sont très volatiles avec des langues, des plates-formes, des outils et des méthodologies en hausse et en baisse de popularité. C'est un domaine de très très haut niveau. Si l'un des calques en dessous est modifié, cela change la position en haut. Et, franchement, c'est nouveau (ish). Les nouveaux domaines ont beaucoup de place pour l'innovation.

Personnellement, je travaille sur des appareils embarqués, j'ai appris le C, et cela a plutôt bien fonctionné pour moi.

Mais j'apprends encore de nouvelles choses assez régulièrement. Sockets, bibliothèques SQL, ncurses, objets en C. Et les méthodologies sont faiblement couplées aux technologies. Les tests unitaires ont été horriblement enseignés dans mon école, et je viens de m'enrouler autour de la tête. L'autre jour, j'ai entendu parler de l'injection de dépendances et j'ai réalisé que c'était exactement comme ça que j'avais résolu mon dernier problème avec le test d'unité d'une fonction de console.

La plupart des programmeurs ne sont pas des ouvriers d'usine qui font la même chose chaque jour. Ces travaux peuvent (et devraient) être automatisés. Personne ne paie pour une autre implémentation de type bulle. C'est fait.

Philippe
la source
+1: Bonne réponse. Il faut apprendre les technologies dont on a besoin ou que l'on trouve utiles. Les nouvelles technologies sont importantes et il faut regarder autour de soi pour savoir ce qui se passe. Mais le NOUVEAU ne devrait pas être le seul critère pour choisir ce que nous apprenons. De plus, si C convient à votre besoin de programmation, je conviens que ce peut être un bon langage avec lequel travailler, même s'il existe depuis longtemps.
Giorgio
Cela souligne également que les nouvelles technologies sont souvent plus de couches en plus des anciennes technologies existantes. Dans quoi votre machine virtuelle est-elle implémentée? C ou C ++.
dbracey
L'injection de dépendance n'est qu'un nouveau nom pour une idée très ancienne.
MarkJ
6

Je dirais que vous pouvez ignorer beaucoup de ce qui existe. Une grande partie est du battage médiatique et de la mode et de nouveaux noms pour l'ancienne technologie. Les véritables avancées seront bientôt remplacées par des avancées encore plus récentes qui ne dépendent pas vraiment des anciennes, même si les anciennes minuteries disent que vous devez comprendre les anciennes pour comprendre les nouvelles. Si vous avez quitté le terrain pendant 10 ans, à votre retour, vous n'auriez que 2 ans de retard.

Cela dit, repérer la véritable nouvelle technogie peut être délicat. Je suis content de ne pas avoir manqué OOP, mais cela ressemblait bien sûr à une poignée de mots à la mode au début. Et vous devez souvent utiliser la technologie actuelle pour faire un travail, même si tout le monde l'aura oublié dans 3 ans.

Le battage médiatique et la confusion de la technologie logicielle multiplient les changements auxquels nous devons faire face au quotidien. Mais la technologie électronique fait s'avance rapidement, et en poussant des logiciels avec elle. Il y a beaucoup de vrai changement. Nous conduisons toujours les voitures, pilotons les avions et allons dans l'espace avec les mêmes véhicules que nous avons utilisés en 1965. Mais le matériel électronique de 1995 est désespérément obsolète.

La réponse profonde à votre question est donc que les scientifiques et les ingénieurs travaillant avec l'électricité ont été très occupés. Le logiciel doit évoluer pour tirer parti du matériel. Pire (ou plutôt - mieux?), Je pense que le logiciel a été laissé de côté par le matériel. Si les gens du matériel se retiraient tous demain, les logiciels évolueraient furieusement au moins pour les deux prochaines décennies.

Si vous avez besoin de la nouvelle technologie pour faire un travail, vous devez l'apprendre. S'il y a une chance qu'il s'agisse d'une nouvelle technologie qui sera encore là dans 20 ans, vous devez la surveiller - et si vous regardez 20 techniciens qui meurent pour tous ceux qui vivent, vous vous débrouillez très bien. Et vous pouvez réellement ignorer tout le reste. À l'exception de cette fumée évidente qui sous-tendra tous les logiciels des années 2020.

RalphChapin
la source
+1: Je suis d'accord avec vous concernant le battage médiatique. Beaucoup d'innovation est (malheureusement) hype et nous devons choisir très soigneusement les nouvelles technologies sur lesquelles nous passons du temps. L'une des hypes du moment est lambdas (qui, BTW, je considère un concept très utile): chaque langage moderne doit en avoir (C #, C ++, Java?) Sinon ce n'est plus cool! Mais les lambdas existent depuis 50 ans et personne ne se souciait de la conception initiale de ces langues. Maintenant, ils sont ajoutés après coup juste pour suivre le dernier battage médiatique. ;-)
Giorgio
@Giorgio: J'espère que non Java. Les lambdas sont un bon exemple (bien que plus simples et donc moins gênants que certains). Je les utilise en C #, et je les aime, mais la seule personne qui regrettera de ne jamais savoir ce que c'est est la personne qui vient juste de dire de corriger le code qui en est plein.
RalphChapin
Que voulez-vous dire par "j'espère pas Java"? Qu'ils ne seront pas introduits? J'aime et utilise des lambdas (dans Scheme, Haskell): c'est un concept assez simple. Mais en C #, C ++ et Java, ils me semblent un ajout tardif qui ne correspond pas en quelque sorte au reste du langage. Je doute que les inventeurs ne connaissaient aucun Lisp mais ils ont décidé que les lambdas n'appartenaient pas à ces langues. Maintenant, ils sont devenus un incontournable. Donc, j'aime beaucoup les lambdas, mais en C #, C ++ et Java, ils semblent juste un battage médiatique qui est utilisé pour vendre de nouveaux compilateurs, livres, etc.
Giorgio
1
@Giorgio: Java est (ou était) plutôt un langage minimaliste. Vous n'avez pas besoin d'en savoir beaucoup (lambdas, par exemple) pour comprendre ce que quelqu'un d'autre a écrit. J'aime ça. C # est un langage maximaliste. Chaque nouvelle ligne peut introduire une technologie que vous n'avez jamais vue auparavant. C'est un plaisir d'écrire, moins de lire. Aucun n'a besoin de lambda, bien qu'ils aident plus en C # qu'en Java pour des raisons de syntaxe. Mais ils sont cool et ils enregistrent quelques lignes de code. En d'autres termes, vous avez raison. Mais c'est C #, pas Java. Encore.
RalphChapin
1
@iconoclast: Avec 20 ans d'expérience en tant que programmeur, je ne me considère pas comme un débutant. Pourtant, le fait que Java soit (était) un langage relativement simple et propre me rend plus productif (je peux développer des logiciels plus complexes avec moins d'effort). Je pense que c'est une idée fausse qu'un langage simple est pour les débutants: un langage simple permettra à tout programmeur avec n'importe quel degré d'expérience de se concentrer davantage sur certains aspects du développement (par exemple la gestion d'une architecture complexe, la refactorisation) parce qu'ils passent moins de temps à gérer d'autres aspects (par exemple, gestion de la mémoire, syntaxe cryptique, etc.).
Giorgio
3

À mon humble avis, vous devez trouver un équilibre. Cela demande des compétences et de l'expérience.

Vous devez trouver une ou deux langues dans lesquelles vous vous spécialisez, vous tenir au courant des changements de cadre / style qui évoluent dans cette langue et maintenir vos compétences de premier ordre.

Mais vous devez également voir comment ce langage évolue et comprendre la dynamique du développement logiciel dans son ensemble. Java sera-t-il dans 10 ans, Phyton est-il là pour rester, PHP va-t-il être remplacé par .NET et Mono?

Ce sont des questions stratégiques à grande échelle, dont les réponses vous permettront de devenir un professionnel hautement apprécié dans votre domaine, tout en ayant une sauvegarde solide (1 ou 2 langues) et en sachant quand passer de votre plateforme principale.

À mon humble avis, suivre tous les langages modernes qui sont développés chaque jour est l'un des plus gros problèmes pour l'ensemble de l'industrie. Nous avons des tonnes de langues sans développement et sans issue avec presque aucun professionnel en elles, et les gens qui y perdent du temps sont rarement de vrais professionnels dans une seule langue. Généralement, ils écrivent du code qui mélange toutes les langues et ne fait rien de bien. Dans le même temps, le nombre d'années-homme gaspillé sur ces langages non standard pourrait être consacré à l'amélioration de quelques cadres et spécifications de langage de base.

Codeur
la source
2

Comme d'autres l'ont souligné, de nombreuses nouvelles technologies font leur apparition pour répondre à de nouveaux besoins et facilitent donc la résolution de certains problèmes. Par conséquent, vous devez vous tenir au courant et au moins savoir ce qui se passe dans votre domaine et comprendre quelles nouvelles technologies sont pertinentes pour vous.

D'un autre côté, je pense qu'il y a parfois un facteur de battage médiatique dans certaines innovations: certaines idées sont extrêmement anciennes, mais ce n'est que ces dernières années qu'elles ont été poussées à se généraliser. Parfois, j'ai l'impression qu'un nouveau langage de programmation (ou une nouvelle version de celui-ci) est poussé juste parce que "nouveau c'est mieux" et une nouvelle technologie signifie de nouveaux livres, de nouveaux outils de programmation, de nouveaux compilateurs, de nouveaux cours de programmation, ou en d'autres termes, revenu.

Il peut donc arriver que vous deviez apprendre une nouvelle technologie sans voir aucun avantage réel par rapport à la technologie que vous utilisiez auparavant, sinon vous risquez d'être hors du marché parce que vos compétences semblent démodées . C'est à vous de suivre le développement des nouvelles technologies et d'essayer de comprendre celles qui peuvent vous rendre plus productif et celles qui sont simplement pratiques pour rendre votre CV plus beau.

Conclusion: je pense que vous devriez essayer d'apprendre ce que vous trouvez vraiment utile, qu'il soit nouveau ou ancien.

Giorgio
la source
2

Parce que «s'en tenir à ce que vous savez» représente un échec à «s'améliorer». Vous n'êtes pas obligé d'adopter chaque nouvelle pratique et chaque nouveau cadre qui en découle, mais vous devriez au moins avoir une opinion éclairée sur les plus populaires. Dans le développement Web, il suffit de poser la question à un intervieweur. Le développeur Web est jonché de cadavres de carrière de personnes qui voulaient arrêter d'apprendre de nouvelles choses après 2000 et c'est comme cela devrait être parce qu'elles font plus de travail pour le reste d'entre nous. Éloignez-vous des développeurs si cela ne vous intéresse pas. C'est un mauvais rapport $ / heure si la partie où vous apprenez de nouvelles choses ressemble à du travail.

Erik Reppen
la source
Parce que «s'en tenir à ce que vous savez» représente un échec à «s'améliorer».: Une façon de lire ceci est qu'en restant avec la même technologie pendant plus longtemps, vous en aurez une connaissance plus approfondie, tout en sautant d'une technologie à la prochaine tous les deux ou trois ans ne vous permettra d'avoir des connaissances superficielles, c'est-à-dire que vous ne serez jamais vraiment familier avec aucun d'entre eux.
Giorgio
Je ne comprendrais pas JavaScript aussi bien que moi si je ne m'étais pas un peu diversifié et ne l'avais pas compris du point de vue du fonctionnement des autres langues ou gardé un œil sur les notions actuelles de meilleures pratiques et exploré ce que les gens faisaient réellement sous le capot de leurs cadres et bibliothèques. Je ne pense pas qu'il soit vraiment possible de s'améliorer en tant que développeur à un rythme raisonnable de carrière sans exposition régulière à de nouvelles idées.
Erik Reppen
Reppen: Je suis totalement d'accord avec vous sur ce point.
Giorgio