대규모 청크를 처음부터 끝까지 개인적으로 독립적으로 소유하려는 개발자가 민첩하게 즐길 수있는 방법


52

우리는 스크럼을 사용하여 폭포에서 민첩으로 전환하는 과정의 중간 쯤에 있습니다. 기술 / 전문 분야 사일로의 대규모 팀에서 소규모의 부서 간 팀으로 변경했습니다.

예상대로 애자일 변경은 모든 사람에게 적합하지 않습니다. 민첩하게 조정하는 데 어려움을 겪고있는 소수의 개발자가 있습니다. 나는 그들이 계속 참여하고 도전하고 궁극적으로 매일 일하러 오는 것을 즐기고 싶습니다. 이들은 개인적이고 전문적인 수준에서 존경하는 똑똑하고 행복하며 동기 부여 된 사람들입니다.

기본 문제는 다음과 같습니다. 일부 개발자는 주로 어려운 작업을 수행하고, 디자인을 통해 생각하고, 잠재적 인 문제를 통해 생각한 다음, 다른 사람과 최소한의 상호 작용만으로 문제를 한 조각 씩 해결하는 기쁨에 크게 동기를 부여받습니다. 기간. 그들은 일반적으로 높은 수준의 품질과 적시에 작업을 완료합니다. 그들의 작업은 유지 보수가 가능하며 전체 아키텍처에 적합합니다. 상호 작용을 중요하게 생각하고 업무에 대한 책임을 공유하는 부서 간 팀으로 전환하고 짧은 시간 내에 업무 기능을 제공하는 팀은 팀 전체가 어려운 문제를 넘어 뜨릴 수 있도록 발전합니다. 많은 사람들이 이것이 긍정적 인 변화라고 생각합니다. 문제를 해결하고 처음부터 끝까지 독립적으로 소유하는 것을 좋아하는 사람은 그런 일을 할 기회를 잃습니다.

사람들이 변화 할 수있는 문제는 아닙니다. 확실히 우리는 변화를 좋아하지 않는 소수의 사람들을 보았지만, 내가 걱정하는 경우 개인은 훌륭한 수행자이며 진정으로 변화하기 위해 노력하고 노력하며 팀의 나머지 부분은 누군가가 힘들거나 방해가되거나 가장 사악한 일을 비축하려는 경우는 아닙니다. 그들은 예전처럼 일에서 기쁨을 찾지 못합니다.

나는 우리가 이것에 부딪치지 않은 유일한 장소가 될 수 없다고 확신합니다. 다른 사람들이 어떻게 접근 했습니까? 당신이 개인적으로 많은 양의 작업을 개인적으로 소유함으로써 동기를 부여받은 개발자이고 다른 작업 방식으로 조정했다면 어떻게해야합니까?


7
There’s a great story of a manager of a Coca-Cola plant whose numbers were far better than his peers. When asked what his “secret” was, he said simply that rather than take a best practice and modify it to meet what the plant did, he instead modified the plant to match the best practice.자신이 왜 그렇게하는지 이해할 때까지 민첩하게 행동하지 않습니다.
아무도

협업이 더 재미 있다는 것을 보여주십시오. 그러면 더 나은 코드를 작성하고 더 많은 것을 배우고 문제가 줄어 듭니다.

세부 사항은 프로그래밍에 고유하지만 변경 관리의 일반적인 작업장 문제이며 작업장에서 더 잘 요청됩니다.
mattnz

참고로, 아래 답변 외에 명심해야 할 또 다른 사항은 민첩성이 Facebook 또는 WhatsApp을 배송 할 수 없다는 것을 의미하지는 않습니다. 그것은 당신이 발송하는 "방법"이 다르다는 것을 의미하지만 개인은 큰 조각을 소유 할 수 있습니다. 예를 들어, 어떤 경우에는 대규모 배포 시스템을 소유하고 있었고 2 주마다 선박 이정표가있었습니다. 운송 및 프로세스는 피처 디자인, 개발 및 릴리스 등에 영향을 미치지 않아야합니다 (물론 역학 제외).
Omer Iqbal

답변:


22

Agile이 방법론으로서 진정으로 의미가없는 드문 차이점을 가질만큼 운이 좋은 소프트웨어 상점은 거의 없다고 말할 것입니다. 전체 팀이 비즈니스 측면과 회사 및 서로의 수명에 대한 깊은 이해를 가진 진정으로 뛰어난 소프트웨어 개발자로 구성되어 있고 비즈니스 요구 사항과 고객 요구가 일반적으로 항상 유사하고 거의 중간에 변경되지 않는 경우 그런 다음 Agile이 실제로 HURT가 될 수있는 드문 환경에서 작업하는 것이 행운입니다.

혼란스럽고 끊임없이 변화하는 비즈니스 요구 사항과 고객 요구, 프로젝트 자원의 발전 또는 변경, 마감 기한이 바뀔 때 가장 효과적인 접근 방식으로 설계되었습니다. 이러한 환경은 프로젝트 도중 팀 변경에 취약하고 변화하는 요구 사항에 취약하며 날짜 변경에 매우 취약하기 때문에 일반적인 폭포 개발의 특정 운명을 의미합니다.

