방금 Scrum으로 일을 시작했는데 뭔가 빠진 것 같습니다. 저는 스크럼을 처음 사용합니다


23

이 코드는 고전적인 ASP / ASP.NET 조합의 완전한 혼란입니다. 스크럼은 우리가 큰 혼란을 패치하거나 그것에 추가하는 것으로 구성됩니다. 우리 모두 다시 쓰기 시작하기에 너무 바빠서 궁금합니다 ..

스크럼에서 개발자가 충분히 충분하다고 말할 수있는 부분은 어디에 있으며, 큰 재 작성을 시작할 시간이 필요합니까? 우리는 '스토리'로 오래된 코드를 패치하는 끝없는 루프처럼 보입니다.

따라서 코드베이스가 얼마나 나빠 졌는지 이해하지 못하기 때문에 재 작성을 원치 않는 비전문가들이 일을하고 있습니다.

그렇다면이 큰 재 작성 변경을 담당하는 사람은 누구입니까? 개발자? 스크럼 마스터?

현재의 전략은 단지 시간을 찾아서, 우리가 겪고있는 현재의 혼란에 대해 대부분의 책임을지고 있기 때문에 관련된 고가들없이 스스로 <-하는 것 ->입니다.


20
샴 애자일 (Sham agile)은 못생긴 머리를 다시 일으 킵니다.
Oded

4
당신은 스크럼을 수행하지 않습니다

20
이 큰 포스터를 인쇄하고 벽 오른쪽에 배치하는 것이 좋습니다 비 기술적 인 사람들이 : 명확하게 볼 수 있습니다 선언 하프 Arsed 애자일 소프트웨어 개발을위한 이론의 왼쪽 사운드 좋은의 항목은, 우리가있는 동안 ... 기업 회사, 우리는 오른쪽에있는 항목을
놓을

12
Joel의 블로그에 대한 필수 링크 : joelonsoftware.com/articles/fog0000000069.html
marco-fiset

8
"<이 호언 장담 여기 - 무엇을해야 하는지를 기술 사람들을 말하는 비 기술 사람들에 대한 -insert>" 관리는 100 % %가 기술 사람들이 이야기한다 무엇을 그들이 관리 및 책임이 있습니다 이유는, 할 사업 즉, 그들이 최선을 다하십시오. 그들이 100 % 하지 말아야 할 것은 그들에게 어떻게해야하는지 알려주 는 것입니다. 기술자들은 그들이 요청한 것을 기술적으로 달성 하는 방법 을 결정 해야합니다. 다른 것은 완전한 naïveté입니다 !

답변:


7

왜 이것이 사람들에게 그렇게 어려운지 잘 모르겠습니다. 그의 사업 사례는 다음과 같습니다.

We seem in an endless loop of just patching old code with 'Stories'.

개발자 시간은 돈이다. 돈이 많다. 나는 1 년 전에 UI를 개선 할 계획을 가진 회사를 떠났고 스크럼을 채택하면 휠 회전을 멈추는 데 도움이되기를 희망했습니다. 어떻게 된 거예요? 같은 ol '같은 ol'. 그들은 새로운 기능을 계속 강화했으며, "기술 부채"는 비즈니스 코드가 없었지만, 기본 코드베이스가 완전히 오래된 엉망으로 인해 우리가 작성한 코드의 절반이 의미가 없어졌습니다. 내가 떠난 이래로 프론트 엔드에 변화가 없었으며, 완전히 개조 할 목적으로 생겨났습니다. 두 달 동안 나는 CSS 나 JavaScript를 실제로 만지지 않았습니다. 나는 1990 년대 후반부터 HTML과 고대 자바 템플릿 시스템을 엉망으로 만들었습니다.

내 대답은? 할 수있는 일을하되, 다른 개발자들이 이미 실질적인 기한을 지키기보다 스프린트 목표를 달성하기 위해 늦게 일하고 늦게 노력하고 있고 기술 부채가 실제로 블로킹 문제라고 주장하면 최악의 상황을 가정하고 새로운 일자리를 찾기 시작하십시오 지금. 개발자가 우려 사항을 전달할 수 없거나 의사 소통이 불가능하거나 비즈니스가 너무 돈이 얼마나 많은지 이해하기에는 근시안적입니다.

이러한 문제를 무시하면 항상 비용이 더 많이 든다. 그리고 조금 더가 아니라 더 많이. 개발 시간이 걱정되는 가슴 상처뿐 아니라 더 나은 지식과 다른 옵션을 가진 개발자가 회사를 전염병처럼 피할 수 있기 때문에 필연적으로 재능 수준을 낮추게 될 것입니다. 내 현재 상사는 개발자이자 회사의 소유자입니다. 다른 우선 순위에 초점을 맞추기 위해 다시 작성하지 않을 내용이 있지만 일관된 타임 싱크로 인해 실제로 리 팩터가 필요한 경우 적절한 리 팩터를 얻습니다. 그리고 결과는 분명합니다. 여러 가지 요인으로 인해 새로운 것을 수정하고 추가하는 것이 더 쉽고 빨라집니다. 한 번에 몇 시간이 걸리던 작업은 적절한 아키텍처로 몇 분이 걸릴 수 있습니다. 비즈니스는 그 말을 듣지 않으려하지만이를 위해 가치를 두는 것이 좋습니다.

스크럼은 개발자가 IMO를 많이 보유하지 않는 환경에서 실패합니다. 비즈니스 유형이 유지 보수 및 업데이트를 무시하기가 너무 쉽기 때문에 "성공적인 이니셔티브"목록에 올릴 수있는 글 머리 기호를 선호하기 때문입니다. 평가 시간이 다가옵니다. 그들은 항상 이러한 문제를 무시하기 위해 엉덩이에 지속적으로 물린 경우에도 항상 자신의 가죽과 승진 가능성을 선호합니다.

