비 프로그래머가 개발 프로세스를 이해하도록하기 하나는 모든 버그가없는 완성 된 제품이

주로 프로그래밍 회사가 아닌 회사를위한 프로젝트를 시작할 때 기대되는 것 중 하나는 모든 버그가없는 완성 된 제품이 있으며 즉시 필요한 모든 것을 수행한다는 것입니다. 그러나 거의 그렇지 않습니다.

소프트웨어 개발이 다른 유형의 제품 개발과 어떻게 다른지 기대치를 관리하고 비 프로그래머에게 설명하는 몇 가지 방법은 무엇입니까?



답변

요즘 컴퓨터를 가진 모든 사람들은 “버그”라는 개념을 접하게되므로 시작할 수 있습니다. “응용 프로그램이 실패한 가장 성가신 방법은 무엇입니까? 10을 곱하면 테스트 및 유지 관리에 충분한 리소스를 할당하지 않으면 사용자 경험이 향상됩니다.”

프로그래머가 아닌 사람과 좋은 관계를 맺는 것의 가치를 과소 평가하지 마십시오. 만약 당신의 판단을 신뢰할 수 있다고 확신 할 수 있다면, 당신이 당신의 추론을 완전히 이해하지 못한다고해도 Y 발음을하지 않으면 X가 크게 실패 할 것이라는 경고를 들으면 진지하게 받아 들일 것입니다.


답변

내가 찾은 한 가지 접근법은 다음과 같습니다.

우리 모두는 컴퓨터가해야 할 일만 정확하게 수행한다는 것을 알고 있습니다.

프로그래밍은 우리가 컴퓨터를 말할 방법입니다 지금 우리가 무엇을 무엇을 나중에 .

이것은 당신의 행동이 지금 행동하는 방식이 당신 의 컴퓨터에서 실행되는 코드를 작성한 모든 사람들의 의도 때문 이라는 것을 의미합니다 . 운영 체제, 드라이버, 프로그래밍 환경, 라이브러리 등의 복잡성을 고려할 때 대부분의 시스템에는 2 천만 명 이상이 참여해야하며 100 만 명 이상이있을 수 있음을 쉽게 알 수 있습니다.

각 사람이 작성한 코드는 자신의 이해, 동기 부여, 의도 및 능력을 반영합니다. 시스템의 완벽한 동작을해야 감안할 때 모든 이 20K 사람이 작성한 코드의 오류없이 상호 작용 – 것을 모든 코드가 의미하고 필요한 행동의 해석에 동의해야는 의외의 사실은 우리가 버그를 가지고 아니라, 우리는 그들 중 몇이 없습니다.


답변

IMO는 민첩한 프로세스 (예 : 스크럼, 크리스탈 등)가 제공하는 투명성이 개발이 일반 이해 관계자에게 어떻게 작동하는지 보여주기 위해 먼 길을가는 것을 발견했습니다.


답변

은유에 의한 설명은 누출되는 추상화이지만 다음은 종종 저에게 효과적입니다.

이 설명 중 어느 것도 조잡한 일을 용서하지 않습니다.

컴퓨터 프로그램을 모든 변수가 움직이는 부분 인 기계라고 생각하십시오. 그것은 사소한 프로그램조차도 수백 개의 움직이는 부분으로 구성된 기계로 만듭니다.

그것이 실패하면, 나는 프로그램에 오류가 없다는 것을 수학적으로 증명할 수는 있지만 많은 시간이 걸리고 노력할 가치가 없다는 사실로 돌아갑니다.

마지막으로 인텔과 Microsoft가 버그를 피할 수 없는지 묻습니다. 어떻게해야합니까?


답변

비슷한 질문 에 더 자세히 대답 했지만 요점은 “프로그래밍은 공장이나 조립 라인을 구축하는 것과 같습니다.”입니다.


답변

이를 나타내는 전통적인 방법은 프로젝트 관리 삼각 지대입니다. 범위, 비용 및 일정의 세 가지 경쟁 기준; 일반적으로 “저렴하고 빠르며 좋습니다. 두 개를 선택하십시오.”

디자인, 개발 및 배포 프로세스 가 끝날 때 제품에 디자인 결함이없고 특정 기능으로 작동한다는 기대는 완벽하게 합리적입니다. 동일한 기대는 프로젝트, 프로세스 또는 직업과 관련하여 완전히 불합리합니다.

과학에 기반을 둔 전문가가 어렵거나 부드럽지만 탐구 과정을 거치지 않고, 정확하지 않은 (또는 단순한 틀린) 전술에 따라 부정확하고 부정확 한 개념을 형성하고 시행 착오를 통해 작동하는 것을 발견하고 자원이 고갈되거나 충분한 수준의 성능에 도달 할 때까지 계속해서 처리합니까?

더 높은 품질 수준에 무조건 접근 할 수 있지만 프로세스에는 결함이 없습니다.

전술에는 종종 추측과 프로토콜이 포함되는 의료 분야에서도 마찬가지입니다. 대부분의 활동은 기본적으로 대부분의웨어웨어 시스템을 디버깅하는 것입니다. 새로운 엔지니어링 재료의 응용 분야를 현장에서 검증해야하고 표준을 엄격하게 준수하더라도 수년간의 서비스를 수행 한 후에 갑자기 실패 할 수있는 토목 공학 및 건축은 사실입니다. 적용되는 엔지니어링 또는 수리 서비스의 결함없이, 작동 조건의 수명과 변화가 일반적으로 장애 지점까지의 성능에 영향을 미치는 자동차 분야에서도 마찬가지입니다. 소프트웨어 개발은 이러한 점에서 이러한 직업과 근본적으로 다르지 않으며 , 목적이있는 참신한 기계를 고안하는 데 초점을두고 있습니다.


답변

원자로 제어, 우주 통신 또는 의료용 임플란트 장치 등과 같은 Hi-rel 소프트웨어 개발에 익숙한 경우 해당 수준의 Priject Management 및 QA에 대한 비용 및 배송 시간 구조를 설명 할 수 있습니다. 일반적인 비즈니스가 소프트웨어 프로젝트에 제공 할 수있는 것보다 훨씬 큰 규모 일 수 있습니다.