가장 큰 실수 [닫힌]


33

서버 결함에 대해 읽은 질문과 마찬가지로 IT 관련 직책에서 가장 큰 실수는 무엇입니까? 친구의 몇 가지 예 :

프로덕션 사이트에서 일부 작업을 수행해야했기 때문에 라이브 데이터베이스를 베타 사이트로 복사하기로 결정했습니다. 꽤 표준이지만 베타 사이트를 방문했을 때 여전히 최신 정보를 얻지 못했습니다. 웁스! 베타 데이터베이스를 라이브 사이트에 복사했습니다! 백업 주셔서 감사합니다.

그리고 저는 특정 기간 동안 개최 될 행사 양식을 만들었습니다. 참가자는 우승 할 수있는 양식을 작성하고 이벤트 주최자에게 데이터베이스에서 CSV를 보냅니다. 나는 데이터베이스에 들어가서 1 개의 ENTRY, MINE 만 찾았다. 조사 할 때 자동 증가 키를 잊어 버린 것처럼 보이며 서버 설정으로 인해 손실 된 데이터를 복구 할 수있는 방법이 없었습니다.

이 질문이 Stack Overflow의 질문과 유사하다는 것을 알고 있지만 실제 발견하는 대신 일반적인 답변을받는 것으로 보입니다. :)

가장 큰 코딩 오류 / 실수는 무엇입니까?


6
기네스 질문!
Junior M

왜이 질문이 종결 되었습니까? 나는 자신의 큰 실수를 추가 할 필요가 있다고 느낀다. 나는 생산에 배치하지 말라고 구체적으로 지시 한 후 프로덕션에 배치 한 후 라이브 웹 사이트를 3 시간 동안 (예 : 500 HTTP 상태) 중단했다. 가장 나쁜 점은 실수를 숨기려고했지만 고객이 눈치 채고 행복하지 않은 것 같습니다.
Maria Ines Parnisari 5

나를 위해 쉬운 하나. 투자 인출을 지불했지만 센트로 두 번 전환했습니다. 30k 대신 3 mil을 지불했습니다. 러너 위로-잘못된 SQL where 절. 4k 사람들에게 $ 1-$ 10 투자가 밤새 $ 1800 증가했다고 알 렸습니다. 분명히이 고객 중 일부는 돈을 썼다. 재정적으로 상당히 빨리 회복되었습니다. 부러진 자신감과 죄책감은 결코 사라지지 않았습니다. 회복 방법 : 책임을 져야합니다. 실수를 인정하십시오. 기여 요인이 있어도 다른 것을 비난하지 마십시오. 이 문제를 해결하기 위해 이해하고 팀의 노력을 기울였습니다. 고객은 정직에 감사했습니다.
Reasurria

답변:


54

모든 것과 일치하는 '나쁜'WHERE 절을 사용하여 SQL UPDATE 발행

학습 한 내용 : 항상 변경 사항을 확인하려면 항상 먼저 SELECT를 발행하십시오.


15
또는 자동 커밋을 false로 설정하여 영향을받는 행 수를 확인할 수 있습니다.
Yevgeniy Brikman

2
오, 그랬어 매우 불쾌한 ...
glenatron

4
하하 내가 그들의 벨트 아래 몇 가지 SQL을 가진 모든 사람들이 시간에 이런 짓을했다 생각, 나를 포함
billy.bob

3
그렇기 때문에 개발자가 먼저 업데이트해야합니다! 제품에 직접 핫픽스가 없습니다. 이 작업을 수행 할 때 감사 테이블이 있으면 감사합니다.
HLGEM

13
나는 누군가의 암호를 재설정하기 위해 한 번 그렇게했습니다. 모든 사람의 암호를 같은 것으로 설정 한 후에는 기술 지원 담당자가 전화를 많이받을 것이며 보안상의 이유로 암호를 변경해야한다고 알려야했습니다.
Barry Brown

36

오타

이 덩어리에 3 일 동안 머물 렀습니다.

if($func == "remove")
{
    $p->comments[$index]->removed = true;
    $p->save();
}
else if($func == "approve");
{
    $p->comments[$index]->approved = true;
    $p->comments[$index]->removed = false;
    $p->save();
}

