아는 것과 해본 것의 차이
최근 지인과의 대화 중 그가 나에게 OO대해 알고 있는지 물어봤다.
간단하게 알고 있는 수준에서 대답은 했지만, 그 뒤 내가 무엇을 알고 무엇을 모르는지에 대해 알고 싶어졌다.
소위 말하는 메타인지인데, 생각에 대한 생각, 인지에 대한 인지라고 위키피디아는 말한다.
프로그래밍에 있어 OO에 대해 안다는 것은 무엇인가.
안다.
- 정의
- 공식 문서의 Getting Started를 읽고 실행
- 공식 문서의 많은 부분을 파악
- 프로덕션 레벨에서 사용(물론 이 안에서도 수없이 많이 구분될 수 있다고 생각)
- 소스코드의 대부분을 파악
- 만약 오픈소스라면 공헌
- 내가 만든 프로그램
nginx에 대해 아는가? Spring에 대해 아는가? 둘 다 실제 서비스 환경에서 사용한 기술들이지만 어디가서 알고 있다고 말하기가 부끄럽다.
처음 개발에 입문한 후 이력서를 쓰기 시작했을 때, 나의 이력서 속 보유 기술란은 칸이 모자랄 정도였다.
HTML, CSS, Javascript, MySQL, NGINX, Google App engine, Python, Flask, SqlAlchemy, … 등등 나를 스쳐갔던 모든 것이 너나 할 것 없이 그 자리에 있길 원했다.
보잘것 없는 실력을 숨기고 어떻게든 일자리를 얻기 위해서였을까? 정말로 그 시절의 내가 알고 있다고 믿었던 것일까?
4~5년이 지난 지금 기억하려해도 잘 기억나지 않지만, 현재 나는 위에 쓰여진 기술 중 그 어떤것도 잘 알고 있다고 하지 않는다.
‘다만 사용해본적이 있다’정도의 약간은 자기 방어적인 말로 언제있을지 모르는 추궁에 대비한다.
지금 만약 다시 이력서를 쓴다면, 첫 이력서에 있던 보유 기술들은 대부분 지워지고 한 두가지의 언어와 프레임워크가 남아 있을 것이다.
쓰여진 기술들에 대해 잘 알고 있냐고 물어본다면 역시나 나의 대답은 “몇 번 써본적이 있다”로 끝을 맺을것이다.