프로그래밍에서 해로운 유혹


97

궁금한 점은, 프로젝트에서 어떤 종류의 프로그래밍 유혹이 실제로 해로운 것으로 판명 되었습니까?

실제로 무언가를하고 싶은 충동을 느끼고 그것이 프로젝트에 도움이 될 것이라고 생각하거나 또는 자신을 속여서 그것을 믿는다 고 생각할 때와 같이, 일주일 후에는 실제 문제를 해결하지 않고 대신 새로운 문제를 만들었 음을 깨닫게 됩니다. 최선의 경우, 눈에 띄는 영향이없는 내면의 짐승을 기쁘게합니다.

개인적으로 나쁜 코드를 리팩터링하지 않는 것이 매우 어렵다는 것을 알았습니다. 나는 많은 나쁜 레거시 코드로 작업하고 있으며 리팩토링이 아무 것도 깨지지 않는다는 것을 테스트 할 테스트가 없을 때 그것을 만지지 않기 위해 약간의 숨을 쉬어야합니다.

사용자 인터페이스의 또 다른 악마는 말 그대로 UI 레이아웃을 변경하는 데 시간을 할애 할 수 있다는 것입니다. 때때로 나는 유용성에 노력하고 있다고 말하지만 사실은 버튼을 움직이는 것을 좋아합니다.

프로그래밍 악마는 무엇이며 어떻게 피합니까?


19
나는 아무도 당신의 질문의 두 번째 부분에 대답 할 수 없었습니다.
Craige

3
누구든지 이것이 하루 종일 SE의 가장 큰 질문이라는 것을 알았습니다.
msarchet

"... UI 레이아웃을 변경하는 데 시간이 걸립니다 ..."에 대해 +1 너무 자주 함정에 빠집니다.
7wp

답변:


67

조기 일반화는 나의 큰 bugaboo입니다. 문제를 먼저 해결하고 일반적인 경우에 실제로 해결해야 할 때까지 기다리지 않고 항상 일반적인 경우를 먼저 수행하고 필요한 것보다 복잡한 코드를 작성합니다.

최신 정보:

자세한 설명은 " 죄 # 1-조기 일반화 "를 참조하십시오 .


6
건축 우주 비행사가 그렇게 할 때 나는 그것을 싫어!
ozz

13
아, metafactoryfactories의 기쁨 :(

+1 "훌륭한 디자이너를 대상으로 한 연구에 따르면 변화를 예상하는 데 모두 능숙하다는 것이 밝혀졌습니다" 어떤 종류의 변화가 일어날 지 알 수있는 것이 좋습니다. 그런 다음 더 일반적인 경우를 해결하여 얻을 수있는 것이 있는지, 나중에 시간을 절약 할 수 있는지 여부를 결정할 수 있습니다. 때로는 그만한 가치가 없지만 나중에 코드를 수정하는 것만 큼 쉽습니다.
MarkJ

1
YAGNI (당신은 그것을 필요로하지 않습니다) 원리 에 대해 들어 보셨습니까 ?
Oscar Mederos 10

1
이. 예쁘고 일반화되고 재사용 가능한 코드를 만드는 것이 매우 만족 스럽습니다. 특히 문제 자체가 매우 도전적이지 않고 / 또는 이전에 한 일을 다시 해시하는 경우에 책임이 있습니다. 예를 들어 일반적인 CRUD 데이터베이스 작업 (UI, 사용자 작업에 응답, DB로 작업 수행).
크 툴후

197

"우리는이 문제로 돌아와서 나중에 고칠 것입니다. 지금 작동해야합니다!"


16
이것은 절대 악마입니다.
alesplin

6
가능하다면 +100을 줄 것입니다. "나중에"절대 발생하지 않습니다. 처음부터 올바르게하거나 전혀하지 마십시오.
quick_now 2012

12
이것이 나쁜 코드를 리팩토링하는 데 시간을 소비하는 것이 아닌가? 우리는 세상을 "나중에 고칠 것"이지만 그렇지 않은 프로그래머와 처음으로 올바르게 해보려고하는 프로그래머, "불량한 코드를 리팩토링하는"시간으로 나눌 수 있습니다.

6
이것을 "우리는 다시 와서이 다음 반복을 고치겠습니다"라고 다시 말하면 훨씬 더 체계적으로 들립니다.
Chris S

4
당신은 해야한다 이렇게. 당신이 그것을 완벽하게 만들기 위해 모든 시간을 보낸다면 결코 배송되지 않을 것입니다. 프로젝트를 완료 닦으십시오.
Zan Lynx

105

마감일이 먼 곳에 있습니다. 시간이 충분하기 때문에 웹 서핑에 약간의 시간을 보내지 않겠습니까?


72
"web"을 "programmers.stackexchange.com"으로 대체 :)
davidhaskins

