따라서 이것은 실제 실제 시나리오가 아니라 면접 질문이라는 점을 명심하십시오. 올바른 접근법 (아마도 면접관이 찾고있는 것)은 명확한 질문을하거나 " 완료하고 계속 진행하십시오. 이유는 다음과 같습니다.
면접관이 묻는 것 :
같은 값을 두 번 반환하지 않는 함수를 작성하십시오. 이 기능은 여러 컴퓨터에서 동시에 액세스한다고 가정하십시오.
면접관에게 필요한 것 :
이 응시자는 요구 사항을 효과적으로 평가하고 필요할 때 추가 의견을 구합니까?
절대 가정하지 마십시오.
엔지니어가 SOW 또는 사양 또는 기타 요구 사항 문서를 통해 요구 사항을 전달할 때 일부는 자명하고 다른 일부는 완전히 불분명합니다. 이것은 후자의 완벽한 예입니다. 이전 답변에서 보았 듯이 (a) 질문의 본질 또는 (b) 시스템의 본질에 대한 몇 가지 주요 가정을하지 않고이 요구 사항에 대응할 수있는 방법은 없습니다. 작성된대로 (불가능합니다).
대부분의 답변은 일련의 가정을 통해 문제를 해결하려고 시도합니다. 특히 신속하게 처리하고 잘못되었을 경우 고객이 걱정하도록하는 것이 좋습니다.
이것은 실제로 나쁜 접근 방식입니다. 고객으로서, 불명확 한 요구 사항을 제시하고 엔지니어가 업무를 수행하지 않는 솔루션을 구축하면 고객이 먼저 물어 보지 않고 일을하고 돈을 소비 한 것에 대해 화를 낼 것입니다. 이러한 종류의 무심한 의사 결정은 팀워크 부족, 비판적으로 생각할 수 없음 및 판단력이 부족함을 나타냅니다. 안전에 중요한 시스템의 수명 손실을 포함하여 모든 부정적인 결과를 초래할 수 있습니다.
왜 질문을합니까?
이 연습의 요점은 모호한 요구 사항을 충족시키는 데 많은 비용과 시간이 소요된다는 것입니다. OP의 경우, 당신은 불가능한 임무를 받았습니다. 첫 번째 조치는 설명을 요청하는 것입니다. 필요한 것은 무엇입니까? 어느 정도의 독창성이 필요합니까? 값이 고유하지 않으면 어떻게됩니까? 이 질문에 대한 답은 몇 주에서 몇 분의 차이 일 수 있습니다. 현실적으로 복잡한 시스템 (많은 소프트웨어 시스템 포함)에서 가장 큰 비용 동인 중 하나는 명확하지 않으며 이해하기 어려운 요구 사항입니다. 이로 인해 비용이 많이 들고 시간이 많이 걸리는 버그, 재 설계, 고객 및 팀의 좌절감, 그리고 프로젝트가 충분히 큰 경우 미디어 범위가 난처 해집니다.
가정하면 어떻게 되나요?
항공 우주 산업에 대한 배경 지식과 항공 우주 실패의 가시성이 매우 높기 때문에이 영역에서 중요한 요점을 설명하기 위해 예를 제시하고자합니다. 화성 기후 궤도 선과 화성 극지 착륙선이라는 두 가지 실패한 화성 임무를 살펴 보겠습니다. 엔지니어가 부분적으로 불명확하고 의사 소통이 어려운 요구 사항으로 인해 잘못된 가정을했기 때문에 소프트웨어 문제로 인해 두 가지 임무가 모두 실패했습니다.
Mars Climate Orbiter- 이 사례는 일반적으로 NASA가 영어를 미터법 단위로 변환하려고 할 때 발생하는 것으로 언급됩니다. 그러나 그것은 실제로 일어난 것을 지나치게 단순하고 열악하게 표현한 것입니다. 사실, 변환 문제가 있었지만 설계 단계에서 통신 요구 사항이 잘못되고 검증 / 검증 체계가 부적절했기 때문입니다. 또한, 두 명의 다른 엔지니어가 비행 궤도 데이터에서 명백해 문제를 발견했을 때, 전송 오류라고 가정하여 문제를 적절한 수준으로 높이 지 않았습니다. 선교부 팀이 그 문제를 알게 되었으면, 그것을 해결하고 임무를 저장하기에 충분한 시간이있었습니다. 이 경우 불가능한 논리 조건으로 인해 인식되지 않아 비용이 많이 드는 미션 실패가 발생했습니다.
화성 극지 착륙선-이 사례는 잘 알려지지 않았지만 화성 기후 궤도 오류와의 일시적인 근접성으로 인해 더 난처 할 수 있습니다. 이 임무에서 소프트웨어는 로켓의 화력 보조 화력을 화성 표면으로 제어했습니다. 표면 위 40m 지점에서 착륙선의 다리가 착륙 준비를 위해 배치되었습니다. 또한 다리에 센서가 엔진을 정지 시키도록 움직임을 감지 (충돌했을 때 신호를 보냄)하는 센서가있었습니다. NASA가 어떤 일이 일어 났는지에 대한 최선의 추측은 (다수의 실패와 불완전한 데이터가 있기 때문에) 다리의 동시 진동으로 인해 다리의 임의 진동이 표면 위 40m의 셧다운 메커니즘을 부적절하게 트리거하여 $ 110의 충돌과 파괴를 초래한다는 것입니다 M 우주선. 이 가능성은 개발에서 제기되었습니다. 그러나 결코 해결되지 않았습니다. 궁극적으로, 소프트웨어 팀은이 코드를 실행하는 방법에 대한 잘못된 가정을 만들었습니다 (이러한 가정 중 하나는 가짜 신호가 너무 짧아서 그 반대의 결과를 보여 주었음에도 불구하고이를 포착 할 수 없다는 것입니다). 사실.
추가 고려 사항
사람들을 인터뷰하고 평가하는 것은 까다로운 사업입니다. 면접관이 탐구하고자하는 후보에는 몇 가지 차원이 있지만, 가장 중요한 것 중 하나는 비판적으로 사고하는 개인의 능력입니다. 비판적 사고가 잘 정의되어 있지 않다는 여러 가지 이유로, 우리는 비판적 사고 기술을 평가하는 데 매우 어려운 시간을 보냅니다.
공학 강사로서 비판적으로 생각하는 학생의 능력을 평가하는 가장 좋아하는 방법 중 하나는 다소 모호한 질문을하는 것입니다. 더 예리한 학생들은 질문의 잘못된 전제를 선택하고, 참고하고, 전제에 따라 대답하거나 전혀 대답을 거부합니다. 일반적으로 다음과 비슷한 질문을합니다.
작업 스택에서 도면을 선택합니다. 도면에는 다양한 콜 아웃이 포함되어 있지만 가장 중요한 점은 수평 표면을 가리키며 "완벽하게 평평"합니다. 표면의 길이는 5 "x 16"이고 부품은 알루미늄입니다. 이 피쳐를 생성하기 위해 파트를 어떻게 가공합니까?
(그런데, 당신은 그러한 열악한 사양이 직장에서 얼마나 자주 나타나는지에 충격을받을 것입니다.)
학생들은 완벽한 기능을 만들 수 없다는 것을 인식하고 답변에이를 설명 할 것으로 기대합니다. 나는 그들이 디자이너에게 돌아가서 부품을 만들기 전에 설명을 요구한다고 말하면 일반적으로 보너스 포인트를 수여합니다. 학생이 .001 평면성 또는 다른 구성 가치를 달성하는 방법을 말해 주면 나는 0 점을 부여합니다. 이를 통해 학생들에게 더 큰 그림을 생각할 필요가 있음을 알려줍니다.
결론
엔지니어 (또는 유사한 직종)와 인터뷰 할 때 비판적으로 생각하고 그 앞에 무엇이 놓여 있는지 질문 할 수있는 사람을 찾고 있습니다. "이것이 말이 되나요?"라는 질문을하는 사람을 원합니다. .
완벽하지 않은 부분이 없기 때문에 완벽하게 평평한 부분을 요구하는 것은 의미가 없습니다. 중복 값을 반환하지 않는 함수를 요청하는 것은 이치에 맞지 않습니다. 이러한 보장은 불가능합니다. 프로그래밍에서 우리는 종종 "쓰레기 수거, 쓰레기 수거"라는 문구를 듣습니다. 요구 사항에 대해 쓰레기를 수령 한 경우, 진정한 의도를 이끌어내는 데 도움이되는 모든 질문을 중단하고 물어 보는 것은 윤리적 인 책임입니다. 후보를 면담 할 때 불명확 한 요구 사항을 제시하면 명확한 질문이있을 것입니다.