오류가 보입니까? 의 끝에있는 세미콜론 else if입니다. 삭제 된 댓글이 삭제되지 않은 이유를 알 수 없었습니다. 데이터베이스 파고는 AJAX 내가, POST 변수를 사용했다 있었다 요청 error_log의 및 alerts 사방 . 그 방법을 다시 쓰는 것을 끝내고 효과가있었습니다. 그런 다음 원래 버전으로 차이점을 확인하고 세미콜론을 확인했습니다.

오타는 컴파일되거나 사전 확인되지 않은 언어를 추적하기가 가장 어렵습니다. 이와 같은 오류조차 컴파일 된 언어에서는 어려울 수 있습니다. 변경 ===갑자기 당신은 내부 할당을 가지고 if.


8
여기에 Resharper와 같은 도구가 실제로 비용을 상환 할 수있는 곳이 있습니다.이를 경고로 강조 표시하고 제거하라는 메시지가 표시됩니다.
Yaakov Ellis

24
제목이 (의도 된) 말장난입니까? : o
Agos

3
@Rogue Coder : 작은 따옴표와 큰 따옴표의 차이는 거의 없습니다. 뇌 사이클을 걱정하는 데 시간을 허비하는 것입니다. phpbench.com
Joeri Sebrechts

2
@ back2dos : Errr ... 맞아. 따라서 언급 된 모든 언어를 haXe에 찬성하여 삭제하는 것이 좋습니다. 2005 년에 처음 등장한 것? 그것으로 바로 가십시오.
Josh K

10
One True Brace Style에 찬성하는 주장에 감사드립니다. +1
eswald

28

프로그래밍은 주로 멋진 새로운 것을 처음부터 구축하는 것이라고 생각합니다.


1
내가 처음 시작할 때 나도이 생각을했다. 그런 다음 다른 사람들보다 훨씬 더 많은 유지 보수가 있다는 것을 배웠습니다. 그래서 내가 할 수있는 최고의 코드 (댓글 포함)를 작성하려고합니다.

2
작성할 새로운 코드가 여전히 많이 있습니다. 많은 오픈 소스 프로젝트에는 닫힌 시스템과 동일한 기능을 구현하는 코딩이 처음부터 필요합니다.
PP.

23

가장 큰 실수는 프로그래밍이 쉬운 돈이라고 생각하는 것이 었습니다 ...


27
돈을 위해 프로그래밍을했다면 새로운 경력을 쌓아야합니다. 돈이 없다, 그것은,하지만이 당신은 진정한 개발자 프로그램에 대한 강박 관념에 사로 잡힌 사랑이 필요하거나 매우 빨리 구울하지 않는 것이
johnc

1
당신은 좋은 지적을했다. 나는 돈을 위해 프로그래밍에 들어 가지 않았지만 실제로 돈을 쓰는 것이 훨씬 쉽다고 생각했습니다. 프로그래밍은 저의 열정이며 비용을 지불해야하더라도 그렇게 할 것입니다.
Marcelo de Aguiar

4
@ johnc는 대부분의 직업에 동일합니다. 나는 "프로그래밍을 배우기"위해 대학에가는 사람들을 솔직히 이해하지 못한다. 저는 K & R에서 14 살 때 시작했습니다. 나는 전자 제품을 배우기 위해 대학에 갔다. 그러나 어쨌든 나는 프로그래머로 끝났다. 최고의 음악가들이 스스로 가르쳤다. 최고의 프로그래머들이 스스로 가르쳤습니다. 인생이 다 그렇지.
PP.

아멘 형제, 아멘
아저씨

23

실수로 회사 시작으로 돌아가는 모든 고객 정보, 주문 내역 및 송장이 저장된 데이터베이스를 실수로 삭제했습니다 (수년).

공정하게 말하면, 고용주는 비난의 일부를 공유해야합니다. 그들은 Mac SE에 저장된 데이터베이스의 유일한 사본을 가지고있었습니다.

