압력을받을 때 잘못된 코드를 작성합니까? [닫은]


14

압박을 받고있을 때 마감 시한이 다가오고 관리자가 목을 숨 쉬고 있습니다. 자신이 잘못된 코드를 작성하기 시작하십니까? 일을 끝내기 위해 TDD와 모범 사례가 길가에 미끄러 져 있습니까? 그런 상황에서 무엇을하십니까? 당신의 경험은 무엇입니까?


내가 생각해 낸 가장 큰 최고의 혁신 중 일부는 즉각적이고 긴급한 요구의 산물이었다. 때로는 전투의 열기로 인해 혹독한 기술과 장인 정신이 영감을주지 않는 날카로움에 초점을 맞 춥니 다.
user1172763

답변:


31

한마디로 그렇습니다. 다른 방법으로 말하는 사람은 아마 실수 일 것입니다.

그러나 핵심은 나쁜 코드를 작성하는 경험을 쌓는 것입니다 . 그것이 가능하지 않다면 가능한 한 "만약 작동"할 수있는 무언가를 넣으려는 유혹에 저항하십시오. 여전히 어떤 종류의 프로세스를 따라야합니다 (자체 또는 회사 또는 이들의 혼합).

경험에 따르면 , 특히 "압력을 받고있는 상태"가 신속하게 생산을 릴리스 할 때 일주일의 수정을 막기 위해 며칠 동안 일정을 늦추는 것이 훨씬 낫습니다 . 코드 릴리스를 서두르면 테스터가 서두르면서 고무 도장을 할 것입니다.


나는 게시물에 더하기 10을
주겠다고

16

팀이 위기에 빠지면 무언가 잘못되었습니다.

마감 기한이 지났다는 것은 계획과 추정이 좋지 않다는 신호입니다. 마감 시한을 놓치면 문제를 해결하십시오. 계획 이나 추정을 통제 할 수없는 경우도 있습니다 . 누가하고 있는지 확인하고 이것이 잘못되었다는 것을 확인하십시오.

마감 시간을 옮길 수없는 상황에서는 카페인이 많은 음료를 꺼내서 서두를 것입니다. 희생 할 수있는 것을 찾아서 잘라내십시오. 남은 것을 가져 가서 최대한 빨리 구현하십시오. 이로 인해 불안정성, 홀수 오류, 비효율적 인 코딩 방법, 반창고 수정 및 기타 모든 종류의 공포와 같은 문제가 발생합니다. 반드시 나쁜 코드는 아니지만 이상적이지않습니다 .

사람들이 실제로 더 많은 문제를 해결하고 99 % 솔루션보다 더 오래 살아남는 50 % 좋은 솔루션은 실험실에서 끝없이 다듬어지고 있기 때문에 아무도 가지고 있지 않은 솔루션입니다. 배송은 기능 입니다.

소프트웨어에서 Joel 의 덕트 테이프 프로그래머 .

처리 하면 이상적인 코드를 처리 할 수 ​​없습니다 . 다루지 않은 코드는 쌓여서 불가능하지는 않지만 추가 변경을 더 어렵게 만듭니다. 응용 프로그램이 상호 의존적으로 함께 테이프로 묶여 가장 신중한 프로그래머 만 엄청난 시간 비용으로 추가 작업을 수행 할 수 있습니다. 배송은 기능이므로 유지 관리가 용이합니다.


1
내가 바꿀 유일한 것은 당신의 요점에서 "당신"이라는 단어입니다. 팀의 모든 구성원에게는 잘못 될 수있는 여러 가지 요인이 있으며, 외부의 모든 의존성에는 잘못 될 수있는 몇 가지 지수 요인이 있다고 주장합니다. 혹은 그 반대로도. ;)
Sanko Wonko

2
@ ysolik : rewording을 참조하십시오. 계획이나 추정이 FUBAR '되었다는 것은 당신의 잘못이 아닐 수도 있습니다.
Josh K

2
@ ysolik : 마감 시간을 맞추기 위해 이상적인 코드를 작성하고 나중에 수정할 수있는 기회를 얻으십시오. 적절한 계획을 세우면 이런 일이 발생하지 않습니다.
Josh K

2
절대 말하지 마라 ... :)
Wonko the Sane

3
@ 원코 : 맞습니다. 적절한 계획을 세우면 거의 발생 하지 않습니다 .
Josh K

7

