코드 컴플리트 2는 소프트웨어계에 수학의 정석이다. 구현에 관한 거의 모든 것을 알려준다. 그리고 아주 자세히 알려준다. 구현을 하기 전에 준비사항부터 설계는 어떻게 하고, 프로그래밍 언어 선택은 무엇을 하고 변수명 조건문 등등 구현에 필요한 거의 모든 것을 다루고 심지어 책 후반부에서는 소프트웨어 장인 정신과 개발자의 성격까지 다루고 있다.
어설프게 아는 주제를 더 잘 아는 비슷한 주제를 비교해 이해함으로써 결과적으로 덜 친숙한 주제를 잘 이해할 수 있다. 비유를 이렇게 사용하는 것을 “모델링”이라고 한다.
비유를 얼마나 잘 이해하느냐가 소프트웨어 개발을 얼마나 잘 이해하느냐를 결정한다.
내가 아는 한 훌륭한 개발자는 비유를 기가 막히게 잘한다. 다른 사람한테 설명하기 어려운 말을 비유를 통해서 아주 쉽게 이해할 수 있도록 설명한다. 단순히 창의적인 사람이라고 생각할 수 있겠지만 이러한 능력은 프로그래밍 문제와 프로세스를 이해하는데 많은 도움이 된다.
호스트 리텔과 멜빈 웨버는 “불명확한” 문제란 전체 혹은 일부를 해결해야만 정의할 수 있는 문제라고 정의했다(Horst and Melvin 1973).
그래서 문제를 명확하게 정의하려면 문제를 한 번 “해결”해야 하며, 반복적이고 점진적으로 문제를 해결해야 한다.
아키텍처에서 최종 구조에 대한 대안을 고려했던 근거와 다른 대안들 대신 지금의 구조를 선택한 이유를 찾아야 한다.
기존에는 내가 알고 있는 지식 안에서 어떻게 아키텍처를 만들고, 어떤 기술적 선택을 할지 결정했었는데, 왜 이러한 선택을 했는지 설명할 수 있어야 한다.
디버깅에 대해서 이렇게 자세히 다룬 책을 본 적이 없는 것 같다. 디버깅을 할 때 느낌대로 진행하는 것이 아니라 과학적으로 접근해야 한다.
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!