그래서 그것이 DB의 사본이라고 생각하면 휴지통으로 드래그했습니다. 파일 크기 때문에 즉시 삭제했습니다. 우리는 데이터 복원 서비스에 불신 한 금액을 지불 한 후 결국 돌려 받았지만 약 5 일 동안 주문을 이행하거나 청구 할 수 없었으며 고객 정보에 액세스 할 수 없었습니다. 그것은 (3 인 회사)를 정지 상태로 만들었습니다.


15
아야. 자체 참고 사항 : 항상 백업이 필요한 경우에도 항상 백업을 수행하십시오.
Kramii Reinstate Monica

1
@Karmii : 최선의 충고.
Chris

@Kramii-나는 내 경력 초기에 그 교훈을 배웠습니다.
JohnFx

해고되지 않았습니까?
Mateen Ulhaq

3
돌아 다니기에 충분한 비난이있었습니다. 나는 당시의 어린 시절이었고 실제 회사가 DB의 유일한 사본을 내 데스크탑에 두는 것만 큼 어리석은 짓을 할 것이라고 가정했을 때 오늘보다 더 순진했을 것입니다. 경험에 따르면 대기업에서도 고용주의 준비 상태를 과대 평가하는 것이 어리석은 것으로 나타났습니다.
JohnFx

15

phpmyadmin이 물었을 때 :

"완전한 데이터베이스를 파괴하려고합니다! 정말로 DATABASE xxx를 삭제 하시겠습니까?"

Enter 키를 누르십시오.


26
방어 적 프로그래밍이 주요 문제를 예방하는 데 도움이 된 좋은 예입니다. 테이블 / 데이터베이스 삭제와 같이 영향을 미칠 수있는 작업을 수행하는 경우 사용자 응답을 "아니오"로 기본 설정하여 조치에 실제로 동의해야합니다.
Hugo Hugo

6
@ 휴고 : +1. uni 교수 (예 : Unix / database sysadmin)는 "심각한 일을 할 때마다 항상 키보드에서 손을 떼고 약 10 초 동안 앉아서 앞으로 일어날 일에 대해 생각하십시오."
바비 테이블

1
@Hugo : 더 멀리갑니다. "완전한 데이터베이스를 파괴하려고합니다! 실제로 DATABASE xxx를 삭제하려면 DELETE :를 입력하십시오."
Loren Pechtel

3
@Hugo @Loren Pechtel- "완전한 데이터베이스를 폐기하려고합니다! 로그인에 대한 웹 검색으로 인해 'lol'이 여러 번 발생하여이 조치가 거부되었습니다. 관리자에게 문의하거나 통신하는 방법을 배우십시오."
detly

15

그것이 나의 "가장 큰 실수"인지 확실하지 않지만, 확실히 기억에 남는 실수입니다. 새 직장에서 첫 1-2 주 동안 나는 사이트에서 가장 인기있는 페이지 중 하나에서 일부 항목의 정렬 순서를 수정하는 작은 "기능 향상"을 수행하도록 배정되었습니다. 코드베이스에 익숙하지는 않았지만 관련 Comparator를 신속하게 발견하고 compareTo 메서드 내에서 무해 해 보이는 몇 가지 메서드를 너무 많이 생각하지 않고 호출을 추가했습니다. 이 코드는 로컬 및 QA 문제없이 테스트되어 실행되었습니다.

나는 같은 날 상사와 일대일로 얼굴에 큰 웃음을 지었고, 그는 가입 한 후 첫 "기능"을 생생하게 축하해주었습니다. 우리는 그가 해당 페이지를 방문했을 때 기능이 실제로 작동하는 것을 보았습니다. 페이지를로드하는 데 47 초가 걸렸습니다. 낙담했다. 그는 페이지를 새로 고쳤습니다. 53 초. 그의 미소는 사라졌다. 나는 책상으로 돌아가서 긴 저녁을 디버깅하고 중요한 패치를 라이브 사이트로 푸시하는 데 보냈다.

내가 추가 한 무해한 방법 중 하나는 적어도 하나의 DB 적중을 초래 한 원격 서비스 호출이었습니다. 각 compareTo 호출에서. 따라서 2,000 개 이상의 항목이 정렬 된 페이지에서 ~ 6000 (nlogn) DB 조회를 수행했습니다. 아야.


