우리 팀이 소스 제어 시스템에 대한 기본 능력 이상의 것을 기대해야합니까?


48

우리 회사는 약 3 개월 전에 Subversion에서 Git으로 전환했습니다. 전환하기 전에 몇 주 전에 사전 통지를 받았습니다. 전에 Git을 사용하지 않았기 때문에 (또는 다른 DVCS) Pro Git을 읽고 약간의 시간을 내 자신의 리포지토리를 돌리고 놀아 보았으므로 전환했을 때 최소한의 고통으로 계속 일할 수있었습니다. 이제 저는 기본적으로 'Git guy'입니다.

몇 가지 예외가 있지만 대부분의 팀은 여전히 ​​Git의 작동 방식을 모릅니다. 예를 들어, 그들은 여전히 ​​브랜치를 소스 코드의 완전한 사본으로 생각하고 심지어 레포를 여러 폴더 (브랜치 당 하나)로 복제 할 수 있습니다. 그들은 일반적으로 Git을 무서운 블랙 박스로 본다.

우리의 일상 업무에서 소스 제어의 근본적인 특성을 고려할 때 (Git이 제공하는 어마 어마한 양의 힘은 말할 것도없고), 어느 정도의 숙련도를 달성하지 못한 개발자는 모두 책임이라고 생각 합니다.

팀이 Git의 내부 작동 방식과 가장 기본적인 끌어 오기 / 병합 / 푸시 작업 이외의 방법을 이해해야합니까? 아니면 아무것도 아닌 것만으로 무언가를 만들고 있습니까?


30
회사는 Git에 대한 교육을 제공 했습니까?
yannis

9
생산적이지 않은 모든 개발자는 책임입니다. 그것들이 크게 생산적이라고 가정하면, 자식을 아는 것은 중요하지 않습니다. 하루가 끝나면 다른 도구 일뿐입니다.
MrFox

9
Git 브랜치가 "기본 능력"의 일부로 어떻게 작용하는지 이해하고 싶습니다.
Shauna

16
팀원이 Git을 알아낼 수 없다면 소스 제어보다 더 큰 문제가 있습니다.
Jordan Bentley

4
@Caleb 자랑스럽지 않았습니다. 그것과는 거리가 멀다.
Joshua Smith

답변:


49

전문성은 개발자가 새롭고 익숙하지 않은 (또는 원치 않는) 팀의 표준 도구에 익숙해 지도록 자연스럽게 지시합니다.

그러나 게시물에 몇 가지 내용이 일시 중지됩니다.

전환하기 전에 몇 주 전에 사전 통지를 받았습니다.

몇 주? 소스 제어 교환은 큰 문제입니다. 그런 변화로 이어지는 몇 달 간의 통지 가 있었을 것입니다.

몇 가지 예외가 있지만 대부분의 팀은 여전히 ​​Git의 작동 방식을 모릅니다.

따라서 귀사는 당시에 아무도 이해하지 못한 소스 제어 시스템으로 전환 했습니까?

다른 상황이 없다면 전체 움직임이 잘못 생각 된 것 같습니다 (선택이 아닌 움직임-나는 거대한 자식 팬입니다).


3
당연하다. 그들은 거의 아무도 이해하지 못하는 시스템으로 전환했습니다. 전환하기 전에 훈련을 제공하는 것이 현명했을 것입니다. 그러나 일주일도 채 걸리지 않는 Git을 사용하는 것이 편했습니다. 과장된 같지 않기 때문에 다른 사람들도 연습을 기대하는 것이 적절한 지 궁금합니다.
Joshua Smith

3
누구나 당신이 가지고있는 워크 플로우를 파악하고 새로운 VCS가 제공해야하는 프리미티브에 매핑하는 것을 귀찮게 했습니까? 익숙한 명령을 사용하여 쉽게 발을 쏠 수 있으며 실제로 이와 같은 것을 조정하는 사람이 필요합니다. 이 변화에 대한 녀석은 어디에 있습니까?
Lars Viklund 17시 38 분

