개발자라는 직업은 왜 이렇게 힘든 직업일까요? 개발자들은 시스템 공학적인 사고 경향이 있습니다. 우리는 모두 퍼즐, 즉 풀 수 있는 문제를 좋아합니다. 현재 상태를 파악하고 가용한 자원을 파악해서 원하는 결과를 바꾸기 위해서 노력합니다. 이러한 문제를 풀 때는 체계적으로 문제를 해결하면 됩니다. 그래서 불확실한 문제를 확실한 문제로 만들려고 합니다. 확실한 문제를 잘 해결하는 방법은 이미 많이 알려져 있기 때문입니다. 문제를 풀기 전에 목표를 명확히 한다든지, 정보를 많이 모은다든지 데이터를 기반으로 생각한다든지, 지침을 많이 만든다든지 방법들이 많습니다.
하지만 불확실한 문제에 대해서는 통하지 않습니다. 우리가 진짜 풀어야 하는 문제는 퍼즐이 아니라 미스터리입니다. 시스템 공학적인 사고가 오히려 우리를 방해합니다. 문제를 푼다는 것은 목표와 현재 상태를 일치시키는 건데 목표가 무엇인지도 잘 모르는데 어떻게 일치시킬 수 있을까요?
불확실한 문제를 해결할 때는 다르게 접근해야 합니다. 명확한 목표 설정보다는 목표를 달성하기 위해 노력하면서 계속해서 목표를 재정의해야 합니다. 정보를 무조건 많이 모으기보다는 상황 파악이 더 중요합니다. 통계적인 데이터에 고착되기보다는 체계적인 분석과 직관을 적절히 섞어서 사용해야 합니다.
개발자는 불확실한 문제에 접근하는 방법도 알아야 하고 질서정연한 문제에 접근하는 방법도 둘 다 알아야 합니다. 그래서 어렵습니다.
공부할 때도 마찬가지입니다. 공부를 할 때는 구체적으로 해야 되는데 코드를 짤 때는 추상적으로 생각해야 합니다. 이러한 불일치가 우리를 힘들게 합니다.
따라서 우리는 한정된 프레임을 버려 기존의 사고 모형에서 벗어나야 하며, 새로운 사고 모형을 배워야 합니다. 그럴려면 현상에 대해 호기심을 가지고 능동적인 태도로 문제를 해결하려고 하고 다른 프레임으로 바라보려고 노력해야 합니다.
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!