태그 보관물: bad-code

bad-code

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

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



답변

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

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

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


답변

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

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

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

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

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

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


답변

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

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

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

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


답변

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


답변

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

그래도 노력하겠습니다.


답변

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

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

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


답변

다릅니다.

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

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

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