DB가 코드에서 명쾌 했습니까? 아니면 호출 한 메소드 / 속성에서 발생 했습니까?
dbkk

DB 적중은 실제로 간단한 게터처럼 보이는 메소드 뒤에 숨겨져 있습니다. compareTo 메소드에 myObj.getFoo () 호출을 추가했습니다. 관련 서브 클래스의 JavaDoc은 DB 적중 가능성을 언급했지만 myObj 인터페이스의 JavaDoc (코드를 작성할 때 보았던 것)은 아무 것도 언급하지 않았습니다. 두 경우 모두 (a) 본인을 대신하여 부적절한 테스트를 수행하고 (b) 적절한 명명 규칙을 따르지 않을 경우 발생할 수있는 상황에 대한 분명한 증거라고 생각합니다.
Yevgeniy Brikman

테스트 환경이 프로덕션 환경을 대표하지 않는 (매우 흔한) 사례 일 가능성이 더 큽니다. 테스트를 해 보았지만 제대로 수행되었으므로 테스트 데이터베이스에 프로덕션 데이터베이스에 포함 된 데이터의 일부만 포함되어 있다는 것을 전혀 알지 못했으며 그럴 수 없었습니다.
jwenting

15

나는 이것을했다 :

rm -rf /bin

(실제로, 나는 정확히 그렇게 하지 않았습니다 . 그것은 멍청하고 변명 할 수 없을 것입니다. 나는 본질적으로 그 명령이 실행되는 더 미묘하고 둥근 길을 가졌습니다.)

말할 것도없이 Unix 시스템은 그 시점 이후에는 사용할 수 없었으며 다시 설치해야했습니다. 나는 당시에 sysadmin을 시작했고 나를 감독하는 선배가 이해하고 있었다.

좋은 경험이있었습니다. 사용할 / bin 명령없이 디렉토리를 나열하는 방법을 배웠습니다.

echo *

+1은 DEC-BSD 시스템의 단일 사용자 모드에서 Bourne 쉘 구조 만 사용하여 ls 및 cat 시뮬레이션과 같은 트릭을 배웠습니다
Arcege

11

고객은 기본적으로 이벤트에 대한 개인화 된 이메일을 보내는 전체 사용자층에게 메일을 발송하려고합니다. 이메일의 링크를 클릭하면 절반의 데이터가 채워진 양식에 자동으로 로그인됩니다.

코드를 작성하고 코드를 테스트하고 제대로 작동하고 링크가 작동하며 매우 부드럽습니다. 모든 것을 확인하고 두 번 확인한 후에는 라이브 목록으로 전환하여 멀리갑니다.

라이브 목록이 샘플 데이터보다 상당히 커서 메일 서버가 넘어집니다. 콘솔 앱을 중지 한 다음 중지 된 위치에서 다시 시작해야한다는 것을 알고 있습니다. 다행히도이 기능을 추가하기가 어렵지 않고 메일 아웃이 이미 진행된 사용자를 기록하여 메일 서버를 다시 시작한 후 다시 실패하고 이전에 실패한 지점에서 다시 시작하고 일시 중지 할 수 있도록 코드를 재구성했습니다. 메일 서버를 따라 잡기 위해

불행히도 어떻게 든 모든 코드를 올바르게 업데이트하지 못했습니다. 나는 내가 한 일에 대한 세부 사항을 기억하지 못하지만 사용자 데이터를 얻는 쿼리는 한 세트의 데이터를 얻고 있었고 해시를 생성하는 쿼리는 다른 것을 얻었습니다. 따라서 사용자가 링크를 클릭하면 계정 세부 정보에서 다른 사람의 개인 데이터 가 포함 된 양식 그리고 이것은 목록에 경쟁적인 소규모 사업체가 많았던 틈새 산업입니다.

고객의 사무실에서 전화 벨이 울리는 데 시간이 오래 걸리지 않았습니다 ...

그것은 지금까지 나의 사임을 제안한 유일한 실수였습니다.


