드디어 짧다면 짧고 길다면 긴 4주 간의 프리코스가 막을 내렸다.
이번 주 미션의 이름은 다리 건너기 게임이다.
오징어 게임의 징검다리 건너기와 같은 게임인데, 처음 이 미션을 보고는 읭? 이걸.. 어떻게 구현....?
이라는 생각이 가장 먼저 들었다. 하지만 찬찬히 기능 요구 사항을 읽어보니 그렇게 복잡한 미션이 아님을 느꼈다.
그런데 한 가지 기존과 다른 요구 사항이 생겼다.
바로 프로그래밍 요구사항이 더 구체적이고 복잡해졌다는 것이었다.
특히, View
와 관련된 코드들과, 비즈니스 로직을 담당하는 클래스를 제공하고, 그것들을 이용해 미션을 해결하라는 요구사항이 있었다.
요구사항도 가장 길었다. 그래서 요구사항을 정말 꼼꼼히 파악하고 시작하려고 했다.
또한, 이번 4주 차에는 그동안의 셀프 피드백, 공통 피드백, 요구 사항, 각 주 차별 목표를 모두 종합하여 그것들을 지키려고 노력을 했다.
그래서 스스로 부족하다고 생각했던 부분들을 공부하였고, 요구 사항들을 정리하여 체크리스트를 만들고 미션을 시작했다.
4주 차 미션을 진행하면서는, 정말 많은 것을 느끼고 배웠다.
가장 기억에 남는 것은 MVC 패턴
과 Layered Architecure
이 명백히 다르다는 것을 알게 되었다. 난 기존에 MVC 패턴
이라고 하면 스프링 웹프로그래밍을 할 때 널리 사용되는 Controller-Service-Repository
의 구조를 생각했다. 그래서 이전에도 이 구조를 적용하려고 했다. 하지만 이 둘은 다르다는 것을 느끼고 나서는 이번 미션에는 MVC 패턴
에 집중하여 미션에 적용하려고 했다.
음.. 이번 4주 차는 개인적으로 판단했을 때는 그동안의 피드백을 모두 나쁘지 않게 충족한 결과라고 생각한다. 특히, 테스트 코드 작성법도 연습하여 가능한 깔끔하게 짜려고 노력했다. 그래서 스스로도 어느정도 만족한다. 하지만, 설계에 대한 확신이 없어 이 부분에는 피드백을 받고 싶다는 생각이 든다.
4주 차는 공통 피드백이 없다.
때문에, 그간의 피드백을 종합하여 스스로 코드를 보며 이 부분은 조금 부족하지 않나? 싶은 부분을 짚어보고자 한다.
이번에 사실상 혼자 생각했을 때의 MVC 패턴
을 처음 적용해보았다.
기존에 MVC 패턴
에 대해 알고는 있었지만, 3-tier Layered Architecure
와 혼동하고 있었기에 제대로 알고 있다고는 하지 못한다고 생각한다. 그래도 이번 기회에 MVC 패턴
에 대해 확실히 알게 되었고 앞으로는 순수 자바 프로그래밍을 할 때 MVC 패턴
을 적용하는 식으로 하려고 노력해봐야겠다.
객체를 어떻게 사용해야 잘 사용해야하는가? 에 대한 스스로의 답은 아직 세우지 못했다. 객체를 객체답게 사용하려면 지켜야하는 규칙 일부분은 알고 있지만, 객체지향적인 프로그램을 설계하고 구현하는 법에 대해 조금은 알아봐야겠다.
설계를 먼저 하고 기능을 구현하는 것도 이번 4주 차가 사실상 처음이다. 설계에 대한 중요성은 대충 알고 있지만, 이를 지키기는 쉽지 않은 것도 사실이다. 그럼에도 불구하고, 설계를 우선시 하고 개발하려는 습관을 들여야겠다.
3주 차에 자바의 정석으로 Enum 클래스에 대해 공부를 했지만, 이론을 공부했을 뿐 실습에 어떻게 잘 적용해야하는지 사실 감을 아직 잘 못잡은 것 같다. 때문에 Enum
과 관련된 정보들을 찾아보고 잘 사용하려고 노력해야겠다.
Stream도 마찬가지로 Enum과 같이 자바의 정석으로 공부를 했지만, 워낙 내용도 방대하고 깊고 책으로만 이해했던터라 4주 차에 정작 적용하기는 어려움이 있었다. 따라서 Stream도 직접 실습을 통해 활용법을 배워야겠다.
처음 온보딩 때는 프로그래머스의 알고리즘 문제같다는 생각이 들었지만, 2주 차부터는 요구 사항에 따른 프로그램을 개발하는 미션이다보니, 사실 개발자라면 모두 좋아하는 미션이지 않을까? 라는 생각이 들었다. 미션에 주제가 되었던 게임들도 꽤 흥미롭고 재밌는 게임들 뿐이었다.
자바에 대해 깊이 있게 공부하고나서부터 코드를 깔끔하게 짜는 것에 대해 나도 모르게 집착? 희열? 습관이 되어 있었다. 기능을 구현하는 과정에서도 리팩토링 할 요소가 보이면 바로바로 리팩토링을 수행하였다. 사실 지저분한 것을 보면 그 즉시 치워야하는 내 성격상, 어찌보면 당연한 것이라고 생각이 든다. 아무튼, 그런 내 이상한 취향을 충분히 만족시킬 수 있는 과정이었다. 그래서 약간 습관적으로 리팩토링을 하지 않았나 싶을 정도였다.
여태 개발 공부를 같이 한 것은 대학 동기들, 아니면 스터디에서 단 두 명과 함께 진행했던 것이 다였다. 그런데 우테코 프리코스에서는 모든 지원자들을 slack이나 Github Discussion 탭에 모여 서로 시키지 않아도 코드 리뷰를 정성껏 진행하고, 본인이 해당 주 차 미션을 진행하면서 공부한 것을 공유하며, 때로는 시시콜콜한 농담도 치는 것들을 직접 경험했다. 그런데 많은 사람들이 나와 비슷하게 성장에 목이 말라있고, 모두 좋은 사람들인 것을 느꼈다. 혼자 했더라면 고독하게 단순히 미션과 "나"에만 집중했을텐데, 이런 점은 너무 좋은 경험이었다.
그래서 결론은, 정말 최종 선발에 합격하고 싶다는 생각이 너무나도 간절하게 들었다.
4주 간의 프리코스만으로도 이렇게 좋고 행복한 경험들을 할 수 있었는데, 9개월 간의 본 코스에서는 얼마나 값지고 알치고 행복한 시간들이 될까싶다. 진짜 이 기회를 놓치고 싶지 않아졌다.
(그런데 최종 선발 인원이 백엔드는 250명인 줄 알았지만, 100명인 것을 뒤늦게 알고는 기대가 크면 실망도 클 것이기에 기대를 조금 덜 준비를 하고 있다 ,,)
물론 1차 합격이 되어야 하지만, 합격했다는 가정하에 최종 코딩테스트
준비를 할 것이다.
이를 위해 내가 부족한 부분들을 채워나가는 노력을 할 것이다.
같이 BE 준비하는 대학 동기와의 스터디도 진행할 것이고, 기존에 존재하는 미션을 풀어볼 것이며, 2~4주 차 미션을 다시 처음부터 구현해볼 것이다.
이를 통해 타인의 좋은 점도 배울 수 있고, 내 코드도 리뷰 받을 수 있음에 1석 2조 !
4주 차에서 보고 듣고 경험한 것들이 너무나도 많아 하나하나 다 풀어서 이야기하고 싶지만, 그러기엔 문장도 너무 길어지고 나도 너무 힘들 것 같아서 생각나는데로 적어보았다.
그래서 다소 내용이 정리가 안되고 난잡할 수 있지만, 회고에 많은 시간을 쏟고 싶지 않아졌다. 그 시간에 자바에 대해 더 깊게 공부하고, 그 외에도 내가 공부하고 싶은 것들을 공부하고 싶다는 생각이 강하기 때문이다.
아무튼, 그래서 마지막으로 하고픈 한 마디는 정말 본 코스에 붙고 싶다..