Чи слід очікувати, що моя команда матиме більш ніж базове знання з нашою системою управління джерелами?


48

Моя компанія перейшла з Subversion на Git близько трьох місяців тому. Перед перемиканням ми мали попередні попередні повідомлення. Оскільки я ніколи раніше не використовував Git (або будь-який інший DVCS), я читав Pro Git і витратив трохи часу на те, щоб розкручувати власні сховища та грати, щоб, коли ми переключились, я міг би продовжувати працювати з мінімальними болями. Тепер я за замовчуванням я 'Git guy'.

За кількома винятками, більшість моєї команди досі не має уявлення про те, як працює Git. Наприклад, вони як і раніше вважають гілки повноцінними копіями вихідного коду і навіть заходять так далеко, щоб клонувати репо в декілька папок (по одній на гілку). Вони, як правило, дивляться на Гіта як на страшну чорну скриньку.

Враховуючи фундаментальний характер контролю над джерелами в нашій щоденній роботі (не кажучи вже про смішну кількість енергії, яку нам надає Git), я вважаю, що будь-який розробник, який не досягає певного рівня володіння нею, є відповідальністю .

Чи варто сподіватися, що моя команда матиме хоч деяке розуміння того, як Git працює внутрішньо, і як ним користуватися поза основними операціями тяги / злиття / натискання? Або я просто щось роблю з нічого?


30
Чи пропонувала компанія якесь навчання з Git?
янніс

9
Будь-який розробник, який не є продуктивним, є відповідальністю. Якщо припустити, що вони продуктивні в цілому, знаючи чи не знаючи git, це неістотно. Зрештою, це просто ще один інструмент.
MrFox

9
Я б назвав розумінням того, як гілки Git працюють з ним частиною "базового знання" ...
Shauna

16
Якщо ваші товариші по команді не можуть зрозуміти Git, у вас є більші проблеми, ніж контроль над джерелами.
Джордан Бентлі

4
@Caleb Це не було похвалою. Далеко від цього.
Джошуа Сміт

Відповіді:


49

Професіоналізм, природно, диктує, що розробник ознайомлюється зі стандартними інструментами своєї команди, навіть якщо вони нові та незнайомі (або навіть небажані).

Однак кілька речей у твоєму посту дають мені паузу.

Перед перемиканням ми мали попередні попередні повідомлення.

Тижні? Заміна контролю джерела - велика справа. Повинні були бути місяці попередження, що призводять до подібних змін.

За кількома винятками, більшість моєї команди досі не має уявлення про те, як працює Git.

Отже, ваша компанія перейшла на систему управління джерелами, яку мало хто, якщо хто, зрозумів у той час?

Якщо немає іншого контексту, здається, що весь хід був продуманий (хода, а не вибір - я величезний фанат git).


3
Здійснено. Вони зробили перехід на систему, яку майже ніхто не розумів. Було б розумно запропонувати навчання до переходу. Однак мені було комфортно користуватися Git з меншою тижневою практикою. Я не відчуваю, що перемагаю, тому мені цікаво, чи доречно очікувати, що й інші будуть практикувати.
Джошуа Сміт

3
Хтось турбувався розібратися у ваших робочих процесах і відобразити їх на примітивах, які може запропонувати новий VCS? Стріляти в ногу досить просто командами, які звучать як ті, до яких ти звик, і тобі дійсно потрібен хтось оркеструвати щось подібне. Де відповідальна особа за цю зміну?
Ларс Віклунд

19
@JoshuaSmith Під час зміни стандартів чи інструментів розробки завжди слід працювати над переходом стилю "Без дитини, що залишився позаду". Команда може рухатись так само швидко, як і її найповільніший член, тому переконайтеся, що все стає зрозумілим і скидається на найнижчий можливий рівень до того, як відбудеться перехід. Впевнені, що ви можете покласти на стільки людей відповідальність, як хотіли б, але позбутися "зобов'язань" - це складно і безладно, особливо це стосується чогось такого неприємного, як інструмент управління джерелами.
maple_shaft

3
Схоже, що ви "Звалив GIT на них", скоріше "Розгорнув нову систему контролю версій" - GIT - це програма, яка виконує управління джерелами. Це не система управління джерелами - для цього знадобляться посібники користувача, навчання, графіки обслуговування, управління життєвим циклом тощо. Будь ласка, скажіть мені, що у вас є резервні копії
mattnz