19
@JoshuaSmith 표준 또는 개발 도구를 변경할 때는 항상 "No Child Left Behind"스타일 전환을 수행해야합니다. 팀은 가장 느린 멤버만큼 빠르게 이동할 수 있으므로 전환이 발생하기 전에 가능한 한 가장 낮은 수준으로 명확하고 바보 같은 것을 확인하십시오. 물론 많은 사람들이 원하는만큼 책임을 표시 할 수 있지만 "부채"를 없애는 것은 어렵고 지저분한 일입니다. 특히 소스 제어 도구만큼 사소한 일에 대해서는 어렵습니다.
maple_shaft

3
"새 버전 제어 시스템을 출시했습니다"라는 말처럼 "GIT를 버렸습니다"– GIT는 소스 제어를 수행하는 프로그램입니다. 소스 제어 시스템이 아닙니다. 사용자 매뉴얼, 교육, 유지 보수 일정, 수명주기 관리 등이 필요합니다. 백업이 준비되어 있다고 알려주십시오.
mattnz

7
git의 작동 방식을 배우는 것은 매우 간단합니다. 그것을 사용하는 방법을 배우는 데 확실히 한 달이 걸리지 않습니다. 제 생각에는 간단한 "자, 우리는 몇 주 안에 git을 사용할 것입니다. 사용 방법을 배우려면 몇 시간이 걸리고, 온라인에는 많은 리소스가 있습니다."라고 말하면 충분했을 것입니다.
Moox

34

우리는 내가 일하는 곳에서 Git을 소개했으며 자연스럽게 저항이있었습니다. 새로운 프로젝트를위한 것이기 때문에 이제 두 개의 저장소를 유지 관리하고 있습니다.

문제의 일부는 사람들이 다른 SCM으로 전환했을 때 다른 SCM으로 전환 할 경우 이점이 없다는 것입니다. 프로젝트에서 유스 케이스 보여주고 Git이 더 쉬워 진 방법을 보여주기 위해 몇 시간 동안 1 시간 동안 팀과 함께 앉았을 때 도움이되었습니다 . 예를 들어, 우리에게 도움이 된 것들 :

  • 실험을 장려하는 현지 지점
  • 버그를 쉽게 추적 할 수있는 Git bisect
  • 다른 사람을 방해하지 않고 자주 커밋
  • 지점 간 빠른 전환

이러한 것들 각각은 우리가 이전 SCM에서 겪었던 문제를 해결했으며 사람들은 Git에 대해 더 감사 할 수있었습니다.

또 다른 것은 사람들이 그 책을 읽고 책을 읽을 것을 기대할 수 없다는 것입니다. 어쩌면 그들은 일을 끝내고, 다른 책임을 지거나, 여러 가지 이유가 필요할 수 있습니다.

따라서 'Git 전문가'로서 사람들이 사용하기 쉬운 자세로 앉아 있어야합니다. 그들은 SCM 시스템을 망설이지 않고 코드를 작성하려고합니다.

Git의 CLI는 비밀스럽고 사소한 문제이며 (당신과 나에게) 사람들이 일하는 것을 막을 것입니다. 다음은 Google 팀에서 발생한 일입니다 (이는 상당히 유능한 개발자입니다).

  • Windows에서 SSH를 사용하는 Git은 일반적인 문제였습니다.
  • 사람들은 끌어 당기지 만 병합하지는 않습니다. 따라서 그래프는 매우 혼란스러운 혼란이 될 것입니다.
  • Windows의 성능 문제로 인해 "git status"가 15 초가 걸렸습니다.
  • 새 가지를 당기는 방법을 알 수 없습니다. 그들은 "git checkout -b"를 수행하여 작업하고 있던 것에서 분기됩니다.
  • 일식의 EGit에는 압도적 인 메뉴가있었습니다. 처음에는 모든 사람에게 명령 줄을 사용하도록 지시했습니다.
  • 이전 항목을 기반으로 git mergetool 병합 및 설정
  • "git add"와 "git commit"과 "git push"의 차이점에 대해 혼란스러워합니다.

우리는 여전히 약간의 저항을 얻지 만 사람들은 분명히 이점을 볼 수 있습니다. 몇몇 Git 사람들이지도를 받고 기꺼이 도와주는 것이 중요합니다. 또한 reset / rebase /-amend / etc와 같은 멋진 것을 가르치는 것을 피할 것입니다. 대부분의 사람들은 Git을 SVN처럼 사용할 것이기 때문에 원하는 경우 발견하도록하는 것이 좋습니다.