더 이상 일에서 기쁨을 찾지 못하는 귀중한 팀원들에게 느낍니다. 그들은 자신의 일에 열중하는 탁월한 재능을 가진 사람들 일 것입니다. 그러나 결국, 최선의 통제를 벗어난 많은 요인들이 여전히 프로젝트를 죽일 수 있습니다. 기능 개발에 접근하는 가장 좋은 방법은 개인의 태도와 표현을 잃고 팀 접근 방식으로 생각하는 것입니다.

이것이 효과가 없다는 것을 알게되면 특별한 용도로 사용할 수 있습니다. 그들이 재능이 뛰어나고 경험이 많으면 건축 역할에 관심이 있는지, 높은 수준의 디자인, 접근 방식, 새로운 기술 실험 및 모범 사례 발전에 관심이 있는지 확인하십시오. 이 사람들에게 설계 문서를 제어하고 검토하도록하십시오.

이것이 여전히 적합하지 않은 경우 별도의 지사에서 매우 복잡한 기술 리팩토링, 엄청나게 관련된 프로토 타입 및 개념 증명 또는 때로는 수행해야하지만 다른 곳에서는 잘 맞지 않는 기타 획기적인 작업에 대해 별도로 작업하게 할 수 있습니다. 단일 프로젝트 또는 릴리스의 범위.


답변 주셔서 감사합니다. 적어도 한 번은 우리가 할 수있을 때 당신의 마지막 제안을 끌어 들이고 있다고 생각합니다. 우리는 한 사람에 의한 오프사이드 프로젝트가 어떻게 우리가 개발 한 많은 커뮤니티 소유권을 탈선 시키지는 않지만 그만한 가치가있는 것으로 생각해야합니다.
Kris

4
소수의 사람들과 함께 할 계획이라면 실제로 프로젝트 작업을 수행하는 다른 사람들의 사기에 어떤 영향을 미치는지주의하십시오. 그들은 당신이 불평하는 사람들에게 특별한 이점이나 특혜를주고 있다고 느낄 수 있습니다.
maple_shaft

또한 소수의 회원이 선구자 작업을하고 있더라도 모든 사람 이 서로 소통하고 소통 할 수 있도록 각별히주의하십시오 . 예 : 모든 사람이 매일 계획 회의에 참석합니다. 트레일 블레이저는 자신의 작업에 대한 개요를 제공하고 정기적으로 결과를 시연해야합니다 (애자일 팀보다 덜 빈번하지만 여전히 격주 또는 월 단위로). t 막 다른 길을 계속 추구하십시오). 면책 조항 : 나는 정확하게 이런 종류의 사람이며 실제로 잘 작동 할 수 있다고 생각합니다.
rwong

1
반면에 회사의 개발 인력이 주로 선구자로 구성되어 있으며 민첩한 개발 스타일에 적응하지 않는 것이 합의 인 경우이 인력은 민첩한 개발 관행을 채택하는 데 많은 어려움을 겪을 수 있습니다. 다른 접근 방법이 필요합니다. 트레일 블레이저는 실험을 좋아 하므로 회사가 R & D를 통해 수익을 창출 할 수 있도록 제품화 요구를 처리하기 위해 신입 사원을 고용해야합니다 .
rwong

44

그들은 예전처럼 일에서 기쁨을 찾지 못합니다.

옳은.

그것은 당신이 잘못하고있는 큰 증상입니다.

민첩한 사람들에게 나쁜 새로운 명령을 강요 해서는 안됩니다 .

애자일은 팀 이 가장 효과적인 방식으로 자체 조직 할 수 있도록해야합니다 .

자체 조직이란 경영진이 이상한 규칙을 부과하지 않음을 의미합니다. 나쁜 일정을 강요하지 않으며 불필요한 상호 작용을 강요하지 않습니다.

일부 개발자는 주로 어려운 작업을 수행하고, 디자인을 통해 생각하고, 잠재적 인 문제를 통해 생각한 다음, 다른 사람들과 최소한의 상호 작용만으로 문제를 한 조각 씩 해결하는 기쁨에 오랫동안 동기를 부여받습니다.

그들은 왜 이것을 계속 할 수 없습니까?

왜 바꾸어야합니까?

민첩한 선언문을 몇 차례 읽으십시오.

민첩한 선언문

프로세스 및 도구에 대한 개인 및 상호 작용

사람들이 불편하고 비생산적인 방식으로 일하도록 강요하지는 않습니다.

사람들이 너무 낮은 가치의 "상호 작용"을하도록 강요한다면 너무 멀리 갈 것입니다.

포괄적 인 문서에 대한 작업 소프트웨어.

그들은 이것을하고 있습니까? 그런 다음 혼자 두십시오.

계약 협상을 통한 고객 협업.

벌써 이러고 있어요? 그런 다음 변경하지 마십시오.

계획에 따라 변경에 응답합니다.

이 사람들이 이미 변화에 대응할 수있는 곳은 어디입니까? 그렇다면 그들은 이미 민첩했습니다. 그들은 변경할 필요가 없었습니다.


나는 우리가 잘못하고 있다고 확신합니다. 우리는 민첩성을 올바른 방식으로 적용해야하는 일련의 규칙으로 간주하지 않습니다. 우리는 우리가 가진 특정 제약 조건을 버리고 팀을 구성하고, 팀을 구성하고, 업무 범위를 정하고, 혼자 내버려두기 위해 힘을 다했습니다. 물론 우리가 다루어야 할 제약이 있습니다. 예를 들어 다른 팀이 의존하는 자료를 생산하는 팀. 우리는 가능한 한 이런 종류의 문제를 팀이 해결할 수 있도록 만듭니다. ...
Kris