실제 데이터가 샘플 데이터보다 훨씬 큰 경우 +1 :-(
nakedfanatic

IMO 이것은 더 나쁜 것 중 하나입니다.> _ <
sevenseacat

7

필터없이 크로스 조인을 사용했습니다. 적은 양의 데이터로 테스트 데이터베이스에서 잘 작동했습니다. 배포되면 평균 쿼리에서 ~ 60M 행으로 끝났습니다.


14
실제로 가장 큰 실수는 적절한 크기의 데이터베이스에 대해 개발되지 않은 것입니다. 큰 프로덕션 데이터베이스를 개발하기 위해 작은 테스트 데이터베이스를 사용하지 마십시오. 올바른 크기의 dabase가 없으면 성능 코드를 작성할 수 없습니다.
HLGEM

7

나는 100 000 $ 레이저 스캐너를 추락했습니다.

컨트롤러는 위치를 정수로 저장하여 실제 위치를 인치 단위로 얻기 위해 모든 것을 10000으로 나눕니다.

마지막 자리가 0 일 때 Z 축은 10 배까지 생략되었습니다.

힐러리 티



5

관리자가 내가 좋아하는 직업을 떠날 때까지 눈썹을 beat 수있었습니다. 나는 그에게 물건을 엉망으로 만들었고, 해고당한 다음에 한 발짝 씩 물러서야했다. 대신 나는 그만 두었고 그 이후로 그것을 후회했다.


17
관리자는 그러한 일에 대해 거의 해고 당하지 않습니다. 관리자 수준에 도달하려면 후면을 잘 다루어야합니다. 당신은 아마 당신이 회사를 떠난 순간 희생양이되었습니다. 어쩌면 당신은 그것을 다르게 처리했을 수도 있지만 그것을 극복하지 마십시오.
Mark Ransom

그가 엉망 이었다면, 당신은 비난을 받고 해고되었을 것입니다 (또는 적어도 당신이 수치에 빠질 때까지 비참한 시간을 가졌습니다).
jwenting

4

7 년 전 제가 아직 만나지 못한 상사와 회사 소유자는 다른 주에서 연구 웹 사이트를 몇 명의 잠재 고객에게 시연했습니다. 회원 요금은 5 ~ 5 중순으로 나타났기 때문에이 데모는 신생 회사에 큰 도움이되었습니다.

데모 도중에 데이터베이스 작업을 수행하면서 라이브 데이터베이스를 변경하고 모든 설문 조사의 모든 설문 조사 질문을 동일한 텍스트로 업데이트했습니다. 어디서? 동료와 나는 백업을 위해 출격을했고, 당장 그가 사이트의 해당 섹션을 시연하지 않고 고맙게도 나타나지 않은 모든 한도에서 이메일을 기다리기를 바랐다.

좋은 점은 보스가 마침내 개발 박스를 만들어내는 것이었다.


3

나는 인트라넷에서 Xenu의 링크 sleuth를 실행하여 수년 동안 쌓아온 많은 끊어진 링크 중 일부를 정리하려고 시도했습니다.

약 30 분 후 나는 새로운 아이템들 중 일부가 이상한 그림들을 가지고 있다는 것을 알아 차리기 시작했다. 그들이 원하는 것을 가졌습니다.

또 다른 10 분 후, 어떤 이유로 인해 추천 상품이 무작위로 변경되는 것을 발견했습니다. 이 시점에서 그것은 무슨 일이 일어나고 있는지 내게 떠올랐다. 인트라넷은 Windows 인증을 사용하며 일부 기능 (예 : 뉴스 이미지 및 추천 항목 선택)은 HTTP GET 요청에 응답하도록 코딩되었습니다. 링크 검사기는 내 인증을 사용하고 있으며 관리자 측의 페이지로 크롤링하여 충성스럽게 작업을 수행하고 다음과 같은 링크를 포함하여 발견 된 모든 링크를 따라갔습니다.

/admin/displayItems/icon_update.asp?image=eastereggs.jpg&itemID=3174


7
이것은 GET을 사용하는 것이 적절할 때와 POST를 사용하는 것이 적절할 때 많은 사람들이 배우는 방법 인 것 같습니다
Oli

합의에 따라 인트라넷을 다시 개발하는 작업을 시작하려고했으며 요구 사항의 최상위에 GET 및 POST를 올바르게 사용했습니다. ASP MVC는 또한이 작업을 쉽고 직관적으로 수행 할 수 있도록 도와줍니다.
Chao

1
정말 당신의 실수,하지만 그럼에도 불구하고 좋은 이야기 :-)
딘 하딩