7
@JoshuaSmith 당신은 사람들에 대한 기대가 높은 것 같습니다. 동료들에게 종종 실망감을 느끼십니까?
maple_shaft

4
@maple_shaft이 팀의 동료들에게 거의 실망하지 않았습니다 (마지막 직업은 다른 이야기였습니다). 일반적으로 이곳의 사람들은 전문적이고 함께 일하는 즐거움입니다. 그리고 그렇습니다, 나는 내 자신과 주변 사람들에 대한 기대가 높습니다. 나는 그것에 대해 바보가 아닙니다. 이것은 순진한 것이지만, 우리 모두 서로의 우수성을 요구한다면 필연적으로 개선 될 것이라고 생각합니다.
Joshua Smith

9
@JoshuaSmith, 사람들이 책을 읽을 시간을 정기적으로 가질 것으로 예상한다면, 추측 할 위험이 있습니다 : 당신은 아이들이 없습니다.
Kyralessa

13
@JoshuaSmith 사람들이 그 책을 읽은 것에 대한 대가를 받습니까? 상사가 나에게 "우리는 기술을 바꾸고있다. 다음 달까지 여가 시간에 그 기술을 배웠을 것"이라고 말하면 꽤 화가났다.
Matsemann

13
@JoshuaSmith, 그렇습니다. 직원이 자신의 시간에하는 일은 추가가 아니라 필수입니다. 따라서 스위칭을 구입하면 도구를 사용하기에 충분한 정보를 제공하거나 작업 중에 스스로 학습 할 수있는 충분한 시간을 제공해야합니다 (일반적으로 점심 시간 훈련 세션 일지라도 훈련 형태로 제공됨). 이제 직원이 프리랜서 인 경우 직원이 훈련을 받았지만 계약 기간이 아닌 경우가 있습니다. 직원들은 훈련과 같은 특정 혜택을 기대하며 이와 같이 업무 변경을함으로써 스트레스를받지 않습니다.
gbjbaanb

13

능숙한 대 Git-mania

기본 능력과 같은 용어는 사람들마다 다른 것을 의미 할 수 있습니다. 많은 사람들이 git-mania를 가지고있는 것 같습니다 (아무것도 잘못된 것이 아닙니다). 우리 중 많은 사람들이 우리 자신과 다른 사람들의 소스 제어에 의한 엉뚱함으로 인해 심하게 화상을 입었습니다.

왜 중요한가 (너무 많은가)

잘못 사용하면 한 사람이 아니라 전체 팀이 느려질 수 있기 때문에 소스 제어 도구가 중요합니다. Git을 잘못 사용하는 것은 SVN, CVS 및 기타 시스템을 잘못 사용하는 것보다 덜 문제가됩니다. 역사적으로 파일을 잠그는 시스템을 부적절하게 사용하는 것은 특히 문제가되었으며 회사는 별도의 빌드 팀을 고용하여 누군가 문제가 발생했을 때 저장소에 상처를 치료할 수있는 소스 제어 외에는 아무 것도없는 유창한 전문가가있었습니다. 이것은 부분적으로 git 뒤에있는 열정 중 일부를 설명합니다.

기본 능력은 어떻게 생겼습니까?

구체적인 기준은 다음과 같습니다.

  • 설명서를 참조하지 않고 :

    • 파일을 추가하고 변경 사항을 커밋하고 업데이트를 푸시 앤 풀할 수 있습니다.
    • 상태 및 개정 활동을 볼 수 있습니다.
    • 오류없이 신속하게 분기하고 병합 할 수 있습니다.
    • 체크 아웃을 적절하게 사용할 수 있습니다.
    • 그룹의 의견 기준에 맞는 커밋 의견을 작성하십시오.
    • 작업 사본과 아카이브 사이의 차이점이 다릅니다.
  • 설명서와 함께 :

    • 로컬 리포지토리에 대한 사용자 및 자격 증명을 추가하십시오.
    • 지역 저장소를 초기화하십시오.
    • 원격 저장소를 관리하십시오.
    • 무시 된 파일을 구성하고 PKI 공개 / 개인 키 쌍을 생성하십시오.
    • 파일을 이동하고 삭제하십시오.
    • bisect를 사용하여 특정 버그가 발생한 변경 사항을 찾으십시오.