스크럼은 또한 이익을 얻는 산업이기도합니다. 회사는 스크럼 훈련에 많은 돈을 지불합니다. 입양을 원하는 사람들은 시장에 누가 팔리고 있는지, 그리고 그것이 실제로 주어진 문화에 얼마나 현실적 일지에주의를 기울여야합니다.

그럼에도 불구하고 실제로 개발, 엉뚱한 코드베이스, 귀에 왁스를 사용하고 가시가없는 개발자를 관리하는 것은 불행과 레시피를위한 유용한 방법입니다. 문제를 해결하려는 노력이 실제로 성과 를 내고 있는지 실제로 발견하기 전에 주저하지 말고 GTFO에 발걸음옮기 십시오.


리팩토링과 관련하여, 사람들이 리팩토링이 모든 개발의 지속적인 부분이라는 것을 '내재화'할 수 없다는 것이 이상합니다. 문제가 너무 나쁠 때 배쉬가있는 것은 아닙니다. 당신이 할 수있는 일은별로 없습니다.
nicodemus13

1
또는 단위 테스트가 없습니다. :) 단위 테스트의 주요 이점 중 하나는 자신감을 가지고 리팩토링 할 수 있다는 것입니다. 좋은 습관의 가장 큰 문제는 모든 것과 동일합니다. 훈련이 필요하고 일반적으로 사람들은 게으 르기를 선호합니다.
nicodemus13

2
그 또는 그들은 극단적 인 코딩 군중의 또 다른 선물로 잘못 손에 나쁜 행동을 할 수있는 도구로 쉽게 전환 될 수 있습니다. 자동화 된 테스트는 요점에서 유용하지만 테스트보다는 인터페이스에 대한 쓰기와 사운드 아키텍처를 선호합니다.
Erik Reppen

1
개인적으로 인터페이스를 정의하는 데 도움이되는 테스트를 작성합니다.
nicodemus13

1
그런 다음 초기 분석에서 쉽게 잡을 수없는 작은 예외가 있으므로 모든 kludges의 고통이 다시 발생합니다.
JB King

33

의심 할 여지없이 Scrum을 수행하는 경우 제품 소유자가 재 작성을 결정할 책임이 있습니다. 대부분의 경우 재 작성은 좋은 생각이 아닙니다. btw는 새로운 기능을 생성하지 않고 새로운 버그만 도입하기 때문입니다.

http://blog.objectmentor.com/articles/2009/01/09/the-big-redesign-in-the-sky
http://www.joelonsoftware.com/articles/fog0000000069.html

"다시 쓰기는 좋은 생각이 아닙니다"로 확장하려면 :

점진적으로 개선하는 것이 거의 항상 좋습니다. Jarrod Robertson이 의견을 썼 듯이, 개선이 필요한 모듈을 해당 모듈의 전문가가되고 특정 모듈을 개선하기위한 다음 스프린트에 대한 기사를 작성하십시오. 해당 모듈이 작동해야하는 이유를 제품 소유자에게 설명하십시오.


8
당신이 주장하는 것만 큼 많은 경험과 지혜를 가지고 있다면, 단계적으로 실패한 모듈을 알아 낸 사람이되고, 전문가가되어 문제를 해결 한 다음, 다시 작성하기 위해 비즈니스 사례를 작성하십시오. 해당 모듈 의 전문가 가 될 것입니다 .

3
일부 엉망은 청소해야합니다. Joel의 기사를 인용하고 재 작성을 주장하는 것은 어쨌든 모호한 통계가없는 경우가 거의 없습니다 (성공적인 재 작성에 대해 자랑하는 사람이 있습니까?).
Erik Reppen

3
@ErikReppen 거실이 지저분 할 때 집을 허물고 새 집을 짓는가?
EricSchaefer

4
그의 의견을 읽으면 그는 거실에 대해 이야기하지 않습니다. 한 방이 어디에서 시작되고 다른 방이 끝나는 지 말하기는 어려울 것입니다. 그리고 온 집이 불타고 있습니다.
Erik Reppen

5
우와, 카우보이 "다시 쓰기는 좋은 생각이 아닙니다"에 대한 포괄적 인 진술을하기 전에, 새로운 기술로 이동하고 시대에 적응하는 것이 비즈니스의 IT 생존에 필수적이라는 사실을 인정해야합니다. 최신 기술 (기술적으로 더 나은 기술)을 채택하지 않으면 경쟁 업체가 그 이점을 얻게됩니다. 이것은 일반적으로 기술에 해당됩니다. Model-T는 완벽하게 좋은 차량 이었지만 경쟁과 새로운 기술의 채택 덕분에 오늘날 우리가 운전하는 훨씬 더 좋은 차량으로 자동차가 여러 번“재기록”되었습니다.
blesh

18

난 정말 무딘거야 ...

  • 이 직무의 개발자를 담당하고 있습니까?
  • 당신은 프로젝트 리더입니까?
  • 개발자가 프로젝트에서 얼마나 "지분"을 보유하고 있습니까?
  • 재 작성에 대한 귀하의 비즈니스 정당성은 무엇입니까?
  • 코드베이스가 완전히 쓸모없고 회복 불가능한 이유는 무엇입니까?

당신은 당신이 직업을 시작했다고 말했지만, 당신은 이미 그곳의 상황의 대가 인 것처럼 보입니다. 아마도 나는 당신의 질문의 의도를 오해했을 것입니다. 그러나 당신이 많은 문제를 겪는 직장에 들어갔다는 느낌을 얻었습니다. 다시 작성하지만 실제로 고용주가 비용을 고려한 적이 있습니까?