7
Дізнатися, як працює git - досить тривіально. Однозначно не потрібно місяць, щоб навчитися ним користуватися. На мою думку, простого "Хлопці, ми будемо використовувати git через кілька тижнів. Виділіть кілька годин, щоб навчитися ним користуватися, в Інтернеті є купа ресурсів.", Було б більш ніж достатньо.
Мукс

34

Ми впроваджували Git там, де я працюю, і, природно, був опір. Це було для нового проекту, тому ми зараз підтримуємо два сховища.

Частина проблеми полягає в тому, що люди не побачать переваг переходу на інший SCM, коли той, який вони використовували, працює для них. Це допомогло, коли ми сіли з нашою командою на кількагодинних сеансах, де ми просто показували б використання випадків наших проектів і як Git полегшив це. Наприклад, речі, які нам допомогли:

  • Місцеві відділення для заохочення експерименту
  • Git bisect, щоб легко відслідковувати помилки
  • часті вчинення, не перебиваючи інших
  • Швидке перемикання між гілками

та ін. Кожен із них вирішив проблему, з якою ми стикалися з нашою попередньою SCM, і тому люди могли більше цінувати Git.

Інша справа, що ви не можете очікувати, що люди зійдуть і читатимуть книги про це, тому що дуже небагато будуть. Можливо, їм потрібно домогтися роботи, мати інші обов'язки чи будь-яку низку причин.

Отже, як "експерт з Git", ви повинні сісти і зробити його максимально простим для використання. Вони хочуть писати код, а не возитися зі своєю системою SCM.

CLI у Git - це криптовалюта і тривіальні проблеми (для вас і я) будуть заважати людям працювати. Ось що сталося з нашою командою (пам’ятайте, це досить грамотні розробники):

  • Git із SSH у Windows був поширеною проблемою.
  • Люди би тягнули, зливались, але не штовхали злиття. Тож графік був би величезним заплутаним безладом
  • Проблема продуктивності в Windows змушує "статус git" тривати 15 секунд
  • Не вдалося зрозуміти, як вивести нову гілку. Вони б робили "git checkout -b", який відганяв би все, над чим вони працювали
  • EGit в затемненні мав надзвичайне меню. На завершення говорив усім спочатку використовувати командний рядок
  • Виходячи з попереднього пункту, об’єднання та налаштування git mergetool
  • Плутати в розбіжності між "git add" та "git commit" та "git push".

Ми все ще отримуємо певний опір, але люди точно можуть побачити переваги. Життєво важливо мати декількох людей з Git для керівництва та бути готовими допомогти. Також я б уникав викладати цікаві речі, такі як скидання / перезавантаження / - зміни / тощо. оскільки більшість людей використовуватиме Git як SVN, краще дозволити їм відкрити його, якщо вони цього хочуть.


7
@JoshuaSmith Ви, схоже, маєте великі очікування людей. Чи часто ви відчуваєте розчарування у своїх ровесників?
maple_shaft

4
@maple_shaft Я рідко розчаровуюся у своїх колегах у цій команді (моєю останньою роботою була інша історія). Зазвичай люди тут професійні і із задоволенням працювати. І так, у мене великі сподівання як на себе, так і на оточуючих мене. Я не подумав про це, хоча. Це, мабуть, наївно, але я відчуваю, що якщо ми всі вимагатимемо досконалості одне від одного, ми неминуче покращуватимемось.
Джошуа Сміт

9
@JoshuaSmith, якщо ви очікуєте, що люди регулярно матимуть час для читання книг, я загрожую здогадом: у вас немає дітей, чи не так?
Kyralessa

13
@JoshuaSmith люди отримують зарплату за читання цих книг? Якби мій бос сказав мені: "Ми перемикаємо технологію, я очікую, що ти дізнався її у вільний час до наступного місяця", я був би дуже злий.
Мацеманн

13
@JoshuaSmith, так, я б сказав так - все, що працівник робить самостійно, є зайвим, не обов'язковим. Тому купуйте комутацію, ви повинні надати їм достатньо інформації, щоб використовувати інструмент, або достатньо часу під час роботи, щоб вони самі їх засвоїли (як правило, це передбачено у формі тренувань, навіть якщо це лише обіднє тренування). Тепер, якщо працівники були фрілансерами, є випадок, коли вони пройшли навчання, але не під час їх контракту. Співробітники очікують певних переваг - наприклад, навчання, а не підкреслюють себе, якщо на них буде змінена робота.
gbjbaanb

