스프링을 학습하는 방법에 관한 고찰
묻지 말고 일단 행하라
레벨2에 들어와서 코치님들이 가장 먼저 해주신 말들이 있다.
스프링이 왜 이런 방식으로 동작하는지에 집착하지 말 것.
일단 스프링을 사용해볼 것.
그다음에는 어떻게 잘 사용할 수 있는지에 대해 고민하고 학습할 것.
분명 레벨1에서는 보이는 모든 것에 의문을 품어야 한다고 배웠다.
몇 달 동안 배우고 유지해 온 방향성이 흔들리는 순간이었다.
왜 스프링의 동작 방식을 이해하려 하지 말고 일단 사용해 보라 하는 걸까?
마치 이해하지 못한 공식을 외워서 수학 문제를 푸는 것 같은 기분이었다.
코드를 작성하면서도 지금 무언가를 공부하고 있긴 한 건가 싶었다.
모니터 앞에서도 의미 없는 시간을 보내고 있다는 괴리감을 지우기 힘들었다.
왜 먼저 행해야 하는가
한 번은 미션에 같이 첨부된 레퍼런스들을 모두 학습하고 미션을 진행하려고 해본 적이 있었다.
스프링의 Interceptor와 ArgumentResolver라는 개념과 동작 원리에 대한 자료들이었다.
첨부된 레퍼런스와 공식문서 내용을 다 알기 때문에 미션 진행이 수월하겠다고 생각했다.
실제로 미션을 진행하면서 프로젝트의 인증 기능을 구현해야 했다.
하지만 학습한 기능들을 직접 사용하려고 하니 손이 선뜻 움직이지 않았다.
해당 기능의 동작 방식을 이해했음에도 사용할 수 없었다.
기능을 학습했음에도 사용할 수 없는 이 상황이 납득되지 않았다.
왜 이런 상황이 발생했는지 납득하고 싶었다.
적을 알고 나를 알면 백전불패라 했던가.
그래서 스프링이 무엇인지에 대한 것부터 알아봤다.
스프링은 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크다.
여기서 프레임워크라는 키워드에 주목해 봤다.
프레임워크는 애플리케이션 서비스를 구축할 때 필요한 개발작업을 단순화하는 데 그 목적이 있다고 한다.
결국 스프링은 원하는 서비스 개발을 쉽고 단순하게 할 수 있도록 해주는 도구인 것이다.
이어서 개발자들은 무엇을 하는 사람들인지 생각해 봤다.
개발자는 공부하는 사람이 아니라 문제를 해결하는 사람이다.
그 중 백엔드 개발자는 서비스를 제공하는 데 필요한 서버를 만들고 제공한다.
또한 이 서버를 이용하는데 발생하는 문제를 해결하는 사람들이다.
그리고 이 문제들을 해결하기 위한 도구로써 스프링을 사용한다.
다시, 위에서 말한 관점을 기반으로 생각해봤다.
스프링의 공식문서를 비롯한 모든 레퍼런스에 나와 있는 내용을 섭렵했다고 가정해 보자.
그러면 과연 해결하고 싶은 문제를 위해 스프링 코드를 적재적소에 작성할 수 있을까?
이 질문에 대한 답은 'No'다.
기술에 대한 이론적 이해가 실제 개발 상황에서 이 기술을 언제 어떻게 사용해야 하는지 파악하는 데 도움을 주는 것은 아니라는 것이다.
결국 스프링의 기능을 실질적으로 잘 사용하는 데 가장 필요한 것은 직접적인 경험이다.
그 기능을 직접 사용해 본 경험만이 서비스 개발에서 적절한 활용에 도움을 줄 수 있다.
마침내 왜 스프링의 동작 방식에 집착하지 말고 일단 사용해 보라고 말하는지 이해할 수 있게 되었다.
도구를 잘 '사용'하는 법
일상생활에서 쉽게 접할 수 있는 도구를 생각해 보라고 하면 망치를 쉽게 떠올릴 수 있다.
일반적으로 '망치'에 대해 배운다고 하면 뭘 생각하는가?
어떻게 망치질을 할 수 있는지를 고민하고 배우게 되는 것이 일반적이다.
그 이유는 망치가 못을 박는 데 사용되는 도구이고 우리의 목적은 못을 박는 데 망치를 사용하기 위함이기 때문이다.
망치의 헤드가 왜 이런 모양으로 생겼을까?
망치의 본체와 손잡이는 왜 이런 방식으로 결합되어 있을까?
이런 의문들은 망치질을 처음 배우는데 있어서 거의 의미가 없다.
어떻게 하면 힘을 덜 들이면서 효율적으로 못을 박을 수 있는지 고민하고 배우는 것이 더 중요하다.
백엔드 개발자로서 스프링을 대하는 태도 또한 결이 비슷하다.
어떻게 하면 원하는 서비스를 스프링으로 빠르고 정확하게 구현할 수 있는가가 개발자의 관심사다.
목적을 달성하기 위해 당장 필요한 것은 스프링의 기능이 왜 이렇게 동작하는지, 왜 이런 방식으로 구현되었는지가 아니다.
어떻게 하면 효율적으로 스프링을 사용해서 원하는 기능을 구현하고 문제를 해결할 수 있는가를 고민하고 배워야 한다.
이것들이 개발자의 목적을 달성하는 데 실질적인 도움을 주는 것이다.
물론, 이후에 스프링이라는 도구에 익숙해져서 동작 방식과 이유를 파악하고 고려하는 것이 중요해지는 순간도 올 수 있다.
하지만 처음 스프링을 이용해 무엇을 해야 하는지 고민하는 단계에서는 일단 사용해 봐야 한다.
망치질을 처음 배우는 사람이 일단 못을 박아봐야 하는 것처럼.
'우아한테크코스 > 글쓰기' 카테고리의 다른 글
[글쓰기] Level1 - 우테코 1달 생활기 (2) | 2023.04.10 |
---|