언제 과잉이됩니까?


10

먼저 커뮤니티 스레드를 만드는 방법을 모르는 이유를 사과드립니다. 누군가 나를 도와주세요.

많은 플랫폼, 기술, 심지어 인프라 수준에서 개발자로서; 나는 내가 너무 많이 할 때 항상 묻는 자신을 발견!?

내가 시작한 이래 결코 끝나지 않는 학습 과정이었습니다. 내가 배운 것 중 하나는 요구 사항이 오랜 기간 동안 거의 유효하지 않으며 약간의 예측은 먼 길을 갈 수 있다는 것입니다.

그러나 균형은 어디에 있으며, 시간을 잃을 때를 어떻게 알지 못합니까?!


1
지금 고객이 없을 때 처음부터 백만 명의 사용자를 위해 확장하는 것과 같은 것에 대해 이야기하고 있습니까? 또는 세금 계산이 변경 될 것이라는 제안이 없을 때 세금 계산이 "구성 가능"하게하는 것과 같은 더 기능적인 일이 아무도 없을지라도이 가상의 신세계에서 어떻게 작동 할 수 있을지 전혀 모릅니다.
Jon Hopkins

1
커뮤니티 위키는 더 이상 사용되지 않습니다. 실제로 계획대로 작동하지 않았습니다. 걱정하지 마십시오.
David Thornley

백만 명의 사용자에 대해 이야기 할 때, 과잉 행위는 어휘에 속하지 않아야합니다.
Theofanis Pantelides

답변:


12

일반 개발자가 코드를 읽음으로써 수행 한 작업을 이해할 수 없을 때 너무 많은 일을하고 있습니다 .

  • 팀과 자주 코드를 검토하십시오.
  • 사용하려는 아키텍처, 기술 또는 패턴에 대해 토론하십시오. (매일 일 어설 경우)

나는 모든 CV 중심의 "건축가" 와 싸운다 . 돔이 존재 했으면 좋겠다 ! ;)

나는 세상이 대신 (프로그래머의) 삶을 향상시키기 위해 사용할 수있는 엄청난 돈을 낭비하고 있다고 믿는다.


5
"나는 내가 만난 모든 CV 주도"건축가 "와 싸운다 :)
Gratzy

2
불평등 한 수준의 개발자가 있다고해서 반드시 (실제적으로) 이것에 동의하지는 않습니다. 아마 공통 프로젝트를 사용하기 위해 유사한 프로젝트를 리팩터링하고 항상 이전처럼 읽을 수있는 것은 아닙니다.
Theofanis Pantelides

1
모든 팀원이 작업중인 소스 코드를 충분히 이해하도록하는 것이 매우 중요합니다. 프로젝트의 부와 건축가가 자신의 구현의 노예가되는 것을 피하십시오. 따라서 지식에 차이가 너무 많으면 먼저 수정하십시오.

1
나는 당신의 첫 문장을 좋아합니다. 코드의 명확성이 중요합니다. 그러나 빈번한 코드 검토? 매일 회의 에서 건축 토론 ... 정말? "CV 주도 건축가"란 정확히 무엇을 의미합니까?
Robert Harvey

1
빈번한 코드 검토는 자동이어야 함을 의미합니다. 동료 중 하나가 기능을 작성하고 검토하여이를 검증해야합니다. 그가 당신에게 질문을한다면, 당신은 코드를 개선하기 위해 함께 일합니다. 스탠드 업 동안 설계상의 문제에 대해 언급했지만 나중에 논의가 이루어집니다. 건축가가 필요한 사람을 읽으십시오 ( martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf ). 당신이 당신의 이력서에 그것을 원하기 때문에 CV 구동 수단은 당신이 기술을 선택할 것

11

프로세스가 결과를 추월 할 때

개발자가 결과 (품질, 마감 시간 등)가 아닌 프로세스에 더 집중하면 나쁜 일이 시작되는 경우가 너무 많습니다.

그렇기 때문에 코드 검토, 디자인 패턴 등의 목적은 코드를 개선하는 것이지만, 그 자체가 목표는 아닙니다.


4

저에게 Kent Beck이 XP에서 제시 한 접근 방식이 마음에 듭니다 ( "그의"아이디어인지 다른 사람의 아이디어인지 확실하지 않지만 처음 들었던 곳).

내일의 문제가 무엇인지 해결하지 않고 오늘날의 문제를 해결하는 것만으로는 충분하지 않습니다.

개발자는 존재하지 않는 요구 사항, 절대 발생하지 않는 최첨단 사례 또는 문제의 영향이 문제를 예방하는 비용보다 현저히 적은 실제 문제에 대한 솔루션에 많은 시간을 할애 할 수 있습니다.