3

지금까지 내 위가 비틀고 심박수가 증가하고 갑자기 뜨겁고 가려운 실수는 WHERE 절없이 UPDATE 쿼리를 실행하는 것이 었습니다. 운 좋게도 지난 15 분 동안의 백업이 있었으며 데이터가 자주 변경되지 않았기 때문에 아무도 모르게 10 분 내에 데이터를 완전히 복원 할 수있었습니다.

나쁘지는 않지만 가까운 전화를 받았습니다. 이 업계에서 내가 일을 망칠 수있는 모든 것이 잘 진행된다는 공포 이야기를 들었 기 때문에 그들은 계속 연락을 취하고 있습니다.


1
DB 실수를하는 사람들이 롤백을 호출하지 않습니까?
Jé Queue

@Xepoch, 거래를 시작한 경우에만 도움이됩니다
CaffGeek

1
@ 차드, 우리는 일반적으로 모든 데이터 호출이 암시 적으로 거래되어야한다고 가정해서는 안됩니까?
Jé Queue

2
@Xepoch, 절대 가정하지 마십시오.
CaffGeek

1
@Char, 나는 거래 내에서 모든 DB 상호 작용을 유지하기 위해 개인적으로 선호합니다. 그렇지 않은 사람들은 위험을 감수하거나 관심이없는 비즈니스 사례를 가지고 있습니다. 사양 가정과 MANDATE는 트랜잭션 DB 관리를 통해 코드 프로젝트를 시작하고 유지 관리 할 것입니다.
Jé Queue

3

내가 작업하는 로봇의 경우 모든 실행에 대한 로그 파일을 유지합니다. 이 로그 폴더를 생성하는 로봇과 시뮬레이터가 있습니다. 시뮬레이터의 로그 파일은 쓸모가 없지만 로봇 로그 파일은 매우 유용하며 영원히 저장됩니다.

로봇 자체는 하드 드라이브 공간이 제한되어 있기 때문에 다른 컴퓨터로 전송되어 저장됩니다. 이 컴퓨터는 로봇과 통신하기위한 기본 운영 컴퓨터입니다.

글쎄, 몇 달 전에 로봇 작업을 시작했는데 이것을 몰랐습니다. 나는 운영 컴퓨터의 로그가 시뮬레이터에서 생성 된 쓸모없는 로그라고 생각하고 삭제했습니다. 적절한 백업이 없기 때문에 이전 로그를 모두 잃었습니다.


8
젠장 ... 나는 로봇 작업 할! 하루 종일해야 할 일은 거무스름한 웹 사이트를 만드는 것입니다.
Dan Ray

2

빌드 컴퓨터가 아닌 컴퓨터에서 소프트웨어 버전을 더 빨라서 (약 4 시간 더 빨라서 다음 날 대신 QA에 들어갈 수 있음) 게시자는 최대한 빨리 원했습니다.

QA에서 감지되지 않는 버그를 일으킨 컴퓨터에서 디버깅을위한 특수 정의가있었습니다. 그들은 4 주간의 검증 테스트가 끝났을 때만 그것을 탐지했지만, 검증에 실패 할 정도로 나빴습니다.


2

개발 버전 대신 실수로 프로덕션 데이터베이스를 삭제하십시오. 어떤 서버가 작동하는지 보지 못했습니다. 다행히도 마지막 백업은 4 시간 전에 생성되었으며 사용자는 시스템을 많이 변경하지 않았으므로 큰 데이터 손실이 없습니다.


