Comment expliquez-vous l'importance d'utiliser un système de contrôle de version [distribué] à quelqu'un qui n'est pas dans le domaine CS? [fermé]


13

Un bon exemple de quelqu'un qui correspond à cette description pourrait être un chef de projet.

L'autre jour, mon patron m'a demandé "qu'est-ce que c'est que ce truc Github et pourquoi est-il important?" Il a des projets propriétaires, il aurait donc besoin d'un hébergement privé et je me suis retrouvé à avoir du mal à expliquer au-delà de l'habituel: les VCS rendent la collaboration triviale, fournissent un historique et une "sauvegarde" de toutes vos données, et vous permettent d'enregistrer des changements atomiques dans une base de code . Dans mon esprit, je pensais, "c'est presque comme si vous devez utiliser un DRVS pour vraiment comprendre à quel point il est bénéfique".

J'ai fini par le diriger vers BitBucket parce qu'ils vous donnent des référentiels privés illimités (j'ai même dû expliquer ce qu'était un référentiel).

Quelqu'un a-t-il de très bons exemples concrets de la façon dont un VCS a sauvé son cul ou rendu la vie plus facile, etc.



4
S'agit-il de VCS en général ou distribué contre non distribué?
JeffO

2
Dévissez son disque dur le matin et placez-le dans votre bureau. Ensuite, il se rendra compte de l'importance.
Andrew T Finnell

Réponses:


6