13

Професійні проти Git-манії

Термін, як базовий рівень знання, може означати різні речі для різних людей. У багатьох людей, здається, є гіт-манія (не те, що в цьому нічого поганого). Багатьох із нас насправді погано спалили власні та чужі недбалість з контролем джерел.

Чому це важливо (так багато)

Інструменти контролю над джерелами є критичними, оскільки неправильне використання може сповільнити не одну людину, а цілу команду. Неправильне використання Git має бути менш проблематичним, ніж використання SVN, CVS та інших систем. Історично склалося, що невміле використання систем із блокуванням файлів було особливо проблематичним, і компанії найняли дискретні команди для складання, щоб коли хтось потрапив у біду, був вільний експерт, який майже нічого не робив, крім контролю джерел, який міг приїхати вилікувати рану до сховища. Це частково пояснює частину пристрасті, яку ви виявляєте за git.

Як виглядає базове знання?

Деякі конкретні критерії включають:

  • Без посилання на документацію:

    • Можна додавати файли, вносити зміни, натискати та тягнути оновлення.
    • Можна переглядати стан та активність перегляду.
    • Може розгалужуватися та об’єднуватися швидко та без введення помилок.
    • Може користуватися замовленням належним чином.
    • Створіть коментарі, які відповідають коментарям групи.
    • Різні зміни між робочою копією та архівом.
  • З документацією:

    • Додайте користувачів та облікові дані для місцевого репо.
    • init місцевий репо.
    • Адміністрація віддаленого репо.
    • Налаштуйте ігноровані файли, генеруйте пара PKI публічних / приватних ключів.
    • Переміщення та видалення файлів.
    • Використовуйте бісект, щоб знайти зміни, які внесли певну помилку.

Суттєва ментальна модель git та керований код є критично важливим для уникнення помилок.

Що ви додали для підвищення кваліфікації / досвіду?

Вільне використання має важливе значення для розробників та, можливо, інших членів вашої команди. Такі інструменти, як Git, є надмірними та їх слід вивчити до рівня, коли вони можуть бути майже автоматичними. Мінімізація часу та відволікання, що створюються за допомогою команд git, які повторюються тисячі разів на рік, мають велике значення.

Завжди знайдуться члени вашої команди, які стануть енергокористувачами і використовуватимуть майже кожну команду майже з усіма параметрами. Моя рекомендація полягає в тому, щоб членів команди рекомендували продовжувати навчатись (та інші інструменти), поки рентабельність для навчання не опуститься нижче вартості робити щось інше в проекті, головне обмеження - тримати в курсі присвоєння спалених предметів із поточного спринт.


11

GIT - це справедливий інструмент для виконання роботи, і одна з його найбільших проблем полягає в тому, що багато євангелістів GIT очікують, що всі користувачі GIT стануть під експертами капелюшка, розуміючи найкращі моменти роботи. Це найбільша слабкість GIT - щоб користуватися ним, потрібно знати, як він працює. Рецептів з GIT немає, очікується, ви будете експертом з GIT або не будете використовувати його. Чудово, що ви читаєте Pro-GIT, що ваша організація потребує "goto" гуру GIT (або двох), щоб максимізувати інвестиції в неї, адже не кожен розробник хоче стати GIT Guru - і це нормально.

Команда повинна знати, як використовувати GIT (насправді вони повинні знати лише, як використовувати ті частини GIT, які робочий процес вимагає від них використання), а не як GIT працює. Згубно розраховувати, що кожен розробник буде знати кожну деталь про кожен інструмент, який він використовує. Якщо у вас немає книги рецептів, яка підтримує ваш робочий процес, ви не розгорнули GIT, ви завантажили його на розробників.

Я не даю мавпам, як працює GIT, доки я знаю, як змусити Git працювати для мене.


1
І в цьому полягає потреба у спеціальній підготовці ... і знову ж таки жоден Лінус не очікує, що хтось може охопити всі технічні характеристики git, тому існують два класи команд: фарфор та сантехніка.
ZJR

1
Існує маса рецептів для git, якщо все, що ви хочете зробити, - це перейти з робочого процесу, який ви використовували в Brand X, на робочий процес у Git.
Jherico

10

Так.