우리는 언젠가 우리의 펜을 내려 놓을 것이라고 기대하지 않으며 "그래, 우리의 전환이 완료되었습니다. 우리는 지금처럼 작동합니다." 개발자가 일을 즐기려고 애쓰는 모든 경우에 이제는 더 일을 즐기는 다른 사람들로 둘러싸여 있습니다. 팀은 문제를 스스로 해결할 수있는 능력을 갖추고 있으며 자신이 가장 잘 생각하는 방식으로 물건을 정리하도록 스스로 조직합니다. 사람들이 이것에 어떻게 반응하는지 보는 것이 놀랍습니다. "우리는 민첩하게 갈 수 없습니다. 그것은 우리가이 모든 시간을 blah에 투자하고 blah를 분류해야한다는 것을 의미 할 것입니다." "그렇지? 알았어." ...
Kris

1
@Kris : "때때로 팀 내의 개인들은 더 이상 예전 방식으로 보상받지 못합니다". 옳은. 상황이 바뀌었기 때문입니다. 나에게 긴 설명 (완전한 낯선 사람)이 실제 문제가있는 실제 사람들과의 긴 심층 토론만큼 도움이되지 않을 수 있다고 생각할 수도 있습니다. "프로세스 및 도구에 대한 개인 및 상호 작용". 그들과 대화하십시오. 그들이 싫어하는 것은 무엇입니까? 그들이 고치고 싶은 것을 고치십시오. "Agile"을 사용하지 않으려면 Agile을 사용하지 말고 엄격한 스케줄을 작성하십시오. 일정 변경을 계속 허용하십시오.
S.Lott

1
@Kris : "그들은 그것이 수정 될 필요가 없다고 생각하지 않습니다. 그들은 더 이상 그 자리를 보지 못할 수도 있습니다." 모순입니다. 두 가지 병렬 독백처럼 들리는 것은 심각한 문제가 있으며 경영진은 불만이 전체 조직 목표에 맞지 않는다고 말하는 것입니다. 애자일 선언문의 어느 부분도 어느 쪽 당사자도 읽거나 이해하지 못한 것 같습니다. 그들은 실제로 "상호 작용"하지 않습니다. 불만을 품은 사람은 해결책을 제안 할 수 없습니다. 그래서 그들은 고칠 수 없다는 것을 알지 못합니다.
S.Lott

1
"사람들이 불편하고 비생산적인 방식으로 일하도록 강요하는 것은 아닙니다." 내가 모든 방법론 에서 부끄러워하는 이유 중 하나, 특히 그들이 유행하는 시점에 인기가있을 때 쿠키 커터 정신은 정확히 그것들을 구현하는 사람들에게 거의 변하지 않는 것처럼 보입니다.
저의 올바른 의견에 동의하십시오

23

우리 회사는 동일한 전환을 시도했지만 (수년 동안 시도했지만) 개인적으로 지금까지 큰 성공을 거두지 못했습니다. 이 전환 과정에서 민첩한 개발과 다양한 방법 / 관심 / 관심 / 기술에 대해 많은 것을 읽었으며, 팀 전체가 고위급 고급 인력으로 구성된 경우 순수한 민첩한 개발이 가장 적합하다는 점에 동의합니다 (또는 최소한 같은 레벨의 모든 사람들).

마지막 릴리스 저는 IMHO에 기술 수준이 너무 많은 개발자가있는 "민첩한"팀에 있었고 모든 사람이 같은 프로젝트에 참여하도록 시도했습니다. 재앙이었다. 우리는 일보다 많은 대화 / 논쟁을했으며, 결국 팀이 생산 한 것은 평균적인 일이었습니다 (평균을 취하는 것에 대해서는 Peopleware 또는 Mythical Man Month를 읽으십시오). 디자인 패턴을 잊고, 낮은 결합 또는 코드를 작은 클래스와 메소드로 나누는 것을 잊어 버리십시오. a) 모든 팀 구성원이 (적어도시의 적절하지 않은 방식으로) 설명하고 이해할 수 없었기 때문에 흥미로운 것을 시도하는 것을 잊어 버리십시오 .b) 우리가 민첩했기 때문에,이 반복을 시작한 것이 무엇이든, 전혀 이해하지 못하는 다른 사람 다음 반복에서 계속됩니다. 몸소,

나는 C ++ 템플릿으로 아무것도 할 수 없거나 인생을 훨씬 쉽게 만들어 줄 멋진 (그러나 다소 복잡한) 저수준 프레임 워크 라이브러리를 작성할 수 없다는 사실을 절대 싫어했습니다. 팀의 다른 사람이 STL 헤더 파일을 읽을 수 없을 때 어떻게 할 수 있습니까?하지만 우리는 모두 한 번에 한 가지 작업을 수행해야합니다. 전체 프로젝트는 애자일이 강조하는 것처럼 기능별로 무차별 강제 기능이되었습니다.

동시에, 우리 회사에는 거의 나란히 작업하고 모든 코드를 공유하고 싶어하는 사람들이 거의 없습니다.