1
웹에서 읽을만한 가치가있는 것이 있습니까? 나는 다른 것이 잊혀졌다!
James McLeod

3
일명 '
아빠

1
@david, 그것은 웹의 시작점 일뿐입니다. 질문은 당신이 얼마나 멀리 도달했는지입니다.

'애자일 때문에 더 이상 유효하지 않습니다.
vartec

103

"이것은 단지 획기적인 개념 증명 코드입니다. 일단 그들이 그것을 좋아하면, 나는 그것을 정말로 좋게 만들 것입니다."


13
이를 빠른 응용 프로그램 개발이라고합니다. 비즈니스 환경에서는 절대 작동하지 않습니다. :)
John Kraft

12
저에게는 다른 방법이라는 것이 재밌습니다. 정확히 필요한 경우에도 버리기 코드를 작성하게 할 수는 없습니다.
Dan

6
나는 금융 분야에서 일하고 있으며 RAD는 여전히 강세를 보이고 있습니다. 특히 VBA / Excel과 같은 것들입니다. 그래도 요령이 있지만, RAD는 실수를 의미 할 필요는 없습니다.
Ian

5
그리고 때로는 2 년 동안 응용 프로그램을 완성하는 데 도움이되는 사람은 사다리를 올라가는 사람이 "아, 우리는 그렇게 할 수 없습니다"또는 다른 버전의 "마음이 없다"고 판단했기 때문에 버리기 코드가됩니다.
PSU

12
이. 나 : "이것은 내 개념 증명 일뿐입니다. 원한다면 프로덕션 버전을 작성하겠습니다." 관리자 : "버전이 작동합니다. 배송 해 드리겠습니다!" 나 : "이것은 모든 사용 ca를 커버하지는 않습니다.

74
  1. 릴리스 며칠 전에 코드 일부를 리팩토링했습니다 .
  2. 인터넷 : 모두 의 가장 큰 방해.
  3. 새로운 기술 : 새로운 기술에 손을 댈 수 없습니다.
  4. 최적화 : 최적화, 최적화 .. 그리고 더 많은 최적화
  5. 완벽 : 코드에 결코 만족하지 않았습니다.
  6. 해야할 일 : 결코 할 수없는 할일 부족.
  7. 시간 추정 : 많은 PM이 이것을 "추정"으로 간주하지 않습니다. 그들은 사실로 받아들입니다.
  8. 약속 : 약속이 너무 많습니다.

1
한때 큰 방에 100 명이있는 프로젝트에서 일했고, 2 대의 공유 PC만이 인터넷을 사용했습니다. 생산성이 매우 높았습니다. 경영진은 모든 사람에게 인터넷을 제공하고 왜 업무 성과가 절반으로 떨어졌는지 궁금해했습니다.
quick_now 2012

2
시간 추정 과 관련하여 ... 많은 관리자들이 가격 협상 과 같은 협상의 출발점으로 생각합니다 . 잘못 안내되었지만 실제로 평균보다 높은 사실로 받아들이는 사람들
dbkk

@quickly_now 인터넷을 차단하면 데이터를 입력하거나 일상적인 수정과 같은 일상적인 작업을 수행 할 수 있습니다. API 문서 / 예제 코드를 찾는 등의 비정상적인 일이 많은 경우 Google이 친구입니다. 스스로 알아내는 데 5 배 더 시간이 걸립니다. 또한 사람들이 동기를 부여받지 않고 산만 해지기를 원하는 경우 길을 찾을 수 있습니다.
dbkk

