2009-04-02 3 views
2

저는 소프트웨어 설계 및 구현의 어려움을 이해하지 못하거나 감사하지 않는 개발 관리자가 몇 명 있습니다.소프트웨어 디자인의 어려움을 개발 관리자에게 알리는 방법은 무엇입니까?

그런 관리자는 프로세스와 방법론이 문제를 완전히 해결한다고 믿습니다. 나는 그 프로세스가 문제가되지 않는다고 설명합니다. 그리고 최신 프로세스 유행에 관한 책을 읽을 수없고 결과를 얻기 위해 입니다.

내가 가진 가장 최근의 좌절감은 내 매니저에게 (으)로 설득하는 것입니다. (a) 조각식이 아니라 더 큰 설정을 요구합니다. (b) 팀에게 설계 방법, 몇 가지 대안을 찾아 내고, 구현 스케치를 작성하고, 작업을 계획하는 등의 방법을 생각해 볼 시간을주십시오.

민첩한 방법론과 해석으로 인해 좌절감이 생깁니다. 그것의 앞에 디자인을하지 말라고 (폭포의 큰 앞에서 디자인에 대해), 제품 소유자는 언제든지 아들을 요구 사항을 변경할 수 있습니다.

지금까지 나는 많은 성공을 거두지 못해서 좌절감을 견뎌야했습니다. 관리자들에게 설득력있는 의견을 제시해 주시겠습니까?

EDIT-1 : 항상 모든 스프린트가 끝난 것은 아니지만 회고가 완료되고 문제가 발생합니다. 그러나 제가 언급했듯이, 관리자는 설계 리드 타임의 필요성과 조각 식 요구 사항에 대한 좌절감을 인식하지 못합니다.

EDIT-2 요구 사항을 변경하는 데 문제가 없습니다. 나는 그것이 그렇게 되리라는 것을 이해하지만 다음과 같이 상상해보십시오 : 당신은 작은 특징을 시작하고 그 주위에 계속 더 많이 추가하고 싶습니다. 몇 번 반복 한 후에는 디자인에서 더 이상 처리 할 수 ​​없으며 리팩토링 (리팩토링이 필요하지 않음)이 필요합니다. 관련 기능을 함께 조사해봤을 때 처음부터 선행 디자인으로 더 잘 해결되었을 수있었습니다. BDUF가 아니라, 그것을하는 자연스러운 방법 (소프트웨어 공학 상식이라고 부르는 것).

관리자가 내가 재 설계 할 시간을 요청하는 이유를 이해하지 못합니다. (리팩토링이라고 부르는 몇 분간의 애착을 가지고 있지만 실제로는 재 설계입니다.) 새로운 기능을 개발 및 데모하지는 않습니다. .

+0

프로세스에서 잘 작동하고 작동하지 않는 것을 보여주기 위해 회고가 있습니까? 비록 그것이 스크럼 의존인지 모르겠지만. –

+1

이 질문은 주제가 아니라 프로그래밍과 관련하여 직장 문제와 관련이 있기 때문에 닫으려고합니다. – EJoshuaS

답변

1

민첩한 심플한 디자인은 어떤 디자인/아키텍처를 앞두고하지 않는다는 것을 의미하지 않습니다. 합리적인 변경 요청에 대해 끔찍한 대가를 지불하지 않도록 최소한의 디자인을하라는 의미입니다.

스콧 느리게 걷는 변경 사례에 대해 이야기 - 애자일 아키텍처에 대한 http://www.agilemodeling.com/artifacts/changeCase.htm 제임스 Coplien 회담 -이 모든에 http://www.infoq.com/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney http://blog.jaoo.dk/2009/03/04/handling-architecture-in-the-agile-world/

예술/공예가 할 수있는 방법으로 구조를 슬라이스하는 방법에 있습니다

  • 전반적인 아키텍처/인프라 스트럭처에서 비교적 빠른 수렴 - 예상 개발 시간의 개월 당 일 수.
  • 각 기능/요구 사항 당 "충분한"아키텍처/인프라를 개발하십시오.
  • 오늘의 기능에 초점을 맞출 것보다 미래에 대비할 적절한 균형을 유지해야합니다.

제품 소유자가이 균형 잡힌 행동을 모두 인식하고 공동 작업하는 것이 중요합니다. 그는 미래에 대한 모든 생각을 무시한다면, 각각의 변화는 비용이 많이 듭니다. 유연성을 위해 지불해야 할 대가가 있습니다.

품질 보증 및 테스트 자동화에 대한 투자와 매우 유사합니다. 이제 뭔가를 지불하면 코드를 X 번 테스트 한 후에 만 ​​지불하게됩니다. 코드가 변경되지 않으면 노력이 낭비됩니다. 하지만 모두가 대부분의 코드가 변경된다는 것을 알고 있습니다 ...