그러나 이제 선택의 여지가 있습니다. A) 고품질 코드를 생산하는 선임 개발자 모두를 자신의 팀에 배치하고 나머지는 별도의 팀에 배치하십시오. 또는 B) 팀의 균형을 맞추고 좋은 팀과 그렇지 않은 팀을 배치하십시오. (A)에서 문제는 당신의 팀 중 하나가 실적이 저조하고 좋은 사람들로부터 좋은 기술 / 습관을 얻지 못할 것이라는 것입니다. (B)에서는 좋은 민첩한 환경에서 좋은 사람들이 좌절감을 느끼고 이력서 작업을 시작합니다. 내 최신입니다.

그래서 어떻게해야합니까?

이것이 올바른 해결책인지는 모르겠습니다. 약 1 년 정도 후에 다시 물어보세요. 그러나 "순수한 민첩성"대신에 팀을 구성했지만 어떤 사람 (들)이 더 많은 영향을 미치는지 (디자인, 코드 검토 ...)를 명확하게 식별하고 그 사실을 이해하고 추가 책임이 있는지 확인해야합니다. 팀원들이 함께 일하기 시작하면 좋은 습관 / 연습을하는 사람들을 찾아서 좋은 사람들과 같은 수준으로 올리십시오. 사람들이 릴리스 또는 두 개의 공동 작업을 할 때 다른 사람이 어떻게 생각하고 어떻게 작동하는지 배우면 동일한 코드에서 동시에 작업하기에 더 적합 할 것입니다. 그러나 그렇게 될 때까지 사람들을 프로젝트에 던져 넣으면 좌절감에 지나지 않습니다 (다시 말하면 내 의견).

내 생각 중 일부는 소프트웨어에서 전문적으로 시작한 방법을 기반으로합니다. 내가 협동 할 때 나는 나의 멘토였던 남자와 일했다. 그는 코딩 윤리부터 훌륭한 디자인, 그리고 여러분이 작성하지 않은 수천 줄의 코드를 읽는 것까지 모든 것을 가르쳐주었습니다. 처음에 우리는 같은 수준에 가까운 곳이 없었으며 민첩한 팀에 배치되어 서로 코드 작업을 할 수 있다고 말하면 웃을 수 있습니다. 그러나 시간이 지남에 따라 (몇 년 동안), 우리는 매우 비슷하게 생각하기 시작했습니다. 나는 그의 코드를 한 눈에 이해할 수 있었고, 그는 전에 본 적이없는 내 코드를 탐색하는 데 전혀 문제가 없었고 (그에 의해 놀라게되었다) 여러 번 나에게 말했다. 밤새 일어난 일이 아니라 몇 년이 걸렸습니다. 지난 몇 년 동안 민첩한 환경에서 재해가 발생한 후 재난을 겪은 후

이것은 실제로 대답은 아니지만 내 경험 / 관찰을 요약합니다. 다른 사람들이 이것에 대해 어떻게 말하는지 알고 싶습니다.


3
해설자 : 의견은 설명을 확대하기위한 것이지 확장 된 토론을위한 것이 아닙니다. 해결책이 있다면 답을 남기십시오. 솔루션이 이미 게시 된 경우 투표하십시오. 이 질문에 대해 다른 사람들과 논의하고 싶다면 chat을 사용하십시오 . 자세한 내용 은 FAQ 를 참조하십시오.

8

애자일이란?

그렇습니까?

  • 규칙 설정자가 의도 한 것을 달성하기 위해 따라야하는 일련의 규칙?

  • 특정 강점, 요구 사항 및 제한 내에서 작업을 수행하기위한 최상의 추측 방법?

애자일이 첫 번째라고 생각하고 항상 스크럼 규칙의 모든 규칙을 따르고 올바르게 수행하고 있는지 여부를 끊임없이 걱정한다면 이 링크 를 통해 약간의 조명을 얻을 수 있습니다.

두 번째에 대해 더 많이 생각하면 축하합니다. 애자일을 얻습니다. 모든 애자일 방법론은 일을 끝내는 방법에 대한 제안 일뿐입니다. 선택한 민첩한 방법의 어떤 측면이 당신에게 옳지 않다면, 당신은 그것을 사용 중지하거나 변경하거나 민첩 해야 할 의무가 있습니다그것에 대해. 중요한 것은 당신이 인공적 제약에 의해 방해받지 않는 무언가를 달성한다는 것입니다-PM이 아무도 모르는 완전한 문서화 된 도표를 위해 PM이 당신을 번거롭게하는 오래된 폭포 시절부터 우리 모두가 알고 사랑하는 것만이 아닙니다. "프로세스가 말한 것"뿐만 아니라 사용중인 프로세스의 제약 조건 때문에 읽어보십시오. 일일 스크럼이 제약 조건처럼 느껴지면 깜박이지 마십시오! 규칙이 그렇게 말하는 것이 맹목적으로 갖는 것은 이전 방식보다 민첩하지 않습니다.

이제 콜라 한 갤런과 피자 부화가있는 방에 갇혀서 일을 끝내는 사람들이 있다면 그 사실을 활용하십시오. 대부분 자체적으로 포함 된 시스템의 일부를 제공하고 잠그십시오. 작업이 완료되면 해당 작업을 나머지 시스템과 통합 (또는 원하는 경우 다른 사람이 수행하도록)해야합니다.

