Comment gérez-vous la nature dynamique du développement de logiciels de haut niveau? [fermé]

25

Je me considère comme un développeur de logiciels de haut niveau. J'aime beaucoup lire et cela m'a aidé au cours de ma carrière. Je pense que je vais bien.

En ce moment, je passe beaucoup de temps à apprendre de nouvelles choses. Je ne crains pas quand il s'agit d'écrire du code en ce moment, mais je suis sur le point de fonder une famille, et je vois régulièrement de nombreuses personnes âgées avec 14-15 ans d'expérience qui - parce qu'elles ont réduit l'apprentissage de nouvelles choses - sucent maintenant à la programmation. Ils étaient des figures inspirantes à un moment donné, mais ils ne le sont plus.

Vous pourriez faire valoir que les bases ne changent jamais, mais cela semble faire une différence lorsque vous codez sur Delphi depuis 10 ans et que tout le monde utilise soudainement le framework .NET. Il est vrai qu'un développeur expérimenté prendra moins de temps lors de l' apprentissage d' un nouveau cadre, mais il encore fait le temps de la demande et de l' effort.

Comment un développeur de logiciels gère-t-il les exigences du travail tout en étant capable de se concentrer sur des choses qui vous retirent nécessairement du travail, comme fonder une famille?

Hemant
la source
1
Quoi, vous ne pensez pas pouvoir gérer une Singularité? Tout bon développeur peut! - plaisante, ne m'écoute pas ...
Klaim

Réponses:

30

Quelque chose que vous avez dit se démarque: «Je vois régulièrement de nombreux aînés ayant une expérience de 14 à 15 ans ... ils craignent maintenant la programmation». C'est un coup de pinceau assez large que vous utilisez pour peindre des gens expérimentés. Je voudrais souligner quelques points à considérer:

  • Les praticiens plus jeunes / moins expérimentés aiment souligner comment leurs aînés ne parviennent pas à faire X ou Y, lorsqu'ils ne comprennent pas que l'expérience a montré que c'étaient de mauvaises idées. Pourtant, chaque nouvelle génération de pratiquants semble vouloir répéter ces erreurs. Ce phénomène est commun à toutes les professions, pas seulement à la programmation.
  • Toutes les personnes qui travaillent depuis plusieurs années ne sont pas expérimentées, matures ou bonnes. Il faut des efforts pour devenir meilleur. Beaucoup d'efforts investis lorsque vous êtes plus jeune vous permettent d'acquérir une bonne expérience que vous pourrez ensuite utiliser.

Peut-être que les personnes dont vous parlez n'ont jamais été bonnes. Il est tout aussi possible qu'ils vous regardent en pensant, pourquoi insistez-vous pour faire les choses à la dure?

Il est vrai, cependant, que lorsque vous fondez une famille, vous avez beaucoup moins de temps pour suivre les nouveaux jouets. En fait, vous avez moins de temps à mesure que vos enfants vieillissent que vous quand ils sont plus jeunes. Les jouets ne font pas de vous un meilleur programmeur. Les outils non plus. Ce qui vous rend bien, c'est la capacité de résoudre les problèmes et de trouver une solution de travail. Ce qui vous rend formidable, c'est la capacité d'apprendre aux autres à être bons. C'est là que l'expérience commence à briller.