@dbkk-예. 그것은 모두 Ada에 있었고, 조회 할 API가 없었으며, 특수 하드웨어에 있었고 국가 보안이 분류되었습니다. 분류되지 않은 인터넷 연결 시스템을 해당 환경에 배치하는 것도 보안 악몽이었습니다.
quick_now

55

기존의 프레임 워크와 라이브러리가있을 때 사내에서 모든 것을 구축하려고 노력합니다.


6
때로는 기존 프레임 워크 및 라이브러리에 IT 법률에 따라 Verboten이 큰 빨간 글씨로 표시됩니다.
Christopher Mahan

22
물론 반대되는 유혹 : 익숙하지 않은 프레임 워크 또는 라이브러리를 사용하고 필요한 작업을 수행하고 모든 것이 원활하게 진행된다고 가정합니다.
Carson63000

"하지만 그것은 단지 쓰기 일주일 걸릴거야, 그리고 우리의 프레임 워크는 우리가 원하는 정확히 무엇을 할 것인가, 무료 한 온라인 하나는 버그 아마 가득"

2
@Christopher : 그렇다면 다시 구현해야하는 좋은 이유가 될 것입니다 (또는 허용 가능한 라이센스가있는 다른 라이브러리를 찾으십시오). 그러나 너무 자주 재 구현해야하는 이유는 단지 NIH입니다.
Donal Fellows

@Carson : +1 :-)
Macke

48

반복되는 악마 : 조기 최적화 및 과도 엔지니어링.

그리고 나는 여전히 그들을 100 % 피할 수 없습니다 ...


10
오버 엔지니어링 +1 나는 한 번 .INI 파일, XML 파일, 데이터베이스 테이블 및 네트워크 소켓 "구성 매개 변수 어댑터"로 전체 "구성 프레임 워크"를 썼다 (모두 오른쪽 구성 웹 서비스를 호스팅하고 싶어하기 때문에?)
TMN

8
조기 과잉 엔지니어링?
Christopher Mahan

@Chris "조기 오버 엔지니어링"도 적용됩니다. 다른 답변 에서도 언급되었습니다 . 나는 그것이 나의 banes 인 것을 안다.
Matthew Scharley

조기 최적화 된 메가 엔지니어링은
어떻습니까

4
이 내 꺼야. 나는 관리에 책임을지고 나에게 무료 통치 / 먼 미래의 마감 시한을 주었고 특정 구성 요소에 대한 마감 시한을주지 않았다.
크 툴후

46

지나치게 낙관적 인 추정

당신의 관리자가 당신을 쳐다보고 있고, 당신의 직감이 말하는 것보다 더 낮은 추정치를주는 불타는 느낌을 느끼면 ... 하지 마십시오!

결국, 당신의 내장은 이미 너무 낮을 것입니다!


13
그들이 실제로 그렇게 오래 걸릴지 물으면, 예라고 말하고 어색함을 느낄 때까지 조용히 앉아 ...
PeterAllenWebb

4
대학 교수님이 한 번 "최고의 견적을 찾아서 두 배로 늘리십시오"라고 나에게 말했습니다. 그것은 지금까지 나를 위해 일했습니다.
zzzzBov 2019

2
또는 SMBC 접근을 시도하십시오 .
detly

4
저의 오래된 상사 중 한 명이 개발자 추정치를 3 배로 늘린 후 고객과 두 배로 협상했습니다. 고객은 거래가 있다고 생각했고 개발자는 모르는 경우에도 필요한 시간을 가졌습니다. 윈윈!
DaveE

2
증거 기반 스케줄링이이 문제를 해결하는 데 도움이 될 수 있습니다. joelonsoftware.com/items/2007/10/26.html
Rei Miyasaka

33

방금 배운 것이기 때문에 프로젝트에서 기술 / 도구 / 언어를 순수하게 사용하는 것.

개발자가 얼마나 좋은지 증명하려고 노력합니다.

자신이 작성한 코드를 고려하십시오.


내가 그렇게 할 때마다 그것을 공표 할 수 있다면. 운 좋게도 솔루션의 절반이 꽤 좋았습니다. 절반은 그렇지 않았다.
Dan

또는 아직 전혀 배우지 않은 것. 스퍼를 묶는 것을 잊지 마십시오.
Evan Plaice