Alistair Cockburn 은이 방법을 그의 방법으로 설명했습니다 . "레벨 3 실무자"가있는 경우 완벽하게 유효한 민첩한 방법은 다음과 같습니다.

“워크 스테이션과 화이트 보드가있는 방에 4-6 명을두고 사용자에게 접근합니다. 1 ~ 2 개월마다 실행되고 테스트 된 소프트웨어를 사용자에게 제공하고 그렇지 않은 경우에는 그대로 두십시오.”

사람들이 혼합되어 있으므로, 사람들이 건설적으로 함께 일할 수있는 방법을 찾아야합니다. 즉, 모든 접근 방식에 1- 크기에 맞는 것은 그리 효율적이지 않을 것입니다. 따라서 공통 목표가 강조되도록하는 동시에 작업을 나누어야합니다. 그 사람들을 코드로 보내어도 괜찮지 만, 팀의 나머지 작업에서 중요한 요소가 될 수 있다는 것을 알고 있어야하며,이를 달성하지 못하면 그들이 생산하는 것이 무엇이든 실패합니다. . 일단 그들이 그것을 이해하면 (즉, 그들이 느끼는대로 행동 할 수없고 사용할 수없는 것을 전달할 수 없음) 당신의 일은 끝난 것입니다.


4

민첩성이 모든 사람을위한 것은 아니며 민첩성이 모든 프로젝트를위한 것은 아니라고 가정 해 봅시다. 동시에 민첩은 매우 광범위한 용어이며 스크럼은 민첩한 프로세스의 한 가지 구현 일뿐입니다. 어떻게 든 잘 알려진 단계로 표준화 된 프로세스를 설정하려는 가장 제약이있는 구현을 말할 수 있습니다.

고려해야 할 또 다른 영역은 민첩성의 목적이 무엇입니까? 개발자의 작업 방식이 민첩합니까? 아마도-일부 방법론은 실제로 그 방향으로 진행됩니다. 그러나 민첩성 자체는 개발 외부 영역을 다루고 있습니다. 애자일은 전체 프로세스 추진, 상호 작용 작동 방식, 시간에 가장 중요한 기능을 사용하여 작업중인 제품을 제공하는 방법, 리소스를 제어하는 ​​방법, 현재 프로젝트의 위치를 ​​확인하는 방법, 기타

개발 과정에서 아무것도 바꾸지 않는 방법론이 있습니다-스크럼은 아닙니다. 모든 민첩한 방법론은 지속적인 개선을 강조합니다. 프로세스에서 비효율적 인 단계를 감지하고 개선 / 변경하려고 시도합니다. 이것이 민첩한 방법입니다. 다른 인기있는 민첩한 방법론 인 Kanban을 확인하십시오.

귀하 / 귀하의 회사는 Scrum을 사용하기로 결정했으며 일부 사람들은 Scrum을 좋아하지 않고 떠날 것이라는 사실로 이어질 수 있습니다. 각 개발자를 개별적으로 처리해야합니다. 각각에 대해 이야기하고 그들이 다시 일을 즐길 수있는 관심사를 찾아야합니다.

그들은 멘토의 역할을 할 수 있고, 다른 사람들을 가르 칠 수 있으며, 반복적으로 작업 할 때 더 나은 아키텍처로 코드를 리팩토링하는 방법을 보여줄 수 있습니다. 프로젝트 전체에서 일부 글로벌 아키텍처 청사진 사용을 구성 할 수 있습니다. 또한 고객이 요구 사항의 실현 가능성에 대해 문의 할 때 개념 증명 작업, RFI (정보 요청)에 참여할 수 있습니다. 그들은 숙련되지 않은 개발자들과 함께 일할 수 있고 복잡한 작업을 함께 수행 할 수 있습니다. 그들의 주요 가치는 기술을 사용하고 다른 사람들이 그들로부터 배우도록 허용하는 것이어야합니다.

전 세계적으로 스크럼과 민첩성은 어떻게 든 개인을 유지하고 팀의 우선 순위를 정합니다. 팀은 개인이 아닌 응용 프로그램을 제공합니다. 이 아이디어는 모두가 같은 기술과 경험을 가진 팀을 가질 수 없다는 사실에 근거합니다.

Scrum으로 성공적으로 전환하면 전체 프로세스가 개선되고, 배송 시간이 단축되고, 품질이 향상되고 고객이 더 만족스러워하는 것을 볼 수 있습니다. 그들은 여전히 ​​개발 된 애플리케이션 자체가 훨씬 나빠질 수 있다고 생각할 수 있지만, 요점은 고객이 최고의 코드를 작성하기를 원하지 않는다는 것입니다. 고객은 요구 사항을 충족시키는 최소 / 가장 저렴한 / 가장 개발 된 작업 코드를 원합니다. 그것이 무차별적인 힘이면 충분합니다. 이것은 숙련 된 개발자에게는 문제를 일으킬 수 있지만 민첩한 실패가 아니라 비즈니스 요구와 완벽주의가 서로 상반되는 곳입니다.


2

주요 문제 중 일부를 가져 와서 훌륭한 개발자에게 전달하면 팀 전체에 도움이됩니다. 모든 사람은 나중에 최신 정보를 얻고 그 과정에서 무언가를 배울 수 있습니다. 이 방법으로 전체 응용 프로그램을 작성하지 마십시오.

