교수님이 이 코드를 보신다면
2 min read
연구용 코드에는 두 가지 버전이 있다. 논문에 “코드를 공개합니다”라고 쓸 때의 코드, 그리고 실제로 돌리는 코드. 이 둘은 대부분 다르다.
현실
솔직하게 말하면, 연구할 때 쓰는 코드는 깔끔하지 않은 경우가 많다.
test1.py, test2_final.py, test2_final_v2.py, test2_final_real_final.py. 누구나 한 번쯤 이런 파일명을 쓴 적이 있을 거다.
주석은 코드를 쓸 때는 귀찮아서 안 달고, 6개월 후에 다시 보면 “이게 뭐 하는 코드지?”가 된다. 변수명도 a, b, tmp로 시작해서, 나중에 a2, b_new, tmp_final이 된다.
매직 넘버도 있다. lr = 0.00037 같은 게 주석 없이 떡하니 있으면, 나중에 왜 이 값인지 아무도 모른다. 하이퍼파라미터 튜닝하다가 나온 값인데, 그때는 기억나니까 안 적은 거다.
교수님이 보신다면
아마 이런 말씀을 하실 것 같다.
“이거 다른 사람이 봐도 이해할 수 있겠니?”
정답은 대부분 “아니요”다.
그래도 변명하자면
연구 과정에서는 빠르게 실험하고 결과를 확인하는 게 우선이다. 코드를 깔끔하게 정리하는 건 중요하지만, 마감이 코앞인데 리팩토링을 하고 있을 수는 없다.
그래서 “일단 돌아가면 된다”가 연구 코드의 암묵적 규칙이 되는 것 같다.
하지만
코드를 정리하지 않으면 결국 나중에 본인이 고생한다. 논문 리비전할 때 “이 실험 다시 돌려봐라”는 리뷰가 오면, 정리 안 된 코드 앞에서 멘붕이 온다.
결론: 코드 정리는 미래의 나를 위한 투자다. 알고는 있는데, 실천이 어려울 뿐이다.