Berin Loritsch
la source
1
Voulez-vous élaborer sur le downvote? Vous n'aimez peut-être pas ce que j'ai dit, mais c'est vrai.
Berin Loritsch
4
La perception qu'il a est une grande partie de son énigme. Tout ce que j'ai fait, c'est de traiter directement cette perception. En bref, je suis plus préoccupé par la chasse à l'outil que par sa capacité à devenir un bon développeur chevronné . Il peut même devenir grand . Cela ne se produira pas si toute son expérience lui dit que les développeurs plus âgés sont nulles. C'est un terrible démotivateur à faire l'effort d'arriver là où il veut être.
Berin Loritsch
1
@Berin Loritsch: C'est un bon point. Votre intention était bonne. // Aux États-Unis, trop de gens se déplacent pour gronder les autres pour avoir fait une généralisation. J'ai pris objection à votre réponse, car il semblait que vous faisiez cela.
Jim G.
1
Espérons que ce que vous apprendrez au fil du temps, c'est quand investir du temps dans l'apprentissage de nouvelles technologies et quand les ignorer. L'essentiel, c'est que le temps est une ressource précieuse. Lorsque SOAP / XML RPC est sorti, il était trop tôt pour dire ce qu'il ferait vraiment. Maintenant, avec quelques années sur nos ceintures, nous avons appris des leçons douloureuses et modifié l'approche avec les services basés sur REST. De plus, nous les vieux, nous avons besoin des jeunes avec une énergie débordante pour comprendre ce qui vaut la peine de consacrer du temps à l'apprentissage. Nous pourrions être un peu plus lents à appuyer sur la gâchette, mais il ne nous faut pas longtemps pour nous mettre à niveau.
Berin Loritsch
2
@Berin Loritsch: Peut-être que je comprends maintenant. En fait, j'ai vu des personnes âgées (y compris mon patron actuel) qui se contentent simplement de résoudre des problèmes. Il ne saute pas de joie quand je dis que vous pouvez facilement faire X en utilisant ce framework mais il n'a pas peur de l'utiliser quand il voit qu'il est réellement utile. Alors peut-être que d'autres aînés qui ne sont pas bons ne le sont pas parce qu'ils ne l'ont jamais été. Pas parce qu'ils sont déconnectés à cause des nouvelles technologies. Je me sens beaucoup mieux maintenant. (J'espère que ce que j'ai écrit a du sens)
Hemant
20

Il est difficile de prédire l'avenir. Mais une chose est la plus précieuse, quelle que soit la technologie.

C'est la capacité d' un développeur à résoudre des problèmes .

Beaucoup de qualités de développeur sont indépendantes de la technologie. Par exemple, la capacité analytique est la qualité la plus importante que je connaisse. C'est comme apprendre les mathématiques. C'est tout simplement intemporel.

Amir Rezaei
la source
1
Oui, plus la capacité / l'honnêteté de savoir quand vos outils / compétences disponibles ne résolvent pas le problème. Vous allez donc apprendre de nouvelles choses, puis revenir à «la capacité de résoudre le problème».
Peter Rowell
1
eh ... C'est un peu vague, et tbh, c'est un peu copout. Si un développeur est toujours parfaitement heureux de "résoudre des problèmes" dans vb6 ... eh bien, je ne veux pas vraiment travailler avec leur code. Rester à jour n'est pas prédire l'avenir, nécessite du temps / du travail, et il y a moins de possibilités lorsque vous avez une famille.
Steven Evers
5

J'aimerais avoir une pensée positive ou concrète - mais je pense que la façon dont un programmeur se tient à jour et équilibre travail / famille varie énormément d'un programmeur à l'autre.

Pensées aléatoires:

  • Tous les projets de logiciels ou toutes les entreprises n'ont pas besoin des technologies les plus récentes, même dans les logiciels. Le changement est le plus spectaculaire à la pointe - les entreprises qui courent légèrement derrière la pointe ont souvent de nombreuses opportunités de croissance et de changement, mais pas la demande urgente généralisée de changement constant immédiatement.
  • Plus un programmeur est expérimenté, plus il devrait pouvoir tirer parti de l'expérience à la place du dernier / meilleur mot à la mode. J'ai remarqué que les personnes que j'admire le plus avec plus de 20 ans dans l'industrie ont des tonnes de métaphores pour expliquer comment la dernière chose en C # est la réponse parfaite au problème qu'ils avaient à la fin des années 80 avec C. En tirant parti des problèmes et des solutions précédents, ils apporter plus de compréhension à la table avec moins de recherche.
  • Chaque fois que j'ai dû évaluer des programmeurs dans l'équipe, la capacité à faire avancer les choses et à bien jouer avec les autres a éclipsé la gamme de technologies avec lesquelles le programmeur est venu au travail. Bien que l'industrie évoluera de nombreux langages, API et outils concurrents et nouveaux, les chances sont bonnes que le projet n'utilise que des concurrents à la fois. Mais faire avancer les choses et aider les autres à faire de même ne se démode jamais et la façon dont cela se fait évolue beaucoup plus lentement - pas que la messagerie instantanée, les médias sociaux, les téléphones intelligents et tout le reste à l'ère numérique ne changent pas cet aspect de la programmation , aussi.