실수를 피하기 위해서는 git과 관리중인 코드의 확실한 정신 모델이 중요합니다.

고급 숙련도 / 전문 지식을 위해 무엇을 추가 하시겠습니까?

유창한 사용은 개발자 및 다른 팀원에게 필수적입니다. Git과 같은 도구는 오버 헤드가 발생하며 거의 자동화 될 수있는 수준으로 배워야합니다. 연간 수천 번 반복되는 git 명령을 사용하여 생성되는 시간과 방해 요소를 최소화하는 것이 중요합니다.

항상 고급 사용자가되고 거의 모든 옵션과 함께 거의 모든 명령을 사용하는 일부 팀원이 있습니다. 저의 추천은 팀원들이 학습에 대한 ROI가 프로젝트에서 다른 일을하는 것의 가치 아래로 떨어질 때까지 학습 깃 (및 기타 도구)을 유지하는 것이 좋습니다. 스프린트.


11

GIT는 업무를 수행하는 유일한 도구이며, 가장 큰 문제 중 하나는 많은 GIT 전도사들이 모든 GIT 사용자가 모든 GIT 사용자가 작동 방식의 가장 좋은 점을 이해하기 위해 보닛 전문가가되기를 기대한다는 것입니다. 이것이 GIT의 가장 큰 약점입니다.이를 사용하려면 작동 방식을 알아야합니다. GIT에는 레시피가 없으므로 GIT 전문가이거나 사용하지 않아야합니다. 모든 개발자가 GIT 전문가가되기를 원하는 것은 아니기 때문에 조직에 투자를 극대화하기 위해 "goto"GIT 전문가 (또는 둘)가 필요한 Pro-GIT를 읽는 것이 좋습니다.

팀은 GIT 사용 방법을 알아야합니다 (실제로 워크 플로에서 사용해야하는 GIT 부분 만 사용하는 방법 만 알아야 함). GIT 작동 방식은 아닙니다. 모든 개발자가 사용하는 모든 도구에 대한 모든 세부 사항을 알고 있어야하는 것은 해 롭습니다. 워크 플로우를 지원하는 레시피 북을 가지고 있지 않은 경우 GIT를 배포하지 않은 경우 개발자에게 덤프 한 것입니다.

git이 나를 위해 일하는 방법을 알고있는 한 원숭이에게 GIT 작동 방식을 알려주지 않습니다.


1
그리고 사용자 정의 교육이 필요합니다 ... 그리고 Linus는 아무도 git의 모든 기술을 수용하기를 기대하지 않으므로 도자기와 배관의 두 가지 명령이 있습니다.
ZJR

1
Brand X에서 사용한 워크 플로에서 Git의 워크 플로로 마이그레이션하기 만하면 git에 대한 많은 레시피가 있습니다.
Jherico

10

예.

"회사"가 결정한 도구에 관계없이 개발 팀은 도구를 올바르게 사용하는 방법을 배우는 데 시간을 할애해야합니다. 도구를 두려워하거나 무지한 많은 개발자가 생산성을 저하시키는 것은 없습니다. 그들이 잘못 사용하거나 반대하면, 문제가 발생하고 사람으로 갈 때, 당신은 엉망을 청소해야 할 임무를 갖게됩니다.

힘내는 많은 사람들에게 힘든 전환이므로, 필수 앉기 훈련 세션이 순서에있을 수 있습니다. 이것은 사람들이 겪고있는 많은 문제들을 해결하는 데 도움이 될 것입니다.


3
"공구를 두려워하거나 무지한 많은 개발자들이 생산성을 해치는 것은 없습니다." 아마도 팀이 훈련을받지 않았고 이해하지 못하는 도구를 사용하여 회사를 운영하는 것은 미치 겠죠.
Jaydee