31

최악의 유혹 :

오, 음 .. 더러운 작은 속임수 / 해킹 / 수정이 다 치지 않을 것 같아요.

무슨 일인지 아프게 해 :)

이동


11
"게이트웨이 수정"
Mark C

4
goto문장을 사용하면 랩터 공격이 발생합니다.
Maxpm

1
@Maxpm : 좋은 생각입니다! 포함되어 있습니다.
Goran Jovic

1
@Mark C, 게이트웨이 수정이란 무엇입니까? 내 gøøgle-fu는 충분하지 않습니다.

1
@ Thorbjørn Ravn Andersen : en.wikipedia.org/wiki/Gateway_drug_theory
지미


23

기능 크리프

계획을 세우고이를 지키고 배포하십시오. 그런 다음 돌아가서 사람들이 요구하는 것을 추가하십시오.

나는 이것을 반복해서 보았다. 앉아서 디자인 작업을하고 코딩을 시작합니다. 사용자는 자신이 좋아하는 기능이 "누락"되었다는 혼란스러운 말을 듣고 로비를 시작합니다. 상사는 11 시간 째에 추가를 요구하고, 배치를 파기하고, 모든 곳에서 버그를 발생 시키며, 3 개월 후에 모든 사람이 정산되면 제거하라는 메시지가 표시됩니다. 처음에는 그 끔찍한 복고풍 기능! 나머지 디자인이 무의미하다는 말을 할 수 없습니까?


첫 번째 PM (현재 해고 된)은 소프트웨어 개발에 대해 전혀 알지 못했고 완전히 비현실적인 릴리스 일정을 설계했기 때문에 사양을 고정하지 않고 양보로 공개했습니다. 최악의 생각.
Evan Plaice

20
  1. 더 많은 기능 추가

  2. 경쟁에는이 기능이 있습니다. 따라서 이것은 전략, 위치 결정 등을 분석하는 것보다 많은 프로그래밍 기능을 가지고 있어야합니다.

  3. 대회에는이 기능이 없습니다. 따라서 이것은 차별화 된 기능이므로 분석 전략, 위치 결정 등보다 더 많은 프로그래밍이 가능합니다.

  4. 더 많은 프로그래밍으로 비즈니스 문제를 해결합니다. 예를 들어, 더 많은 기능을 프로그래밍하면 웹 사이트가 호스팅되는 Linux 서버 관리에 대한 전문 지식을 향상시킬 수 없습니다. 때로는 모든 것을 C # .Net으로 다시 코딩하는 대신 문제를 해결하는 방법을 배워야합니다.

  5. 더 많은 프로그래밍으로 마케팅 문제를 해결합니다. 예를 들어, Seth Godin의 자주색 암소 개념을 남용하면 제품에 더 많은 기능을 프로그래밍하여 "보라색 암소"로 만드는 마케팅 문제를 간접적으로 해결하고 있습니다. 때로는 돌연변이 괴물 일 수도 있습니다.

  6. 이 스크립트를 작성하는 데 소요되는 시간이 실제로 중요한 것을 실제로 프로그래밍하는 대신 몇 시간 안에 다시 저장 될 것이라고 주장하는 더 많은 프로그래밍으로 생산성 문제 해결

  7. "올바르게"원하기 때문에 코딩 계획 중이지만 아직 코딩하지 않은 계획

  8. 더티 버전을 코딩하고 "나중에 더 나아질 것"이라고 약속하지만 "더 나아질 것"으로 돌아 가지 않을 것

  9. "매우 번거롭기 때문에"목업이나 사이트 맵을 수행하지 않습니다. 나는 경쟁 업체의 페이지를 스크린 샷하고 절대 손으로 그리는 사이트 맵 "나중"을 그릴 수 있습니다. 그런 다음 내가 생각하는 첫 페이지를 바로 프로그래밍하십시오.

고백 : 나는 개인적으로 실수 1, 3, 7, 8을했습니다. 또한 2, 4, 5, 6을 만들었지 만 종종 내가하지 않았다는 사실을 저 자신에게 회피했습니다.

나는 현재 9를 고치고 있습니다.

