Fermer

octobre 18, 2020

Pourquoi les développeurs de logiciels pourraient être obsolètes d'ici 2030


En 1930, John Maynard Keynes a prédit que nous aurions des semaines de travail de 15 heures d’ici la fin du siècle. Mais à l'époque de 2013, il était clair que le grand économiste s'était trompé.

Bienvenue à l'ère des bullshit jobs comme l'a inventé l'anthropologue David Graeber. Depuis les années 1930, de toutes nouvelles industries ont vu le jour, qui n’ajoutent pas nécessairement beaucoup de valeur à nos vies. Graeber appellerait probablement la plupart des emplois dans le développement de logiciels des conneries .

Je ne partage pas l'opinion de Graeber, surtout en ce qui concerne les logiciels. Mais il touche un point intéressant: comme de plus en plus de processus sont automatisés, la plupart des tâches sont obsolètes à un moment donné. Selon une estimation, 45 pour cent de tous les emplois pourraient être automatisés en utilisant la technologie actuelle. Et avec le temps, ils le feront probablement.

Dans le développement de logiciels, où les choses évoluent assez rapidement de toute façon, vous pouvez voir que cela se produit en temps réel: dès que les tests de logiciels sont devenus un sujet brûlant, les outils d'automatisation a commencé à surgir. Et ce n'est que l'un des nombreux domaines où les parties de conneries – les parties qui sont itératives et chronophages – des logiciels ont été automatisées.

Cela soulève la question, cependant, de savoir si les développeurs se rendent obsolètes en construisant outils d'automatisation. Si de plus en plus de machines peuvent écrire du code pour elles-mêmes, pourquoi avons-nous besoin des humains?

De la conception de la logique à la conception des esprits

Les développeurs de logiciels sont des constructeurs dans l'âme. Ils créent des liens logiques, des algorithmes, des programmes, des projets et plus encore. Le point est: ils construisent des choses logiques.

Avec la montée de l'intelligence artificielle, nous assistons cependant à un changement de paradigme. Les développeurs ne conçoivent plus de liens logiques. Au lieu de cela, ils forment des modèles sur l'heuristique de ces liens logiques.

De nombreux développeurs sont passés de la construction de la logique à la construction de l'esprit. Pour le dire différemment, de plus en plus de développeurs de logiciels se lancent dans les activités de data scientists.

Les trois niveaux d’automatisation

Si vous avez déjà utilisé un IDE, vous savez à quel point le développement de logiciels assisté peut être incroyable. Une fois que vous vous êtes habitué à des fonctionnalités telles que la saisie semi-automatique ou la recherche de code sémantique, vous ne voulez plus vous en passer.

Il s'agit du premier domaine d'automatisation du développement logiciel. Lorsque les machines comprennent ce que vous essayez de mettre en œuvre, elles peuvent vous aider tout au long du processus.

Le deuxième domaine est celui des systèmes fermés. Considérez une application de médias sociaux: elle se compose de nombreuses pages différentes qui sont liées les unes aux autres. Cependant, elle est fermée dans la mesure où elle n’est pas conçue pour communiquer directement avec un autre service.

Bien que la technologie permettant de créer une telle application soit de plus en plus simple à utiliser, nous ne pouvons pas encore parler d’automatisation réelle. Désormais, vous devez être capable de coder si vous voulez créer des pages dynamiques, utiliser des variables, appliquer des règles de sécurité ou intégrer des bases de données.

Le troisième et dernier domaine est celui des systèmes intégrés. L'API d'une banque, par exemple, est un tel système puisqu'elle est conçue pour communiquer avec d'autres services. Pour le moment, cependant, il est pratiquement impossible d’automatiser les intégrations ATM, les communications, les modèles mondiaux, la sécurité approfondie et les problèmes de dépannage complexes.

Les trois domaines de l'automatisation. Image de l’auteur, mais adaptée de la conférence d’Emil Wallner à InfoQ. Le développement de logiciels est une route cahoteuse, et nous ne savons pas vraiment quand l'avenir arrivera.

Le monde à travers les yeux d'un ordinateur

Lorsqu'on leur demande s'ils seront remplacés par un robot dans le futur, les travailleurs humains souvent ne pense pas. Cela s'applique au développement de logiciels ainsi qu'à de nombreux autres domaines.

Leur raison est claire: des qualités comme la créativité, l'empathie, la collaboration ou la pensée critique ne sont pas ce pour quoi les ordinateurs sont bons.

Mais souvent, ce n'est pas ce qui compte pour faire un travail. Même les projets les plus complexes se composent de nombreuses petites pièces qui peuvent être automatisées. Le scientifique de DeepMind Richard S. Sutton le dit comme ceci:

Les chercheurs cherchent à tirer parti de leur connaissance humaine du domaine, mais la seule chose qui compte à long terme est l'utilisation du calcul.

