Joel Spolsky: niveau d'abstraction pour les développeurs

image

11 avril 2006

Un jeune homme arrive dans la ville. Il a l'air bien et a de l'argent en poche, il lui est facile de trouver une langue commune avec les femmes.

Il parle peu de son passé, mais il est évident qu'il a passé beaucoup de temps dans une grande entreprise sans âme.

Il est certainement amical et sociable, calme et confiant, pas arrogant. Par conséquent, cela peut facilement prendre un peu de travail sur le babillard du café local pour les programmeurs. Mais perd rapidement de l'intérêt pour les projets de bases de données d'assurance, les pages Web pour les femmes au foyer et les moteurs de règlement financier.

Un an plus tard, il a calculé qu'il avait accumulé suffisamment d'argent pour payer ses modestes dépenses pour l'année. Par conséquent, après avoir consulté son fidèle berger allemand, il place l'ordinateur dans une pièce ensoleillée, un appartement loué et installe des outils de travail soigneusement sélectionnés.

Et il s'assoit pour écrire du code.

Et de quel code s'agit-il. Impeccable, artistique, élégant, pas de bugs. L'interface utilisateur imite si bien le processus de réflexion d'une personne que les personnes à qui il montre le code dans le Café pour les programmeurs remarquent à peine l'interface utilisateur. C'est un travail brillant.

Inspiré par les commentaires de ses collègues, il commence à se lancer en affaires et se prépare à prendre des commandes. Sa modestie exclut toute réclamation, et après un mois, la situation sur son compte bancaire ne semble pas si encourageante. Jusqu'à présent, seules trois commandes ont été acceptées: une de la mère, une du bienfaiteur anonyme du Café des programmeurs et une autre soumise par lui pour tester le système de commerce.

Le deuxième mois, les commandes n'arrivent plus.

Cela le surprend et le bouleverse. Dans une grande entreprise, de nouveaux produits étaient créés régulièrement, et même s'ils étaient impolis et discrets, ils étaient toujours vendus en quantités raisonnables. Un produit sur lequel il a travaillé a été un grand succès.

Après plusieurs mois, sa situation financière commence à sembler un peu fragile. Le chien le regarde tristement. Ne comprenant pas tout à fait ce qui se passait, mais voyant que son visage a l'air pire que d'habitude et qu'il semble incapable de gagner de la force pour sortir avec des amis, ou faire du shopping pour se ravitailler, ou même nager.

Un matin, un vendeur local a refusé de prolonger sa dette et son banquier n'avait pas décroché le téléphone depuis longtemps.

Une grande entreprise n'est pas vengeance. Ils reconnaissent un employé talentueux et sont heureux de le réembaucher avec un salaire plus élevé. Il va bientôt mieux, il a de nouveaux vêtements et il a retrouvé sa confiance en soi. Mais il manque quelque chose. Une étincelle dans ses yeux. L'espoir qu'il pourrait devenir le maître de son destin avait disparu.

Pourquoi n’a-t-il pas réussi? Il le sait bien. «Marketing», dit-il. Comme de nombreux jeunes experts techniques, il est enclin à dire des choses comme: "Microsoft a des produits moins bons, mais un meilleur marketing."

Le terme «marketing», prononcé par un développeur de logiciels, signifie simplement tous ces problèmes commerciaux: tout ce qu'ils ne comprennent vraiment pas dans la création et la vente de logiciels.

En fait, ce n'est pas exactement ce que signifie le marketing. Microsoft a un marketing assez terrible. Pouvez-vous imaginer qu'après cette publicité sur les dinosaures, quelqu'un veuille vraiment acheter Microsoft Office?

Un logiciel est une conversation entre un développeur de logiciels et un utilisateur. Mais pour que cette conversation ait lieu, il faut beaucoup de travail qui va au-delà du développement de logiciels. Cela nécessite non seulement le marketing, mais aussi les ventes et les relations publiques, le bureau et le réseau et l'infrastructure, la climatisation au bureau, le service client, la comptabilité et un tas d'autres tâches de support.

Mais que font les développeurs de logiciels? Ils conçoivent et écrivent du code, ils modélisent des écrans, ils déboguent, ils intègrent et ils testent des choses dans le référentiel de contrôle de source.

