답변:
닐 스티븐슨의 공상 과학 스릴러 스노우 크래시 (Snow Crash)를 마케팅하기 위해 "양성"컴퓨터 바이러스를 작성하라는 요청을 받았습니다. 사용자의 컴퓨터를 인계하고 "눈 충돌"이라고하는 눈으로 화면을 교체하는 것이 "양성"인 것처럼 보입니다. 1 분 정도의 눈이 내리면 눈이 희미 해져서 책 광고로 대체됩니다. 이것은 "양성"일 것입니다. 이 바이러스는 정상적인 방법으로 확산 될 수 있지만 컴퓨터를 인수 한 후 "재미있는 광고를받은 다음 컴퓨터에 아무런 문제가 발생하지 않는다"고 안심하지 않아도됩니다.
전 세계 주요 회사에서이 작업을 수행하라는 지시를 받았습니다. 나는 이것이 깨질 모든 법칙과 그들이 실제로 이것을 구현하게했을 때 일어날 수있는 17 가지 나쁜 일들을 모두 설명하는 메모를 작성해야했다.
"이 DLL은 17kb에 불과합니다. 더 큰 코드를 만들기 위해 코드를 추가 할 수 있습니까? 고객이 많은 돈을 지불하고 있으며, 우리는 그들이 돈의 가치를 갖기를 원합니다."
Visual SourceSafe를 사용하십시오.
"우리 회사를 정의하는 하드 코딩 된 비즈니스 규칙의 더미와 더미를 포함하는이 거대한 20 년 된 코볼 프로그램을 알고 계십니까? 이것을 .NET으로 변환 하시겠습니까?"
Yikes.
우리는 몇 주 안에 살아갑니다.
행운을 빕니다
오빠와 나는 몇 년 전에 아주 유명한 록 스타를 위해 멀티미디어 무거운 웹 사이트를 작업하고있었습니다 .
클라이언트가 사이트를 보았을 때 일부 JPEG에서 일부 압축 아티팩트를 발견하고 그에 어떤 문제가 있는지 물었습니다. 이미지는 대역폭 목적으로 압축해야하며 이미지는 현재 약 80 % 품질로 압축되었다고 설명했습니다. 그는 기분을 상하게하고
나는 80 %에서 일을해서 100 %로 설정하여 현재의 위치에 도달하지 못했습니다.
우리는 그것이 사용자에게 어떤 영향을 미치는지 설명하려고 노력했지만 아무 것도 가질 수 없었습니다. 그 결과 "가상 세계"웹 사이트가 가장 느려졌습니다. 이것은 실제로 일어났다 .
머큐리는 역행 중이며 새로운 일을 시작하기에 나쁜시기이기 때문에 2 주가 지나면 사이트 출시가 지연되어야합니다.
비행기에서 XML이 새로운 신기술 (2002 년경)에 관한 비즈니스 잡지를 읽은 후, 경영진 중 한 명이 응용 프로그램에서 XML을 사용했는지 물었습니다.
이제 XML 형식으로 파일을 가져 오거나 내보내는 기능에 대해 이야기하는 것이 아니라 현재로서는 인기가 많고 앱에 대한 신뢰성을 제공하는 것 외에 다른 이유없이 아키텍처의 일부가되기를 원했습니다.
"현재 사용자 이름은 고유해야하고 암호는 다릅니다. 다른 방법으로 만들 수 있습니까?"
약 7 년 전에 저는 제품 중 하나를 판매하기로 결정한 맞춤형 소프트웨어 상점에서 근무했습니다. 일부 산업의 엔드 투 엔드 운영 스위트였습니다. 글쎄,이 산업은 기술적으로 유명한 것으로 알려지지 않았기 때문에 어쨌든 우리는 독립적 인 소규모 비즈니스 IT 컨설턴트에게 서버를 제공하는 대신 서버와 IT 인프라에 대한 타사 기술 지원을 제공하게되었습니다.
어느 날 고객의 서버에서 디스크가 손상되었습니다. 우리가 판매 한 서버는 Adaptec RAID 컨트롤러로 구성되었으며 RAID 1 미러 용으로 설정되었습니다. 그들의 응용 프로그램 데이터베이스는 토스트되었습니다. 몇 달 동안 백업을 수행하지 않았습니다. 그들이 수행 한 백업은 사용할 수 없었습니다. 결국 8 개월의 데이터가 손실되었습니다. 그들은이 조사 작업을 처리하기 위해 IT 컨설턴트를 고용했습니다.
전화가 이어졌고 영업 관리자 (유망한 불가능한 기능으로 알려짐)는이를 처리하고 계약서에 작성했다고 분명히 밝혔습니다.
영업 관리자는 고객에게 파일이 손상된 것으로 간주 될 경우 응용 프로그램 데이터베이스 및 기타 응용 프로그램 관련 파일이 RAID 컨트롤러에 의해 복제되지 않도록 할 것을 약속했습니다. 구성이 필요하지 않습니다. 네. 2 주 안에이 기능을 제공하라는 지시를 받았습니다. 그렇지 않으면 고객이 해고 할 것입니다.
따라서 대기업 CRM 제품과 기타 심각한 개발 성공 사례가있는 프로그램 관리자와 COO 및 영업 관리자와의 회의가있었습니다. 프로그램 관리자는 이것이 얼마나 미쳤고, 불가능하며, 불가능한지를 자세히 설명하고있었습니다. 영업 관리자 (군사 배경)는 단순히 그의 얼굴에 말 그대로 비명을 지 릅니다. "걱정하지 않습니다! RAID를 RAID가 아닌 RAID로 만드는 것이 얼마나 어려울 수 있습니까?! RAID가 망쳐지지 않았습니다! "
회의가 끝나면 프로그램 관리자는 제로 데이 통지로 종료됩니다. 그래서 나는 이제 이것을 맡았습니다. 그 다음 주에 저는 Adaptec과 LSI Logic에 청원을 요청하여 전화 회의 엔지니어를 제공하고 영업 관리자에게 웃음을 전했습니다.
궁극적으로 그들은 의무를 이행하고 거래의 끝을 견뎌냈습니다. 그리고 그들은 그것이 어리석게 불가능한 것에 대해 자세히 설명했습니다. LSI의 사람은 특히 가혹했습니다-그는 설탕을 입히지 않았습니다.
이 기능을 구현할 필요가 없었습니다. 내가 구현해야했던 것은 고객이 요청한 사용자 지정 보안 체계였습니다. 이는 제어 기반 제어에 따라 응용 프로그램의 컨트롤을 표시, 비활성화, 활성화, 읽기 전용 또는 읽기 쓰기로 전환 할 수있게합니다. . 이론적으로 146,000 조합이있었습니다. 컨트롤 그룹을 비활성화하면 실수로 실수 한 경우 부작용이 생길 수 있습니다. 말할 것도없이, 그것이 구현되어야하는 최후 통첩을 받았을 때, 나는 또한 제로 데이 통지로 그만 두었다.
+1
때로는 제로 데이 통지로 종료하십시오. 때로는 떠나야 만하기도하고 어떤 사람들은 결코 그것을 얻지 못하고 계속 방해합니다.
그들은 자동으로 소스 코드 버그를 찾아서 고칠 수있는 상용 제품을 검색하도록 요청했습니다.
2001 년부터 계속 검색 :).
나는 한때 뒤로 이동 할 수있는 코드를 문자 그대로 호출하는 클라이언트 사양을 가지고있었습니다.
고용주는 고객에 대한 데이터를 수집하여 오전 9시에서 오후 5시 사이에 10 분 간격으로 파일 형식 X로 파일을 전달하고 최종 배달을 위해 저장했습니다. 난 그냥 그랬어 그리고 그들은 놀라게했다. 우리는 소량의 데이터를 수집하고 있었으며 실제로 하루에 하나 또는 두 개의 데이터 포인트 만 제공했습니다.
"빈 파일을 사용하여 스팸을 줄이십시오 !!!" 그들은 울었다. "5 분마다 10 분마다 우리의 밴드를 격려합니다!"
괜찮아. 그래서 내 코드는 10 분마다 확인하고 전달해야 할 것이있는 경우에만 전달했습니다. 그럴 수 있지.
"그러나 마지막 파일은 형식 Y 여야합니다 !!!" 그들은 비명을 질렀다. "모던 테크놀로지가 혼란과 분노를 불러 일으키고 있습니다! 수정하거나 우리는 마스토돈을 뿌릴 것입니다! *"
(*-대화의 일부를 잘못 기억하고있을 가능성이 있습니다.)
"따라서 새로운 데이터를 제공 할 경우에만 파일을 전달할 것입니다."
"예."
"그리고 오늘의 최종 배달은 다른 파일 형식이어야합니다."
"예."
"어느 파일이 마지막 날이 될지 알 수있는 방법을 제외하고는."
"예."
"따라서 이것을 구현할 수있는 유일한 방법은 최종 배달로 판명 된 형식을 다시 실행하기 위해 하루가 끝날 무렵에 코드를 작성하는 것입니다."
"당신은 스포츠 스포츠 점수를보고 받았습니까? 우리는 미래 II로 되돌아갔습니다. BIFF TANNEN은 우리를 행복하게 만듭니다."
부분적으로 인과 관계를 위반하는 것은 비 윤리적 인 프로그래밍 관행이기 때문에 부분적으로 거부했습니다. 부분적으로 CPAN.org에는이를 수행 할 수있는 모듈이 없었기 때문입니다. 결국, 그들은 실제 데이터가 있는지 여부에 관계없이 하루 종일 Y 형식의 파일을 보낼 수있었습니다. 나는 그들의 대역폭이 히트를 견뎌냈다고 확신합니다.
+1
인과 관계 위반은 비 윤리적 인 프로그래밍 관행입니다. 이제 더주의를 기울여야 할 규칙이 있습니다.
눈에 띄는 이유없이 개인 회의에 참석하여 어떤 이유로 든 작업 관리자를 확인하지 않는 등 내 컴퓨터가 모니터링되고 있는지 확인하지 말라고 지시했습니다. 나는 그들이 내 컴퓨터를 모니터링하고 있는지 물었고, (대략) 들었습니다. "이것은 단지 예방적인 것입니다. 우리 변호사는 직원들에게 이것에 대해 알려주라고 말했지만 실제로는 말할 수 없습니다- -하지만 지금은 모니터링하지 않습니다. "
(아저씨는 모니터링 프로그램을 찾지 말라고 지시하는 동안이 아니라 내 컴퓨터를 모니터링하고 있다고 생각합니다. 실제로 몇 주 후, 나는 일찍 와서 마치 마우스가 화면에서 움직이는 것처럼 화면에서 움직이는 것을 보았습니다. 원격-그래서 CEO의 창을 살펴보고 그의 랩톱에서 내 컴퓨터를 원격으로 클릭하는 것을 보았습니다.)
나는 한 번만 썼기 때문에 비트 데이터 유형으로 2를 저장할 수 있다고 주장 하는 뾰족한 머리의 상사 와 함께 오랫동안 "토론"을했습니다 .
내가 요청받은 가장 어리석은 일은 아마도 매우 큰 프로젝트를 처음부터 다시 작성 했을 것입니다 . 그것은 약 350k 줄, 모든 C ( 'helper'스크립트를 위해 작은 펄이 섞여 있음)이며 클라이언트가 무엇을했는지 상관없이 잘 작동했습니다.
거의 1 년 후, 우리는 다음과 같이했습니다.
기본적으로 합리적인 리팩토링으로 달성 할 수 없었던 것은 없습니다. 그러나 상사는 행복했고 도우미 스크립트를 제거했습니다.
나는 그것이 내가 본 것 중 가장 심오한 시간 낭비와 기존 코드라고 생각합니다.
클라이언트 : 우리는 몇 년 동안 데이터베이스 소프트웨어를 사용해 왔으며 자체 응용 프로그램을 개발하고 때때로 도움을 요청합니다.
나 : 네, 우리는 당신과 함께 사업을 주셔서 감사합니다.
클라이언트 : 네. 전화를 걸 때마다 새로운 기능을 사용하는 방법을 알려주거나 사용법을 디버깅하거나 일부 문제에 대한 해결 방법을 제공합니다.
나 : 물론, 우리는 항상 기꺼이 도와 드리겠습니다.
클라이언트 : 간혹 제품에 실제 버그가있는 경우가 있으며 회사에서이를 수정하여 소프트웨어 업데이트를 제공합니다.
나 : 최선을 다합니다.
고객 : 이제 우리에게 필요한 것은 더 이상 문제가 없다는 확신입니다 .
나 : . . .
"스파게티 코드"코딩 기술을 사용한 주요 다국적 잠재 고객에게 소프트웨어 프레젠테이션을 작성하라는 요청을 받았습니다.
물론 우리는 이탈리아에 있습니다.
무료로 일하십시오.
보자 :
C ++로 프로그램 작성
좋아, 나는 당신이 집의이 그림을 스캔하기를 원한다. 내가 돌아올 때, 당신은 나에게 그것의 뒤 부분을 보여줄 수 있어야한다.
경쟁 업체 웹 사이트의 기사를 웹 사이트의 스킨 내부에있는 iframe 내부에로드하여 마치 우리에게서 온 것처럼 보이게했습니다.
나를 위해, 가장 미친 것 (그리고 아마도 가장 재미있는)은
(오래된 웹 기술)에서이 천만 줄의 코드를 보시겠습니까? 작동하는 Asp.net 사이트로 변환 할 컴파일러를 작성하십시오.
그것은 결코 작동하는 버전을 내뱉지 않았습니다 (물론, 비현실적이라고 말하려고했지만 어쨌든 재미있었습니다).
회사에서 개발 한 응용 프로그램의 주요 기능 중 하나는 문서의 전체 텍스트로 많은 양의 문서를 검색 할 수 있다는 것입니다. 경쟁 업체가 고객 중 한 사람에게 마케팅 프레젠테이션에서 다음 주장을했습니다.
우리의 검색 기술은 문서의 텍스트를 검색 할뿐만 아니라 실제 파일의 '비트와 바이트'를 이진 형식으로 검색하기 때문에 우수합니다.
그들은 표현에서 실제 숫자를 비교할 때 "boot"와 "boat"라는 단어의 십진수 아스키가 어떻게 이진 형태의 같은 단어보다 훨씬 덜 유사했는지에 대한 우스운 예를 들었습니다. 따라서 1과 0을 기준으로 검색하면이 두 단어가 시각적으로 어떻게 유사한 지 더 정확하게 반영하여 리콜이 향상되었습니다.
당연히 나는이 기술을 연구하는 임무를 맡았습니다. 마케팅 담당자가 프로그래머를 완전히 오해하고 제안에 포함 할 수있는 응답을 작성 한 결과라고 생각합니다.
1996 년에 우리는 라이브 스포츠 이벤트를 기록하는 큰 프로젝트를 진행하고있었습니다. 이 대화는 일어났다 :
보스 : 다음 행사 장소로 가십시오.
나 : 어떻게해야합니까?
보스 : 만일을 대비해 거기에 있으십시오.
나 : 만약을 위해 무엇을?
보스 : 기술 책임자가 그것을 잃는 경우. 그는 너무 스트레스를 받았으며 그가 무엇을할지 모르겠습니다.
나 : 그리고 만약 그가 그것을 잃어 버렸다면, 내가 뭘 원하니?
보스 : 다른 사람들이 계속 일할 수 있도록 그냥 나가십시오. 나는 당신이 어떻게하는지 상관하지 않습니다.