코드를 최저 공통 분모로 넘기지 않습니다. 경험이없는 개발자는 더 나은 개발자를 따라 잡을 수 있습니다.


2

"애자일"이란 무엇인지 아닌지에 대해 많은 논의가 있었고 여기에 공유 된 민첩한 프로세스에 대한 많은 개인적인 감정, 경험 및 오해가 있었지만 실제로 그 질문에 대한 실제 답변을 보지는 못했습니다. 원래 질문은 최고의 개발자가 순수 예술 수준에서 작성한 코드를보고 땀과 피를 다른 사람이 해킹하여 "부패"한 코드를 볼 때 동기를 유지하는 방법이었습니다. 민첩한지 아닌지, 이것은 어느 시점에서 일어날 것입니다.이 시점에서 지원하는 일반적인 핸드 오프가 아닌 다른 코드와 동시에 코드 작업을 계속하고 있기 때문에 지금은 더 잘 보입니다. 그들은 단지 그러한 변화가 일어나는 것을 보지 못할 것입니다.

여기서 핵심으로보아야 할 것은 이러한 개발자의 책임을 넓히고 더 큰 그림으로 초점을 바꾸도록 돕는 것입니다. 소프트웨어 아키텍트, 팀장 또는 수석 소프트웨어 엔지니어와 같은 새로운 직함을 의미 할 수도 있습니다. 그런 다음 이것이 한 번에 하나의 프로젝트뿐만 아니라 여러 프로젝트에 더 큰 영향을 줄 수있는 기회임을 보여주십시오. 소유권 감각은 여전히 ​​존재할 수 있지만 더 이상 하나의 위대한 프로젝트를 제공하는 데 초점을 두지 말고 ALL 의 기준을 설정하는 데 도움을 주어야합니다.프로젝트. 훌륭한 무언가를 구축하려는 강한 욕구를 키우도록 돕고 회사의 소프트웨어 엔지니어링 사례와 다른 개발자를 구축하는 데 초점을 맞추십시오. 동료들이 자신의 코드를 해킹하는 것을 생각하지 않고 다음 단계로 올라가서 팀원들을 멘토링하고 레벨까지 올릴 수 있습니다.


안녕-내 의도는 다른 팀이 코드를 해킹하는 것과 관련이 없습니다. "내 코드에 무슨 짓을했는지 !! 아아!" 폭포와 민첩한 상황에 몇 번 있지만 다른 문제입니다. 그것은 일을 할 수 없으며 독립적으로 일을 끝내지 못하는 사람들에 관한 것입니다.
Kris

1
좋아, 여기에서 진행되는 토론으로 답변이 다소 완화되었을 수도 있지만, 지금 소유권이 부족한 사람들이 유능한 사람들이라면 소유권을 가질 수있는 다른 것에 초점을 바꾸는 것이 여전히 타당하다고 생각합니다. 여전히 팀의 주요 공헌자입니다.
Joel C

2

다른 답변으로는 해결되지 않았으며 IMO가 중요하다는 몇 가지 측면을 설명하려고 노력할 것입니다.

기본 문제는 다음과 같습니다. 일부 개발자는 주로 어려운 작업을 수행하고, 디자인을 통해 생각하고, 잠재적 인 문제를 통해 생각한 다음, 다른 사람과 최소한의 상호 작용만으로 문제를 한 조각 씩 해결하는 기쁨에 크게 동기를 부여받습니다. 기간. 그들은 일반적으로 높은 수준의 품질과 적시에 작업을 완료합니다. 그들의 작업은 유지 보수가 가능하며 전체 아키텍처에 적합합니다.

이런 종류의 개발자는 민첩한 환경에 적응하기가 어려울 수 있으며, 자신의 태도는 종종 자존심이나 구식과 관련이있는 "변화를 원치 않는"것으로 기각됩니다.

복잡한 문제를 해결하려면 많은 정보를 처리해야하며, 분석, 사고, 시도, 솔루션 스케치, 버리기, 다른 시도 등 많은 분석이 필요할 수 있습니다. 이러한 복잡한 문제는 해결이 완료 될 때까지 몇 시간에서 몇 주 정도의 집중적 인 작업이 필요할 수 있습니다.

한 가지 접근 방식은 개발자가 문제 사양을 가져 와서 방으로 가서 2/3 주 후에 솔루션으로 돌아 오는 것입니다. 언제든지 (필요한 경우) 개발자는 팀의 다른 구성원 또는 이해 관계자와 특정 상호 작용 (특정 문제에 대한 질문)과의 상호 작용을 시작할 수 있지만 대부분의 작업은 작업이 할당 된 개발자가 수행합니다.

민첩한 시나리오에서 어떤 일이 발생합니까? 이 팀은 빠른 분석 (손질) 후 문제를 작은 덩어리 (사용자 스토리)로 나눕니다. 사용자 스토리는 서로 독립적이지만 종종 그렇지 않습니다. 복잡한 문제를 실제로 독립적 인 덩어리로 나누려면 일반적으로 며칠 동안 작업 한 후에 만 ​​얻을 수있는 지식이 필요합니다. 다시 말해, 복잡한 문제를 작은 독립적 인 부분으로 나눌 수 있다면, 기본적으로 이미 문제를 해결했으며 실사 작업 만 남았음을 의미합니다. 예를 들어, 3 주간의 작업이 필요한 문제의 경우, 스프린트의 시작 부분에서 2 시간 동안 손질 한 후가 아니라 아마도 두 번째 주에 해당 될 것입니다.