상태가 아무리 빈약한지에 관계없이 기존 코드 기반을 사용하면 소유자는 일반적으로 코드가 나타내는 제품에 상당한 투자를 할 수 있습니다. 코드베이스와 관련된 직접 및 간접 비용이 모두 있으며, 코드 자산을 평가 절하하여 이전의 모든 제품에 대한 수익을 낮추기 위해 소프트웨어 개발자로서 가장 최근에 다시 작성하는 것이 종종 재 작성입니다. 노력.

창의 운영 체제를 예로 들어 보겠습니다. 각각의 새로운 버전이 만들어 짐에 따라, 이전 버전에서 많은 양의 코드가 전달되었습니다. 때로는 전체 라이브러리와 API가 여러 세대의 OS로 끌어 오기도합니다. 왜? 개발자는 이러한 요소가 작동하고 테스트되었으며 보안 및 메모리 문제를 방지하기 위해 패치 및 수정되었으며 그 상태에 들어가는 데 많은 비용이 들기 때문에 알고 있습니다. 유지 보수 비용이 상대적으로 높더라도 처음부터 시작하는 비용은 항상 더 높을 것입니다 .Microsoft의 경우와 같은 회사의 경우 은행에 수십억 달러가 있습니다. 원한다면 처음부터 시작할 수 있지만 그들은 투자로부터의 수익을 극대화하기를 원하기 때문에. 프로젝트에 수십억 달러의 현금을 버는 것을 제외하고는 고용주가 Microsoft와 다르지 않습니다.

따라서 코드는 혼란스럽고 회사의 여러 영역 사이에 통신 및 경계 문제가있는 것처럼 들립니다. 당신이나 당신의 동료들은 이것에 대해 무엇을 할 수 있습니까?

한 가지 방법은 팀이 계속 진행하면서 미래에 기적을 기대하는 것입니다. 아마도 좋은 생각이 아니며 좌절과 스트레스 만 증가시킬 수 있습니다.

더 나은 옵션은 단순히 작업을 방해하고 작업을 수행하는 것이지만,이 과정에서 가장 취약한 것으로 보이는 코드 영역을 지원하는 테스트를 추가 할 기회를 찾고,보다 안정적으로 될 때까지 리팩토링합니다. 단순히 모든 것을 버리지 말고 논쟁하는 대신 회사의 투자를 개선하기위한 강력한 주장을하기가 더 쉬울 것입니다.

더 나은 옵션은 팀으로 구성하고 팀이 코드 기반을 개선하기 위해 시간을보다 유연하게 예약 할 수있는 충분한 사례를 만들 수있는 충분한 선임자가있는 사람을 확보하는 것입니다. 나는 회사가 얼마나 바쁘거나 일정이 얼마나 엄격한 지 상관하지 않습니다. 항상 개선에 두 가지를 짜는 데 사용할 수있는 활동이 가끔씩 발생합니다. 그러나 다른 작업을 완료하는 동안 개선 할 수 있다면 더 좋습니다. 그것이 저라면 매니저에게 아늑하고 소프트웨어 개발자가 읽는 표준 책의 개념을 소개 할 것입니다. 깨끗한 코드아마도 당신 팀이 가장 필요로하는 것입니다. 코드를 개선하는 방법에 대한 몇 가지 씨앗을 심고 의미의 몇 가지 예를 제공하십시오. 좋은 관리자는 특히 기술 부채 개념을 설명 할 수있는 경우 코드에 점진적 개선을 추가하는 것의 가치를 알게 될 것 입니다. 팀 리더 나 관리자가 코드를 개선하기위한 훌륭한 비즈니스 사례를 만들도록 도와 주면 더 나은 동기 부여를받을 수 있습니다.

"코드가 어수선하지 않다"고 말하는 것만으로는 충분하지 않습니다. 동료들은 항상 코딩을 깨끗하게 연습하고 깨끗한 코딩 기술을 사용하여 약간의 정리를 권장해야합니다. 새 직장을 가질 때마다 인쇄하고 사무실 벽에 매달리는 작은 포스터가 있습니다. "항상 코드를 찾은 것보다 조금 더 아름답게 남기 위해 노력합니다"라고 말합니다. 바로 옆에 "부 계절을 금칠 필요가 없습니다"라는 문구가 추가되었습니다. 그들은 항상 내가 찾은 것을 개선하려고 노력해야한다는 것을 상기시키는 역할을하지만, 한 문제를 다른 문제와 금 도금하는 것을 피합니다. 대규모 재 작성은 종종 잘못된 이유로 수행되기 때문에 최악의 "금 도금"입니다. 완전히 새로운 제품 버전이 어느 시점에서 정당화 될 수 있는지 확인하십시오.


아니요. 담당자가 아닙니다. 저는 12 년 동안 전문적으로, 7 년 동안 .NET으로 코딩 한 개발자입니다. 나는 많은 계약을 맺었고 잠시 후에 코드의 질에 대한 느낌을 빨리 얻을 수있다. '지분'은 얼마입니까? 그게 무슨 뜻인지 잘 모르겠습니다. 우리는 이러한 변경 사항이 현대적인 훌륭한 아키텍처의 일부인 경우보다 이제는 매우 약한 기존 CLASSIC ASP를 고정 상태로 유지하면서 10 배 더 오래 걸렸습니다. 비즈니스 타당성은 높은 이직률로 인해 아무도 이해하지 못하는 모듈로 인해 사이트가 현재 생산에서 충돌하고 있다는 것입니다.
punkouter