지금은 사용자가 실제로 원하고 사용하는 것에 넣을 수있는 시간이며, 이러한 일 중 하나가 실제로 발생하지 않을 경우 발생할 수있는 불편 함보다 훨씬 큰 이점을 제공 할 수 있습니다.

이러한 비 최적화 사용자에 대한 결과 외에도, 이러한 방식으로 과도한 엔지니어링 개발자에게 미치는 영향은 지원하기 어렵고 개선하기 어려운 복잡한 코드에 비해 경향이 있습니다.

그래서 당신이 알고 있거나 상당히 확신 할 수 있다면, 무언가가 요구 사항이거나 문제를 일으킬 것이라고 생각한다면 문제가되지 않는다면 해결하십시오.

원래 구현 한 것보다 더 넓은 요구 사항이있는 것으로 판명되면 다시 돌아와서 다시 작업해야 할 수도 있지만 일반적으로 프로젝트 전체에 투입되는 총 노력은 여전히 ​​낮지 않습니다.


모든 것을 모듈화 한 다음 확장 할 때 모듈을 교체하는 것은 어떻습니까? 아니면 그 과잉인가!?
Theofanis Pantelides

1
@Theofanis Patelides-잘 구조화 된 코드는 항상 좋은 생각이지만 대부분의 경우와 마찬가지로 너무 멀리 갈 수 있습니다. 많은 것들이 시간이 지남에 따라 본능이된다고 생각합니다. 당신은 이전에 해왔 던 일과 시간 낭비 인 것을 알고 있습니다.
존 홉킨스

1

귀하의 질문은 매우 개방적이므로 "프로젝트의 한 부분에서 너무 많은 일을"하는 것으로 해석합니다.

저에게는 고객에게 큰 이익이되지 않는 것에 너무 많은 시간을 투자하는 것이 쉽습니다. 종종 고객이 이런 식 으로든 다른 방식 으로든 신경 쓰지 않을 것입니다.

그런 일이 생기면 나는 그 일을 멈추고 더 중요한 일에 시간을 보냈습니다. 제품이 전체적으로 작동하는 것보다 낫지 만 완벽하게 작동하는 작은 부품이 있습니다.

Code Complete의 추적 프로그램 코드 작성 은이를 피하는 것이 좋습니다. 전체 코드를 GUI (또는 그 근처)에서 백엔드로 연결 한 후 다시 연결하는 코드를 작성하여 프로젝트를 시작합니다. 그렇게하면 항상 작동하는 것이 있으며 모든 것이 실행될 때까지 작은 것을 완성하는 데 시간을 소비하지 않습니다.

그러나 여전히 징계와 우선 순위의 문제입니다.


동의하지만, 여러 시간 동안 기능을 소비 한 다음 기술이 아닌 최종 사용자에게 전달하고 사소한 일로 인해 기능을 중단하는 경우가 많습니다.
Theofanis Pantelides

1

내가 "아니오"라고 대답하지 않을 때 나는 이것을 나중에하지 않았고 그것은 나를 물었다.

IRL 리소스 및 시간 제약 조건은 일반적 으로이 질문을 많이하기 전에 저를 얻습니다. 이 시점에서 가장 중요하고 달성 가능한 비트에 집중하고 최선을 다하겠습니다.


1
나를 위해 계획 A에서 벗어나는 것보다 더 자극적 인 것은 없습니다
Theofanis Pantelides

1

끝없는 학습 과정! ... 그런 식으로 유지됩니다! 균형은 일이 충분히 효율적일 때이며 프로그래밍과는 별도로 다른 일을 할 시간이 있습니다. 나는 "징계와 우선 순위의 문제"인 gablin과 짐 홉킨스가 잠시 후에 본능이된다는 것에 동의 할 것이다. 작은 부품을 완벽하게 만드는 것이 우리를 행복하게하지만 결국에는 최종 사용자를 행복하게하는 것입니다. 그래서 균형 (또는 타협)은 최종 사용자 / 고객 / 고객을 먼저 행복하게 만들고 (계획 A 여야 함) 완벽에 시간이 있다면 "작은 부품"을보다 효율적으로 만들고 / 또는 당신이 원하는 다른 모든 것. 어떤 시점에서 당신은 "충분히"라고 말해야합니다 :) 그렇지 않으면 예, 그것은 과잉이 될 것입니다!

물론 최악의 시나리오는 최종 사용자 / 고객 / 클라이언트가 당신입니다! :)

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