따라서 스프린트가 계획된 후, 팀은 서로 의존하는 문제의 다른 부분에 대해 작업합니다. 이로 인해 동일하지만 서로 다른 솔루션을 통합하려고 시도하면 많은 통신 오버 헤드가 발생합니다. 기본적으로 시행 착오 작업은 관련된 모든 팀원에게 추가 커뮤니케이션 오버 헤드 (2 차 증가)로 분산됩니다. 폴 그래엄 (Paul Graham) 의이 기사 에서 이러한 문제 중 일부가 특히 잘 설명되어 있다고 생각 합니다.

물론 팀 구성원간에 작업을 공유하면 한 팀 구성원이 프로젝트를 떠나는 것과 관련된 위험이 줄어 듭니다. 반면에 코드에 대한 지식은 다른 방법으로 전달 될 수 있습니다 (예 : 코드 검토 또는 동료에게 기술 프레젠테이션 제공). 이와 관련하여 모든 상황에 유효한 은탄이 없다고 생각합니다. 공유 코드 소유권과 페어 프로그래밍이 유일한 옵션은 아닙니다.

또한 "짧은 간격으로 작업 기능을 제공"하면 작업 흐름이 중단됩니다. 스프린트가 끝날 때까지 완료 할 수있는 "로그인 페이지에 취소 버튼 추가"기능 덩어리 인 경우에는 문제가 없지만 복잡한 작업을 수행 할 때는 이러한 중단이 필요하지 않습니다. 당신이 할 수있는 한 빨리 100km 차를 운전하려고하고 얼마나 멀리 도달했는지 확인하기 위해 5 분마다 중지합니다. 이것은 단지 당신을 느리게 할 것입니다.

물론, 체크 포인트를 자주하는 것은 프로젝트를보다 예측 가능하게하기위한 것이지만 어떤 경우에는 중단이 매우 실망 스러울 수 있습니다.

따라서 나는 그 질문에 묘사 된 태도가 자아 또는 변화에 대한 저항과 만 관련이 있다고 생각하지 않습니다. 또한 일부 개발자는 위에서 설명한 문제 해결에 대한 접근 방식이 해결중인 문제와 작성중인 코드를 더 잘 이해할 수 있기 때문에보다 효과적인 방법으로 생각할 수 있습니다. 그러한 개발자가 다른 방식으로 일하도록 강요하면 생산성이 떨어질 수 있습니다.

또한, 팀 구성원 중 일부가 구체적이고 어려운 문제에 대해 격리 된 작업을하는 것이 민첩한 가치에 반한다고 생각하지 않습니다. 결국 팀은 자체 구성하고 수년 동안 가장 효과적인 것으로 밝혀진 프로세스를 사용해야합니다.

그냥 내 2 센트.


1
Some developers are primarily motivated by the joy of taking a piece of difficult 
work, thinking through a design, thinking through potential issues, then solving
the problem piece by piece, with only minimal interaction with others, over an 
extended period of time

그들이 "Lone Rangers"인 것 같습니다. 표준 스크럼에서이 사람들은 팀에 적합하지 않습니다 ( "상호 작용"비트는 그리워요).

그들이 "Lone Rangers"가 아니라면 희망이 있습니다. 스크럼을 올바르게 수행하는 경우 스프린트 계획 중에 작업 할 기능 디자인의 일부 여야합니다. 그들이 다른 사람들과 교류 할 필요가있는 유일한시기입니다. 하나의 기능과 관련된 모든 스토리를 "할당"할 수도 있습니다.

스프린트 동안, 그들은 매일 스크럼에 의해서만 "얼룩이 나옵니다". 당신이 (단지 말고 행동으로) 단지 15 분이라는 시간을 증명할 수 있고 모든 것이 실행되도록 보장 할 때까지 부드럽게. 세 가지 질문에 가까이 가면 대부분의 사람들이 준수를 멈출 것입니다.

우리 팀에는 성능 향상을위한 특별한 그룹이 있습니다. 우리는 스프린트의 시작 부분에서 변경 사항에 대해 이야기하기 위해 회고의 마지막 부분에서 그다지 많은 것을 보지 않습니다. 그들은 Scrum of Scrum 팀에보고하는 그들 자신의 "스크럼 리더"를 가지고 있습니다. 나는 그들이 스스로 즐기고 있다고 말할 수 있습니다.


3
-1-뛰어난 생산성을 가진 사람들이 민첩한 접근 방식을 신경 쓰지 않기 때문에 고독한 레인저라고 가정합니다. "잠재력을 발휘"또는 "도전 즐기기"라는 문구를 들어 본 적이 있습니까? 아마도 그들은 민첩한 접근 방식을 연습하면서 그것을 놓칠 것입니다.
Dunk

