모던 소프트웨어 엔지니어링 - 1장

Q. 소프트웨어 엔지니어는 왜 학습의 전문가가 되어야 하나요? 소프트웨어 개발은 발견과 탐구의 과정인가요?

A. 발견과 탐구의 과정은 특정 직업이나 행동에 종속되지 않습니다. 발견과 탐구는 태도입니다. 어떤 직업을 가지더라도, 발견과 탐구를 도구삼아 더 나은 경지를 노릴 수 있고 이는 소프트웨어 개발만의 특권은 아닙니다.

소프트웨어 개발은 제품을 만들어내 사람들에게 선보이는 과정입니다. 이 정의에는 제품 생산 과정을 더 발전시켜야할 의무가 담겨져 있지 않습니다.

다만 더 나은 경지를 노리지 않는다고 하면 소프트웨어 개발을 하더라도 공학자는 아닙니다. 그래서 소프트웨어 엔지니어라면 학습의 전문가가 되어야 합니다.

Q. 소프트웨어 엔지니어는 왜 복잡성 관리의 전문가가 되어야 하나요?

A. 공학자라면 더 빠르고 더 좋은 품질의 제품을 만들어내기 위해 복잡성 관리의 전문가가 되어야 합니다.

복잡성 관리 도구로서 모듈화가 좋은 예시 입니다. 프로그래머의 뇌 저서에 따르면 작업자는 한번에 6개 내외의 정보밖에 처리하지 못합니다. 하나의 거대한 덩어리에 세부사항이 늘어날 수록, 맥락을 파악할 수 없어 새로운 기능을 붙이거나 유지보수하는 것이 불가능해집니다. 이때 의미있는 단위로 분리해서 복잡성을 정복해나갈 수 있습니다.

총기도, 로켓도, 자동차도, 비행기도, 의미있는 단위로 모듈화하고, 각 모듈별로 전문가가 존재합니다. 더 깊고 뾰족하게 파고들 수 있게되어, 더 좋게, 더 빠르게 제품을 만들 수 있습니다. 소프트웨어또한 마찬가지입니다.

공학자라면, 더 나은 제품을 만들기 위해서 제품을 분할하고 정복하는게 최선입니다. 사람의 뇌는 모든 세부사항을 인지하며 새로운 사실을 발견할 수 없기 때문입니다.

원본 1