Le niveau auquel un programmeur travaille (par exemple Emacs) est trop abstrait pour soutenir une entreprise. Les développeurs travaillant au niveau abstraction ont besoin d'une couche d'implémentation - une organisation qui prend leur code et le transforme en produits. Dolly Parton, travaillant au niveau «chanter une bonne chanson», a également besoin d'une énorme couche d'implémentation pour enregistrer et réserver des salles de concert, prendre des billets et installer du matériel audio, ainsi que promouvoir des enregistrements et percevoir des frais.

Toute entreprise de logiciels qui réussit se composera d'une fine couche de développeurs de logiciels répartis sur le dessus d'une grande structure administrative abstraite.

L'abstraction existe uniquement pour créer l'illusion que les activités quotidiennes d'un programmeur (conception et rédaction de code, vérification de code, débogage, etc.) sont tout ce qui est nécessaire pour créer des produits logiciels et les mettre sur le marché. Ce qui m'amène au point le plus important de cet essai:
Votre première étape en tant que responsable de l'équipe de développement logiciel est de créer une couche de développement abstraite.

La plupart des nouveaux gestionnaires de logiciels ignorent ce point. Ils continuent de penser au modèle traditionnel de gestion de commandement et de conquête qu'ils ont appris dans les films hollywoodiens.

Selon Command-and-Conquer (état-major général), les cadres découvrent où l'entreprise ira, puis donnent les ordres appropriés à leurs lieutenants pour déplacer l'entreprise dans cette direction. Leurs lieutenants, à leur tour, divisent les tâches en plus petits morceaux et donnent des ordres pour leur mise en œuvre. Cela continue dans l'organigramme jusqu'à ce que, finalement, quelqu'un ci-dessous fasse du travail. Dans ce modèle, le programmeur est une dent dans la voiture: le conducteur qui exécute une partie des commandes du manuel.

Certaines entreprises empruntent en fait cette voie. Vous pouvez toujours savoir quand vous avez affaire à une telle entreprise, car la personne à qui vous parlez fait quelque chose de vide de sens et il le sait, il peut même s'en inquiéter, mais ils ne peuvent rien y faire. C'est une compagnie aérienne qui perd à jamais un million de miles d'un client, car ils refusent de changer son billet irrévocable, car il n'a pas pu s'envoler en raison de circonstances familiales. C'est un fournisseur Internet dont le service fonctionne de pire en pire, et lorsque vous annulez votre compte, ils continuent de vous facturer, lorsque vous appelez pour vous plaindre, vous devez appeler un numéro payant et attendre une heure, puis ils refusent toujours de vous retourner de l’argent jusqu’à ce que vous commenciez un blog sur la quantité C'est un constructeur automobile de Detroit qui a longtemps oublié,comment créer des voitures que les gens pourraient vouloir acheter, et qui sont passés d'une stratégie de marché à une stratégie publicitaire, comme si la seule raison pour laquelle nous n'achetons pas leurs voitures de merde est parce que la remise n'est pas assez importante.

Assez

Oubliez ça. Un système de commandement et de contrôle hiérarchique a été testé, et il a fonctionné pendant un certain temps dans les années 1920, en concurrence avec les chariots pousseurs, mais il n'est pas assez bon pour le 21e siècle. Les fabricants de logiciels doivent utiliser un modèle différent.

Dans une société de logiciels, la première priorité de la gestion devrait être de créer cette abstraction pour les programmeurs.

Si quelque part un programmeur s'inquiète d'une chaise cassée ou attend une réponse de Dell pour commander un nouvel ordinateur, l'abstraction a fui.

Considérez la couche abstraite de votre développement comme un grand et beau yacht avec des moteurs incroyablement puissants. Il est impeccablement entretenu. Les plats gastronomiques sont toujours servis comme sur des roulettes. Les femmes de chambre travaillent deux fois par jour dans les cabines. Les cartes de navigation sont toujours à jour. Le GPS et le radar fonctionnent toujours, et s'ils se cassent, il y a un rechange sous le pont. Debout sur le pont, vous avez des programmeurs qui ne pensent vraiment qu'à la vitesse, à la direction et à ce qui se passera pour le déjeuner: thon ou saumon? Pendant ce temps, une grande équipe de professionnels dans une pointe des pieds blanche amidonnée tournait sous le pont, gardant tout en ordre de marche, remplissant les bouteilles de gaz, grattant les coquillages et lissant les serviettes sur la table. Le personnel de soutien sait quoi faire, mais ils prennent leurs signaux de leur vieil homme salé,qui hoche légèrement la tête dans certaines directions pour coordonner toute la symphonie afin que les programmeurs puissent s'abstraire de tout ce qui concerne le yacht, à l'exception de la vitesse, de la direction et de ce qu'ils veulent pour le déjeuner.