나는 동료가 이것을하도록했다. 단지 그가 자신의 사본을 찌르지 않고 떨어 뜨렸다 고 생각했습니다. 우리는 모두 일하고 있었고, 그가 'OH SH ** !!!!' 즐거운 오후였습니다.
Tyanna

2

내가 저지른 가장 큰 실수는 개발 시스템에서 소스 제어 작업을하지 않는 것이 었습니다. 하드 드라이브가 다운되어 몇 주 동안 작업을 잃었습니다. 그것은 열심히 배우는 교훈이며 다시는 결코 일어나지 않을 것입니다.


내 실수는 아니지만 관련이 있습니다. 회사 나는 그가 즉시에 "RM -r /"실행 버전 제어 서버 (? DMZ Whazda)에 침입 루트 액세스 제공, 손상 자신의 웹 서버의 한 일 근무
jwenting

2

Java에서 문자열 비교 ==대신 사용equals


13
그게 가장 큰 실수 야?
Chris

이것은 자바에서 훨씬 더 많은 문제 ==이며, 참조 비교입니다. C #에서, ==문자열에 값 비교를 수행, 같은 .Equals() 그 말했다 약간의 차이가 여기에 존 소총의 대답을 참조하십시오 stackoverflow.com/questions/3678792/...
팀 굿맨

2
@Tim : 그래도 이것이 "당신이 한 것 중 가장 큰 실수"라고 대답하지는 않습니다 ... 최소한 그 결과에 대한 더 많은 맥락은 좋을 것입니다 ...
Dean Harding

가장 많이 제기 된 답변이 오타에 관한 것이라면 여기의 답변은 어떻게 다릅니 까? 초보자라면이 실수를하는 것이 거의 불가능하며 하루 종일 좌절 할 수 있습니다.
nanda

@Dean : 내가 한 것 중 가장 큰 실수는 아니었다 ... C #과 Java의 행동 차이를 분명히 밝히고 있었다
Tim Goodman

1

나는 내 감독에게 그가 늙었 기 때문에 내가 경험 한 것보다 더 오랜 경험을 가지고 있다고해서 그를 존중한다는 의미는 아니라고 말했다. 내가 존중할 유일한 것은 능력입니다. 그런 한심한 진술의 결과에 직면 할 필요는 없었습니다. 되돌아 보면 이것이 가장 큰 실수 인 것 같습니다. 내 상식 / 겸손은 어디에 있었습니까? :-(


2
누군가가 더 많은 경험을 가지고 있다고해서 더 나은 프로그래머라는 의미는 아닙니다. 이력서에 'xx 년의 경험'을 쓸 수는 있지만 자신이 무엇을하고 있는지 전혀 모르는 프로그래머가 많이 있습니다.
Bobby

그들은 그이 (가) 더 조심 개발자하지만 것, 가능성이 여기에 나열된 같은 길을 따라 바보 같은 실수를 포착 한 방법입니다
johnc

분명히, 실수는 그런 태도를 가지고 있지 않았습니다. 당신이 그런 태도를 가지고 있다고 잘못 말하고있었습니다.
Dan Ray

나는 수년 동안 많은 사람들에게 이것을 말하고 싶었습니다.
Reasurria

1

이것은 이번 달 동료에게 일어났습니다.

그는 많은 핸드폰으로 SMS를 보낼 때 발생하는 버그를 수정하고있었습니다. 일반적으로 이러한 메시지는 실제로 비용을 절약하기 위해 전송되지 않지만 데이터베이스의 구성이 잘못되어 전송되었습니다.

비용 : SMS 트래픽 1 개월 임금.


싸다! :)
jwenting

1

관리자의 요청에 따라 /etc/sudoers한 시스템에서 다른 시스템으로 복사 했습니다 (문제가 해결되지 않았지만 요점 옆에 있음). 불행히도, 나는 sudo그 소유자와 권한이 완전히 잘못되었다는 사실을 알지 못하고 복사 된 파일을 제자리로 옮겼습니다. 이 시점에서 아무도 루트 쉘이 열려 있지 않았고 아무도 할 수 없었 sudo으며 쉘이로 설정 되었기 때문에 아무도 루트로 로그인 할 수 없었습니다 /bin/false. 그리고 기계는 원격 데이터웨어 하우스에있었습니다.


