오늘 하루종일 두통이 있어서 낮에 쭉 쉬다 노트북 켰는데
모 라이브가 가장 관심있는 주제로 진행해서 내가 잊지 않기 위해 기록함
프레임워크와 기본기
흔히 신입이나 인턴 공고를 보면 인턴임에도 스프링 MVC를 사용해 본 경험, 스프링 프레임워크 사용해서 프로젝트를 해본 경험, 객체지향 경험 등을 요구하는데
과연 이것들이 원하는 진짜 그 컷, 기준선은 어디일까?
진짜로 인턴이 스프링 MVC를 가지고 구성해본 걸 원하는걸까?
내부의 '스프링 기술과 패턴'을 이해한 걸 원하는걸까?
아니면 더 더 깊은 자바 자체의 이해를 원하는걸까?
오늘 듣게 된 이야기를 요약하면 기술과 패턴을 알면 좋다, 몰라서 손해보는 것은 없다.
하지만 그 안의 원리를 이해해야 한다.
- 자바 기본을 다 안다고 생각하고 스프링 프로젝트를 시작하거나 레퍼런스를 참고하게 되면 무조건 막히는 부분이 있다
- DI / IOC
이 두가지를 그럼 찾아보게 될텐데 들어가다보면 싱글톤 패턴이 나올거고
실제 자바에서 자신이 알고있던 싱글톤 패턴에서 넘어가 Double Checked Locking
그리고 스프링 빈까지 넘어가게 될 것
- IOC를 하다가 다이나믹 프록시 -> 리플렉션 -> AOP
- IOC -> 서블릿 -> 컨테이너 -> 스프링 MVC
- 기술 자체를 아는가 모르는가, 사용해봤나 아닌가가 중요한 게 아님
스프링에서 IOC가 어쩌고 Bean Scope가 어쩌고 이런거에 집중하기보다
왜 그 기술들이 구현 됐는지를 생각
- 스프링과 JPA를 사용해봤다고 했을 때
"~~에서는 리플렉션을 적용하면 어떨까요?"와 같이 말했을 때 이 대화가 이루어져야만
공부를 제대로 한 것이라고 생각한다
번외
- 병렬 프로그래밍 관련
대부분 직접 멀티스레드를 만들어 프로그래밍 안함, 진짜 서버 자체를 만드는 게 아니면
그러니 일단 스레드 세이프 등의 병렬 프로그래밍 문제 해결과 기본에 집중
내 생각
그럼 기업에서 그런 경험을 요구하는 건 너 진짜 스프링 써봤니가 아닌
스프링 해봤네? IOC 뭔지 아니? 그럼 IOC가 왜 나왔는지 아니? 그게 자바 언어 자체에서 어떤 기술인지 아니?라고 묻는걸까..
아무튼 대략적인 감은 잡고 있었는데 오늘 명확히 정리가 되어간 기분