La gestion d'une société de logiciels est principalement responsable de la création d'abstractions pour les programmeurs. Nous construisons un yacht, nous servons un yacht, nous sommes un yacht, mais nous n'exploitons pas de yacht. Tout ce que nous faisons est de fournir une abstraction aux programmeurs, afin qu'ils puissent créer un excellent code, et que ce code puisse tomber entre les mains des clients qui en bénéficient.

Les programmeurs ont besoin d'un référentiel Subversion. L'obtention d'un référentiel Subversion signifie que vous avez besoin d'un réseau et d'un serveur qui doivent être achetés, installés, réservés et alimentés en continu, et que le serveur génère beaucoup de chaleur et qu'il doit être dans une pièce avec une climatisation supplémentaire, et que le climatiseur doit avoir accès à l'extérieur bâtiments, ce qui signifie installer un ventilateur de 80 livres sur le mur à l'extérieur du bâtiment, ce qui rend les propriétaires du bâtiment nerveux, ils doivent donc amener leur constructeur à convenir de l'endroit où l'unité de climatisation sera installée (solution): (sur le mur extérieur, ici, au 18 étage, dans l'endroit le plus inconfortable), et les propriétaires appellent leur avocat, car nous devons signer pour pouvoir le faire, puis les gars de l'installation de climatisation avec gréement apparaissent,ce qui n'est pas pratique, ce qui rend le contremaître nerveux, et cela ne leur permet pas de sortir de la fenêtre du 18e étage dans une ceinture Mattel en plastique rose 1/2 ", je le jure, ce pourrait être une ceinture Barbie Disco, et quelqu'un devrait appeler à nouveau le travailleur de la construction agent et découvrez ce qu'ils ont soudainement réalisé après 12 semaines dans le projet de construction qu'ils auraient besoin d'un autre amendement au contrat pour ce foutu climatiseur, qu'ils savaient avant Noël, et ils ont seulement deviné que si vos programmeurs passaient au moins une minute à réfléchir à ce sujet, alors c'est déjà trop.qu'est-ce qu'ils ont soudainement réalisé après 12 semaines dans le projet de construction qu'ils auraient besoin d'un autre amendement au contrat pour ce foutu climatiseur, qu'ils connaissaient avant Noël, et ils ont seulement deviné que si vos programmeurs passaient au moins une minute à y penser, alors c'est déjà trop.qu'est-ce qu'ils ont soudainement réalisé après 12 semaines dans le projet de construction qu'ils auraient besoin d'un autre amendement au contrat pour ce foutu climatiseur, qu'ils connaissaient avant Noël, et ils ont seulement deviné que si vos programmeurs passaient au moins une minute à y penser, alors c'est déjà trop.

Pour les développeurs de logiciels de votre équipe, tout cela devrait être résumé, comme entrer svn commit sur la ligne de commande.

C'est pourquoi vous devez avoir une gestion.

C'est pour ces choses qu'aucune entreprise ne peut éviter, mais si vous avez des programmeurs qui s'inquiètent, la gestion a échoué, tout comme un yacht de 100 pieds échouera si le propriétaire millionnaire doit descendre à la salle des machines et réparer le moteur.

Votre entreprise typique a été fondée par d'anciens éditeurs de logiciels, où tout est affaire de vente, et nous existons tous pour augmenter les ventes. Ces sociétés ne peuvent pas prendre le contrôle de leur propre initiative, car elles créent la version 1.0 du logiciel (d'une manière ou d'une autre), puis perdent complètement tout intérêt à développer de nouveaux logiciels. Leur équipe de développement est affamée ou n'existe pas, car personne n'a pensé à construire la version 2.0 ... tout ce que la direction peut faire, c'est augmenter les ventes.

D'un autre côté, vous avez des sociétés créées par d'anciens programmeurs. Ces entreprises sont plus difficiles à trouver, car dans la plupart des cas, elles se comportent tranquillement, écrivent du code quelque part dans le sous-sol que personne ne trouve jamais, et donc elles disparaissent tranquillement dans l'oubli immédiatement après la réécriture du grand rubis.

Ces deux exemples peuvent être facilement détruits par une entreprise gérée par des programmeurs et organisée de manière à placer les programmeurs aux commandes, mais qui possède une excellente abstraction, faisant tout le travail acharné de conversion de code en produits.

Le programmeur est le plus productif avec un compte personnel silencieux, un excellent ordinateur, un nombre illimité de boissons, une température ambiante de 20 à 23 degrés Celsius, pas d'éblouissement sur l'écran, une chaise si confortable que vous ne le sentez pas, un administrateur qui apporte du courrier et commande des manuels et des livres, par un administrateur système qui rend Internet aussi accessible que l'oxygène, un testeur pour trouver les erreurs qu'ils ne peuvent tout simplement pas voir, un graphiste pour embellir leurs écrans, une équipe de marketeurs, pour que les masses veulent obtenir leurs produits, une équipe de vendeurs pour s'assurer que les masses peuvent obtenir ces produits, un support technique, qui aide les clients à faire fonctionner le produit et aide les programmeurs à comprendre quels problèmes provoquent les appels au support technique,et une douzaine d'autres fonctions de support et d'administration qui, dans une entreprise type, représentent environ 80% du salaire. Ce n'est pas par hasard que l'armée romaine avait un ratio de quatre domestiques par soldat. Ce n'était pas de la décadence. Les armées modernes fonctionnent probablement à un rapport de 7: 1. (C'est ce que Pradeep Singh m'a appris aujourd'hui: si seulement 20% de votre personnel sont des programmeurs, vous pouvez économiser 50% sur les salaires en les externalisant en Inde, quel avantage concurrentiel tirez-vous réellement de ces 10% d'économies? )(C'est ce que Pradeep Singh m'a appris aujourd'hui: si seulement 20% de votre personnel sont des programmeurs, vous pouvez économiser 50% sur les salaires en les externalisant en Inde, quel avantage concurrentiel tirez-vous réellement de ces 10% d'économies? )(C'est ce que Pradeep Singh m'a appris aujourd'hui: si seulement 20% de votre personnel sont des programmeurs, vous pouvez économiser 50% sur les salaires en les externalisant en Inde, quel avantage concurrentiel tirez-vous réellement de ces 10% d'économies? )

La principale responsabilité de la direction est de créer l'illusion qu'une entreprise qui s'occupe de logiciels peut être démarrée en écrivant du code, car c'est ce que font les programmeurs. Et même si ce serait formidable d'avoir des programmeurs qui connaissent aussi bien les ventes, la conception graphique, l'administration du système et la cuisine - ce n'est pas réaliste. Comme apprendre à chanter à un cochon, cela prend votre temps et agace le cochon.

Microsoft fait un si bon travail pour créer cette abstraction que les diplômés de Microsoft sont notoirement difficiles à créer des entreprises. Ils ne peuvent tout simplement pas croire ce qui s'est passé à leur insu et ils ne savent pas comment le recréer.

Personne ne s'attend à ce que Dolly Parton sache comment brancher un microphone. Derrière elle se cache un incroyable réseau de managers, musiciens, techniciens du disque, maisons de disques, artistes en visite, coiffeurs et publicistes qui existent pour créer une abstraction qui, quand elle chante, est tout ce dont des millions de personnes ont besoin pour entendre sa chanson . Tout le personnel de soutien et la direction qui rendent possible le travail de Dolly Parton peuvent faire leur travail de la meilleure façon, en fournissant l'abstraction la plus parfaite: l'illusion la plus parfaite que Dolly chante pour nous. Ceci est sa chanson. Lorsque vous l'écoutez sur votre iPod, il existe une énorme infrastructure qui rend cela possible, mais la meilleure chose que l'infrastructure puisse faire est de disparaître complètement. Fournissez l'abstraction que Dolly Parton utilise pour nous personnellement.




image
Apprenez en détail comment obtenir une profession recherchée à partir de zéro ou passer au niveau supérieur en compétences et en salaire en suivant les cours en ligne de SkillFactory:




All Articles