Un peu de contexte ici - nous sommes une petite équipe (de 5) de développeurs RAD responsables du développement logiciel interne dans une grande entreprise non logicielle. Les "logiciels internes" varient d'une application .NET de bureau utilisant un serveur MSSQL comme backend à des scripts Python s'exécutant en arrière-plan de documents et de modèles MS Word - un zoo de technologies.
Toute l'équipe est composée de personnes polyvalentes capables d'obtenir les exigences des utilisateurs, de les coder, de les tester et de les déployer en production. Une fois le logiciel en production il est pris en charge par une autre équipe mais il nous est généralement facile d'intervenir en cas de problème.
Jusqu'à présent, tout sonne bien, mais il y a un problème - étant une équipe RAD, nous devons publier souvent, et il n'y a pas de jour sans que nous publions de nouvelles versions d'une ou deux applications (ou ce pourrait être un script, un document Word mis à jour) , Application console C ++, etc.) dans la production. Nous faisons un test de développement et impliquons également les utilisateurs finaux en les laissant exécuter le logiciel dans l'environnement UAT ...
... mais les bogues se faufilent quand même en production. Les utilisateurs comprennent que ces bogues et l'instabilité occasionnelle sont le prix qu'ils paient pour obtenir ce qu'ils veulent vraiment rapidement, mais en même temps, cela nous a fait réfléchir - peut-être pourrions-nous améliorer notre développement ou une pratique de publication pour améliorer la stabilité de la logiciel et réduire le nombre de bogues que nous introduisons lors de l'ajout d'une nouvelle fonctionnalité.
La bonne chose - nous n'avons pas vraiment beaucoup de processus en premier lieu, donc il devrait être facile de commencer à s'améliorer, la mauvaise chose - étant une petite équipe RAD, nous n'avons pas vraiment beaucoup de temps et de ressources pour mettre en œuvre quelque chose de grand, mais nous avons pensé aux initiatives suivantes et nous serions heureux de recevoir vos commentaires, conseils, astuces et suggestions.
Actuellement, certaines applications sont mises en production juste après les tests du développeur, contournant les tests d'acceptation des utilisateurs. Cette pratique doit être abandonnée et même un petit changement doit être testé par un utilisateur final. Chaque application aura un bêta-testeur dédié sélectionné parmi les utilisateurs finaux. Ce n'est qu'après qu'un bêta-testeur a approuvé la nouvelle version qu'il est promu du test à l'environnement de production.
Nous ne procédons pas à des révisions de code - mais nous commencerons à effectuer des révisions de code avant que l'un de nous ne vérifie l'ensemble de modifications. Je pensais également à un "examen du déploiement" - en gros, l'un des développeurs doit s'asseoir à côté de l'autre le regarder faire le déploiement du logiciel (copier les binaires, mettre à jour les configurations, ajouter une nouvelle table à la base de données, etc.) - il ne s'agit généralement que de prend 5 à 10 minutes, ce qui ne prendra pas beaucoup de temps pour un "examen de déploiement".
Comment réduire le temps de restauration lorsqu'une nouvelle version est suffisamment buggée pour être retirée de la production et remplacée par une bonne version précédente. Nous stockons un historique de toutes les versions (sous forme de fichiers binaires) pour faciliter le retour d'une version - et bien qu'il soit rapide de "remplacer les fichiers binaires nouvellement publiés par les versions binaires précédentes", il s'agit toujours d'un processus manuel qui est sujet aux erreurs. et exigeant parfois "et si la restauration échouait et rendrait le système inutilisable au lieu d'un buggy".
C'est là que nous avons manqué de nos idées et nous aimerions avoir vos commentaires à ce sujet et si vous pouviez partager quelques conseils simples d'amélioration des processus de publication / développement - ce serait génial.