이 코드베이스가 얼마나 나쁜지 이해하지 못한다고 생각합니다. 또한 로켓 발사대가 아닙니다. 이것은 CRUD 101입니다.이 양식은 사용자가 양식을 작성하고 유효성을 검사 한 다음 데이터에서 일부 보고서와 PDF를 작성할 수 있도록 양식을 표시합니다. 그게 기본입니다 .. 그러나 10 년이 넘게 코드는 너무나 많은 조각으로 나뉘어져 있습니다. 지난 12 여년간 20 개 프로젝트 된 부분을 필자는이 실제로 생산에 사용되는 내가 본 코드의 최악의 모음으로 가지고 ... 난 당신에게 모든 보여줄 수 소원
punkouter

내가 초보자를 위해하고있는 일은 코딩에 대한 열정이 있고 마침내이 권리를 얻는 데 관심이있는 팀원을 찾는 것입니다. 그것은 때문에 ... 그 사람들을 쉽게 찾을 수없는 brucefwebster.com/2008/04/11/...을
punkouter

16
@ punkouter : 나는 당신이 여기에서되고있는 요점을 이해하지 못한다고 생각합니다. "불량"인 코드베이스는 재 작성의 비즈니스 사례가 아닙니다. 코딩에 대한 열정을 갖고 물건을 올바르게 얻기를 원하는 것은 재 작성의 비즈니스 사례가 아닙니다. 값 비싼 생산 버그와 중단, 사소하지만 중요한 새 기능을 구현하는 데 몇 개월이 걸리는 경우-다시 작성해야 할 비즈니스 사례를 제공합니다.
Michael Borgwardt

1
@punkouter "Dead Sea"현상에 대한 설명 링크도 특히 적합합니다. 마멸을 통해 지식을 잃는 것은 사업에 가치가 없으며, 가능한 것을 되 찾는 데 큰 가치가 있습니다. 잠재적으로 비싸고 불필요한 재 작성을 피하기 위해 시간을 투자하면 지식과 전문 지식을 잃는 것보다 비즈니스 가치가 더 높습니다. 더 나은 채용 관행을 장려하고 문제를 해결하고 시스템을 개선해야하는 과제는 약간의 명성을 얻고 고용주에게 소중한 자산이 될 수있는 기회입니다.
S.Robins

13

공식 Scrum Guide 에서 Scrum Development Team 의 공식 정의는 다음과 같습니다 . 나는 당신에게 직접 관련된 부분에 중점을 둡니다.

개발 팀은 각 스프린트가 끝날 때“완료”제품을 출시 할 가능성이있는 전문가로 구성됩니다. 개발 팀의 구성원 만 증분을 만듭니다. 개발 팀은 조직이 자체 작업 을 구성하고 관리 할 수 ​​있도록 구조화되고 권한을 부여받습니다 . 결과적인 시너지 효과는 개발 팀의 전반적인 효율성과 효과를 최적화합니다. 개발 팀은 다음과 같은 특징이 있습니다.

  • 그들은 스스로 조직하고 있습니다. Scrum Master조차도 개발 팀에 제품 백 로그를 잠재적으로 출시 가능한 기능의 증분으로 바꾸는 방법을 알려주는 사람은 없습니다.

  • 개발 팀은 제품 증분을 생성하는 데 필요한 팀으로서의 모든 기술을 갖춘 교차 기능입니다.

  • 스크럼은 개인이 수행 한 작업에 관계없이 개발자 이외의 개발 팀 구성원에 대한 타이틀을 인정하지 않습니다. 이 규칙에는 예외가 없습니다.

  • 개별 개발 팀 구성원에게는 전문 기술과 초점 영역이있을 수 있지만 책임은 개발 팀 전체에 속합니다. 과,

  • 개발 팀에는 테스트 또는 비즈니스 분석과 같은 특정 도메인 전용 하위 팀이 없습니다.

따라서 개발 팀은 자체 혼란에 대한 책임이 있으며 팀 외부의 누군가에게 묻지 않고 자체적으로 해결해야합니다.

추후 각각의 추정에 기술 부채 수정 시간을 포함시키고 제공하는 소프트웨어의 품질이 최고 수준인지 확인하십시오.

실제로 완전히 다시 작성해야하는 경우 Scrum Restrospective에서 문제를 해결해야합니다. 제품 소유자는 결국 프로젝트를 취소하고 새 프로젝트를 시작할 수 있습니다. 스프린트를 취소 할 수있는 유일한 제품은 제품 소유자입니다.


8
팀은 자신의 혼란에 책임이 있지만 기술 부채 대 새로운 기능의 우선 순위를 선택할 수는 없습니다. 그것을 결정하는 것은 제품 소유자입니다. PO가 백 로그의 우선 순위를 결정하면 팀은이를 전달하는 방법을 결정할 수 있습니다. "Y를 리팩토링하지 않고 기능 X를 제공 할 수 없습니다"라고 말할 수 있지만 "아니요, 죄송합니다. 처음부터 다시 작성할 때까지 새로운 기능을 추가하지 않습니다"라고 말할 수 없습니다.
Bryan Oakley

6
@BryanOakley : 처음부터 다시 쓰는 것은 내가 제안하는 것이 아닙니다. 개발팀이 관련 영역에서 작업함에 따라 기술 부채를 점진적으로 줄 이도록 제안합니다. 또한 그에 따라 평가할 것을 제안합니다.

1
우리는 다시 작성하는 데 필요한 모든 도구를 갖추기 위해 새 서버, 새 데이터베이스, 새 소프트웨어가 필요하다면 어떻게 될까요? ANd '이야기'가 현재 문제를 해결하는 것이지만 다시 쓰기를 허용하는 개념에 관한 것이 아니라면 어떻게 다시 쓰기가 시작됩니까?
punkouter

1
@punkouter : 다시 작성해야하는 경우 스크럼 회고에서 문제를 해결하십시오. 그런 다음 제품 소유자는 현재 프로젝트를 취소하고 새 프로젝트를 시작하는 책임을집니다.

