문제
문제. Problem. 현재 상태와 목표 상태의 차이. 디자인의 출발점. 프로그래밍의 이유.
디자인은 문제를 해결하는 일이다. 사용자가 무엇을 필요로 하는가? 어떤 불편함이 있는가? 형태와 기능을 통해 문제에 답한다.
프로그래밍도 문제 해결이다. 알고리즘은 문제를 단계별로 분해하고, 코드는 그것을 실행 가능하게 만든다. 버그는 예상치 못한 문제이고, 디버깅은 그것을 찾아 해결하는 일이다.
“문제가 무엇인가?”라는 질문이 “해결책이 무엇인가?”보다 중요할 때가 많다. 올바른 문제를 찾는 것이 첫 번째 단계다.