La programmation est-elle un métier dans une course vers le bas? [fermé]


41

Il me semble que l'industrie de la programmation est dans une course vers le bas. Si nous prenons les pratiques de:

  1. Ne pas prendre le temps de mettre en œuvre les meilleures pratiques
  2. Utiliser le code des autres personnes autant que possible (code personnalisé en tant que responsabilité)
  3. Utiliser des langages de plus en plus avancés pour améliorer la productivité
  4. Des "outils" de développement basés sur une interface graphique qui simplifient grandement la "programmation" et ne nécessitent pas que les gens comprennent la plomberie qui se cache derrière le code

Ces choses impliquent pour moi que nous sommes dans la course pour devenir comme n'importe quel autre employé de bureau. Il est dans l’intérêt de l’employeur que les choses ne requièrent pas de compétences (plus faciles à remplacer), que les choses soient préconstruites (moins de temps de projet).

Ce que je veux dire, c'est que a) existe-t-il un décalage entre les compétences et les intérêts économiques de l'employeur? et b) le cas échéant, comment l'atténuer pour faire respecter les normes professionnelles?


28
Eh bien, quelqu'un doit encore fabriquer ces outils. Donc, dans un certain sens, il est difficile de garder les bons programmeurs à l'écart du travail ennuyeux.
Jeremy Heiler

11
Pourquoi quiconque croit que l'avenir du développement logiciel se résumera à glisser-déposer des composants me dépasse. Sérieusement, croyez-vous honnêtement que ce sera aussi facile?
Pemdas

3
@Pemdas: Peur humaine si progrès et / ou changement. La locomotive à vapeur d'il y a 150 ans était perçue comme un mal.

4
@pierre Je ne suis pas sûr de comprendre où vous voulez en venir.
Pemdas

3
Dijkstra, c'est toi?
l0b0

Réponses:


6

Je pense que vous avez posé une question très poignante.

La création d’outils de codage pour l’interface graphique met les programmeurs hors de travail autant que les robots supprime les travailleurs de la chaîne de montage. À mon avis, s'il y a une perte d'emplois, il y a aussi un changement dans la position des prochains emplois.

La technologie nécessaire pour accomplir une tâche change, mais la tâche doit encore être complétée: les voitures doivent encore être fabriquées / assemblées avant de pouvoir être conduites; le code / la logique métier doit encore être mis en place pour que l'application fonctionne.

Les changements technologiques présentent des choix pour les programmeurs: apprenez la programmation basée sur l'interface graphique ou les outils d'interface graphique de programme ... ou ... autre chose.

