분류 전체보기
[우아한테크코스] LV2 - 웹 지하철 미션 Step1 회고
들어가면서 레벨2 세번째 미션은 지하철 미션이었다. 지하철의 노선과 역 정보를 관리하는 API를 설계하고 구현하는 것이 이번 목표였다. 지하철 노선도라는 복잡한 도메인으로 웹 서비스 API를 설계하는 것이 이번 미션의 취지였다고 한다. 그만큼 도메인을 설계하는 과정에서 고려해야할 사항들이 굉장히 많아서 난이도도 높게 느껴졌고 시간이 많이 부족했다. 이번 미션의 페어는 이리내였다. 이리내는 긴 시간 페어 프로그래밍에도 코드에 대한 집중력을 잃지 않는 크루였다. 덕분에 미션을 진행하면서 고려해야 할 사항들이 너무 많아서 주기적으로 흐름을 놓칠때마다 다시 제자리를 찾아가는데 도움을 많이 받았다. 지난번 장바구니 미션에서 도메인의 설계가 외적인 부분에 영향을 받는 것이 굉장히 맘에 걸렸었다. 그래서 이번에는 반..
[우아한테크코스] LV2 - 웹 장바구니 미션 Step2 회고
들어가면서 웹 장바구니 step2 미션은 사용자 인증 기능과 등록된 상품을 사용자 별로 선택해서 담을 수 있는 장바구니 기능을 구현하는 것이었다. step1 머지는 빨리된 편이었어서 step2도 최대한 빠르게 진행하고 마무리하고 싶었으나 중간에 여러 고민들을 하면서 많이 헤매서 결국 예상보다 2~3일은 더 걸리고 말았다. 어떤 점들 때문에 미션 진행 속도가 더뎌졌었는지, 고민하다가 헤맨 부분은 어떤 것이었는지, 반드시 필요한 고민이었는지 돌아보고자 한다. 그리고 이번 주 내내 미션을 진행하면서 굉장히 무기력함을 느꼈다. 미션을 하면서 새롭게 알게 되는 것은 없고 쌓인 숙제하듯이 미션을 하고 있는 것 같아 더 힘들고 오래걸렸던 것 같다. 이 부분에 대해서도 왜 이런 감정을 느꼈는지, 어떻게 앞으로 해결할 ..
[우아한테크코스] LV2 - 웹 자동차 경주 미션 회고
들어가면서 10초 같은 10일의 방학이 지나고 어느덧 레벨2가 시작했다. 레벨2 첫번째 미션은 레벨1에서 구현했던 콘솔기반 자동차 경주 프로그램을 웹 기반으로 다시 구현해보는 것이었다. 이번 페어는 오리였으며 굉장히 금방 지나간 것 같은 3일이었다. 1년 전에 무료 스프링 입문 강의를 노베이스로 한 번 들었던 것 말고는 경험이 전무했던 나와는 다르게 오리는 스프링을 사용하는 것에 익숙해보였다. 덕분에 해메일 수 있었던 레벨 초반에 감을 빠르게 잡을 수 있었던 것 같다. 레벨 초반 미션이고 스프링을 처음 시작하는 사람들도 진행할 수 있도록 해야 했기에 요구사항이 많이 빡세지 않다는 것이 느껴졌다. 하지만 스프링을 거의 처음 접하는 입장으로서 시시각각 쏟아져 나오는 키워드들과 모르는 개념들은 충분히 사람을 ..
[Level 2] Layered Architecture에 대한 개인적인 고찰
자바 콘솔 기반 프로그램을 구현하던 레벨1에서 웹 기반 프로그램을 구현하는 레벨2로 넘어오면서 Layered Architecture를 계속 접하게 되었다. 인터넷을 조금만 찾아봐도 Layered Architecture의 각 계층들이 어떤 책임을 지는지에 대해 설명하는 글들을 쉽게 접할 수 있다. 그러나 미션을 진행하면서 궁금했던 것은 Layered Architecture로 설계된 프로그램에서 각 계층들이 어떻게 정보를 주고 받게 할 것인가였다. 레벨1에서 MVC 구조를 사용하며 VIew와 Model이 상호 독립적으로 최대한 의존하지 않도록 해야했고 그 완충 작용을 해주는 역할이 Controller였다. 그런데 Layered Architecture로 설계된 웹 프로젝트에서 각 계층들은 왜 분리해야 하는지,..
[우아한테크코스] LV2 - 웹 장바구니 미션 Step1 회고
들어가면서 웹 자동차 경주 미션이 끝나고 다음 미션은 장바구니 웹페이지 기능을 구현하는 것이었다. 지난 번 미션처럼 프론트 단 HTML 페이지와 JS파일은 작성되어 있는 상태였어서 해당 페이지에서 넘어오는 Request 메세지를 처리하고 적합한 Response를 반환할 수 있는 CRUD API를 작성하는 것이 목표였다. 이번 장바구니 미션 페어는 마코였다. 마코와는 우테코 시작부터 친했던 크루였어서 편하게 미션을 바로 시작할 수 있었다. 개인적으로 step1의 최소 요구사항만 따지고 본다면 자동차 경주 미션보다 좀 더 쉽지 않았나 싶었다. 이전 미션을 통해 Spring에 좀 더 익숙해진 상태로 미션을 진행해서 더 그렇게 느낀 건지도 모르겠다. 이번 레벨2에서 설정했던 목표는 '미션을 진행하며 이해나 내부..
[Level 2] Repository와 Dao를 분리하는 기준
본 포스팅은 우아한테크코스 레벨2 웹 자동차 경주 미션을 진행하며 고민했던 내용 중 일부를 정리한 것입니다. 개인의 주관이 들어간 글인지라 틀린 내용이 있을 수 있음을 미리 말씀드립니다. 처음에는 단순하게 Repository가 Dao들을 사용해서 기능을 수행하면 된다고만 생각했다. 아래는 미션에서 구현했던 웹 기반 자동차 경주 프로그램의 Repository 클래스이다. 코드를 살펴보면 Repository는 자동차 경주 게임을 진행한 결과 정보를 담은 Dto를 넘겨받아 저장하는 save 기능만을 수행한다. @Repository public class WebRacingCarRepository implements RacingCarRepository { private final RacingGameDao raci..
[Level 2] 공식문서를 통한 프레임워크 학습 방법에 대한 고찰
우아한테크코스 레벨2에서는 스프링 프레임워크에 대한 학습을 진행하게 된다. 하지만 첫날 OT를 듣고 나니 개인적으로 스프링 자체보다는 처음 접하는 기술에 대해 학습하는 방법을 찾으려고 노력해야 한다는 것이 핵심이라고 느껴졌다. 생각해보면 아무리 지금 스프링을 열심히 공부해둔다고 해도 현업에 가서는 전혀 다른 기술을 사용하게 될 가능성이 더 높았다. 그럴 때 결국 도움이 되는 본질적인 스킬은 신기술을 올바르게 사용하는 방법을 빠르게 학습하는 것이라는 생각이 들었다. 그래서 개인적인 레벨2 목표를 신기술을 접했을 때 학습하는 방법을 찾고 연습하는 것으로 결정했다. (물론 스프링 자체에 대한 학습도 빼먹지 말자...!) 첫 번째 미션을 진행하는 중 Spring JDBC에 대한 학습 테스트를 진행하게 되었다. ..
[우아한테크코스] LV1 - 체스 미션 회고
우아한테크코스 LV1 마지막 미션은 체스 게임을 구현하는 것이었다. step1,2는 콘솔에서 체스판을 초기화 하고 말을 움직여서 게임을 진행할 수 있도록 하는 것이 목표였다. step 3,4는 상대 편의 King을 잡았을 때 게임을 종료하고 점수를 계산해 승패 여부를 출력하도록 하고 DB와 연동해서 중간에 진행되던 게임을 다시 불러와서 진행할 수 있도록 하는 것이 목표였다. 이번 step1,2 페어는 엔초였다. 당시 테코톡 발표와 각종 야크 쉐이빙으로 밀린 task에 허덕이던 상황이었어서 체력적으로 많이 힘든 상황이었다. 그런데 엔초는 도메인을 분석해서 객체에게 책임을 분배하는 능력이 정말 뛰어난 크루였다. 함께 미션을 진행하면서 객체를 설계하는 관점에 대해 많은 것을 배울 수 있었다. 그 덕분에 ste..