Part 2
핵심 강의
강의 개요
초.중.고 교사를 위한 피지컬 컴퓨팅 해커톤을 진행한 적이 있습니다. Micro Python을 사용할 수있는 어썸보드(AsomeBoard)라는 아두이노와 유사한 보드를 이용한 프로젝트입니다.
::: tip 어썸보드에 관해서는 http://www.asomeit.com/ 링크를 참고하세요. :::
저는 멘토 중 한 명으로 여러 팀을 계속 도와주고 있었는데, 한 팀이 상당히 시간이 지난 시점에서 도움을 요청해왔습니다. 그리고 아래와 같이 자신들이 설계한 플로우 차트와 진행된 코드를 보여줬는데, 도저히 그대로 진행이 어려운 상황이었습니다.
아래는 저에게 보여준 플로우 차트입니다. 빨간선 안 쪽은 제가 설명을 들으면서 정리한 부분입니다.
강의 전 준비 사항
- python 개발 환경
이 강의에서 다룰 내용
- 프로젝트를 시작할 때 요령
- OOP에 발가락 담그기
::: danger 군더더기를 피하기 위해서 현장 상황을 아주 자세하게 전달하지 않을 예정입니다. 따라서 그에 따른 오해와 혼선이 있을 수 있습니다. 의문점이나 개선점은 유튜브 영상에 댓글로 남겨주세요. :::
상황 설명 및 당시 저의 고민
- 시간이 촉박한데 생각보다 구조가 복잡하다.
- if 안에 또 if 그리고 또 if
- 너무 길고 중첩되는 블록
- 논리 적 흐름을 이해하기 어렵고 오류로 인해서 활용할만한 부분이 별로 없다.
- 생각보다 구조가 복잡해서 모듈화를 하는 편이 설명하기도 구현하기도 편하다.
- 프로그래밍을 접한 지 얼마 안되는 분들에게 모듈화나 OOP를 설명하는 것이 옳은가?
- 다른 팀도 살펴봐야 하기 때문에 시간이 많지 않다.
- 절차적인 방식으로 기본적인 코드를 만들어 주면 스스로 해결이 안될 거 같다.
- 간단한 코드라면 절차적인 방식이 압도적으로 좋다.
- 하지만 선생님들이 원하는 프로젝트는 자신들의 수준에 비해서 너무 복잡하다.
- 그래도 OOP는 초보에게 아니지 않는가?
이것이 당시 짧은 시간 동안 몇 번이나 반복하면서 빠르게 제 머릿속을 휘저었던 고민이었습니다. 정말 오랫만에 엄청나게 집중할 수 있었습니다 ^^
프로젝트를 시작할 때 요령
"어떻게"보다는 "무엇을" 해야 하는지 정리해야 합니다.
이 에피소드의 주인공을 포함한 초보분들 중 많은 분들이 "무엇을" 해야하는지 충분하게 고민하지 않고 "어떻게"해야 하는 가를 고민하는 경우를 있습니다. 이것은 실무에서도 자주 목격합니다. 무엇을 해야 하는지 제대로 정하지도 않은 상태에서 어떻게 해야 할 까를 고민하는 것은 시간 낭비입니다.
규모가 큰 프로젝트라면 "왜" → "무엇을" → "어떻게" 순으로 고민합니다.
규모 가 좀 크고 중요한 프로젝트라면 "왜"라는 질문에 먼저 해답을 찾아야 합니다. 프로젝트의 목적과 의미를 제대로 파악하지 못한 상태에서 프로젝트를 시작하면, 실제로는 중요하지 않은 기능에 집착하면서 시간을 허비할 수가 있습니다. 그리고 상황에 따라 변하는 가치에 대해서 고려하지 못하고 시간이 지난 뒤 쓸모없는 제품을 만들게 될 가능성이 높습니다.
::: tip "왜?"라는 질문부터 시작하지 않는다면 간단한 예로 "아침에 정원에 물을 뿌려주는 기계"의 기능에 집중하다보면 비가 오는 날에도 여전히 물을 주는 충실한 기계를 만들게 됩니다. 정원의 가치와 급수의 필요성은 고려하지 못하게 되는 것이죠.
다른 예로는 제퍼슨 기념관의 벽이 심하게 부식되어 보수작업을 시작했을 때, 곧바로 벽을 수리하지 않고, "왜?" 그러한 일이 발생했는 지 조사하게 됩니다. 결과적으로 비둘기 똥의 강한 독성이 문제임을 발견합니다. 그리고 다시 "왜?" 비둘기가 날아오는 가 조사합니다. 그 이유가 벽에 사는 거미들 때문인 것을 발견합니다. "왜?" 거미가 벽에 살게되었는지 조사하니 기념관의 야간 조명 때문에 나방이 몰려들기 때문이었습니다. 그래서 야간 조명 점등 시간을 변경하여 문제를 해결하게 됩니다. 만약 충분히 "왜"라고 묻지 않고 수리를 먼저 시도했다면, 부식과 수리를 반복하게 되었을 것입니다. :::