Django를 사용한지 벌써 12년이 넘었다. 처음 사용할 때는 ORM이 뭔지도 모르고 그저 SQL을 안짜도 된다고 신나게 썼던 기억이 있다. 한날님 강의도 보고.
Django에서는 RDB의 테이블과 매핑되는 모델을 정의하고 외래키도 객체로 연결한다.
만약 post 객체에 외래키로 user가 정의되어있다면 user 내 name 필드를 출력하고 싶을 때 아래 처럼 쓸 수 있다.
print(post.user.name)
과거에 난 놀랍게도 post를 가져오는 시점(SELECT)에 자동으로 user를 조인해서 가져오는 줄 알았다. 하지만 Django는 객체에 접근하는 순간 추가적으로 SELECT를 수행한다. user에 접근하지 않는다면 당연히 호출되지 않는다.
백엔드 개발자라면 기초중에 기초라고 할 수 있겠지만, 난 꽤 늦게 깨달았다. 하지만 늦게라도 이런 부분을 깨달을 수 있었던 건, 정말 우연한 계기로 Django를 가르치면서다.
비슷한 경험 몇개를 더 얘기해보자면.. 책을 썼던 것도 비슷하다. 가르친다는 것은 결국 지식을 전달하는 행위이고 나아가 상대를 이해시켜야 하는 것이다. 그런 면에서 책도 같다.
“업무 자동화”라는 주제로 처음 책을 쓰면서 온전히 라이브러리를 살펴보게 되었다. 내가 사용하던 함수나 클래스와는 별개로 지식에 누락이 있으면 안되기에 사실상 거의 모든 내용을 살펴보게 된다.
아이러니하게도 전문가여서 책을 집필한 것이 아니고, 기회가 있을때 욕심을 냈을 뿐, 오히려 집필하다보니 전문가에 가까워졌다.
올해 초부터 거의 6개월간 강의한 클린 코드 강의도 그랬다. 코드스쿼드 호영선배와 인프랩 향로님에게 클린 코드와 커리어에 대한 상담을 한지 얼마 되지 않고, 파이썬을 기반으로 한 클린 코드 강의 요청이 왔다.
추천 받았던 책을 보면서 공부하고 있던 찰나에, 기회가 와서 그냥 하겠다고 했다. 사실 비개발직군 대상의 강의라 오히려 부담을 덜고 시작할 수 있었다.
6개월동안 파이썬 클린 코드를 주제로 5회정도 한 것 같다.
매일 8시간씩 3일짜리 과정이었으니, 꽤나 진하게 했다고 생각한다.
강의를 준비하면서 당연히 공부가 많이 됐고, 강의를 진행하고 질문/답변을 통해서도 정말 많은 공부가 됐다.
파이썬에 대한 이해도도 함께 높아진 것 같다.
사실 가르친다는 표현이 주는 부담감이 꽤 (많이) 큰데, 결국 이 부담감 덕에 얻는 배움도 꽤 크다.
학생시절 선생님들이 “가르칠 수 있어야 완전히 이해한거다.” 라고 했던 말이 생각난다.
물론 프로그래밍은 기술이라, 현장의 경험과 학습이 더 크다고 생각하지만,
가르치면서 배울 때 오는 특유의 단단함도 좋다.
그래도, 갈 길이 멀다.