5
다시 작성하기로 한 결정이 개발자에게 가장 호소하는 결정이기 때문에 '올바른'결정이라고 가정하지 마십시오. 기술 부채가 증가하더라도 기능을 제공해야하는 좋은 이유가 있습니다.
DJClayworth

8

이 내용 설명 할 때 SCRUM과 관련이 있거나 제품 개발 팀이 현재 문제가되는 것은 없습니다 .

이것은 정상입니다

당신이 설명 하는 것은 코드베이스 의 정상적인 엔트로피입니다. 귀하의 경우 팀은 아마도 이상에서 멀어지기 시작했지만 여전히 모든 코드베이스는 결국 Big Ball of Mud가 됩니다.

완벽 하게 완벽한 그린 필드 시나리오에서, 당신이 할 수있는 모든 것은 절대 엔트로피에서 더 멀리 시작하여 느리게 진행하는 것입니다.

나는 다른 사람들과 동의합니다. 코드베이스 혼란은 개발자 때문입니다. 나는 그것이 몇 년 전부터 SCRUM의 채택보다 앞서 있다고 확신합니다.

다시 작성하려는 기술적 또는 개발자의 결정이 아니라 비즈니스 결정입니다.

제품 소유자가 재 작성을 원하지 않는 이유에 대해 확신하지 않습니다. 개발자로서 필요하다고 생각하지만 실제로 비즈니스 사례 가 있습니까?

진정한 비즈니스 사례 가 있다면 손을 흔들며하는 것만이 아닙니다. "코드는 내가 원하는 것이기 때문에 그린 필드를 시작하고 싶어하는 레거시 엉망이다"라고 하면 경영진은 그 투자에 대한 수익을 고려할 때 재 작성 비용을 즐겁게 할 것이다.

당신은 하나의 고체 부여하지 않은 비즈니스 케이스를 , 다시 쓰기 위해 단지 호언 장담을 당신에 대해 의견을 다른 사람들이이 혼란을 야기 방법 및 당신은 그것을 처리하고 싶지 않아요.

Proof-Profit 은 깨끗한 코드 기반이 필요한 일부 OCD 가 아니라 작동중인 소프트웨어를 버리기 위해 비즈니스 결정을 내립니다.

당신이 정말로 보여줄 수있는 경우 증거 , 단지 이론 만 열심히 증거 지출하는 X그린 필드의 다시 쓰기에 달러하는 것은됩니다 MAKE의 보장 X * N 의 비즈니스를위한 달러 Y(기간 N높고 Y짧은)을, 당신은 관리에서 일부 견인을 얻을 수 있습니다 . 당신이 제시하고 증명할 수있는 가능성은 거의 없습니다.

그렇지 않으면 당신은 그것을 처리해야합니다, 이것은 현실입니다. 이 끔찍한 재 작성 없이는 앞으로 나아갈 길이 전혀 없다는 단호한 주장과는 달리, 5 년 이상 당신이 불평하는 코드베이스는 여전히 누군가에게 기능과 가치를 제공하는 곳에서 여전히 작동하고 실행되는 돈을 걸었습니다. 당신은 회사를 떠났습니다.


1
그렇다고해서 개발자가 내부적으로 어떤 버전 제어 시스템을 사용하는 것이 책임이 아니라는 것을 의미하지는 않지만, 개발자 와 관계없이 자신과 최선의 이익을 돌보는 것은 여전히 ​​개발자의 책임입니다. 밀짚 꾼의 경우, 그 200 명의 개발자는 그들이해야 할 일을하지 않았으며, 경영진은 머리에 총을 쏘지 않고 버전 제어 시스템을 스스로 설치하지 못하게했습니다.

3
지저분한 코드 기반은 관리가 직접 코드 작성을 담당하지 않기 때문에 직접적인 관리 결과는 아닙니다. 간단합니다. Manangement는 개발자에게 이상적인 작업 환경을 갖지 않고 육성 할 책임이 있지만 버전 관리 부족과 같은 문제를 통해 작업하는 책임은 항상 실제 작업을 수행하는 사람들에게 달려 있습니다.
피터 랭

1
아웃소싱 된 개발자는 관리 문제입니다. 내부 사람들이 더 잘 알고있었습니다. 경영진은 실제로 20 명의 유능한 직원들과 큰 성과를 거둘 수 있었을 때 200 명의 개발자를 고용함으로써 많은 비용을 절약하고 싶어했습니다. 내가 본 많은 스크럼 구현과 마찬가지로 채택 된 전략은 무능의 산물이었으며 실제로 회사 직원이 통제 할 수있는 개발자는 없었습니다.
Erik Reppen

2
@Erik은 관리자가 잘못된 코드 기반 (또는 부서에서 내린 다른 잘못된 결정)에 대해 책임을지지 않아도되고 관리자가 설명하는 시나리오와 같이 개발자의 작업 환경을 제공 할 책임이 없음을 밝히지 않습니다. 그러나 코드 기반을 직접 담당 할 수있는 유일한 사람은 코드 자체를 작성하는 사람입니다.
피터 랭

3
또한 귀하의 개발자가 비즈니스 목표에 사로 잡히지 않는 것은 어리석은 일이라고 덧붙이고 싶습니다. 나는 사람들이 실제로 제품의 행동을 결정하는 사람들 로부터이 물건을 숨기려는 의도를 이해하지 못했습니다. 회사의 장기 목표를 알면 실제로 앱을 설계하는 방법을 알 수 있습니다. 또한 최소한 좋은 개발자는 문제를 해결합니다. 끊임없이 문제를 해결합니다. 우리 중 일부는 미리 머리를 미리 예측하고 해결하거나 코드에서 올바른 문을 열어 둡니다.
Erik Reppen

