우리 팀은 현재 몇 번의 릴리스에 대해 "민첩한"상태를 유지하려고 노력했지만 대기업의 일원이되어서 쉽지 않았습니다. 나는 대답이있는 것처럼 가장하지는 않지만, 관찰 한 내용을 공유 할 수 있습니다.
모듈 당 개발자 나누기 :
- 사람들이 고립되어 너무 많이 일하면 팀이 기술과 지식을 공유하는 데 도움이되지 않기 때문에주의해야합니다
- 사람들이 자신의 모듈에 너무 집중하고 더 큰 그림을 보지 않으면 계획 회의 및 일일 스탠드 업은 모두에게 둔감 할 수 있습니다. 사람들이 지루해지면, 그들은 체크 아웃을 시작하고 민첩성이 테이블에 가져다주는 많은 혜택을 잃습니다.
- 실제로 잘 작성된 일부 구성 요소와 다른 구성 요소로 끝날 수 있습니다. 사람들이 고립 된 상태에서 일하면 선배들은 후배를 훈련시킬 수 없습니다.
모두가 같은 모듈에서 동시에 작업
- 우리는 경영진이 팀 전체에 민첩성을 부여하기로 결정했을 때 한 번의 릴리스를 시도했으며 완전히 길을 갈 것입니다. 절대 열차 사고로. 우리는 일년에 9 명의 개발자로 구성된 팀이 일반적으로 1 명의 개발자가 수행 한 작업을 수행했습니다. (나는 여기서 과장하고 있지만 많지는 않을 것이다).
- 아무도 호흡 실이 있다고 생각하지 않았습니다. 소프트웨어에 신경 쓰지 않은 사람들은 더 큰 팩의 일부이기 때문에 집에서 바로 느끼고 그룹에 희석되었습니다. 소프트웨어에 대한 열정이있는 사람들은 9 명이 동의 한 범위를 벗어나거나 이동할 수있는 자유가 없기 때문에 절대적으로 어려움에 처했습니다.
- 모든 회의는 저를 쏘고 싶어하는 시점까지 영원히갔습니다. 같은 방에서 의견을 가진 사람들이 너무 많아서 같은 괴물 DLL을 사용해야했습니다. 공포.
- 마지막 릴리스에서 우리는 다른 것을 시도하기로 결정했습니다
- 무엇보다도 개발 그룹을 3-4 명의 개발자로 구성된 소규모 팀으로 나눕니다. 각 팀은 서로 상대적으로 격리 된 상태로 일했지만 팀 내에서는 훨씬 더 단호하게 일했습니다.
- 이 접근 방식을 사용하면 스탠드 업이 빠르며 계획 회의는 견고한 4 시간에 비해 1-2 시간이 걸립니다.
- 각 팀은 해당 팀의 개발자가 관심을 갖는 것에 대해서만 논의하기 때문에 모든 사람들이 참여하고 있다고 느낍니다.
- 각 팀의 기술 책임자는 정기적으로 다른 기술 책임자와 대화하여 전체 프로젝트가 제대로 진행되고 있는지 확인합니다.
- 사람들을 특정 모듈의 "소유자"로 만드는 대신, 우리는 사람들에게 전문 지식 영역을 할당했습니다. 따라서 프로젝트를 처음 시작할 때 사람들이 자신의 모듈을 가지고있는 것처럼 느꼈지만 몇 개월 후에 개발자들은 서로 코드를 살펴보기 시작했습니다. 영역이 겹치기 시작했습니다.
- 코드 검토는 필수적입니다. 이것은 우리가 엄격한 코드 검토 정책을 가지고 있고 팀의 모든 사람들이 그들을 좋아하는 두 번째 릴리스였습니다. 특정 영역의 전문가는 다른 사람이 해당 코드를 수정할 때 항상 코드를 검토합니다.
- 코드 검토를 통해 많은 지식 공유가 가능하며 팀의 코드 품질이 전반적으로 향상되었음을 확인할 수 있습니다. 또한 코드가 너무 자주 검토되기 때문에 사람들이 다른 사람의 전문 분야에 들어갈 때 이미 코드를 이미 몇 번 보았을 가능성이 있습니다.
- 각 팀의 많은 부분이 디자인 검토 회의에 빠지므로 코드를 본 적이 없어도 모든 사람은 팀이 담당하는 모든 모듈의 일반적인 흐름에 익숙합니다.
- 우리는 이것을 약 10 개월 동안 해왔으며 격리 된 모듈 접근 방식으로 시작하여 모든 사람이 모든 작업을 수행하는 것처럼 느껴졌습니다. 그러나 동시에, 좁아 지거나 제한된 것처럼 느끼는 사람은 없습니다. 그리고 사람들이 여전히 어떤 권위를 가지고 있는지 확인하기 위해, 우리는 그것들을 지금은 형식적인 것이지만 지역 전문가로 남겨 두었습니다.
우리는 그 마지막 일을 해왔고, 개선의 여지가 많이 있지만, 전체 팀은 매우 기뻤으며 우리가 대기업의 일원이 될 때 많은 것을 말합니다.
우리가 "민첩한"처음 3 번 잘못한 한 가지 중요한 점은 사람들이 어떻게 작업해야하는지, 그들이 무엇을해야하는지에 대해 들었던 때입니다. 이것이 팀이 프로젝트에 대한 관심을 완전히 상실하게하는 가장 좋은 방법입니다.
대신, 반대를 시도하십시오. 팀원들에게 그들이 원하는 것은 무엇이든 할 수 있고 관리자 / 리더로서 (당신이 하나라면, 관리자가이 말을 반복하지 않으면) 가능한 한 생산적이고 행복해야한다는 것입니다. 프로세스는 나쁘지 않지만 프로세스가 필요하다는 것을 깨달을 때 팀을 도울 수 있어야합니다.
팀원 중 일부가 고립 된 상태에서 일하는 것을 선호하는 경우에는 어느 정도 팀원에게 맡기십시오. 그들이 쌍으로 일하는 것을 선호한다면 그렇게하도록하십시오. 사람들이 가능한 한 자신의 작품을 고르도록하십시오.
마지막으로, 이것은 매우 중요하며 항상 간과됩니다. 당신은이 권리를 얻지 못할 것입니다 (슈퍼맨이거나 최소한 배트맨이 아닌 한). 정기적 인 회고 회의를 갖는 것이 매우 중요합니다. 우리가 회고를 시작했을 때, 그것들은 그 책에 의해 이루어졌으며 그것은 당신이 앉아야 할 또 다른 과정처럼 느껴졌습니다. 그것은 회고적인 것이 아닙니다. 팀의 의견을 경청하고 가장 고통을주는 영역을 파악하고 수정하여 모든 사람이 업무를 진행할 수 있도록합니다. 일반적으로 소프트웨어 엔지니어는 일반적으로 제품과 기능을 제공하는 것과 같이 회고 회의에서 의사 소통해야하는 가장 중요한 메시지는 오직 이익을위한 것입니다. 가장 큰 장애물 또는 가장 쉬운 장애물부터 시작하여 장애물을 식별하고 해결하려고합니다.