Ne vous méprenez pas; les qualités humaines sont incroyables. Mais nous avons surestimé l’importance de ces problèmes dans le cadre des tâches régulières. Pendant longtemps, par exemple, même les chercheurs ont cru que les machines ne seraient jamais capables de reconnaître un chat sur une photo.

De nos jours, une seule machine peut catégoriser des milliards de photos à la fois, et avec une plus grande précision qu'un humain . Bien qu’une machine puisse être incapable de s’émerveiller de la gentillesse d’un petit chat, elle est excellente pour travailler avec des états non définis. C'est ce qu'est une photo d'un chaton à travers les yeux d'une machine: un état indéfini.

Vers de nouvelles variétés et échelles

En plus de travailler avec des états indéfinis, il y a deux autres choses que les ordinateurs peuvent faire plus efficacement que les humains: premièrement, faire les choses à grande échelle. Deuxièmement, travailler sur de nouvelles variétés.

Nous avons tous vu à quel point les ordinateurs fonctionnent à une échelle. Par exemple, si vous demandez à un ordinateur de imprimer ("Je suis tellement stupide") deux -cent fois, il le fera sans se plaindre et accomplira la tâche en une fraction de une seconde. Demandez à un humain, et vous devrez attendre des heures pour faire le travail…

Les collecteurs sont fondamentalement une manière sophistiquée ou mathématique de se référer à des sous-ensembles d'espace qui partagent des propriétés particulières. Par exemple, si vous prenez un morceau de papier, il s’agit d’une variété bidimensionnelle dans un espace tridimensionnel. Si vous froissez le morceau de papier ou le pliez dans un avion, c'est toujours une variété.

Il s'avère que les ordinateurs fonctionnent vraiment bien dans des variétés que les humains ont du mal à visualiser, par exemple parce qu'elles s'étendent en vingt dimensions ou ont beaucoup de plis et de bords compliqués. Étant donné que de nombreux problèmes quotidiens, comme le langage humain ou le code informatique, peuvent être exprimés sous la forme d'une variété mathématique, il y a beaucoup de potentiel pour déployer des produits vraiment efficaces à l'avenir.

Où nous en sommes en termes d'évolutivité informatique et d'exploration de nouvelles variétés. Nous travaillons sur les domaines un et deux, mais avons à peine touché le domaine numéro trois. Image de l'auteur, mais adaptée de la conférence d'Emil Wallner à InfoQ.

Développements actuels

Il peut sembler que les développeurs utilisent déjà beaucoup d'automatisations. Mais nous ne sommes qu’au seuil de l’automatisation logicielle. Automatiser les systèmes intégrés est presque impossible à ce jour. Mais d'autres domaines sont déjà en cours d'automatisation.

D'une part, les révisions de code et le débogage pourraient bientôt appartenir au passé. La société suisse DeepCode travaille sur un outil d'identification automatique des bogues. DeepMind de Google peut déjà recommander des solutions plus élégantes pour le code existant. Et Facebook Aroma peut compléter automatiquement de petits programmes par lui-même.

De plus, le système de similarité de code inféré par machine, abrégé MISIM prétend être capable de comprendre le code informatique de la même manière qu'Alexa ou Siri peut comprendre le langage humain. C'est passionnant car un tel système pourrait permettre aux développeurs d'automatiser des tâches courantes et chronophages, telles que le transfert de code vers le cloud ou la mise en œuvre de processus de conformité.

Des horizons passionnants

Jusqu'à présent, toutes ces automatisations [19659029] fonctionnent très bien sur de petits projets, mais sont tout à fait inutiles sur des projets plus complexes. Par exemple, les logiciels d'identification de bogues retournent encore de nombreux faux positifs, et l'auto-complétion ne fonctionne pas si le projet a un objectif très nouveau.

Puisque MISIM n'existe pas depuis longtemps, le jury est toujours sur ce point automatisation. Cependant, vous devrez garder à l'esprit que ce sont les tout débuts, et que ces outils devraient devenir beaucoup plus puissants à l'avenir.

Applications à venir

Quelques premières applications de ces nouveaux les automatisations pourraient inclure le suivi de l'activité humaine. Cela ne veut pas dire comme un logiciel espion, bien sûr; au contraire, des choses comme la planification des heures d'un travailleur ou l'individualisation des leçons pour un élève pourraient être optimisées de cette façon. heures pendant lesquelles ils sont plus productifs.

Si MISIM est aussi bon que promis, il pourrait également être utilisé pour réécrire le code hérité. Par exemple, de nombreux logiciels bancaires et gouvernementaux sont écrits en COBOL ce qui est à peine enseigné aujourd'hui. Traduire ce code dans un langage plus récent le rendrait plus facile à maintenir.

Etre développeur de logiciels restera passionnant pendant longtemps. Photo de Brooke Cagle sur Unsplash

Alors, comment les développeurs et les entreprises peuvent-ils garder une longueur d'avance?