7

나는 사람들이 "큰 재 작성"을 강요 할 때 보통 회의적이다. 레거시 코드가 가치를 가지고 있다는 사실은 분명히 의미가 있지만 대부분의 경우에는 이미 프로덕션 환경에 있으며 제작에 영감을 준 목적으로 사용되는 경우가 있습니다. 큰 재 작성을 수행하는 것은 민첩성과 반대되는 경우가 많습니다. 새 버전의 애플리케이션을 기존 애플리케이션을 대체 할 수있는 시점으로 가져 오는 데 얼마나 걸립니까?

내가 선호하는 접근법은 Martin Fowler가 교살하는 포도 나무 라고 부르는 것 입니다. 새로운 접근 방식을 사용하여 새로운 기능 (기존 기능 변경 포함)을 구현하지만 기존 기능을 새로운 기능으로 확장 할 수있는 격자로 사용하십시오. 이를 통해 두 가지 이점을 모두 누릴 수 있습니다. 큰 재 작성이 스 너핑되는 동안 모든 것을 중지 할 필요는 없지만 업데이트 된 프레임 워크를 활용하는 새 코드를 작성할 수 있다는 이점이 있습니다. 그것은 깨끗하게 시작하는 것보다 확실히 어려운 접근법이며 섹시하지 않을 수도 있지만 구식이기 때문에 거기에있는 모든 것을 버리는 것보다 비즈니스에 더 많은 가치를 제공합니다.


기존 기지가 엉망이라면 충분하지 않을 수 있습니다. 그는 완전히 다른 저자들에 의해 다수의 레거시 asp.net 시스템에 대해 동일한 저주 사이트에 대해 밀접하게 결합 된 것에 대해 이야기하고 있습니다. 웹 양식만으로도 괴물이 될 것입니다.
Erik Reppen

오, 나는 그것이 가장 쉬운 길이라고 말하지는 않았지만 이해 당사자들에게 더 맛있습니다. 또한 한 번만 살펴보면 오늘의 최신이자 내일이 구식이 될 때 단계적으로 제거하는 것이 더 쉬울 것입니다.
Michael Brown

동의한다. 그러나 Ive가 말했듯이 (그리고 여기에 모든 사람들이 있는지는 확실하지 않습니다.) 현재 존재하는 것은 절반은 Classic ASP이고 다른 절반은 다른 ASP 형식입니다 .NEt. 데이터 액세스 등을 처리하기 위해 완전히 다른 방법을 사용하는 모든 것. 따라서 이야기하는 것을 수행하는 유일한 방법은 UI를 새 코드처럼 보이게 만드는 것이 이전 코드의 일부입니다. 하나의 테이블에는 400 개의 필드가 있습니다!
punkouter

궁금해. 그 표는 무엇을 나타 냅니까? 내가 i ++를 본 이후에 내가들은 것은 최악입니다. doSomething (i); 버스 팅 된 JSP 태그에서 유출 된 일부 코드에서 12 번 이상 반복되었습니다.
Erik Reppen

5

현재 위치와 작업 방식은 다음과 같습니다. 새로운 스토리를 작성하여 제품 소유자에게 건네면 우선 순위 결정 방법을 결정합니다. 예를 들면 다음과 같습니다. "제품 X의 개발자로서이 영역에서 코드를 다시 작성하여 향후 개발의 효율성을 높이고 싶습니다"승인 기준은 다음과 같은 라인을 따라야합니다. 이런 식으로 더 좋습니다.

나는 당신이 처한 상황에 대해 잘 모르지만 여기에서 처음부터 다시 시작하고 싶다면 제품 소유자와 함께 앉아서 이유를 설득 한 다음 기존 이야기를 다시 작성하는 이야기 더미를 작성하는 경우입니다 기능.

잘못된 코드 및 / 또는 레거시 코드를 처리하기 위해 수행 한 다른 작업에는 사용자 스토리를 처리 할 때 재 작업을위한 작업이 포함되었습니다.


그래서 개발자는 '이야기'를 작성하고 제출할 수 있습니까? 문제는 다시 작성하는 이유가 설명하기에 너무 기술적이라고 설명하는 것입니다. 제가 말할 수있는 것은 .. '현재 코드는 관리하기가 어렵고 깨지기'입니다 ..
punkouter

6
@punkouter : 다시 쓰기를 원하는 이유가 순전히 기술적 인 것 (즉, 비즈니스 비용이 들지 않음) 인 경우 다시 쓰기위한 충분한 이유가 없습니다.
Michael Borgwardt

@MichaelBorgwardt : 기술적 인 이유가 무언가를 다시 쓰기에 충분하지 않다고 말하는가? 내가 당신을 올바르게 이해한다면 그것은 근본적으로 깨진 접근법입니다. 지속적으로 나의 신경에 도달하는 한 가지는 '비즈니스'가 'IT'또는 모든 부서가 수행하는 모든 것을 결정하는 일반적인 마스터 / 슬레이브 접근법입니다. 그것은 어느 정도까지만 사실입니다. IT는 내부적으로 요구되며 비즈니스에 의해 결정되지 않는 자체 요구 사항을 가지고 있습니다. 이것은 일반적으로 누락되어 엔지니어링되지 않고 목적에 맞지 않는 소프트웨어로 연결되는 것입니다.
nicodemus13

1
@ user12355 내가 본 것처럼, Michaels의 요점은 돈을 잃지 않으면 돈을 벌지 못할 것이며, 그런 경우는 없다고 말합니다. 그들이 돈을 잃지 않으면 다시 쓰기 비용이 든다. 회복 할 수없는 돈. 개발자는 "이 코드를 엉망으로 만들"수 있지만, 고용주에게 재정적 이익을 입증 할 수 없다면 스스로 작성하지 않으면 절대로 다시 작성해야 할 것입니다.
Rig