Bethlakshmi
la source
Il peut également être intéressant de travailler dans une entreprise qui court un peu plus loin derrière le bord saignant, disons 3-4 ans. Vous pouvez voir plus clairement les erreurs que d'autres ont commises et bénéficier d'outils et d'implémentations plus matures.
Michael K
Je suis d'accord. En fait, je travaille un peu derrière le bord moi-même, et j'aime savoir que d'autres se sont battus la tête contre un peu avant de devoir l'essayer. :)
bethlakshmi
5

Premièrement, Microsoft se consacre à la vente d'outils et de plates-formes de développement logiciel sur lesquels exécuter ce logiciel. Cela les incite à apporter des modifications, qu'elles soient nécessaires ou non. Cela ne veut pas dire que tous leurs changements sont inutiles, juste qu'il y a beaucoup de domaines dans notre profession qui sont beaucoup plus stables. Avec l'expérience, vous êtes mieux en mesure de discerner sur quels wagons valent la peine de sauter immédiatement et sur lesquels vous pouvez attendre pour mûrir.

Deuxièmement, l'expérience ne demande que du temps. La plupart des développeurs avec 15 ans d'expérience qui sont mauvais maintenant l'étaient il y a 15 ans. Ne pas attribuer à tort à l'âge ce qui peut être expliqué de manière adéquate par l'incompétence.

Troisièmement, ne confondez pas avoir des connaissances obsolètes et être incapable d'utiliser les dernières et les meilleures lorsque le besoin s'en fait sentir. Il suffit généralement de savoir ce qui existe. Par exemple, jusqu'à récemment, mes connaissances en programmation Web étaient anciennes à la fin des années 90, mais quand je voulais créer un site Web pour mon frère, j'en savais assez pour découvrir des technologies "nouvelles" comme CSS, jQuery et les systèmes de gestion de contenu, et j'étais assez à jour en quelques semaines. En d'autres termes, si vous n'avez pas eu besoin de quelque chose au cours des 10 dernières années, il est peu probable que vous ayez une urgence où vous souhaiteriez être à jour en ce moment.

Enfin, être parent est en effet un gros engagement de temps, mais moins de temps que beaucoup de personnes sans enfant semblent penser. Les parents parviennent toujours à lire des livres, à regarder la télévision, à jouer à des jeux, à surfer sur le Web et même à prendre des cours à l'occasion. Shocker, je sais. Vous le faites simplement en petites portions et faites des priorités. La seule chose que j'ai complètement abandonnée, c'est de regarder les rediffusions.

Karl Bielefeldt
la source
3

Je peux vous assurer que les personnes qui présentent de faibles compétences en programmation après dix à quinze ans n'ont jamais vraiment internalisé le développement de logiciels. Maîtriser un ensemble d'outils n'est pas la même chose que maîtriser l'art du développement logiciel.

J'écris du code depuis plus de trente ans. J'ai traversé plusieurs périodes où j'ai dû mettre ma carrière sur pilote automatique en raison d'obligations et / ou d'intérêts extérieurs. Ce que l'on doit apprendre à faire en vieillissant, c'est d'éviter de sauter tôt dans un train de technologies. La plupart des technologies ne sont pas à la hauteur de leur battage médiatique. En tant que praticien plus âgé ayant des obligations en dehors du travail, il faut être avare de son temps. Un praticien expérimenté peut se permettre d'attendre quelques années qu'une nouvelle technologie arrive à maturité car il / elle a déjà maîtrisé l'art du développement logiciel.

