한화시스템 BEYOND SW 캠프 2기 - 4주 차
이번 한 주는 자바로 시작해서 자바로 끝난 한 주였다.
나는 이미 자바로 프로젝트를 한 번 진행해 본 경험이 있었고, 따로 독학도 해봤기 때문에 초반에는 강사님이 내주신 과제로 대신 공부하였다.
수요일부터는 자바를 돌아본다는 생각으로 강의를 들으며 공부하였고 중간에 남는 시간 동안은 프로그래머스 코딩 테스트 문제를 풀어보았다.
공부를 하면서 궁금했던 부분이 있었는데 하나는 디자인 패턴이었고 다른 하나는 JVM이 동작하는 과정이었다.
먼저 싱글톤을 배우면서 강사님이 싱글톤을 구현하는 방식은 여러 가지가 있고 각각의 방식마다 문제점이 있다고 하셨는데 어떤 구현 방법이 있는지 궁금하여 찾아보면서 공부를 했다.
그다음으로는 내가 예전부터 궁금했었던 자바에 관한 부분들을 공부하면서 정리를 해봤다.
JVM에 관한 내용이 길어서 아직 정리를 끝내지 못했지만 내가 사용하는 주 언어를 더 깊게 파고들어서 재밌었다.
과제를 하면서 남는 시간과 점심시간, 스터디 시간을 활용하여 프로그래머스 코딩 문제(20문제)를 풀어보았다.
레벨 1은 자바의 기초 지식을 활용하여 푸는 문제들로 구성되어 있어서 다시 자바를 공부한다는 생각으로 풀었는데 너무 재밌었다.
재밌었던 자바 과제들
초반에 강사님이 내주신 과제와 자바를 강의해 주시고 실습해 보는 시간으로 과제를 몇 개 내주셨는데 너무 재밌었다. 부트캠프를 시작하기 전에 자바를 독학하면서 공부를 했지만 역시 실습을 해봐야지 실력이 는다는 것을 확실히 알게 되었다.
과제를 하면서 내가 작성한 코드를 강사님이 직접 피드백해주시는 게 너무 좋은 경험이었다. 이전에는 코드를 작성하면 나와 비슷한 실력의 친구들이 피드백을 해줘서 부족했던 부분이 많았지만 경험이 많은 강사님이 직접 피드백을 해주시니 나의 부족한 부분을 알 수 있어서 좋았다.
의외로 몰랐던 점들이 많았던 한 주
자바를 공부하면서 의외로 몰랐던 점들이 너무 많았다.
- .java 파일이 의미하는 것
- .class 파일이 의미하는 것
- jar는 뭐지?
- 디자인 패턴이 뭐였더라??
이 것 외에도 모르는 부분이 많았다. 분명 자바를 공부해봤고, 프로젝트도 했었는데 아직도 모르는 게 많았고 내가 사용하는 언어에 대해서 기본도 몰랐다는 것이 부끄러웠다.
자바 언어에서 나오는 변수, 연산자, 조건문, 반복문 등 기본적인 문법은 다른 언어를 사용해도 비슷한 개념이기 때문에 이것을 안다고 해서 자바 언어를 안다는 것은 말이 안 된다고 생각한다.
오히려 문법 외에 다른 것들이 자바의 특징을 나타내는데 내가 너무 문법에만 치우쳐진 것은 아닐까 생각이 들었다.
개선이 필요해 보이는 기초
한 주간 자바를 공부하면서 기초가 많이 부족하다는 것을 알게 되었다. 여기서 말하는 기초는 문법이 아니라 객체지향 개념이라든가 자바가 동작하는 과정이다.
객체지향을 배우고 강사님이 내주신 과제를 하는데 중간에 잘 안 되는 부분도 많았다. 심지어 옆자리에 같이 수업을 듣는 동기분은 아마 자바를 처음 해보시는 분인데 나보다 빨리 과제를 끝내시는 것을 보고 내가 많이 부족하다는 것을 느꼈다.
부트캠프를 시작하기 전 자바를 공부했던 것이 오히려 내가 코드를 작성하는 데 생각을 더 복잡하게 만들었다. 역시 조금 아는 것이 아예 모르는 것보다 더 위험한 것 같다.
나름 코드를 객체지향적(?)으로 만들었다고 생각했지만 강사님께 피드백을 받았을 때 조금 충격을 받았다.
내가 나름 이쁘다고 생각했던 코드를 보여드리니 강사님이 너무 객체지향에 사로잡혀 세밀하게 나눈 것 같다고 피드백을 주셨다. 다른 과제를 했을 때도 굳이 클래스를 나눠야 되는 이유가 뭐냐는 피드백을 많이 받았고 내가 생각했던 것보다 내 자신이 객체지향을 잘 모르는 건가 생각이 들었다.
뭔가 비유를 하자면 내가 이쁘다고 생각했던 옷을 입고 갔는데 친구가 그것보다 더 저렴하고 좋은 게 있는데 굳이? 왜? 이런 느낌이 들었다.
이번에 해결하지 못했던 과제들을 다시 풀어보면서 공부를 해보고 기존에 풀었던 과제들도 다시 정리해 보면서 객체 간의 관계를 그림으로 그려보는 연습을 해봐야겠다.
돌아오는 한 주는 몰랐던 내용들을 채우기
돌아오는 한 주간에는 자바에서 어려운 부분들을 공부하게 된다.
제네릭, 스트림, 스레드 등 나도 독학하면서 이해가 안 되는 부분이 많았던 것들을 공부하게 돼서 더욱더 집중해서 들어야겠다.
기본적인 문법이 끝나면 네트워크와 JDBC를 학습하게 되는데 어떻게 보면 다음에 있을 스프링 프레임워크는 이번에 배울 네트워크와 JDBC를 좀 더 쉽고 간편하게 사용할 수 있는 도구라고 생각하기 때문에 기초를 확실하게 공부해야겠다.
공부를 하면서 이번에도 남는 시간이 있다면 프로그래머스 문제를 풀어볼 계획이다. 자바가 끝나면 자료 구조와 알고리즘으로 넘어가기 때문에 미리 문제를 풀어보는 시간을 가져볼까 한다. 레벨 1은 20문제면 충분하다고 생각하고 자료 구조에서 배열과 리스트를 제외하고 가장 먼저 배우게 되는 스택과 큐부터 문제를 풀어볼까 한다.
JVM은 내용이 길어서 정리하는 데 시간이 오래 걸릴 것 같지만 목표는 이번주까지 정리하는 것으로 잡았다.
'한화시스템 BEYOND SW 캠프 2기' 카테고리의 다른 글
한화시스템 BEYOND SW 캠프 2기 - 6주차 회고 (1) | 2023.12.11 |
---|---|
한화시스템 BEYOND SW 캠프 2기 - 5주차 회고 (0) | 2023.12.03 |
한화시스템 BEYOND SW 캠프 2기 - 3주차 회고 (2) | 2023.11.19 |
한화시스템 BEYOND SW 캠프 2기 - 2주차 회고 (3) | 2023.11.13 |
한화시스템 BEYOND SW 캠프 2기 - 1주차 회고 (4) | 2023.11.05 |