Chapter 2

2.1 비유의 중요성

어설프게 아는 주제를 더 잘 아는 주제와 비교해 이해함으로써 결과적으로 덜 친숙한 주제를 잘 이해할 수 있다.
비유를 이렇게 사용하는 것을 모델링 이라고 한다.

비유는 소프트웨어 개발 문제를 이해하는 데에도 크게 기여했다.
비유의 힘을 과소평가해서는 안된다.
“잘못된 비유”에서 “올바른 비유”로 바뀌는 것이 아니다.
“좋지 않은 비유”에서 “더 좋은 비유”, 덜 포괄적인 것에서 더 포괄적인 것으로 바뀌어가는 것이다.

비유를 얼마나 잘 이해하느냐가 소프트웨어 개발을 얼마나 잘 이해하느냐를 결정한다.

2.2 소프트웨어 비유 사용법

소프트웨어 비유는 답을 어디서 찾아야 하는지 말해주기보다는 어떻게 찾을지 알려준다.
비유는 알고리즘보다 발견적인 학습으로서 더 많은 역할을 담당한다.
알고리즘은 특정 작업을 수행하기 위한 잘 정의된 명령의 집합이다.
발견적 학습은 답을 찾는 데 도움을 주는 기법이다.

프로그램은 저마다 개념적으로 고유하기 때문에 모든 경우에 대한 해결책을 얻을 수 있는 일반적인 방법을 만들기는 힘들다.
따라서 일반적으로 문제에 다가가는 방법을 아는 것이 특정 문제에 대한 구체적 해결책을 아는 것만큼 유용하다.

비유를 프로그래밍 문제와 프로세스를 이해하는 데 활용하라.
프로그래밍 활동에 대해 생각하고 더 나은 작업 수행 방법을 생각해내는 데 도움을 받아라.

소프트웨어 글쓰기: 코드 작성

소프트웨어 개발이 편지를 쓰는 것과 같다는 얘기이다.
펜과 잉크, 종이를 들고 자리에 앉아서 처음부터 끝까지 정해진 형식 없이 작성하고 싶은 것을 작성하는 것이다.

글쓰기에서는 가장 중요한 것이 독창성인데,
소프트웨어 구현에서는 이미 나와있는 것들을 활용하는 데 초점을 맞추는 것이 더 효과적일 때가 많다.
따라서 소프트웨어 개발 프로세스에 이 비유는 큰 도움이 되지 않는다.

소프트웨어 농사: 시스템 키우기

소프트웨어를 농사에 비유했을 때의 약점은
그것이 소프트웨어 개발 방법을 직접 통제하지 못한다는 사실을 암시한다는 점이다.

소프트웨어 조개 양식: 시스템 증대

소프트웨어를 조개 양식에 비유한다는 것은 어떻게 코드를 시스템에 조금씩 추가할 것인지 배워야 한다는 뜻이다.
점증적으로 설계하고 구축하고 테스트하는 것이 활용 가능한 소프트웨어 개발 개념 중 가장 강력하다.

점증적 비유의 장점은 허황되지 않다는 것이다.
굴이 진주를 만드는 그림은 점증적 개발이나 증대를 시각화하기에 좋다.

소프트웨어 건설: 소프트웨어 구축

소프트웨어 구축에는 무엇을 구축하고 있느냐에 따라
종류와 정도가 다른 계획 수립과 준비, 실행이 수반된다.

소프트웨어 개발에서 쓰이는 많은 용어들이(소프트웨어 아키텍쳐, 비계, 구현, 기초 클래스, 코드 분류)가 건축 공사 비유에서 나왔다.
건축 공사 비유는 여러 방향으로 확장될 수 있으며 이것이 바로 이 비유가 강력한 이유이다.

소프트웨어 기법의 적용: 지적 도구 상자

프로그래밍에 대해 더 많은 것을 배울수록 머릿속이 도구 상자는 더 꽉꽉 채워지고,
그것들을 언제, 어떻게 사용할지에 대한 지식으로 채워질 것이다.

도구 상자 비유는 모든 방법과 기법, 팁을 언제든 사용할 수 있도록 균형 잡힌 시각을 유지하는 데 도움을 준다.

비유 결합

비유는 알고리즘적이기보다 발견적이기 때문에 상호 배타적이지 않다.

생각을 자극하거나 팀원들과의 원활한 의사소통을 위하여 어떤 하나의 비유를 사용하거나 여러 비유를 조합하여 사용해도 좋다.

Updated:

Leave a comment