bit-twiddler
la source
Vous ne trouvez donc pas difficile de rester à jour avec les nouvelles technologies lorsqu'elles arrivent à maturité?
Hemant
1
Cette industrie est cyclique. La plupart des nouvelles technologies ne sont rien d'autre que de vieilles idées reconditionnées. Si ses fondamentaux sont solides, on n'aura pas de problème à suivre. N'oubliez pas qu'il n'est pas nécessaire d'être à la pointe de la technologie pour gagner décemment sa vie en tant qu'ingénieur logiciel.
bit-twiddler
2

Au cours de mes années d'expérience:

  • Les langues ont changé (généralement relativement lentement).
  • L'éventail des problèmes qui peuvent être pratiquement résolus s'est élargi (un peu plus vite);
  • La taille et la complexité des solutions ont augmenté (relativement rapidement);
  • Il y a eu quelque chose qui est flavor of the day(parfois bon, souvent mauvais).

Comme indiqué lors d'une discussion sur les modèles, le groupe de quatre n'a pas inventé de modèles. Ils ont proposé une terminologie et des modèles de solutions qui étaient déjà appliqués.

Contrairement à de nombreux autres domaines, il y en a encore beaucoup qui ne sont pas une pratique courante. J'ai vu beaucoup de trucs de pointe aller et venir. Beaucoup d'entre elles reformulaient des techniques déjà en pratique, et celles-ci réussissaient généralement dans une certaine mesure. D'autres ont plus ou moins disparu et la plupart ont adopté de nouvelles approches. (Quelqu'un a vu une langue de 5e génération récemment?)

Les programmeurs que j'ai vus qui sont les plus efficaces peuvent sélectionner et assembler des composants éprouvés dans une solution de travail. Cela implique rarement quelque chose de tranchant, ce qui augmenterait généralement le risque du projet. La capacité de s'appuyer sur des travaux déjà réalisés nous permet d'élargir la portée de ce qui est possible.

Les langages de programmation ont tendance à tomber dans relativement peu de familles. La connaissance d'une langue dans une famille facilite le travail avec des langues similaires. Comprendre les bibliothèques disponibles dans la langue et les exploiter peut augmenter considérablement la productivité et la fiabilité. En général, je choisirais une langue plus ancienne avec des bibliothèques appropriées plutôt qu'une langue plus récente sans bibliothèques appropriées.

Lors de l'application de nouvelles technologies, il est important d'éviter le Because We Cansyndrome. L'ajout d'une nouvelle technologie, car c'est la saveur de l'année, a tendance à causer plus de problèmes qu'elle n'en résout. Savoir quand la technologie résoudra un problème réel et quand elle ne fera qu'ajouter de la complexité est une compétence utile.

Un très bon programmeur résoudra les nouveaux problèmes et utilisera les solutions existantes pour le reste. Peu d'entreprises ont besoin d'une technologie de pointe, toutes ont besoin de solutions solides.

Je regrette généralement de glisser le long de la lame de rasoir. Je ne me souviens pas avoir jamais regretté d'avoir utilisé une technologie éprouvée. Cependant, une grande partie de ce qui est décrit newest le reconditionnement de quelque chose d'existant. Habituellement, ce reconditionnement facilite la compréhension et l'application des choses.

BillThor
la source
2

Personne ne peut tout suivre. Vous avez probablement été très occupé à suivre l'offre de Microsoft. Avez-vous regardé Ruby sur RAILS et les bases de données Python et NoSQL et la création d'applications Hadoop et mobiles et CSS et HTML5 et jQuery et ExtJS et ...?