1
@ user12355 : 기술적 인 이유는 사용자 스토리에 충분합니다. 그 이야기를 목록의 최상위로 승격시키고 스프린트에 배치하기에 충분하지는 않습니다.
Adam V

4

큰 재 작성을 결정하는 것은 비즈니스 결정입니다. 비즈니스의 일부를 담당하는 사람들에게 자신의 관점에서 판매함으로써 비즈니스 의사 결정에 영향을 줄 수 있습니다.

하나; 한 반복에서 다음 반복으로 코드 품질의 변화는 개발자의 결정입니다. 코드 품질이 떨어지도록 허용하면 제품 소유자의 기대를 충족시키기 위해 기술 부채가 추가됩니다. 당신이 할 수있는 일은 작성하는 코드에 대한 책임을지고 시작하여 코드베이스를 개선하는 것입니다. 이제 기술 부채가 지속적으로 줄어들 기 때문에 속도가 떨어지고 제품 소유자는 반드시 실망하게됩니다. 귀하는 간절히 원한다면 코드 품질이 저하되었으며 이제이 문제를 해결하기위한 조치를 취하고 있다고 설명 할 수 있습니다.

이제는 끔찍한 조치이며, 단 한 번의 스프린트를 지연 시켜서 중요한 마감 시간 전에 기능 X를 얻을 수 있다는 유혹을 느낄 수 있습니다. 불행히도, 기다릴수록 더 어려워 질 것입니다.

그건 그렇고, 이것은 엄격하게 Scrum 문제가 아니며 Scrum에만 해당되는 솔루션을 제안하지도 않습니다. 이것은 코드의 소유권을 가진 개발자에 관한 것입니다.


1
그리고 당신은 10 년 동안 꾸준한 이직률을 보였을 때 분명히 코드를 잘 작성하지 못했거나 현대 건축을 이해할 수 없었던 개발자들에 의해 일회성 일어 났을 때. 일에 익숙하지 않고 품질이 낮은 수준의 코드를 보는 데 사용하지 않습니다. 새로운 좋은 코드를 작성하는 것을 좋아하는 이기적인 욕망뿐만 아니라 다른 사람을 위해서도 다시 쓰기를 원합니다. 그들은 나처럼 상황을 이해하지 못한다.
punkouter

1
이미 말한 내용 만 반복 할 수 있습니다. 공식적으로, 지금은 큰 재 작성의 시간이라고 결정할 수 없습니다. 코드베이스를 조금 덜 고통스러운 상태로 점진적으로 전환하는 데 얼마나 많은 노력이 필요한지를 이해 관계자에게 보여주고 완전히 다시 작성하는 데 드는 노력과 비교할 수 있다고 생각합니다.
Buhb April

3

개발자는 코드베이스의 현재 상태를 세계에 경고 할 책임이 있습니다. 이것은 일상적인 스크럼 동안, 회고 적이거나 비공식적으로 발생할 수 있습니다. 명백한 것처럼 보이지만 엉망이 무엇인지, 그로 인해 얼마나 많은 시간을 낭비하는지 명확하게 표현하지 않으면 아무도 눈치 채지 못할 것입니다. Scrum Master는 일반적으로 정보를 PO와 프로젝트 책임자에게 전달하고이를 수행해야 할 것을 설득 한 다음 팀의 솔루션 구현을 촉진 할 책임이 있습니다.

부수적으로, 빅뱅 다시 쓰기는 IMO가 반드시 이런 종류의 문제에 대한 정답은 아닙니다. 그러나 개발자는 현재 코드베이스를 사용하고 있습니다. 깨끗한 아키텍처를 향한 작은 측정 가능한 단계를 취하는 것이 더 나은 아이디어입니다. 프로세스를 정기적으로 보여줌으로써 진행 상황을 확인하고 작업을 정당화하고 새로운 사용자 구현의 흐름을 계속합니다 끝없는, 자원 독점적 인 화장에서 길을 잃는 것과는 대조적으로 이야기.


앞서 언급 한 바와 같이. 6 개의 클래식 ASP 사이트와 4 개의 .net 1.1 사이트를 모두 한 사이트로 통합 한 방법은 없습니다. 모두 다른 사람들이 다른 방식으로 코딩했습니다.
punkouter

나는 코드베이스가 앞으로 몇 년 동안 Jurrasic Park의 Dr. Ian Malcom 을 역설 할 것이라고 확신합니다. "저는 단순히 경영진이 방법을 찾는다는 것을 말하고 있습니다. "

앞으로 몇 년이 걸릴지 모르지만 서로 밀접하게 연결된 레거시 .net 사이트의 다양한 맛은 그다지 멀지 않을 것입니다.
Erik Reppen

물론 모든 .net 사이트가 계속 작동하고 그 기능이 회사에 대해 직간접 적으로 수익을 창출하는 경우 왜 미래 모멘텀이 중요한가? 수익이 코드베이스의 품질에 직접 영향을받는 경우, 관리자는 개발자와 마찬가지로 지불 할 모기지가 있으므로 관리자가 코드를 다시 디자인하는 데 시간을 낭비하지 않을 것이라고 믿을 수 있습니다.
피터 랭

끊임없는 추진력은 일반적으로 내 경험의 첫 번째 문제의 근원입니다. 이 문제는 아키텍처의 문제에 귀를 기울이는 동안 전환 기대치가 줄어들지 않을 때 시작됩니다. 스크럼은 문제를 더 악화시키지 않으면 서 2 주마다 새로운 완전한 기능 세트를 마술처럼 개발할 것이라고 생각합니다. 나는 우리가 겪고있는 시간을 해결하는 대안을 제시 할 수 없다면 물건을 버리려는 충동에 대해 조심해서는 안된다는 말은 아니지만, 전공에 대해 적어도 두 가지 아주 좋은 사례를 보았습니다. 내 경력에 정비.
Erik Reppen