회사, 특히 큰 회사는 때때로 기술을 추진해야합니다. Tt는 또한 조직 내에서 초기 추진을 이미 수행했으며 도구를 완전히 사용하는 한 팀일 수 있습니다.
Bill Leeper

3

나는 Git을 개인적인 환경에서만 사용하고 전문가적인 환경에서는 사용하지 않았으며, 그것이 가지고있는 힘과보다 분산 된 소스 제어라는 아이디어를 좋아하지만 중요한 문제가 있습니다. Git에는 추상화가 누출되어 간단한 작업을 수행하기 위해 여러 명령이 필요합니다 (예 : git add, git commit 및 git push). 또한 설명서 중 일부가 rebase 명령 설명 ... "업데이트 된 업스트림 헤드에 대한 포워드 포트 로컬 커밋"과 같이 부족하거나 혼동됩니다. 나는 그것이 무엇을 의미하는지 전혀 알지 못하지만 지금은 커밋을 움직여서 역사를 다시 쓸 수 있다는 것을 알고 있지만 (또 다른 성가심 ... 왜 그렇게해야합니까 ???) 나는 그 명령에서 결코 추측하지 못했을 것입니다 기술. 나는 당신 팀의 일부에 대한 독서와 당신이 제공하는 더 많은 훈련이 순서라고 생각합니다.


2

교육 및 이해는 최소한의 요구 사항입니다. 담당자가 팀의 사용 방법에 대한 계획이 있는지 확인해야합니다. 지침 없이는 새로운 프로그래밍 언어를 채택하지 않을 것입니다. 도로 규칙이 정립되면 운전자 교육이 훨씬 더 효과적입니다.


1

아니; 다음을 기대하는 것이 합리적이라고 생각합니다.

  1. 손을 잡지 않고 일상적인 작업 (커밋, 푸시, 풀, 브랜치, 병합, 이등분)을 수행하십시오.
  2. 반복적 인 지시없이 비정기적인 작업을 수행하십시오. (몇 번 반복해도 괜찮습니다. 이름이 달라지기 전에 2-3 번 누군가를 만나야합니다.)

그들이 # 1을 할 수 없다면, 롤아웃의 훈련 부분이 부족했을 것입니다. 그들이 # 2를 할 수 없다면, 먼저 너무 화 나기 전에 충분히 명확하게 설명하고 있는지 확인하십시오.


이것은 실제로 질문에 대한 답변이 아닙니다. 문제는 그가 어떻게 숙련도를 향상시키지 않느냐에 따라 다른 수준에서 어떤 수준의 숙련도를 기대해야 하는가였습니다. @MyName으로 댓글을 달고 답변을 주제로 수정했다는 알림을 받으면 downvote를 제거하겠습니다.
Jimmy Hoffa

@JimmyHoffa 내 대답을 오해하는 것 같아요. 일상 / 일상 업무에 능숙해야하며 다른 업무를 합리적으로 빨리 선택해야합니다. 나는 두 가지 가능한 원인 을 찾아 냈지만, 어떤 치료 조치를 처방하지 말라고 노력했다. 당신은 선 사이를 읽고 그것이 당신이 보는 것이라면 외삽하고 있습니다.
pgs

아니오, 문제는 "우리 팀이 기본 능력 이상을 가질 것으로 기대해야합니까?"이고 "예, 여기에 이유가 있습니다"라고 말하지 않았으며 "아니요, 여기에 이유가 있습니다"라고 말하지 않았습니다. 질문과 함께 질문에 답변했습니다. 귀하의 답변이 사려 깊고 내용이 유용하다는 점에 감사드립니다. 그래도 예 또는 아니오로 질문에 대답하고 예 또는 아니오라고 생각하는 이유를 뒷받침해야합니다. 그러면 현재 답변 아래에 자유롭게 남겨 두십시오. . 말이 되나요?
지미 호파

@JimmyHoffa 나의 대답 "아니오, 여기 당신이 기대해야 할 최소한의 것이 있습니다"; 나는 단지 그 정확한 말로 말하지 않았습니다.
pgs

오, 나는 당신이 "예"라고 암시한다고 생각하고, 그 서문을 넣고 질문을 다루고 있습니다. 그렇지 않으면 그것은 이해가되지 않습니다
Jimmy Hoffa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.