Незалежно від того, про який інструмент вирішила «компанія», ваша команда розробників повинна витратити певний час на вивчення правильного використання інструменту. Ніщо не шкодить продуктивності більше, ніж купу розробників, які бояться чи не знають інструменту. Якщо вони неправильно використовують або працюють проти цього, виникнуть проблеми, і, як піти до хлопця, перед вами постане завдання прибирати безлад.

Git - важкий перехід для багатьох, тому обов'язкове тренування присідання може бути в порядку. Це має допомогти вирішити багато проблем, які виникають у людей.


3
"Ніщо не шкодить продуктивності більше, ніж купу розробників, які бояться чи не знають про інструмент." Тому, мабуть, компанії було б божевільно жити з інструментом, до якого команда не пройшла навчання та не розуміє.
Jaydee

Компаніям, особливо великим, іноді доводиться підштовхувати технології. Tt також може бути однією командою в організації, яка вже здійснила початковий поштовх і повністю використовує інструмент.
Білл Лепер

3

Я використовував Git лише в особистому середовищі, а не в професійному, і хоча мені подобається потужність, яку він має, і ідея більш децентралізованого управління джерелами, у нього виникають великі проблеми. У Git є протікаюча абстракція, і вона потребує декількох команд для виконання простих речей (наприклад, для внесення змін: git add, git počin, а потім git push). Також дещо з документації бракує та / або плутає, як, наприклад, з описом команди rebase ... "Локальний перехідний порт посилається на оновлену головку вище". Я не маю поняття, що це означає, і хоча я тепер знаю, що ти можеш переміщувати коміти і переписувати історію за допомогою неї (черговий роздратування ... чому ти повинен дозволити це робити ???) Я б ніколи не здогадувався про це з цієї команди опис. Я думаю, що читання з боку вашої команди, а ще кілька тренувань, які ви надаєте, є в порядку.


2

Навчання та розуміння - це мінімальні вимоги. Хтось із відповідальних повинен був переконатися, що існує план, яким чином ваша команда буде ним користуватися. Ви не приймаєте нову мову програмування без настанов. Навчання водіїв набагато ефективніше, коли встановлені встановлені правила дорожнього руху.


1

Немає; Я думаю, що розумно очікувати наступного:

  1. Виконайте повсякденні завдання (виконайте, штовхайте, тягніть, розгалужуйте, зливайте, розбиваєте тощо) без тримання рук.
  2. Виконуйте позапланові завдання без повторних інструкцій. (Кілька повторень нормально - я маю зустріти когось 2-3 рази, перш ніж їх ім’я дійсно прилипне.)

Якщо вони не можуть зробити №1, то, можливо, навчальної частини вашого розіграшу було недостатньо. Якщо вони не можуть зробити №2, то спочатку переконайтесь, що ви пояснюєте досить чітко, перш ніж занадто засмучуватися.


Це насправді не відповідь на питання; питання полягало в тому, якого рівня знань слід очікувати від інших, а не як він покращує їх знання. Я зніму зауваження, коли ви повідомите мене в коментарі з @MyName, що ви виправили свою відповідь на тему.
Джиммі Хоффа

@JimmyHoffa Я думаю, ти неправильно розумієш мою відповідь. Їм потрібно добре володіти своїми повсякденними / рутинними завданнями та досить швидко підбирати інші завдання. Я визначив пару можливих причин , але намагався уникати призначення будь-яких виправних дій. Ви читаєте між рядків і екстраполюєте, якщо це те, що ви бачите.
pgs

Ні, питання "Чи слід очікувати, що моя команда матиме більше, ніж базове знання ...", і ви не сказали "Так, ось чому", і не сказали "Ні, ось чому". Ви відповіли на запитання запитанням. Я вдячний, що ваша відповідь продумана і вміст корисний, але ви все одно повинні відповісти на питання так чи ні і спробувати створити резервну копію, чому ви вважаєте "так" чи "ні". Тоді не соромтесь залишати нижче своєї відповіді поточний вміст . Мати сенс?
Джиммі Хоффа

@JimmyHoffa Моя відповідь - «Ні, ось мінімум, на який ви повинні розумно розраховувати»; Я просто не сказав це тими словами.
pgs

О, я думав, ви натякаєте на "так", вкладіть цю передмову і вирішуючи це питання, інакше це просто не має сенсу хе
Джиммі Хоффа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.