편집 문제가 우리가 해결책을 제시해야한다는 것을 깨닫지 못했습니다.

1) 더 많은 기능 추가 하지 마십시오. 비즈니스, 마케팅, 창립자, 고문 등과 함께 작업하고 응용 프로그램을 단 하나만 제거하십시오.

트위터, Groupon 등에 대해 읽으면 성공으로 이어진 단 1 가지로 사물을 제거하는 방법 에 대해 읽 습니다.

대기업을 건설하려는 경우에만 효과가 있다고 생각되면 다시 생각하십시오. 이 라인에 대한 Ctrl 키 + F "나는이 소프트웨어에 추가하는 더 많은 기능은 더는 판매하고있다. (이것은 대부분의 소프트웨어 개발자, 말, 매우 직관적 필요도 없다.)"에 이 링크

2) 대회에는이 기능이 있습니다. 이 기능이 있어야합니다

해결책 1 참조

3) 대회에는이 기능이 없습니다. 이것은 차별화 된 기능입니다

해결책 1 참조

4) 더 많은 프로그래밍으로 비즈니스 문제 해결.

당신을 가르치기 위해 누군가를 고용해야하거나, 상담을하거나, 당신을 위해 그것을하고 어떻게 그 일을했는지 ​​문서화하여 다음에 스스로 할 수있게하십시오. 그냥 해!! 코드를 다시 쓰지 말고 GO를 통과하지 말고 $ 200를 모으지 마십시오.

5) 더 많은 프로그래밍으로 마케팅 문제 해결.

사람들이 당신이 판매하는 것을 이해하지 못하면 마케팅 문제입니다. 솔루션 1로 돌아가서 피벗하십시오.

6) 더 많은 프로그래밍으로 생산성 문제 해결

기다림.

생산성에 2 주 이상의 기간 동안 특정 생산성 문제가 발생하여 2 주 동안 합리적으로 발생한다고 느낄 때까지 기다리십시오.

이제이 문제를 해결하기 위해 스크립트를 프로그래밍하는 데 소요 된 시간을 평가하십시오. 최악의 추정치를 취하고 2를 곱하십시오.

예상 시간에 시간당 요금을 곱하십시오.

이제 대체 솔루션 검토 : 아웃소싱, 상용 솔루션 구매, 관련 조치 없음 등

가장 비용 효율적인 솔루션을 선택하십시오.

그것에 충실하십시오.

7) "올바르게"얻기를 원하기 때문에 코딩 계획 중이지만 아직 코딩하지 않은 경우

운동을하세요. 엉덩이에 동기를 부여하고 행동 계획을 세우는 엔돌핀이 급증합니다. 방금 5x5 벤치 프레스와 5x5 스쿼트를했기 때문에 이것을 알고 있습니다.

8) 더티 버전을 코딩하고 "나중에 더 나아질 것"이라고 약속하지만 "더 나아질 것"으로 돌아 가지 않을 것

GTD에서 티 클러 파일 시스템을 설정하십시오. 적극적으로 후속 조치를 취합니다. 자신과 다른 사람들에게 모든 약속을 따르십시오.

9) 모형 또는 사이트 맵은 "매우 번거롭기 때문에"하지 않습니다.

balsamiq 모형 데스크탑 에디션에 75 달러를 지출하십시오. 3 주 전에 샀기 때문에 이것을 알고 있습니다. 현실 세계에서 내 그림이 짜증이 나더라도 아티스트, 건축가 및 공상가처럼 느껴지기 때문에 실물 모형을 다시 만들었습니다. balsamiq에 사용 된 글꼴은 무의식적으로 RAD에서 도움이되는 석재가 아닌 모형이라는 것을 상기시킵니다.

편집 종료


이 답변을 +1했지만 읽기가 약간 어렵다는 것을 알았습니다. 나는 처음 9 점의 맥락을 실제로 이해하지 못한다. 명확히 하시겠습니까? 그래도 잘 했어

@MattFenwick 안녕하세요, +1 주셔서 감사합니다. 1-5 점은 일반적으로 판매 할 제품을 만드는 시나리오에 적용되지만 최상의 답변을 찾는 경향이 선행 기술에 대해 광범위하게 연구하게하는 시나리오에도 적용 할 수 있습니다. 예를 들어, 연구에서.
김 스택

