Parfois, quand j'ai un problème qui doit être résolu, je trouve que la façon la plus simple de le résoudre est d'écrire un petit programme comme outil personnel. Je ne le rend pas super utilisable ou super robuste, car je suis le seul à l'utiliser, et je n'ai pas le temps de l'affiner et de le tester à fond.
Ensuite, un collègue voit le programme et le demande, car il a rencontré le même problème et l'outil pourrait aider. Je lui donne l'avertissement "Ce n'est pas joli mais ça va faire le travail" et je le laisse l'avoir.
La prochaine chose que je sais, mon supérieur m'appelle, me disant qu'il essaie de faire fonctionner le logiciel sur l'ordinateur d'un client mais qu'il affiche un message d'erreur X. WTF ?? Ce logiciel n'est pas prêt pour la sortie, et on ne m'a pas dit qu'il devait être prêt pour la sortie. Mais pour une raison quelconque, mon supérieur a pensé que c'était assez bon et l'a publié sans en informer le développeur d'origine.
Maintenant, ce problème particulier est facile à résoudre avec a MessageBox.Show("DO NOT GIVE TO CLIENTS!");
. Cependant, le problème indique un problème beaucoup plus profond: notre culture d'entreprise est bâclée. Le logiciel bâclé est OK et les processus bâclés sont OK. Ne vous inquiétez pas pour l'avenir - faites juste assez d'efforts pour le faire à peine fonctionner maintenant, mettez les binaires dans un fichier .zip et expédiez-le. Assez bon pour le travail du gouvernement.
Il s'agit d'une petite entreprise de 10 employés à temps plein, en pleine croissance et qui existe depuis un certain temps. Ne vous méprenez pas; J'adore travailler ici et j'adore l'entreprise. Ne me dites pas de courir; Je veux participer à l'amélioration de l'entreprise. Comment commencez-vous à apporter un bon changement à ce type de culture?
Réponses:
La seule façon de changer est de faire voir à tous les autres les inconvénients d'une culture bâclée et, peut-être plus important encore, d'obtenir l'adhésion de la direction pour y remédier. En réalité, cela ne se produit pas et vous ne pourrez pas le changer. Ce n'est peut-être pas la réponse que vous vous attendiez à entendre, mais après environ cinq ans d'essayer et d'échouer à plusieurs emplois pour changer la culture bâclée, je peux dire avec une certaine autorité que cela ne vaut généralement pas la peine de faire l'effort.
La première étape serait de découvrir si quelqu'un d'autre connaît ou se soucie de la culture bâclée; si vous êtes la seule personne à voir des problèmes, vos efforts sont vains.
la source
Vous devrez peut-être vous asseoir avec un collègue et un patron et expliquer que vous étiez un prototype et que vous n'étiez pas prêt à l'utiliser. S'ils voulaient qu'il soit prêt à être utilisé par les clients, vous pourriez apporter ces modifications avec suffisamment de temps, mais veuillez ne pas prendre les trucs «rapides et sales» et les transmettre aux clients. Ce n'est pas parce que quelque chose fonctionne que c'est bon d'être la leçon à apprendre. Bien que vous ayez donné un avertissement, il y a quelque chose à dire pour lui donner un certain respect, sinon c'est ce qui peut arriver.
la source
Vous ne pouvez pas réparer stupide. Si votre patron fait des choses comme vous décrivez, il est peu probable que vous puissiez changer cela. Surtout s'il n'est pas le propriétaire - rappelez-vous, il a une pression venant de l'autre direction, et cette direction signe son chèque de paie. Même chose avec vos autres collègues. Le meilleur premier plan d'action que vous pouvez prendre est de prendre l'habitude de vous protéger. Utilisez des techniques telles que la boîte de message que vous décrivez. Conservez tous les e-mails. Obtenez autant que vous le pouvez par écrit. De cette façon, vous ne prenez pas le poids lorsque la stupidité frappe. Ensuite, au fur et à mesure que vous êtes promu, installez les changements que vous souhaitez auprès des personnes sous votre supervision.
la source
L'autre jour, un collègue m'a raconté l'histoire d'un outil de test simple pour permettre à un ingénieur dans un laboratoire d'émettre une seule commande vers un widget et de changer une variable qui va avec la commande. Cela a été écrit il y a 9 ans maintenant, et la dernière fois qu'il le savait, il est toujours utilisé aujourd'hui. Un outil qui a été écrit en quelques heures avec un minimum de tests pour prouver, en laboratoire, que quelque chose fonctionne, était la base de tout un outil de test de laboratoire d'ingénierie. Une fois que vous avez écrit du code, il existe. S'il fait quelque chose d'utile et qu'il est vu par d'autres personnes, les gens vont le vouloir. S'il est bon dans ce qu'il fait, les gens vont lui demander de faire X. La prochaine chose que vous savez, votre outil simple est un élément important.
Je pense que la première responsabilité incombe au développeur du logiciel de s'assurer que toute personne qui regarde le code ou utilise l'outil comprend qu'il s'agit d'un prototype ou non d'un système de production et explique pourquoi. Il semble que vous ayez fait cela, mais vos collègues ont négligé d'assumer cette responsabilité. Afin de résoudre ce problème, je recommanderais de leur parler, réitérant que ce n'était pas un code de production et qu'il avait été écrit uniquement pour faciliter votre travail. S'ils le trouvent utile, proposez peut-être de travailler sur l'outil ou de soutenir d'autres personnes travaillant sur l'outil pour l'améliorer et le rendre plus adapté à la production.
En ce qui concerne le processus organisationnel ou le changement de culture, attendez-vous à ce que cela prenne du temps. Commencez par donner un exemple. Si vous n'avez pas lu The Pragmatic Programmer , faites-le. Prenez note des conseils tels que le souci de votre métier, soyez un catalyseur du changement (montrez aux gens de meilleures façons), ne vivez pas avec des fenêtres brisées, résolvez le problème et non le blâme. Il semble que vous reconnaissiez certains problèmes abordés par ces conseils, alors commencez à travailler et à vivre un exemple pour vos collègues.
la source
Jusqu'à ce que les décideurs ne tarissent plus les conséquences du mauvais code et soient prêts à payer / changer leurs façons de résoudre le problème.
Ce sont des décisions difficiles pour les petites entreprises en croissance. Ils ne savent pas où mettre tous leurs efforts. Il existe un risque de rendre le code trop robuste lorsque des règles métier et parfois des secteurs d'activité entiers apparaissent, changent et disparaissent du jour au lendemain.
Efforcez-vous d'écrire du bon code. Assurez-vous d'informer tout le monde des conséquences afin qu'ils puissent prendre des décisions éclairées. Si un mauvais code est mis en production, surveillez-le de près si vous le pouvez et continuez à suggérer de l'améliorer, surtout si cette partie de l'entreprise devient critique.
Faire attendre les gens pour ce que vous considérez comme un code minimalement viable semble dépasser leurs attentes actuelles.
la source
Je voudrais souligner qu'une partie du problème ici est que vous avez écrit un outil rapide et sale en premier lieu. Certes, il y avait de bonnes raisons. Certes, il a fait le travail. Mais , j'ai trouvé que tout ce qui résout un problème tombera dans le piège d'une solution "assez bonne", si vous commencez à vous en passer.
Si votre camarade le veut, soit dites-lui poliment qu'il n'est pas entièrement fonctionnel, et vous gardez les clés. Vous pouvez l'exécuter de temps en temps pour lui. Ou ajoutez des fonctionnalités supplémentaires, de préférence dès le début du projet.
Tous mes outils rapides et sales à ce stade proviennent d'un fichier squelette fortement testé. Cela me permet de démarrer rapidement, me fournit un point de départ fonctionnel et me permet d’oublier l’ajout de tous les bords contondants nécessaires. Je n'ai pas à me soucier de la bibliothèque getopts et de ses bizarreries. Je n'ai pas besoin de me souvenir des détails sur la gestion de la mémoire lorsque j'utilise python. Générez le programme pour qu'il effectue une tâche simple et une seule . Cela permet de tester facilement s'ils essaient de le déformer.
Enfin, profitez de l'architecture des machines à états finis. Si vous savez aller dans tous les états possibles, il est beaucoup plus facile de s'assurer que, quoi qu'il arrive, l'utilisateur ne peut jamais sauter les pistes. J'ai un programme que j'ai écrit pour suivre ce paradigme. Il accepte des fichiers d'entrée arbitraires, qu'il lit octet par octet. Même si le client lui disait de lire un exécutable binaire, il n'aurait aucun problème. Puisqu'il ne trouverait aucune des choses qu'il recherche, son tampon interne se remplirait. Cela le ferait nettoyer, fermer et signaler à l'utilisateur qu'il a besoin de moi pour l'examiner.
la source
Eh bien, la réponse n'a pas grand-chose à voir avec la programmation, sauf que le logiciel est un bien dont il est difficile de juger facilement la qualité.
Vous pourriez ne pas être en mesure de changer la culture, car les gens peuvent n'avoir aucun motif réel de ne pas être bâclé, car les personnes affectées par la qualité du logiciel n'ont pas grand-chose à voir avec le processus. Par exemple, vos clients pourraient être tenus d'acheter et d'utiliser des logiciels pour faire leur travail, mais ont peu d'intérêt personnel quant à l'efficacité de ce logiciel, car ils ne seront pas personnellement blâmés pour leurs problèmes ou récompensés pour leurs vertus (en grande partie parce que personne ne sait vraiment si un logiciel concurrent serait mieux). Ainsi, vous n'aurez peut-être qu'à répondre à leurs demandes de fonctionnalités sans prendre trop de temps, mais pas à vous soucier de savoir s'il s'agit d'un buggy. Ainsi, vous pouvez tous être assez bâclé sans conséquences (pour quiconque prend des décisions qui vous concernent).
Je ne sais pas si quelque chose comme ça est le cas, mais si c'est le cas, vous aurez peut-être du mal à changer la culture, car les personnes que vous essayez de changer ne seront pas mieux si elles le font.
S'ils seront mieux lotis, vous aurez peut-être plus de facilité, car vous pouvez potentiellement les convaincre pourquoi ils le feront. Malheureusement, il n'y avait pas une sorte de situation politique que le OK de marques qu'ils ne serait probablement pas être bâclée en premier lieu, il est donc susceptible d'être difficile. Vous pouvez toujours essayer l'argument "un jour, vous pourriez avoir un travail qui nécessite de bien faire les choses" (peut-être plus formulé de manière diplomatique ...)
la source