Il peut y avoir un décalage entre les compétences des employés et les intérêts de l’employeur, mais pas pour longtemps, surtout si l’employeur est averti. Il est donc dans l'intérêt de l'employeur et de l'employé qu'ils recherchent ce qui est dans leur intérêt mutuel. Mais l'un sera inévitablement en avance sur l'autre. J'espère que c'est vous (-:

Meilleurs vœux,

KM


Ma pensée est de me concentrer sur le développement de logiciels plus spécialisés: programmation intensive mathématique, statistique et informatique (bien que la 3ème puisse se démoder avec l'augmentation de la puissance de la VM). Je ne pense pas que ces domaines spécialisés soient dans la course au fond, bien que je n’aie pas d’expérience dans ce domaine et que je puisse me tromper.
Q303

@ Q303: Il y aura toujours beaucoup d'applications qui utiliseront toute la puissance informatique disponible.
David Thornley

58

Aux tendances que vous mentionnez, j'en ajouterais une de plus, à laquelle IMHO les explique:

Il y a beaucoup plus de programmeurs (nécessaires) que jamais.

Le nombre de tâches qui nécessitent ou incluent la programmation est en augmentation constante et à un taux encore plus élevé que celui du nombre de programmeurs. De nos jours, il y a plusieurs micropuces dans une voiture moyenne. Dans 5 ans, il pourrait y avoir une puce dans votre réfrigérateur et votre grille-pain. Dans 10 ans, vos sous-vêtements? ... Et quelqu'un doit produire tout ce logiciel pour les faire fonctionner. Tous les efforts possibles sont donc déployés pour automatiser tout ce qui est automatisable et pour améliorer la "productivité" (quelle que soit sa définition). Et de plus en plus de cerveaux frais sont recrutés.

Cela implique que la majorité des programmeurs actifs actuels sont inexpérimentés et / ou mal préparés à leur travail. Il faut plusieurs années pour acquérir un niveau d'expérience suffisant et apprendre continuellement pour rester en place. En bout de ligne, de plus en plus d'emplois de programmation deviennent de moins en moins difficiles. Mais il y a encore suffisamment de défis pour ceux qui les recherchent .

Laissez-moi jouer l'avocat du diable contre vos points ci-dessus:

Ne pas prendre le temps de mettre en œuvre les meilleures pratiques

Beaucoup de gens ne le font pas, beaucoup de gens le font. Il y a dix ans, lorsque j'ai découvert les tests unitaires et l'approche agile, aucun de mes collègues n'avait la moindre idée de ce que c'était. De nos jours, il s’agit d’un matériel presque standard dans les universités et de nombreux nouveaux diplômés le comprennent déjà.

Utiliser le code des autres personnes autant que possible (code personnalisé en tant que responsabilité)

Par opposition à quoi? Réinventer la roue? Ou en utilisant le code d'autres personnes pour éviter cela?

Je pense qu'il est important de noter que nous sommes payés (principalement) pour résoudre des problèmes, et écrire du code n'est pas la fin, mais seulement le moyen d'y parvenir . Si un problème peut être résolu sans écrire une seule ligne de code, le client est toujours content. Surtout si nous parvenons ainsi à produire une solution plus fiable, plus rapide et moins chère. Je ne vois pas de problème avec ça.

Utiliser des langages de plus en plus avancés pour améliorer la productivité

Par opposition à tout coder en assembleur? ;-)

Des "outils" de développement basés sur une interface graphique qui simplifient grandement la "programmation" et ne nécessitent pas que les gens comprennent la plomberie qui se cache derrière le code

À mon humble avis, tout outil peut être mal utilisé. Ce qui ne veut pas dire que les constructeurs d’interface graphique étaient nécessairement parfaits, voire bons - la plupart (ou du moins certains) sont utilisables dans les limites de leurs possibilités. Mais si quelqu'un ne connaît pas ces limites, s'agit-il d'un outil ou d'un utilisateur?

En général, je crois (bien que je n’aie aucune preuve à l’évidence) que, à l’époque des cartes perforées et du code machine, à peu près la même proportion du code existant était horrible qu’aujourd’hui, à la fois

  • la quantité globale de code, et
  • les chances des étrangers jamais voir un tel code

était beaucoup beaucoup moins.

Maintenant, avec Internet et le Daily WTF, nous sommes quotidiennement exposés aux pires exemples. C'est un peu comme regarder toutes les nouvelles sur le terrorisme, les tremblements de terre et les divorcées, et crier à quel point ce monde est devenu dangereux et immoral.


+1 Je suppose que nous sommes dans un cycle de rétroaction "chaque solution engendre de nouveaux problèmes" - je ne peux pas dire s'il s'agit d'une boucle négative ou positive.
Maglob

6
+1 Si seulement les bons codeurs réécrivaient tout à partir de zéro, alors je serais heureux d'être un programmeur de mauvaise qualité.
AndrewKS

1
Je ne veux pas de jetons dans mes sous-vêtements, sauf si la disponibilité est acceptable!

@ Thorbjørn: quel temps de disponibilité acceptable pour un sous-vêtement? Si c'était auto-nettoyant, alors je m'inquiéterais de la disponibilité ... sinon vous devez les enlever tous les jours de toute façon (j'espère!)
Dean Harding

1
@ back2dos, je ne considère pas cela comme un désaccord. La ligne en gras indique la tendance ou la vue des entreprises / gestionnaires si vous le souhaitez. vous énoncez la vue des développeurs. Je suis tout à fait d’accord avec vous pour dire qu’il serait idéal d’avoir de meilleurs programmeurs, une éducation plus pratique, un mentorat, pour élever le niveau de qualité de l’industrie. Cependant, la triste réalité est différente. Le logiciel est devenu un produit de base que beaucoup de gens attendent de pouvoir l’obtenir rapidement et à moindre coût, sans comprendre les implications de telles décisions (coûts à court et à long terme, etc.).
Péter Török

29

Vous résumez correctement la situation, mais vous en interprétez complètement le sens.

Au fur et à mesure que le logiciel devient plus puissant, les tâches qu'il prend avec elle. Donc, bien sûr, il n’est peut-être plus nécessaire aujourd’hui d’être un programmeur de base de données pour créer une base de données de contacts téléphoniques lorsque vous pouvez utiliser Access. Et il n’est peut-être pas nécessaire d’être un programmeur Web pour créer un blog lorsque vous pouvez vous rendre sur wordpress. Mais, alors qu'il était il y a 15 ans, il était nécessaire d'être un programmeur pour faire ces choses, mais ce que font les programmeurs à l'heure actuelle est bien plus grand que ce qu'il était possible de faire il y a 15 ans.

Permettez-moi de formuler les choses ainsi: dans 100 ans, il sera trivial de mettre en place un système aussi complexe que Facebook ou Google. Je ne parle pas de leurs pages Web, je parle de leurs centres de données. Tout le monde pourra le faire. Cela sera intégré aux téléphones, en supposant que nous les utilisions encore. MAIS, il y aura toujours des programmeurs, et même s’ils ne travaillent peut-être pas sur de tels systèmes «triviaux» dans 100 ans, ils travailleront sur des systèmes tellement plus complexes et sophistiqués que personne ici ne pourra même commencer à en comprendre la portée et la pertinence. échelle. Et ces systèmes, comme ceux d’aujourd’hui, seront bien loin du personnel de bureau moyen, car certains, appelés programmeurs, choisiront de se spécialiser pour pousser la technologie de cette époque à son extrême.


Point de vue intéressant ...
Q303, le

10
J'aimerais que GrandmasterB écrive de la science-fiction.
octobre

5
Je ne peux pas attendre d'avoir mon propre centre de données Google sur mon téléphone.
Martin York

3
@ Slomojo Pas aussi de science-fiction qu'on pourrait le penser. Quand j'étais enfant en 3e année, j'ai visité une démonstration informatique au collège près de chez moi. C'était une vitrine expérimentale pour le public. L'un des programmes présentés était un jeu jouable de tic-tac-toe. A l'époque, il était considéré comme un moment ahurissant de pouvoir jouer à un jeu contre un ordinateur. C'était à la fin des années 60. Quels seront les moments oh et ah dans 100 ans?
Bill

Je faisais référence à la façon dont il l'a dit, non pas que le contenu était fantasmagorique , j'étais là quand Pong était révolutionnaire, je suis à peu près sûr que les enfants de Nintendo peuvent également comprendre les changements exponentiels de la technologie.
Ocodo

18

Je lis ce genre de choses depuis quarante ans maintenant et je n’étais pas au début des prédictions. Cela n'est pas encore arrivé.

COBOL était l'outil de développement original destiné à supprimer le besoin de programmeurs professionnels et constituait un langage de niveau beaucoup plus élevé que l'assembleur. Les bibliothèques de code (pour ne pas avoir à écrire son propre code) sont d'une antiquité similaire.

De temps en temps, quelque chose apparaît qui permet aux non-programmeurs de faire quelque chose qui ressemble davantage à du travail de programmation. Il y a eu les "langues de quatrième génération" des années 1980, des feuilles de calcul sophistiquées comme Excel, des générateurs de rapports, etc. En cas de succès, ce qu’ils ont fait de façon uniforme, c’est de supprimer une partie de la complexité de la programmation et de permettre aux programmeurs de faire d’autres choses plus intéressantes.

Ce schéma ne durera pas éternellement, mais je vais avoir besoin de quelque chose de plus que des arguments théoriques et des prédictions pour me convaincre que la programmation est en train de se dégrader.

Le problème entre COBOL et les outils de développement modernes est qu’ils ne remplacent pas la possibilité de prendre une spécification inexacte et de la transformer en quelque chose de précis et utile. C’est la capacité fondamentale des programmeurs et la raison pour laquelle nous ne partirons pas avant longtemps.


7
+1 - "Prenez une spécification inexacte et transformez-la en quelque chose de précis et utile."
octobre

+1, je n'ai pas été dans ce jeu aussi longtemps que toi, mais j'ai certainement entendu le même genre de chose que cette question a énoncé et reformulé depuis 20 ans maintenant.
Carson63000

+1 pour 4gl je suis venu dire exactement cela. Toute cette promesse, si peu de livraison :)
Ian

"Ce modèle ne durera pas éternellement" - pourquoi pas?
Ian Warburton

3

Les programmeurs d'Assembly et de FORTRAN ont probablement dit la même chose lorsque la programmation structurée et les interprètes répandus entraient en scène.

À la fin de la journée, le logiciel est une création destinée à automatiser quelque chose qui était auparavant fait à la main. Un département de comptabilité dans une société modérée aurait déjà eu besoin de dizaines de personnes. Désormais, tout ce travail peut être accompli par le travail d'une ou deux personnes. En conséquence, les postes de but ont été déplacés et nous attendons maintenant cette norme de capacité supplémentaire de la part d’un comptable.

Le rendu des films par Pixar est plus long que jamais. En dépit de l'énorme augmentation de la vitesse de calcul, les animateurs ont exigé une complexité et des détails sans cesse croissants dans leurs scènes. L’animation de calibre Toy Story n’est pas acceptable en 2010, contrairement à 1995. Au fur et à mesure du développement de leurs outils, leurs capacités et leurs attentes aussi.

Lorsque le glisser-déposer ou d'autres méthodes de programmation sont monnaie courante, le monde exigera des solutions à des problèmes encore plus complexes et complexes, et il faudra que les programmeurs utilisent ces nouveaux outils sophistiqués pour les résoudre. Les poteaux de but vont bouger.


3

Bien que je sois d’accord avec la plupart des réponses qui indiquent qu’il y aura encore beaucoup de travail à faire, je vais vous donner une réponse différente à considérer:

Oui, c’est le cas.

Je suis ici pour concevoir une solution à des problèmes que d'autres ne peuvent pas. Tout ce qui, dans les outils, me permet de perdre du temps à résoudre des problèmes et à traiter tous les détails de la mise en œuvre de ma conception est un gaspillage.

La seule raison pour laquelle je craindrais de passer à un langage de niveau supérieur ou à un outil plus simple et plus abstrait, c’est que ces outils font souvent des hypothèses qui me gênent et me demandent du temps pour les contourner afin d’obtenir la mise en œuvre souhaitée.

Il y a toujours plus de problèmes à résoudre que de bons résolveurs de problèmes. Même si toute la chaîne de développement devenait si simple, les enfants d'âge préscolaire pourraient l'utiliser et si-ce que vous devez considérer pour faire une bonne solution.

Notre travail consiste à résoudre les problèmes mieux que la plupart des autres; la complexité de la chaîne d'outils n'est pas très pertinente dans une vue d'ensemble, dans la mesure où cela vous échappe et vous permet de construire et de construire quelque chose de bien.


1

Même si les technologies de programmation peuvent changer, la complexité sous-jacente d'un logiciel est toujours là. Si le logiciel peut être entièrement écrit à l'aide de diagrammes ou de diagrammes (ou d'une autre manière «simple»), toute la complexité du logiciel doit encore être comprise et traitée. Pour cette raison, il est important pour les employeurs de disposer de programmeurs connaissant parfaitement les produits de l'entreprise afin de les mettre à jour ou d'ajouter de nouvelles fonctionnalités. Et cela peut prendre un certain temps aux employés pour apprendre un logiciel.


1

Peu importe ce que vous pouvez automatiser ou retirer du commerce, la plupart des logiciels fournis entrent dans deux catégories:

  1. C'est simple à utiliser, mais cela ne correspond pas vraiment à ce dont l'entreprise a réellement besoin
  2. Il est hautement personnalisable, mais il faut un spécialiste pour comprendre et tirer parti de la personnalisation.

J'imagine que j'ai oublié le troisième logiciel de productivité standard (courrier électronique, navigateur, traitement de texte, etc.). Le logiciel de la première catégorie amène les entreprises à embaucher des développeurs pour personnaliser le logiciel standard (si cela est possible). ils pourraient aussi bien engager un développeur, car la personne qui connaît ce système personnalisable est très recherchée (pensez à SAP, PeopleSoft, etc.) ou à une race en voie de disparition (pensez à tout système similaire à SAP et PeopleSoft avoir la même pénétration du marché).

Il y aura toujours un besoin de développeurs. Ce que je constate, c’est que la plupart des tâches manuelles, fastidieuses et répétitives sont devenues automatisées (pensez à écrire du code pour l’accès manuel aux données plutôt qu’à l’utilisation d’un O / RM). Cela permet aux développeurs de fournir plus de valeur à l'entreprise avec moins d'effort.


1

Je ne prends pas vos arguments:

  1. Ne pas prendre le temps de mettre en œuvre les meilleures pratiques

excepté.

  1. Utiliser le code des autres personnes autant que possible (code personnalisé en tant que responsabilité)

La réutilisation du code est une pratique exemplaire. Le code utilisé est testé. Bien sûr, vous devriez utiliser du code provenant de bonnes sources, qui est maintenu et utilisé par beaucoup.

  1. Utiliser des langages de plus en plus avancés pour améliorer la productivité

La productivité n'est pas mauvaise en soi, n'est-ce pas?

  1. Des "outils" de développement basés sur une interface graphique qui simplifient grandement la "programmation" et ne nécessitent pas que les gens comprennent la plomberie qui se cache derrière le code

Si l'outil fait le travail: Utilisez-le. Si non: refusez. Si la promesse tient, et que les gens n'ont vraiment pas besoin de comprendre le code - bravo! Vous semblez dire que c'est une promesse qui ne tient pas?

(Les numéros ici sont automatiquement rendus de nouveau faux. :))


Le fait est que pour être efficace, vous avez besoin de moins de compétences. Il n’ya rien de fondamentalement mauvais en ce qui concerne les "outils" de développement basés sur une interface graphique. Leur inconvénient est que leur utilisation répétée réduit le niveau de compétence requis pour faire ce que nous faisons. La même chose vaut pour utiliser le code d'autres personnes: vous commencez finalement à programmer sur la plate-forme Google. Enfin, les langages de niveau supérieur font abstraction de nombreuses subtilités qui, là encore, nécessitent des compétences. Rien de tout cela n’est mauvais du point de vue de l’employeur et de la gestion de projet. Cela me fait toutefois douter de l'avenir de la profession.
Q303

Tout dépend de vos besoins. Lorsque je n'ai pas besoin d'une technique de tri spécialement adaptée aux données distribuées, je peux parfaitement utiliser les bibliothèques avec un algorithme de tri rapide. Pourquoi devrais-je le savoir avant d'en avoir besoin? Peut-être ai-je besoin de temps pour apprendre autre chose - fontkerning, accès à la base de données, conception d'interface graphique ... - vous le nommez. Les compétences sont utiles, mais vous pouvez en avoir trop. Parfois, il est juste de dire: YAGNI.
utilisateur inconnu

1

La programmation visuelle n’est pas moins valable et mérite le mépris que la programmation textuelle.

La programmation visuelle présente certains déficits et défis, mais la plomberie du composant sous-jacent étant potentiellement périlleuse si elle est ignorée, elle n’est pas monopolisée par les composants visuels et, plus important encore, par les concepteurs visuels. Ignorer la plomberie sous-jacente est un risque pour tout développement.

Si vous avez la possibilité d'essayer Labview, vous en verrez peut-être le potentiel (ou même une variante spécialisée dans l'environnement Lego NXT). Bien que non sans défauts ou lacunes, il existe des avantages hérités. Voir c'est croire.