Toutes ces nouvelles applications sont passionnantes. Mais au-dessus d'eux se profile une grosse épée de Damoclès: et si la concurrence utilisait ces automatisations avant que vous ne vous rendiez compte? Et s'ils rendent les développeurs totalement obsolètes?

Investir dans la livraison continue et les tests automatisés

Ce sont certainement deux mots à la mode dans le monde de l'automatisation. Mais ils sont néanmoins importants.

Si vous ne testez pas votre logiciel avant les versions, vous risquez de compromettre l'expérience utilisateur ou de rencontrer des problèmes de sécurité plus tard. Et l'expérience montre que les tests automatisés couvrent des cas auxquels les testeurs humains n'ont même pas pensé, alors qu'ils auraient pu être cruciaux.

La livraison continue est une pratique que de plus en plus d'équipes ramasser, et pour une bonne raison. Lorsque vous regroupez de nombreuses fonctionnalités et que vous ne publiez qu'une mise à jour, disons une fois tous les trois mois, vous passez souvent les prochains mois à réparer tout ce qui a été brisé au cours du processus. Non seulement cette façon de travailler constitue un obstacle majeur à un développement rapide, mais elle compromet également l’expérience utilisateur.

Il existe de nombreux logiciels d’automatisation pour les tests et un contrôle de version (et de nombreux autres frameworks) pour une livraison continue. Dans la plupart des cas, il semble mieux de payer pour ces automatisations que de les construire vous-même. Après tout, vos développeurs ont été embauchés pour créer de nouveaux projets et non pour automatiser des tâches ennuyeuses.

Si vous êtes gestionnaire, considérez ces achats comme un investissement. Ce faisant, vous soutenez vos développeurs du mieux que vous pouvez, car vous capitalisez sur ce dans quoi ils sont vraiment doués.

Le décalage vers la gauche: inclure les développeurs aux premiers stades de chaque projet

Souvent, les projets être créé quelque part dans la haute direction ou près de l'équipe de R & D, puis être transmis jusqu'à ce qu'ils atteignent l'équipe de développement – qui a alors la tâche de concrétiser cette idée de projet.

Cependant, puisque tous les chefs de projet ne sont pas aussi ingénieur logiciel chevronné, certaines parties du projet pourraient être implémentées par l'équipe de développement, tandis que d'autres seraient coûteuses ou pratiquement impossibles.

Cette approche était peut-être légitime dans le passé. Mais comme beaucoup de parties monotones du développement logiciel – oui, ces parties existent! – sont en cours d'automatisation, les développeurs ont la possibilité d'être de plus en plus créatifs.

C'est une excellente chance de déplacer les développeurs vers la gauche, c'est-à-dire de les impliquer dans les étapes de planification d'un projet. Non seulement pour qu'ils sachent ce qui peut être mis en œuvre et ce qui ne le peut pas. Grâce à leur créativité, ils peuvent ajouter de la valeur d'une manière qui n'est pas imaginable a priori.

Faire du logiciel une priorité absolue

Cela fait cinq ans que Satya Nadella de Microsoft a proclamé ] que «toute entreprise sera une entreprise de logiciels». Il avait raison.

Non seulement les développeurs devraient changer de direction à gauche. Les logiciels devraient changer de priorités.

Si la pandémie actuelle vous a appris quelque chose, c'est que la vie et la création de valeur se font en grande partie de nos jours.

Le logiciel est roi. Paradoxalement, cela devient plus apparent à mesure que cela devient automatisé.

L'automatisation transforme les nerds du logiciel en leaders. Photo de Christina @ wocintechchat.com sur Unsplash

Le résultat: les geeks deviennent des leaders

Quand j'étais à l'école, les gens qui aimaient les ordinateurs étaient considérés comme des enfants, des nerds, des geeks, des créatures peu aimables et des êtres ressemblant à des zombies. dépourvu de sentiments et de passions humains. J'aimerais vraiment exagérer.

Plus le temps avance, plus les gens voient les autres côtés des développeurs. Les gens qui codent ne sont plus considérés comme des nerds, mais plutôt comme des gens intelligents qui peuvent créer des trucs sympas.

Les logiciels gagnent en puissance à mesure qu’ils sont automatisés. En ce sens, votre peur de perdre votre emploi de développeur en raison de l'automatisation est largement infondée.

Bien sûr, dans une décennie, voire dans quelques mois, vous ferez probablement des choses que vous ne pouvez même pas imaginer maintenant. Mais cela ne signifie pas que votre travail disparaîtra. Au contraire, il sera amélioré.

La ​​peur que vous devez vraiment vaincre n'est pas de perdre votre emploi. Vous devez vous débarrasser de la peur de l’inconnu.

Développeurs, vous ne serez pas obsolète. Vous ne serez tout simplement pas des nerds plus longtemps. Vous deviendrez plutôt des leaders.


Cet article a été rédigé par Rhea Moutafis et a été initialement publié le Towards Data Science . Vous pouvez le lire ici .




Source link