나는 그것을 가정하지 않았다. 내 종은 론 레인저의 정의 인 "다른 사람들과 최소한의 상호 작용만으로"유발되었습니다. 때때로 론 레인저는 그런 식으로 좋아하기 때문에 그런 식입니다. 그들에게는 자리가 있지만 그 장소는 애자일 ( "상호 작용") 팀이 아닙니다. 때때로, Lone Rangers는 정치, PM "연습"및 프로그래밍에서 모든 재미를 빼앗는 관료주의를 싫어하기 때문에 그런 식입니다. 이 경우 애자일이 시도하는 방식으로 환경을 변경하면 Lone Rangers가 아닌 팀에서 즐기기 위해 환경이 변경됩니다.
Soronthar

0

Joe (여러분의 영웅 개발자)가 약간 융통성이 있다면 문제가 없습니다.

위에서 말했듯이, 팀이 스스로 조직하게하십시오 : Joe가 스스로 씹게함으로써 어떤 문제가 가장 잘 해결된다면, 개방적인 자기 조직 팀이 스스로 그 결론에 도달 할 것으로 기대할 것입니다.

스크럼이 부과하는 몇 가지 제약 조건 내에 남아있는 유일한 과제는 다음과 같습니다.

  1. 일정한 간격으로 기능 제공 : Joe가 몇 달 동안 문제를 씹게했을 때까지 아무 것도 보여주지 않으면 Joe는 실제로 민첩하지 않습니다. 그는 제품 소유자를 인질로 잡고 다시 지정할 기회를주지 않습니다. 제품의 해당 부분. 이 연습을 통해 그가 늦게 달릴 위험이 있으며 아무도 그것을 알아 채지 못합니다. (그러나 귀하의 설명에 따르면 가능성이 낮습니다). 해결 방법 : Joe에게 PO와 함께 앉고, 사용자 스토리를 나누고, 바람직하게는 사용자 값으로 중간 결과물에 동의하는 것이 너무 많은가?

  2. 제품 소유자가 설정 한 우선 순위 존중 : 전문가가 코드를 소유 한 경우 상업적 우선 순위가 아닌 각 전문가의 가용성에 따라 제품의 진화가 결정되는 상황이 발생할 위험이 있습니다. 중요하지 않은 기능에 대한 작업을 수행하는 반면 "Joe 만 가능"하므로 상위 3 개의 기능이 정지됩니다. 그 나쁜. 그 순간 팀은 (임시로) 습관을 바꾸고 Joe의 작업을 더 많은 팀 구성원으로 나누어야합니다.

한마디로 : 영웅 개발자 인 Joe가 각 스프린트의 진행 상황을 보여줄 방법에 대해 PO에 동의하면 팀이 특정 스토리를 할당하고 그를 내버려 둘 수 있습니다. 그러나 PO가 Joe에게 너무 많은 일을하고 있고 팀 (또는 그 반대로)에 충분하지 않은 경우 Joe와 팀은 PO가 아니라 적응해야합니다.


또한 Joe가 팀에 "부분적으로 만 제공"될 수 있다는 점을 고려할 때 팀에 기술 부족이 있는지 팀에 문의해야 할 수도 있습니다.
rwong

-1

애자일 팀의 규칙은 팀에 맞게 사용자 정의해야합니다. 이는 실제로 개인 사용자 정의 일 수 있습니다. 예를 들어, 나는 규칙이 다음과 같은 팀에서 일했습니다.

David가 코드 만 작성하는 경우를 제외하고 모든 코드는 한 쌍으로 작성해야합니다.

David는 선임 개발자 / 건축가였으며 주로 다른 사람들이 자신의 코드에서 사용할 수있는 툴링 작업을 수행했습니다. 그는 자신이 작성한 코드를 매우 많이 소유했습니다. 유지 관리 및 테스트 가 가능했으며 팀의 모든 직원 은 자신이 최고의 코더 일 것임을 알고 특정 프레임 워크 조각을 작성하여 팀에 완벽하게 제공함으로써 팀에 가장 적합하다는 것을 알았습니다.

나는 정원의 다양한 내향적인 사람들에 대한 답은 없지만, 뛰어난 내성적 인 사람들에게는 혜택을 얻기 위해 다른 규칙을 기꺼이 취할 것입니다.


내 전 시대에 한 회사의 드레스 코드를 상기시켜줍니다. 마케팅 담당자는 마켓 로이드가 때때로 개발 영역을 고객에게 보여주기를 원했기 때문에 개발자가 드레스 코드를 가져야한다고 주장했습니다. 사장들은 개발자 복장 코드를 내놓았다 : "어떤 개발자도 복장을 입고 올 수 없다. Debbie를 제외하고." 회사가 해커들에 의해 운영 될 때 도움이됩니다 ....
저의 정확한 의견 JUIN

어려운 문제를 해결하기 위해 시간과 집중력이 필요한 사람이 내 향적이라고 가정하십니까? 어려운 일에 집중하기 위해 집중할 필요가없고 산만 해지기를 원하지 않을 수 있습니까?
조르지오

나는 "민첩한 팀의 전문가"에 대한 성과 평가 기준을 강조하는 나 자신의 답변을 작성하려고 준비하고 있습니다. 전체 팀에 대한 전반적인 (특별 영역) 지식을 키우십시오. "
rwong

@ rwong : 나는 당신이 그것에 대해 민첩해야한다고 생각하지 않습니다 : 모든 종류의 개발 프로세스를 사용하는 팀은 팀원들 사이에 더 나은 지식을 배포함으로써 이익을 얻을 수 있습니다.
Giorgio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.