4

요구 사항이 변경 (또는 증가) 그래서

  • 견적 완료하고해야하는 때마다,
  • 위험

시작 당신이 경우에도 (업데이트 추정치를주는 평가 추측) 및 업데이트 된 또는 새로운 요구 사항을 얻을 때마다 위험 목록. 이렇게하면 관리자가 연결하는 데 도움이됩니다.

"계획을 세우기 위해"도움이되는 정신으로 - 그렇게하면 방해가되거나 "할 수있는 태도"가없는 것처럼 보입니다. 추측은 (이론적으로) 추락 할 수 있으며 위험을 줄일 수 있음을 기억하십시오.

0

관리자를 구입하십시오 this book. 그게 내가 한 일이고, 그것은 크게 효과가 있었다.

3

당신이 일하는 곳이 어디이든 비즈니스 요구 사항은 바뀔 것이다. 그건 네 잘못이 아니야, 네 상사의 잘못이 아니야, 그건 누구의 잘못이 아니야.단편적인 요구 사항을 취하는 요점은 당신이 당면한 문제에 대해 생각해 보도록 권장하는 것이지 해결할 필요가 없을 수도있는 다른 문제가 아닙니다. 일단 당신이 그것의 리듬에 빠지면 그것은 아주 자유 롭습니다.

미숙 한 디자인을 조숙 한 최적화라고 생각하십시오. 당신은 그것을 필요로하지 않을지도 모르지만, 당신이 그것을 필요로 할지라도 당신이 알고있는 것보다 2 주 후에 당신의 디자인에 대해 더 많이 알게 될 것입니다. 코드 상태에 대한 가능한 최상의 지식으로 엔지니어링 문제를 해결하는 데 도움이됩니다.

말했듯이, edg은 절대적으로 맞습니다. 추가 요구 사항을 추가하면 예상치가 변경됩니다. 이는 개발자 또는 다른 사람의 잘못이 아닙니다. 더 많은 일은 당신이 어떻게 그것을 정사각형에 상관없이 더 많은 작업을 의미합니다. 상사가 요구 사항을 추가하면 프로젝트에 대한 예상이 커진다는 사실을 깨닫지 못하면 애자일이 당신에게 더 많은 기능을 추가 할 수있는 마법의 총알이 아님을 설명해야합니다.

+0

Upfront 디자인은 코드 기반의 비효율적 인 크롤링 공포에 빠지지 않을 수도 있음을 의미합니다. 나는 선구자 적으로 설계되지 않았고 지난 몇 년 동안 진화 한 코드에 대해 작업 해왔다. 너? –

+0

그래, 지금 내 상황이야. 나는 유지 노력을 상상할 때 나는 떨린다. – trshiv

+0

저는 코드베이스에서 일 해왔고 이제는 수년에 걸쳐 반복적으로 발전해 왔습니다. 완벽하지는 않지만 정기적으로 리팩토링하고 적극적으로 테스트하며 지속적으로 구축합니다. 다른 방법은 없습니다. 소프트웨어는 건축가의 두뇌에서 완전히 형성되지 않습니다. –

0

우선이 문제는 매우 민감한 것 같습니다. 그래서 아래에 모두 쓴 것은 내 개인적인 의견이며, 반드시해야 할 일은 아닙니다.

제 생각에는 어떤 문제를 해결해야할지 모르겠다면 소프트웨어를 만들 수 없습니다. 요구 사항이 문제를 감독하기에는 너무 작은 작은 부분에 들어 있다면, 나는 빠진 부분에 대해서만 질문 할 것입니다. 마찬가지로 : "소프트웨어가 X를 수행해야하지만 Y 또는 그렇지 않으면 Z를 의미합니까? 그렇다면 Y이면 ... 그렇지만 Z이면 ..."물론 관리자가 중간에 있다면 요구 사항을 추출 할 때 대답 할 수는 없지만 적어도 개발에 영향을 미치는 열린 이슈가 있음을 알고 있습니다.

디자인 리드 타임이 없음 : 디자인과 개발은 반복적 인 프로세스로 진행됩니다. 그것은 당신이 그 이름을 짓는 것입니다. 관리자가 하루가 끝날 때 몇 가지 코드를보고 싶다면 이제는 디자인의 첫 번째 절반과 그 디자인을 기반으로하는 코드를 만들기 위해 하루의 후반을 사용하는 것이 좋습니다.관리자가 디자인을보고 싶지 않으면 저와 함께 코드를 보여 드리겠습니다.