포인트 6-9는 프로그래머의 신경성 경향과 관련이 있습니다. 디자이너가 항상 디자인 솔루션의 문제에 접근 할 수있는 곳을 읽었습니다 (찾을 수 없음). 마케팅 솔루션을 갖춘 마케팅 담당자; 코드 솔루션을 갖춘 프로그래머. 그렇습니다. "황금 망치가 있으면 손톱 증후군 만 보입니다". 이는 6 단계에서 특히 분명합니다.) 더 많은 프로그래밍으로 생산성 문제 해결
Kim Stacks

@MattFenwick 내 이름과 혼동되면 죄송합니다. 이 답변을 작성한 후 닉네임을 변경했습니다. 나는 당신의 배경이 더 많은 연구에 있다는 것을 알고 있습니다. 제 답변은 판매 할 솔루션을 개발 한 경험에서 비롯됩니다. 그러나 나는 우리가 프로그래밍을하기 때문에 내 업무 라인과 당신의 작업 사이에 특정 유사점이 있다고 확신합니다.
Kim Stacks

17

두 잔의 맥주가 더 좋고 더 오래 일하는 데 도움이 될 것입니다.


11
잠깐만 ... 그렇지 않니? ( xkcd.com/323 )
Craige

4
@Craige : 21 년간의 음주 경험과 20 년의 전문 소프트웨어 엔지니어 경험을 쌓은 후에도 여전히 교정 부분을 연구하고 있습니다.
Adam Crossland

4
@ 아담, 엔지니어가되기 위해 술을 마시는 데 1 년이 걸렸습니까?

17
맥주를 마시면서 코딩하면 2 년 동안 수십억의 가치가있는 인기있는 소셜 네트워크를 만들 수 있습니다. 사실, 나는 영화에서 이것을 보았다.
janosrusiczki

1
@ 키츠 치 : !! 특히 다른 누군가의 기존 디자인이 찢어 질 경우.
메이슨 휠러

16

"그래, 하루에 2000 줄 스파게티의 거대한 혼란을 리팩터링 할 수있다 ..."


13
또는 "새로운 소프트웨어 (소프트웨어 나 코드 구조에 대해 전혀 아는 사람 없음)는 아무 것도하지 않고있다가 고칠 수 있습니다". 코드 작성 언어를 사용하지 않은 경우 보너스 포인트.
wildpeaks

16

"나는 그것을 테스트하지 않고 얻을 수 있습니다. 테스트하기가 너무 어렵습니다."

그리고 그것은 사악한 형제입니다

"시험을 작성하거나 이해하는 것이 아무리 어려운 경우에도 시험을 받아야합니다."


2
테스트 작성하기 어려운 경우, 오른쪽 : 그것을 프로그래밍되지 않을 수 있습니다
Merlyn 모건 - 그레이엄

2
@Merylyn Morgan-Graham, 사실입니다. 그러나 동시성과 같은 일부 영역은 테스트하기가 더 어렵습니다.
Wayne Conrad

1
@Merlyn : 올바른 위치에서 컨텍스트 전환을 강제 할 수 있도록 명령 시뮬레이터를 작성하고 있다면 동시성 테스트에서 너무 멀리 나갔을 것입니다. :)
Zan Lynx

1
@ Zan : 동의합니다. 필요한 시점에서 개발자를 다시 밀고 코드를 리팩터링하고 모의 객체를 삽입하려고합니다. 나는 우리가 Big-O를보고 병목 현상을 최적화하며 원시 속도가 아닌 데이터의 무결성을 위해 동시성을 생각할 필요가있는 높은 수준의 언어에 대해 작업하고 배를 타기도합니다. 상자).
멀린 모건-그레이엄

15

지연낙관적 과제 추정 은 나의 가장 큰 죄입니다.

첫 번째 운동에 대한 스트레칭, 팔 굽혀 펴기 또는 풀업 (또는 기타 운동) 및 두 번째 운동에 대한 추정을하기 전에 비관적 인 분위기.


설명 ... "낙관적 인 작업 평가"란 '똥의 쉬운 증후군'을 의미합니까? :)
Evan Plaice