Le contrôle de version est idéal pour (au moins) trois quatre choses: la sauvegarde, le partage de code entre les développeurs, la recherche et la correction des bogues et le suivi des progrès.

  1. Sauvegarde . Si rien d'autre, c'est une sauvegarde sur stéroïdes. Vous avez tout l'historique de développement, chaque commit est un instantané de tout votre code avec un identifiant (numéro de révision), une description, un horodatage, des informations utilisateur. Et il est simple de comparer les fichiers entre les révisions. Si rien d'autre, c'est plus rapide qu'une simple sauvegarde (seules les modifications de fichiers sont envoyées et stockées), et contient des métadonnées beaucoup plus utiles. Pourquoi réinventer ça?

  2. Partage de code entre développeurs . Si au moins deux développeurs travaillent simultanément sur le même produit, je ne vois pas d'autre moyen de partager de manière fiable et cohérente les modifications de code et de les fusionner. Envoi de zips par mail?

  3. Recherche et correction de bugs . Lorsque vos clients signalent un bogue pour une version de produit spécifique, vous pouvez rapidement obtenir l'instantané source réel afin de le reproduire et de le corriger. Il est difficile de reproduire des bogues si votre source est différente de celle du client. Leur demandez-vous d'envoyer l'exécutable pour pouvoir le démonter? De plus, si vous rencontrez des problèmes pour identifier la cause d'un bogue, vous pouvez utiliser VCS pour identifier la révision exacte à l'endroit où elle a été introduite.

  4. Suivi des progrès . Lorsque vous validez votre travail dans des instantanés, cela vous permet (ainsi qu'à votre responsable) de suivre la progression de l'implémentation des fonctionnalités et l'état des bogues ouverts. Les systèmes VC sont également facilement intégrés aux systèmes de suivi et aux systèmes d' intégration continue . Il est presque impossible de maintenir un niveau de qualité pour autre chose qu'un projet de loisir, à moins d'avoir un VCS.

Une fois que vous avez tous convenu qu'aucun développement logiciel ne devrait jamais être fait en dehors d'un VCS (je ne le manquerais même pas pour un projet de loisir), alors vous pouvez discuter des caractéristiques d'un DVCS (légèrement plus compliqué) (la partie suivante copiée de manière flagrante à partir de Wikipédia ):

  • Chaque utilisateur a sa propre copie locale du référentiel (et effectivement, une copie de sauvegarde)
  • Permet aux utilisateurs de travailler de manière productive même lorsqu'ils ne sont pas connectés à un réseau
  • Rend la plupart des opérations beaucoup plus rapides car aucun réseau n'est impliqué
  • Permet la participation à des projets sans demander l'autorisation des autorités du projet
  • Permet un travail privé, afin que les utilisateurs puissent utiliser leur système de contrôle des révisions même pour les premières ébauches qu'ils ne souhaitent pas publier
  • Évite de compter sur une seule machine physique comme point de défaillance unique

+1 pour avoir mentionné la reproduction du bug. Je n'y ai jamais pensé!
David Cowden

31

"Avez-vous déjà trouvé le bouton" Annuler "utile? Oh, alors vous convenez que nous devrions alors utiliser un contrôle de version?"

Lorsque j'ai commencé à utiliser le contrôle de version, la principale caractéristique qui m'intéressait était la possibilité de «défaire» mes erreurs et de revenir à une version précédente. Tout le monde peut apprécier un bouton d'annulation. Le contrôle de version accordé peut faire beaucoup plus.


1
Il est en quelque sorte approprié qu'une réponse résidant uniquement autour du concept d'un bouton d'annulation soit publiée par l'utilisateur @ Buttons840
David Cowden

9

Commencez par les bases:

Tout d'abord, un VCS protège les développeurs d'eux-mêmes et les uns des autres - s'il ne servait à rien d'autre que de permettre à deux ou plusieurs développeurs de travailler sur la même base de code de manière relativement sûre, il serait d'une grande valeur (et j'ai fait partie d'une équipe où le précédent jours de travail a été écrasé par un peu de copie négligente).

Deuxièmement, il fournit une piste d'audit - un historique - vous pouvez revenir en arrière et voir qui a changé quoi et quand et vous pouvez revenir en arrière et récupérer le code que vous avez supprimé car il n'était plus nécessaire ou approprié lorsqu'il s'avère qu'il sera nécessaire après tout.

Troisièmement, cela vous donne un point de référence - la source définitive est le code engagé (dans le monde réel, c'est un peu plus compliqué, en particulier avec DVCS, mais pour les besoins de cette discussion, c'est assez proche). Si le référentiel est correctement sauvegardé, vous devez alors protéger les actifs de l'entreprise.

Ces trois choses devraient être "cela" pour vendre des VCS - si un gestionnaire ne peut pas voir une valeur suffisante au-dessus de son temps pour trouver un autre gestionnaire.

Une fois que vous avez vendu des VCS (qui, après tout, ne sont utiles qu'aux équipes de développement où le nombre de développeurs est supérieur à zéro), la question de savoir pourquoi le DVCS est supérieur, disons, SVN ou TFS et la question de savoir s'il faut travailler en interne ou pour utiliser un service hébergé tel que Kiln ou Bitbucket ou Github (qui fait du privé si vous payez) est plutôt plus profond et plus dépendant du contexte.


5

VCS

Expliquez simplement le concept des sauvegardes . Les sauvegardes vous permettent de voir sur quoi vous avez travaillé à un moment donné. Expliquez comment les programmeurs VCS copiaient l'intégralité de leurs projets de manière compulsive, généralement pour sauvegarder chaque bonne et stable version qu'ils avaient.Ainsi, lorsque les choses tournaient mal, ils avaient un bon point de référence sur le moment où les choses fonctionnaient, les comparer avec les dernières choses et voir où eux ou quelqu'un d'autre a foiré et résolu le problème plus facilement en regardant simplement les différences au lieu des deux sauvegardes du projet.

En résumé : les VCS vous permettent d' enregistrer des sauvegardes de votre travail et vous donnent la possibilité de voir uniquement les différences entre les sauvegardes.

DVCS

En ce qui concerne le contrôle de version distribué, expliquez comment le contrôle de version typique nécessitait un serveur et une connexion Internet et que tout le monde en avait marre parce qu'il était plus lent et que tout le monde travaillait sur une seule sauvegarde, si quelqu'un a foiré, il a gâché le projet pour tout le monde, Ainsi, avec le contrôle de version distribué, tout le monde peut travailler sur sa propre sauvegarde dans sa machine sans connexion Internet, et tout le monde est content parce que personne ne gâche sa sauvegarde pendant son travail et qu'il peut s'inquiéter de partager son travail plus tard une fois terminé.

Un autre bon point est que contrairement à un VCS centralisé où il n'y a qu'une seule sauvegarde, si la machine avec la sauvegarde prend feu, il y a encore d'autres sauvegardes complètes à contourner (au moins une pour chaque développeur).

En résumé : les DVCS vous permettent de travailler dans votre propre sauvegarde sans que tout le monde doive être entassé dans un seul serveur, et vous permettent de vous inquiéter des autres changements une fois que vous avez terminé avec vos trucs. De plus, rien ne se passe si la machine du référentiel principal prend feu .


Je pense qu'il est typique pour les développeurs de penser au pire scénario possible ... ils en ont une peur pathologique. C'est très intéressant ...
Radu Murzea

Trop audacieux !!
David Cowden

2

Je travaille principalement avec des ingénieurs (pas des développeurs en soi, mais ils écrivent du code)

Le point principal, lorsque je leur explique le contrôle de version, est la possibilité d'annuler et de gérer votre code / documentation / quoi que ce soit et de simplifier la collaboration avec d'autres développeurs / écrivains / etc ...

C'est un bon argument de vente - et c'était la principale raison pour laquelle j'utilisais un VCS pour tout mon travail, ainsi que les autres avantages: avoir un historique, un dépôt qui peut être facilement sauvegardé ...

La plupart d'entre eux aiment l'idée et la trouvent très utile, l'adoptant pour leurs projets (surtout s'ils impliquent une collaboration avec d'autres ingénieurs).


2

Lorsque vous essayez de convaincre quelqu'un de quoi que ce soit, vous devez toujours essayer d'y arriver de son point de vue.

Votre chef de projet a un objectif simple: réaliser les projets dans les délais et le budget.

Si vous n'utilisez pas actuellement le contrôle de version, votre équipe de développement résout les problèmes résolus manuellement par le contrôle de version. Tous ces problèmes ont été bien énumérés par d'autres réponses, donc je ne les aborderai pas ici.

Ce que vous devez faire est d'expliquer à votre chef de projet que l'équipe passe Xchaque semaine un nombre d'heures à résoudre manuellement les problèmes que GIT pourrait résoudre automatiquement, ou, disons, en 0.1 * Xnombre d'heures de développement.

Ne l'abordez pas en utilisant des raisons pour lesquelles GIT vous facilitera la vie ou celle de vos collègues développeurs, approchez-vous du point de vue que GIT expédiera les logiciels plus rapidement et moins cher.


1

J'aime la description de @ Buttons840 comme un bouton d'annulation pour la base de code. Il peut également être utile de le comparer à une version (moins frustrante) de Word ou à la fonctionnalité "Suivi des modifications" d'InDesign. D'après mon expérience, cela réduit définitivement la nécessité pour une personne de dire aux autres de ne pas toucher aux fichiers X, Y et Z pendant les prochaines heures, ce qui est pratique pour faire avancer les choses.

J'ai également trouvé les informations de version à grain fin incroyablement utiles pour corriger / contourner les bogues. Je stocke le numéro de version SVN (via la propriété $ Id) dans presque tous les fichiers de données que je génère. De cette façon, si (quand?) Un bogue est trouvé, il est trivial d'identifier les fichiers avec des problèmes potentiels et de les régénérer ou de demander à un autre code de compenser le bogue.


1

Si vous n'utilisez pas le contrôle de version, comment savez-vous comment reconstruire votre environnement de production?

1 Différentes personnes (testeurs, développeurs) chercheront la même information à différents endroits

conduisant à DUPLICATE DATA qui se désynchronise.
Le contrôle de version est le moyen le plus simple d'éliminer les données en double.

2 Si vous utilisez le contrôle de version, il est facile de s'assurer que l'environnement de production correspond à ce qui se trouve dans le contrôle de version.

Cela permet de détecter facilement si un problème est dû à une mauvaise construction (prod ne correspond pas au contrôle de version), ou à un bug de conception ou de codage (prod correspond au contrôle de version).

Le contrôle de version facilite l'attribution d'un numéro de version à chaque environnement de test et vous vous attendriez naturellement à ce que la production ait un numéro de version inférieur à celui du test ou du développement, et que le test ait un numéro de version inférieur à celui du développement. Si ce n'était pas le cas, une partie du code n'a pas été correctement testée.


0

De plus, si vous publiez un logiciel, la fonctionnalité suivante d'un VCS est plutôt essentielle: Supposez que votre client trouve un bogue. Le développement actuel du logiciel est probablement dans un état très différent de la version du client. Peut-être que le bogue est corrigé maintenant, peut-être pas, mais dans tous les cas, le logiciel actuel n'est pas dans un état où vous pouvez simplement l'envoyer au client.

Un VCS rend trivial de revenir à la version qui a été livrée au client, de corriger le bogue qu'il demandait, de le construire et de lui envoyer une version révisée. Tout cela sans perturber le développement actuel, sans avoir à lui livrer une version avec des fonctionnalités inachevées / instables ou des bugs supplémentaires introduits en raison du nouveau développement inachevé.

De plus, un VCS facilite le portage de ce correctif dans la nouvelle branche de développement si le bogue y est toujours présent également.

Par une discipline solide, vous pouvez probablement gérer cela sans VCS pour une très petite équipe, mais en utiliser un vous fera gagner du temps et en fin de compte de l'argent. Très probablement, cela vous aidera également à garder vos clients.


0

Si votre entreprise compte plus de deux personnes, vous disposez probablement d'un document Word ou Excel qui se trouve quelque part et qui est édité par plusieurs personnes. Et parfois, ces personnes font des copies locales, pour un voyage d'affaires, etc. Ou le document est envoyé par e-mail après chaque changement.

Si vous avez un tel fichier, alors les modifications de certaines personnes ont été perdues dans le passé ou seront perdues à l'avenir. Ou les gens pensent qu'ils ont perdu des changements, mais ne peuvent pas le prouver. Ou ils aimeraient voir qui a fait quoi changer quand et pourquoi. C'est exactement le problème qu'un VCS résout.


2
Sauf que les documents Word / Excel sont opaques pour tous les VCS que j'ai jamais vus. Soyez prudent lorsque vous utilisez cette explication!
Peter Taylor

J'aime aussi utiliser l'exemple de la chaîne de messagerie.
David Cowden

0

Lors du choix de logiciels / bibliothèques open source, avoir un référentiel DVCS est certainement un avantage dans les critères de sélection.

1) Nous pouvons cloner l'intégralité du référentiel, ne vous inquiétez pas pour le projet ou son site Web est mort.

2) Les gens sont plus disposés à soumettre un correctif de bogue via une demande d'extraction, ce qui entraîne une correction de bogue plus rapide pour les problèmes urgents.

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.