0

Les pratiques de programmation augmentent non seulement la productivité et réduisent les coûts de certains types de développement (votre course vers le bas), mais augmentent les capacités des applications et les attentes des clients (encourageant ainsi une course vers le haut). Soyez témoin des bonus que Goole et Facebook paient pour obtenir les meilleurs technologues.


0

Aucune autre profession s'occupant d'ingénierie de l'existence ne cherche autant à changer que la programmation. Dès que vous simplifiez quelque chose, vous ouvrez une boîte de dialogue à de nouveaux problèmes qui génèrent de nouvelles idées.

Donc, je ne souillerais pas les efforts des autres pour partager le code et les solutions afin de nous aider à avancer vers de nouveaux défis, idées et expériences d'utilisateurs avec les mauvaises pratiques, les mauvaises habitudes et les mœurs dépourvues d'humanisme de chaque pratiquant.


-2

Si nous prenons les pratiques de:

  • Ne pas prendre le temps de mettre en œuvre les meilleures pratiques
  • Utiliser le code des autres personnes autant que possible (code personnalisé en tant que responsabilité)

WTF? Voulez-vous dire pour que cette liste soit incohérente? Les listes doivent provenir du même côté pour chaque élément plutôt que de changer d'avant en arrière. Ainsi, votre liste devrait se lire comme suit:

Si nous prenons les pratiques de:

  • Ne pas prendre le temps de mettre en œuvre les meilleures pratiques
  • Ne pas utiliser le code des autres personnes autant que possible (code personnalisé en tant que responsabilité)


1
@NoahRoberts: votre modification change la signification de la deuxième puce. Ce n'est également pas une réponse appropriée à la question et aurait dû être un commentaire à la place.
Adam Lear

@ Anna - ce n'était pas un montage, bien sûr. C'est pourquoi cela n'apparaît pas comme une modification de la question initiale. C’EST une réponse parce qu’il aborde une prémisse erronée dans la question.
Edward Strange

Quelle est la prémisse?
Q303

3
@ NoahRoberts: C'est un peu bizarrement formulé, mais je pense que la liste est cohérente dans son sens - q303 prend "utiliser le code existant d'autres personnes au lieu d'écrire du code personnalisé en interne" comme support dans son argument.
Adam Lear

@ q303 - Apparemment, utiliser le code des autres autant que possible est une mauvaise pratique. C'est ce que je tirerais de votre liste de toute façon.
Edward Strange
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.