@Evan Plaice-정확히. "오, 너무 사소 해"처럼 실제 코딩을 시작한 후 코드의 모든 문자를 인터넷 검색합니다.
Nikita Barsukov

13

"훨씬 '입니다 쉽게 하는' 스크래치에서 기능을 구현할 기존의 코드를 이해하는 것보다."


2
예, c2.com/cgi/wiki?RewriteCodeFromScratch 는 이것이 "하지 말아야 할 것들"중 하나 라고 주장합니다.
David Cary

오픈 소스 작업은 이러한 경향에 도움이됩니다. 나는 개인적으로 패치를 쳐다보고 나서 코드를 개선 / 리팩토링 한 후에도 패치와 거의 동일하다는 것을 깨닫기 위해 나만의 구현을 작성했습니다. 그것이 어떻게 작동하는지 재미있다.
Evan Plaice

10

내가 겪고있는 프로젝트가 겪었던 엄청난 해로운 유혹은 '내부 플랫폼 효과'입니다. 이것은 오래 전부터 사라 온 건축가들이 매년 약 2 천만 달러를 생성하지만 업데이트하고 유지하는 데 6 천만 달러의 프로젝트를 만들어 낸 무한한 지혜로 설정 한 접근법입니다. 문제의).


10

NIH - 여기를 발명하지 않음

타사 솔루션에 공정한 기회를 제공하는 데 어려움을 겪고 있습니다. 모든 사람들은 자신을 위해 맞춤 제작되지 않은 타사 솔루션에 대해 회의적인 태도를 취해야하지만 100 % 객관적으로 어려움을 겪고 있습니다.

시간 절약은 타사 솔루션은 피해야한다 10 명 중하더라도 9 번, 나는 실현 충분히 객관적 일 필요가 이렇게 거대 할 수있는 작동합니다.


1
나는 당신의 요점을보고 항상 함께 살아야합니다. 나는 때때로 당신의 옆에 대답을받을 가치가있는 지점에 대해 반대 의견을 가지고 있습니다. 그러나 몇 년 동안 그 문제에 대해 전문가 그룹보다 일주일 동안 더 잘할 수 있다고 믿는 데 어려움을 겪고 있습니다. 물론, 당신은 그 제 3 자 뒤에있는 사람들이 실제로 전문가인지 확인해야합니다. 구성 요소의 주변 환경을 잘 조사하면 채택 또는 코딩 중에서 올바르게 선택하는 데 크게 도움이되었습니다.
Newtopian

1
@Newtopian "올바른"방법은 분명히 중간에 있습니다. 타사 라이브러리와 내 문제는 내가 할 수 있는지없는 좋은 시간 개월 또는 몇 주와 전문가들로 구성된 팀보다는,하지만 난 것을 거의 , 어쩌면 결코 우리가 필요로 정확히입니다 라이브러리를 찾을 수 없습니다. 항상 적응해야 할 때가 많으며, 종종 우리 자신과 다른 사람들 우리 정확히 필요한 솔루션을 작성하는 것만 큼 많은 시간을 소비한다는 것을 알게됩니다 .
니콜

스펙트럼의 반대쪽 끝에서 온 저 자신은이 "중간"을 어떻게 시도하고 달성 할 수 있었는지 알고 싶어했습니다. 또한 두 사람이 생산성에 똑같이 해를 끼치기 때문에 제 3자를 과도하게 사용하는 이유를 이해하려고 시도하면서 제 3자를 사용하고 싶지 않은 점에 대해서도 궁금했습니다.
Newtopian

@Newtopian 위의 설명이 왜 그런지 이해가 되나요? 중간 정도를 달성하려는 시도는 타사 솔루션을 평가하고 찾을 때보 다 객관적으로 간단합니다.
니콜

9

고객의 실제 데이터베이스 사본을 분석하는 대신 제공된 "샘플 데이터"에 대한 설계, 코딩 및 / 또는 단위 테스트. 마감일이 짧았으며 계속오고 있다고 말했지만 결코 그렇지 않았습니다. 그것이 배치되었을 때 폭발은 훌륭했다. 실제로 고객에게 3 명의 부모 고객이있을 것으로 예상 한 사람.

