@Autowired 하나 붙이면 의존성이 주입된다. 어떻게? 몰라도 된다. 프레임워크가 알아서 해준다. 이것이 매직이다. 그리고 나는 이런 매직이 불편하다.
물론 생산성을 위해 추상화는 필요하다. 매번 소켓 프로그래밍부터 시작할 수는 없으니까. 하지만 “왜 되는지 모르겠는데 일단 돼”라는 상황은 언젠가 문제가 된다.
매직이 깨지는 순간
모든 것이 순조로울 때 매직은 편리하다. 문제는 뭔가 잘못됐을 때다. 에러 메시지는 프레임워크 내부의 스택 트레이스로 가득 차 있고, 내 코드는 어디에도 보이지 않는다.
“왜 안 되지?”라고 물을 때 “원래 되는 건데요”라는 답밖에 없다면, 디버깅은 지옥이 된다. 매직의 대가다.
이해하고 쓰기
40대 개발자로서 후배들에게 강조하는 게 있다. 프레임워크를 쓰되, 어떻게 작동하는지 이해하라. annotation 하나가 어떤 바이트코드를 만드는지, AOP가 어떻게 프록시를 생성하는지.
전부 다 알 필요는 없다. 하지만 한 겹만이라도 벗겨 보면 다르다. 매직이 기술이 되고, 미지가 지식이 된다.
단순함에 대한 갈망
나이가 들수록 단순한 것을 좋아하게 됐다. 복잡한 프레임워크보다 간단한 라이브러리. 마법같은 자동화보다 명시적인 설정. 읽기 어려운 간결함보다 읽기 쉬운 장황함.
코드는 결국 사람이 읽는 것이니까. 매직이 적을수록 이해가 쉽고, 이해가 쉬울수록 유지보수가 쉽다. 20년 개발 인생에서 배운 교훈이다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.