1

디렉토리의 각 파일에 대해 메타 데이터 파일을 만들고 싶었습니다 (즉, 모든 파일에 대해 파일 somedir/foo.bin을 만들고 싶습니다 somedir/foo.bin.meta). 어리석은 이유로 파이썬을 통해 파일 스트림을 열고 닫음으로써 파일을 만들기로 결정했습니다.

for fn in os.listdir(path):
    open(os.path.join(path, fn), 'w').close()

더 어리석은 이유로 나는 몇 가지 개인 데이터가있는 하드 드라이브의 디렉토리에 대해이 스크립트를 테스트하는 것이 영리하다고 생각했습니다. 파일을 실행 한 후에 만 파일 이름을 전달하기 전에 실제로 파일 이름을 수정 하는 것을 잊어 버렸고 open해당 디렉토리의 모든 단일 파일 (절단)을 잘라 버렸습니다 .

운 좋게도 그것은 개인용 컴퓨터에 있었고 중요한 것을 손상시키지 않았지만 여전히 내 교훈을 배웠습니다.


1

스웨덴 최대의 통신 회사 고객 지원을 담당하는 회사에서 일하고있었습니다. 서버에는 수신 통화 대기열을 조정하는 소프트웨어, 몇 개의 통화 등을 수행 할 수있는 소프트웨어가있었습니다. 작동하지 않으면 전화를받지 않았고 고객도 지원을받지 못했습니다.

어쨌든, 나는 소프트웨어를 (사소한) 변경했습니다. 서비스 창이 변경 될 때까지 기다릴 수 있었지만 "이봐, 서비스를 다시 시작하는 데 1 분이 걸릴 것입니다. 왜 귀찮게합니까? Fortune은 대담한 편입니다." 불행히도 스레드가 잠겨서 교체 할 수 없었습니다. 당황하기 시작하면서 나는 기계를 빨리 재부팅하기로 결정했다. 불행히도 공황 상태에서 대신 "업데이트 설치 및 종료"를 클릭하십시오.

스웨덴에서는 다시 시작하기 전 30 분 동안 고객 지원이 많지 않다는 것은 말할 필요도 없습니다.

동료는 나보다 나빴다. 그는 우리가 어느 날 밤 자동 음성 응답 시스템을 디버깅하고 그 번호를 자신의 휴대폰으로 다시 라우팅했다. 그가 그것을 바꾸는 것을 잊어 버린 것만, 그 다음날 쉬는 날이었고, 모바일을 직장에 두었습니다. 우리는 왜 그날 지속적으로 울리는 지 궁금합니다. :)


1

Argh, 오후 11시, 실험실 폐쇄, 빠르고, 빠른 ...

$ enscript -o midterm.hs midterm.hs
$ submit midterm.hs
Error: submission is empty

맙소사! FFS. 나는 PS 당신을 의미했다 ****!


언어 스타일에 대한 사과, 진정성에 필요합니다.
Orbling

0

JS를 코딩하기 전에 언젠가는 "1"(1)과 "l" "small L"을 구별 할 수 없었습니다. 이 답변을 입력 할 때도 편집기에서 거의 동일하게 보입니다!


왜 다운 투표?
Gopi

0

나는 모든 템플릿 이 암묵적으로 변수로 확장 된 초기 버전의 사이트 템플릿 언어를 만들었습니다 . 이것은 다음과 같은 URL을 작성할 수 있음을 의미했습니다.

page.vis? body = <body> <p> 아아 </ p> </ body>

그리고 그것이 보이는 것처럼 정확하게 작동합니다.

운 좋게도 사용자 (한숨)가 없으므로 보안 위험이 그다지 높지 않은 것 같습니다.


0

확실히 TSQL 사고-하나의 편집기 창에 너무 많은 TSQL 문이 있습니다. 조금 피곤해서 사람들이 나를 좌우로 방해하고 있었고 주소, 도시, 주, 우편 번호를 47,000 개의 기록으로 업데이트하는 명령을 내 렸습니다. 그래도 약 25 분 안에 해결되었습니다.

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