실제 데이터 의 사본이있을 때까지 프로젝트를 다시 시작하지 않습니다 .


아직 제품이 없으면 복사 할 데이터가 있습니까?
Svish

데이터가 없으면 항상 용지가 있습니다. 회사 기록도 여기에 도움이 될 것입니다.
burnt_hand

9

가 꼭 어딘가를 수행하는 라이브러리가 될 증후군.

밀접한 관련

플러그인 페티쉬


2
나는 항상 "그것을하는"라이브러리를 찾을 수있는 것 같습니다. :(
Ben L

라이브러리를 쉽게 찾을 수 있음-우수한 단위 테스트가 내장 된 라이브러리를 찾기가
어렵

8

완벽주의는 죽인다. 아마도 프로젝트가 성공하지 못한 가장 큰 이유 일 것입니다.


나는 이것이 사실 일 수 있다고 생각하지만, 이런 이유로 실패하거나 늦었 던 프로젝트에 결코 참여하지 않았습니다.
PeterAllenWebb

완벽을 정의하는 방법과 목표 수준에 따라 다릅니다.
Svish


7

리팩토링 대신에 재 작성.


동의하다. 다시 쓰기에 필요한 노력을 기울일 의향이 있다면, 항상 리팩토링하는 것이 좋습니다. 생각보다 시간이 오래 걸리지 만 리팩토링을 점차적으로 수행하고 있습니까? "완벽"하기 전에 멈출 수 있습니다.
PeterAllenWebb

1
리팩토링 대신 다른 곳에서 다시 쓰기. 우리의 코드베이스는 동일한 종류의 일관성을 얻는 것이 불가능한 것과 같은 다양한 구현을 가지고 있습니다.
Newtopian

6

더 좋은 방법이 있다고 생각하면됩니다. 나는 "충분히 좋은"것에 대해 정착하지 않을 것입니다. 나는 완벽 함 이상을 취하고 있습니다! 일반적으로 문제에 대해 다른 관점을 가지고 있거나 다른 각도에서 해결책을 볼 수있는 다른 사람들과 이야기하면 피할 수 있습니다.


5

실제 작업보다 도구를 유지 관리하는 데 더 많은 시간이 소요될 수 있습니다.

솔루션 : 코드 최적화와 마찬가지로 먼저 생산성 병목 현상을 발견하고 발견 된 후에 만 ​​자동화를 통해 치료하십시오 .


나는 이것에 원칙적으로 동의 할 수 있지만 실제로 과도한 자동화를 본 적이 없다. 아직도, 그것은 나의 경험 일 수 있습니다.
PeterAllenWebb

4

프로그래밍 악마는 무엇입니까?

다른 사람들이 언급 한 것 외에.

우선 순위 : 프로젝트와 관련하여 우선 순위가 높은 작업을 무시하고 프로젝트에서 다른 작업을 먼저 수행하면 더 흥미로워집니다!

어떻게 피할 수 있습니까?

좀 더 자기 규율로. 진지하게, 옳은 일을하려는 자기 훈련과 자기 동기 부여는 이러한“악마”를 피하는 데 도움이됩니다.


3

아직 고객의 승인을받지 못했지만 마감일이 다가오고 있습니다. 여기에 시작할 수있는 예비 구성 요소가 있습니다.

나중에, 당신은 comp와 일치하는 프로젝트를 완성한 후에 ...

아, 여기 고객의 수정본이 있습니다. 몇 가지 사소한 것들만 바꾸고 싶습니다 *

(* 주요 기능은 완전히 다릅니다)

그런 다음 짧은 기한의 압력을 받고 마지막 개정판이라고 가정하기 때문에 처음부터 시작하는 대신 원래 결함이있는 모델을 기반으로 원래 코드를 리팩토링합니다.

나는 이것에 항상 조금씩 얻는다. 웹 개발자로서 피하기는 어렵습니다. 최선의 조언은 더 많은 시간을 투자하여 올바른 방법으로 변경 사항을 적용하는 것입니다.


2
고객의 서명이있을 때까지 개발을 시작하지 않는 정책을 수립하십시오.
벤 L

1
@Ben : 그게 우리의 통제하에 있었다면!
sevenseacat 2019
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.