2

당신은 물었다 :

스크럼에서 개발자가 충분히 충분하다고 말할 수있는 부분은 어디에 있으며, 큰 재 작성을 시작할 시간이 필요합니까? 우리는 '스토리'로 오래된 코드를 패치하는 끝없는 루프처럼 보입니다. 따라서 코드베이스가 얼마나 나빠 졌는지 이해하지 못하기 때문에 재 작성을 원치 않는 비전문가들이 일을하고 있습니다.

관리자이자 개발자 인 사람으로서 귀하의 질문에 대한 가장 간단한 답변은 Scrum이나 다른 방법론 또는 비즈니스 시나리오에 개발자가 충분하다고 말할 힘이 있고 고쳐 쓰기. 여기서 많은 사람들이 재 작문이 왜 자주 나쁜 생각인지 설명하고 변화가 점진적이고 민첩한 방식으로 어떻게 이루어질 수 있고 설명해야하는지 설명하기 위해 훌륭하고 타당한 주장을했습니다. 그리고 나는 그들 모두에 동의합니다.

그러나 결론은 훨씬 간단합니다. 그 결정을 내릴 수는 없습니다. 당신은 직원이며, 당신이 실제로 내려야 할 유일한 결정은 "이러한 주장을 위해 계속 일하거나 나의 미친 기술을 두려워하는 새로운 직업을 찾을 것인가"입니다. 당신의 새로운 직업은 당신이 그 결정을 내릴 수는 없지만, 적어도 일을 할 때마다 당신이 운명을 통제하고 있다고 느끼게 될 것입니다.


1
여기 줄 사이를 올바르게 읽으면 새 고용을 유지할 수 없다는 것에 대해 약간 쓴 것 같습니다. 내가 틀리지 않다면, 회사에서 일하는 것을 좋아하지 않을 때 걸을 수있는 기술이 실제로 요구되는 새로운 고용인이 방정식의 유일한 불일치라고 생각 했습니까?
Erik Reppen

1
근처에도 안. 실제로 우리 부서의 직원들은 몇 년 동안 나와 함께있었습니다. 나는 사실상 뒤집지 않았습니다. 내가 만들고자하는 요점은 궁극적으로 어떤 회사 나 모든 산업에서 종업원이 수행하는 일은 종업원이 아닌 급여에 서명하는 사람에게 달려 있다는 것입니다. 직원이 내 상사가 요청할 때 포함하는 유일한 결정은 직원 관계를 유지하거나 유지하지 않는 것입니다. 원래 포스터는 직원으로서 언제 개발을 지시합니까? 대답은 결코 없습니다.
피터 랭

그렇다면 "나의 미친 skilz에 대한 두려움"특성은 무엇입니까? 이 사람은 숙련 된 개발자입니다. 그리고 비슷한 상황에 대한 경험을 통해 그가 이야기하는 문제는 자신의 길을 원하는 것이 아니라 실제로 모든 사람을 비참하게 만들고 고용주에게 많은 비용을 낭비하는 지속적인 재난이라는 것을 말할 수 있습니다. 그들이 생각했던 것보다 시간과 재능 보유.
Erik Reppen

1
나는 자아에 뿌리를 둔 기본 논증의 오류를 설명하고 있었기 때문에 (심리적 의미에서) 그는 얼마나 숙련 된지에 대한 질문이 아닙니다. 코드가 어떻게 엉망인지에 대한 질문은 아닙니다. 개발 방법론이 그를 위해 무엇을 할 수 있는지에 대한 질문은 아닙니다. 권력에 관한 질문입니다. 직원 관계에서 결정을 내릴 수있는 권한은 고용주에게 있습니다. 직원이 갖는 유일한 결정력은 너무 많이 감당할 때 관계를 취소하는 것입니다.
피터 랭

1
나는 스크럼이 기술 부채를 다루기에는 형편 없다고 동의한다. 그러나 나는 원래 질문의 근거에 동의하지 않습니다. 그는 실제로 고용주 / 직원 관계 질문을하고 있었지만 질문에 스크럼을 언급했습니다. "기독교인으로서 Enchillada를 만드는 가장 좋은 방법은 무엇입니까?" 그것은 실제로 신학 적 질문이 아니다. 종교적 취향이 적절하다고 생각하는 실수를하더라도 요리에 관한 질문입니다.
피터 랭

1

나는 당신의 고통을 느낍니다. 그러나 그것이 스크럼과 어떤 관계가 있는지 잘 모르겠습니다. 코드를 다시 작성할지 여부는 개발 프로세스에 따라 결정되지 않습니다.


2 주마다 완료 될 것이라고 약속하는 개발 프로세스는 몇 년 동안 무시되어 왔던 대규모 리팩토링에 방해가 될 수 있습니다. 스크럼 훈련에서 가장 먼저 눈에 띄는 것은 기술 부채 주제에 대한 유약의 방식입니다. 앱이 더 얇고 의미가 있으며 더 빠르게 할 수 있다고 선언하는 것은 흥미롭지 않습니다. 비즈니스 유형은 친구 나 투자자에게 보여줄 가치있는 부가 가치를 원합니다.
Erik Reppen

1

무엇을 기다립니다?

당신은 패치하고 있습니까? 리팩토링 해야합니다 . 민첩한 가치를 고수하십시오. TDD와 적절한 관행을 사용하면 상황이 더 좋아질 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.