34장 소프트웨어 장인정신에 대한 주제
목차
- 34.1 복잡성 정복
- 34.2 자신에게 맞는 프로세스 선택
- 34.3 컴퓨터보다 사람을 위한 프로그램을 작성하라
- 34.4 언어에 제약을 받지 않고 언어를 활용한 프로그래밍
- 34.5 규약을 활용하여 핵심에 집중
- 34.6 문제 중심의 프로그래밍
- 34.7 낙석을 주의하라
- 34.8 반복, 반복, 또 반복
- 34.9 소프트웨어와 신조를 떼어 놓아라
이번 장에서는 이 책 전체에서 다룬 내용을 조금 정리하는 느낌이 강했다. 이번 장을 읽으면서 지금까지 읽어왔던 부분을 되돌아보는 시간을 가지면 좋을 것 같다.
34.1 복잡성 정복
규약을 정하는 것과 추상화는 복잡성을 관리하는 강력한 도구이다.
34.2 자신에게 맞는 프로세스 선택
혼자서 일하는 것이 아니라면 좋은 프로세스가 높은 생산성을 낳는다.
34.3 컴퓨터보다 사람을 위한 프로그램을 작성하라
코드를 사람이 읽기 쉽게 작성해라. 이는 미래의 나를 위한 일이기도 하다. 컴퓨터는 2진 언어를 잘 알아듣지만, 사람은 그렇지 않다. 사람을 위한 코드를 작성하면 이해도와 검토 용이성, 오류 비율, 디버깅, 수정 용이성, 결과적으로 개발 시간과 외적 품질을 향상시킨다.
34.4 언어에 제약을 받지 ㅇ낳고 언어를 활용한 프로그래밍
프로그래밍에 대한 모든 행위는 프로그래밍 언어가 기본적으로 제공하는 개념에 의해서 제약을 받지 않아야 한다. 최고의 개발자들은 그들이 무엇을 원하는지 생각한 다음에 그들이 원하는 대로 프로그래밍 도구를 사용하여 목표를 달성할 방법을 결정한다.
34.5 규약을 활용하여 핵심의 집중
여러번 강조하는 부분이다. 규약은 창의성을 해치는 것이 아니라 불필요한 부분에 창의성을 낭비하는 것을 막아주는 도구이다. 공백을 몇 칸으로 할지, 전역 변수는 어떻게 선언할지, 상수의 이름은 어떻게 지을지 등과 같은 일을 하는 것에 시간과 두뇌를 쓰는 것을 막아 생산적인 일을 하는데 도움을 준다.
34.6 문제 중심의 프로그래밍
최대한 고수준에서 이해할 수 있도록 프로그램을 만들어야한다. 어떤 파일 시스템을 사용하는지, TCP를 사용하는지에 대해 사용자가 알 필요가 없도록 하는 것이 좋다.
34.7 낙석을 주의하라
사소한 경고에도 주의를 기울여라. 교묘한 코드를 피하고, 컴파일러의 경고 메시지를 그냥 넘어가지 말라.
34.8 반복, 반복, 또 반복
반복은 많은 소프트웨어 개발 행위에 적합하다. 시스템의 초기 명세화 과정에는 모든 요구사항에 동의할 때까지 다양한 버전의 요구사항을 놓고 사용자와 작업하는 것도 포함된다. 이것은 반복적인 프로세스다. 시스템을 여러 단게로 나누어 만들고 배포하여 프로세스에 융통성을 주는 것도 반복적인 프로세스다. 최종 제품을 만들기 전에 빠르고 비용이 적게 드는 대안 해결책을 개발하기 위하여 프로토타이핑하는 것도 반복적인 프로세스다. 요구사항의 반복은 소프트웨어 개발 프로세스의 다른 부분만큼이나 중요할 것이다. 프로젝트는 대안을 살표보기 전에 한 가지 해결책에 대해서만 작업을 수행하기 때문에 실패한다. 반복은 제품을 만들기 전에 제품에 대해서 알 수 있는 길을 제공한다.
34.9 소프트웨어와 신조를 떼어 놓아라
내가 믿고 있던 것이 소프트웨어에서는 항상 올바른 것이 아닐 수 있다. 다른 의견을 받아들이는 것에 익숙해져야 더 좋은 개발자가 될 수 있을 것이다.