Je suis dans le logiciel depuis longtemps. J'essaie de suivre les nouvelles technologies, comme les nouvelles idées de bases de données massivement parallèles, et j'ignore le laid (par exemple MFC, WinForms, SOAP, XML, EJB) et le trivial autant que possible. Surtout, nous voyons juste de grandes vieilles idées reconditionnées et finalement adoptées. Programmation fonctionnelle? J'utilisais INTERLISP en 1977. Des applications de téléphonie mobile? Il s'agit de la même interface utilisateur événementielle et des graphiques 2D que nous utilisons depuis au moins 30 ans. Bien sûr, il y a un art à concevoir une application utilisable pour un petit écran tactile, mais la programmation n'est pas nouvelle du tout.

Kevin Cline
la source
1

Je suis d'accord avec @Amir que votre compétence est la résolution de problèmes et non votre domaine linguistique, mais j'apprécie votre préoccupation, donc:

Si vous avez la liberté de choisir votre langue actuelle, choisissez-en une aussi proche que possible des premiers principes (c.-à-d. Une langue de type C ++) de sorte que lorsque votre travail pousse dans un nouveau domaine, la courbe d'apprentissage est moins longue - car elle est juste abstractions au-dessus de vous. Si vous n'investissez actuellement que dans des langages de haut niveau, une abstraction est beaucoup plus difficile (même si ce n'est que dans la perception).

Si vous ne disposez pas de ce flux, utilisez simplement vos 8 heures de travail. Si votre passion est élevée, vous ne serez pas "coincé" et vous trouverez toujours des problèmes intéressants à résoudre qui vous amèneront naturellement à en savoir plus. .

Stephen Bailey
la source
1

Cela dépendra de votre travail et des emplois que vous souhaitez. Il existe des positions où les développeurs utilisent encore des technologies plus anciennes. Encore beaucoup de COBOL pour continuer (je suis sûr que quelque chose a changé.).

Travailler dans une entreprise qui effectue un changement majeur comme vous l'avez décrit peut mettre certaines personnes au chômage. Parfois, l'entreprise investit dans la formation au lieu de vous obliger à l'apprendre à votre rythme.

Avoir une famille peut limiter vos choix de travail. Peut vous rendre moins mobile. Pouvez-vous aller travailler à une start-up pour la moitié de votre salaire dans l'espoir d'un gros salaire - peut-être pas avec des enfants et des hypothèques.

Le plus récent n'est pas toujours meilleur et beaucoup ne durent pas.

JeffO
la source
1

Je ne suis pas dans le domaine médical, mais que diriez-vous d'une analogie entre un développeur et un médecin? Les deux domaines ont connu d'énormes changements au cours des 20 dernières années et le rythme du changement est de plus en plus rapide. Tous les médecins suivent-ils? Non. Tous les développeurs suivent-ils? Non. Pouvez-vous faire une généralisation sur les développeurs ou les médecins avec 14-15 ans d'expérience? Plus d'expérience signifie que vous disposez d'un plus grand nombre de réponses à des problèmes similaires. L'expérience l'emporte-t-elle sur l'intérêt? Pas à long terme.

Pensez comme un requin qui doit nager ou mourir. Continuez à apprendre ou à mourir (ou passez à la gestion, qui est la voie où la plupart se dirigent, car la carrière de développement culmine à environ 10-15 ans).

SnoopDougieDoug
la source
Je ne suis pas sûr de la situation dans laquelle vous vivez, mais en Australie, les professionnels de la santé doivent suivre une formation et des examens continus pour conserver leur inscription (et donc leur capacité à pratiquer la médecine).
Sedate Alien
0

J'ai les mêmes préoccupations dans le fond de mon esprit, mais ma pensée récente à ce sujet est d'arrêter d'essayer de prédire votre propre capacité d'adaptation et de simplement vous adapter. Je trouve que si je suppose que je peux suivre, je le fais habituellement. Si je m'inquiète de devenir obsolète, cela peut en faire une prophétie auto-réalisatrice.

Comme vous l'avez dit, restez sur vos gardes. Et si vous ne pouvez pas suivre, ne transpirez pas trop. La technologie a une drôle de façon de boucler la boucle, et vous pourriez vous retrouver tout de suite dans le courant dominant performant.

Kevin Hsu
la source