저는 소프트웨어 장인 정신의 열렬한 팬입니다. 최선을 다해 깨끗한 코드를 작성하는 등 시간이 짧고 마감 시간이 다가오는 순간에는 서두를 필요가있었습니다. 나는 최선을 다해 최선을 다하려고 노력하지만 때로는 그로부터 벗어날 수 없습니다.

어떤 사람들은 "그게 인생이야, 배를 가져와야 겠다 " 고 말할 것이지만 나는이 태도에 정말 동의하지 않습니다.

급한 코드를 작성할 때 소프트웨어를 제 시간에 출시하지 못할 수도 있지만 다음 며칠 동안 소프트웨어 버그 (같은 부분에 존재하는 버그)와 관련된 지원 요청을 받으면 어떻게됩니까? 완료하기 위해 서두른 코드). 또는 출시 당일에 괜찮을 것이라고 약속했지만 보고서 모듈이 더 이상 작동하지 않는 이유를 묻는 화가 난 클라이언트가 생겼습니까?

그것은 "당신은 배를 가져야한다" 라고 아주 잘 말하지만, 효율적으로 보이는 것과 조잡한 작업자처럼 보이는 것에는 차이가 있습니다.


5

예. 그러나 그것은 항상 나중에 나를 괴롭히기 위해 돌아옵니다.


2

스트레스가 많은 상황에서 내 코드는 작업을 완료하기위한 것입니다. 그게 다야. 나는 나의 의견에 나쁜 효율성과 다른 문제에 집중하지 않습니다.

그래도 노력하겠습니다.


마우스 오른쪽을 확인, 그것이 작동되도록 빨리 확인 : c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast
주하 Untinen

1

나는 개인적으로 훨씬 더 나쁜 코드를 작성한다고 생각하지 않지만 더 나쁜 제품을 제공합니다.

자의적이고 불가능한 마감일에 직면했을 때, 우리는 개발 과정을 건너 뛰었습니다. 우리는 더 피상적 인 코드 검토를 수행하거나 완전히 생략합니다. 스팟 체크 타입 통합 테스트에 대해서는 세부 테스트를 생략하고 통합 테스트를 공식 자격으로 계산하려고합니다. 통과 실패 기준과 직접 관련이없는 경우 테스트 중에 이상을 간과하는 경향이 있습니다. 문서 업데이트를 건너 뛰고 릴리스 정보를 다시 확인하지 않으며 더 이상 필요하지 않은 파일의 결과물 목록을 제거하는 것을 잊지 마십시오.

크런치 중에 작성하는 소스 코드는 품질이 높을 수 있지만 거의 확실하지 않은 제품의 일부로 제공 될 것입니다.


0

다릅니다.

모든 작업을 수행 할 수있는 방법이없고 출시 전 몇 시간 동안 새로운 주요 기능이 추가되고 있기 때문에 압력이 발생합니까?

잘못된 코드가 나타납니다!

그러나 일정이 실제로 정말 빡빡하기 때문에 전체 계획이 견고하고 평소보다 훨씬 열심히 노력하고 몇 가지 기능을 듣고 수정하면서 지속적으로 집중해야합니다. 일정이 많은 시간을 허용한다면. 그것이 모든 단위 테스트를 작성하지는 않지만 코드의 주요 부분을 다루는 것을 의미하더라도.


Oooh-마지막 문장이 저를 두렵게한다는 점을 제외하고는 좋은 의견입니다.
Sanko Wonko

잘. 그렇다고 결코 쓰여지지 않을 것이라는 의미는 아닙니다. 무섭지 만 집중하는 데 도움이된다고 생각합니다. 그리고 100 % 적용 범위가 아닌 단위 테스트가 있습니다. 66 % 더 좋아
ElGringoGrande

유일한 문제는 다루지 않은 34 %가 ​​서둘러 넣은 새 코드이며, 변경 사항을 모두 위반할 가능성이없는 이미 확립 된 코드가 아니라는 것입니다. 우리가 다하지 않았다고 말할 수는 없으며, 그 제안은 무서운 제안입니다.
Sanko Wonko

0

압력을 받아 나쁜 코드를 작성하지 않는 사람을 알고 있습니다. 그는 또한 당신이 관심을 가질만한 마술 콩을 가지고 있습니다.

모두가 때때로 잘못된 코드를 작성하고 마감일이 다가오는 것이 일반적인 이유입니다. 트릭은 처음에는 그러한 상황에 빠지는 것을 피하는 것입니다.

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