스터디를 조직한다면
- 스터디는 개인주의로 하라
시간이 넘으면 바로 끊고 내 시간을 사용해서 스터디를 하는 것
남의 의견을 듣는 것도 좋지만 그 시간에서 '공부'를 해야 함
DFS 학습방법
자바 기본을 다 했다면 분명히 스프링 프레임워크를 들어보게 됨
자바를 잘하고 싶은데 스프링 공부를 해야할까요? 자바가 아직 부족한 거 같은데 스프링을 해야할까요?
- 분명 도움이 된다 자바를 비롯한 프로그램 전반에 대한 많은 지식을 습득 가능
왜 그럴까?
- 스프링은 여러 디자인패턴과 객체지향 원칙을 기반으로 자바 EE를 지원하기 위해 적용시킨 것
결국 스프링을 이해하려면 디자인패턴, 객체지향 원칙, 자바EE를 이해해야 하기때문에 어려운 거임
각 IOC 컨테이너, 트랜잭셔널, DI 등 모듈들은 JEE 규격으로 이미 구현되어 있음
그 모듈을 가져다 쓰는 것
(javax에 있는 Entity 그런거)
스프링을 보면서 자바에 집중할 것
- 처음에 스프링 강좌를 보면서 J2EE가 뭔지 익히기
그 후 IOC, DI 이런거 하면서 여러 개념들이 나올텐데 스프링 빈 팩토리 스프링 어노테이션 그런게 중요한게 아니고 그 아래의 객체지향적 원리가 중요
그것이 바로 자바 기본 지식, 스프링 API에 집중하지 말것
이펙티브 자바와 토비의 스프링을 보는 시점
- 둘이 시점이 같음
기본서를 떼고 자바에 대한 기초적인 지식을 익혔다면 스프링 프로젝트를 통해 두 책 접근
토비 스프링이 어렵다고 생각하면 아직 자바 기본이 부족한거임 그걸 채워나가야 함
지름길은 없다
이 모든 걸 학습하는 지름길은 없음
- 이 모든 걸 학습하고 나면 게시판을 만들기, 근데 안만들어질 것
제일 작은 것 2 - 3일 안에 만들 수 있을 것 같은거 만들어보기
처음부터 큰 거 잡지말고 작은 것 부터
(기선님은 TO-DO 리스트 했다고 함)
일정 내에 내가 하지 못했다면 그 이유를 기록할 것
- 그 자체가 다음에 하는 실수를 방지할 수 있음
그리고 뭘 할때마다 기한을 정해서 할 것 기한내 못했다면 반드시 그 이유가 있으니까
내가 뭘 만들기로 해서 만들었다 잘 된다 그게 끝이 아니다
- 그거는 롤에서 버스 탄거나 마찬가지임
테스트 빌드 커밋 IDE 모든 걸 신경쓰면서 개발 하는 것이 진짜 공부임
이렇게 하다 점점 스코프를 늘려가는 것
간단한 텍스트 게시판 -> 정렬 -> 페이징 -> 다른 기능들
그리고 다른 기능들까지 오면 처음에 짰던 코드를 다시 보기, 분명 스파게티일거고
회원 기능이 들어가는 순간 굉장히 복잡해질거임
질문을 삭제해야하는데 질문만 아니고 답글도 삭제해야한다, 이러면 트랜잭션이 들어감
소규모 프로젝트를 진행 해보고 나면
- 인프라 성격의 코드랑 비즈니스 로직이 섞여있을 것
(트랜잭션 성격의 코드랑 로직)
- 이때부터 클린 코드와 조영호 객체지향 책을 보는 시점
클래스와 메소드를 어떻게 나눌까 그런걸 고민하고 스프링과 객체지향을 깊게 공부
- 이정도가 되야 스프링이 재밌어짐
그냥 스프링을 공부하면 어노테이션들 보면서 아무런 감흥이 없기 때문
내가 한번이라도 스프링 도움 없이 해보고나면 왜 이 어노테이션, 패턴이 적용 된건지 알 수 있음
소규모 프로젝트 후 객체지향과 토비 스프링을 거치면
이 정도 시점이 됐으면 남들과 협업을 해봐야 함
서로 다른 코드를 비교하고 합치고 리뷰하고
최종적으로 하나의 애플리케이션을 같이 만들어내는 것
이렇게 되면 진짜로 스프링, 자바를 공부하는 게 아닌 '소프트웨어 엔지니어'가 되는 거임
프로젝트 기능 구현 중 막히는 부분이 많다면
프로젝트 기능을 만드는데 만약 그게 잘 안되면 자바 기본기가 부족한거임
그렇게 되며 기능을 축소하거나 없앤 다음에 학습 중심의 프로젝트로 가야함
우리는 도구를 공부하는게 아님
내가 이렇게 공부를 해서 지식이 쌓였다면 이제 다른 언어, 프레임워크에도 적용하고
금방 적응할 수 있을 것