introduction
뭐든지 적당히가 어려운법이다. 게으름을 부리며 일을 미루고 미루다 대충만든 퀄리티 떨어지는 코드도 문제지만, 반대로 너무 과한 의욕과 욕심도 오히려 코드를 못생기게 만드는 것 같다.
우아한 테크코스 프로 프리코스
1주차 과제를 제출하고 2주차 미션으로 자동차 경주 미션을 받았다.
자동차경주 게임 기능 요구사항
야구게임과 같이 미션자체는 학부생때 콘솔I/O를 이용해서 만들어볼만한 주제다.
하지만, 여기에 객체지향 프로그래밍 원칙과, 클린코드 규칙들이 들어가고 TDD기반으로 바뀐다면 미션의 난이도는 훌쩍 뛰어오른다.
사실, 나는 이 미션을 작년 NextStep TDD, Clean Code with Java과정에서 이미 진행했고 통과도 했었다.
그래서 미션을 받을당시에는 금방하고 리팩토링만 조금 더 하면되겠다는 생각을 했는데...
내가 일신우일신(날마다 계속하여 정도나 수준이 높아짐) 까진 아니더라도 꾸준히 공부를 쉬진 않았기에 눈높이가 달라졌는지 몰라도 코드의 미진한부분들이 많이보였고, 그래서 처음부터 하는마음으로 다시 설계를 시작했다.
이번 미션에서 요구한 클린코드 규칙은 다음과 같다.
다행히 대부분의 제약조건들은 작년 TDD 교육과정에서 연습을 했기에 큰 부담까진 되지않았다.
하지만 추가요구사항인 모든 원시값과 문자열을 포장한다. 라는 요구사항이 머릿속에 박히면서 모든 필드값들을 포장하다보니 코드가 요구사항에비해 너무비대해지는 느낌을 받는다.
더하여 SOLID까지 지키려다보니 각종 전략(전진전략, 자동차 생성전략)들에 대해서 추상화에 의존하도록 만들도록하고, 이를 하나하나 외부에서 주입해주다보니 서비스레이어나 도메인레이어의 엔티티가 최소화되야한다는 클린코드 권장사항에서 멀어지는 것 같다.
하지만, 그렇다고 Reflection API를 사용하면 더 지저분해지는 느낌도 받고...
요근래 더욱이 느끼는건데, 공부량이 늘면서 아는 키워드나 지식이 많아지니 이 중에서 내가 뭘 골라서 쓰고 어느게 최선일지에 대한 혼란이 더 커지는 것 같다. 명확하게 여기선 이게 맞다고 결정을 내리는게 힘들다.
그래도 이번 미션에서는 클린코드 규칙을 지키면서 객체지향적으로 코드를 구현하는것이기에 극단적으로 요구조건들을 수용해서 작성하는 방식으로 하려고 하기에 비대해지더라도 최대한 다 분리를 하고 있다.
intelliJ - Code With Me
우테코 미션을 진행하는 동생과 일요일 CWM(Code With Me)을 통해 코드공유를 하면서 서로 코드리뷰를 해줬는데, 인텔리제이가 아주 좋은 기능을 추가한것 같아서 얼티밋 결제를 한 보람을 느꼈다.
지금까지는 줌이나 디스코드 화면공유를 통해서 코드리뷰를 하는편이였는데, CWM을 이용하니 단순히 코드를 보여주는걸 넘어 편집이나 실행까지 가능해졌는데(설정에 따라서), 단순히 코드만 공유하는게아니라 영역할당을 해서 웹캠을통한 음성 및 화상통화와 채팅기능까지 구현되있어서, 페어프로그래밍을 하기 아주편해졌다.
개인적으로 다음에 이 CWM을 이용해 토이프로젝트 공동개발도 해보고싶다.
자바의정석 - 컬렉션 프레임워크
지난주에이어 이번주에 컬렉션 프레임워크를 발표했는데, 내 생각과 다르게 정말 일주일내내 준비를 해야해서 일정상에 생각보다 차질이 있었다.
사실 처음 발표챕터를 정할 때 챕터 8 예외처리, java.lang유용한 클래스, 날짜와 데이트, 컬렉션 프레임워크, 지네릭스까지 한번에 다 발표한다고했었는데, 지네릭스를 빼면 다 간단히 소개하는선에서 발표를 끝낼 예정이기에 금방 될 줄 알았는데 정작 준비를 해보니 너무많아서 나눠서 발표를 2주 연속하게되었고, 지네릭스는 새로 오신 스터디원분에게 할당하고 컬렉션 프레임워크 발표를 준비하게 되었다.
지금 발표까지 다 끝내고 회고를 작성하는 시점에서 이에 대한 소감을 말하자면, 내가 자바의 정석 공부를 제대로 안했다는 생각을 다시 했다.
늘 당연하게 ArrayList와 HashMap만을 즐겨 사용했는데, Set을 써야 할때도 있었고, TreeMap이나 LinkedList를 쓰는게 나을떄도 있었다. 하지만 익숙하다는 이유로 쓰던 컬렉션만 썼고, 다른 컬렉션 클래스가 필요한 즐겨쓰는 클래스들을 직접 알고리즘을 짜서 구현을했는데, 이는 너무 시간낭비이다.
그리고, 알고리즘공부를 너무 등한시 했다는것을 느낀게 트리에 대해 글을 작성하는데 트리순회에서 전위-중위-후위 순회를 책을 안보고 작성하려니까 기억이 가물가물하다는 것... 이제 슬슬 이런저런 알고리즘이나 CS준비도 다시 해야겠다는 생각을 다시 하는 계기였다.
그리고 스터디에 대해서 요즘 스터디의 방향이 다시 발표하는사람만 해당 챕터를 공부하고 나머지는 공부를 하지않고 발표만듣는 전형적인 안좋은방향의 스터디방향으로 되고있는것 같아서 이러다 또 엉망이되서 파토날까봐 조금 조바심이 생긴다.
사실 규칙을 시작할때 엄격하게 잡고가야 이런문제가 줄어드는데, 너무 널널하게 좋게좋게갔던지라 어쩔수가 없는 부분이기도 하다.
이제 자바의정석도 후반부 발표가 시작되고있는데, 이게끝나고 얼마나 더 진행을 할지는 고민을 해봐야할 문제같다.
식단관리
살이 너무쪄서 위험하다는것을 알지만 의사선생님이 지적할때 잠깐 조절하나싶더니 다시 선넘고 쳐묵쳐묵을 해버리는 2021년 1분기였다. 그 결과 나는 종종 가슴에 흉통이 좌측 우측 오는편이였고, 나이까지 30대가 되면서 소화능력도 좀 떨어지다보니 급하게먹으면 체하는일이 많아졌다.
급체를하면 멀미에 두통과 눈쪽 통증까지 동시에 오는지라 일과가 불가능한 수준이고, 지난 남해출장시에도 이 문제로 크게 곤욕을 치뤘었다. 무엇보다 흉통이 있을때 가슴을 미약하게 찌르는듯한 느낌이 들때는 정말 위기감이들어서 이번에 드디어 식단관리 쇼핑몰에서 2주짜리 식단을 주문햇다.
아침-점심-저녁 모두 매일새벽에 배송을 해주는데, 이제 일주일 진행했는데도 효과가 있는 것 같다. 원래는 먹지않던 아침을 샌드위치나 베이글로 식사를 하니 오전에 좀 더 기운도 있고 점심에는 원래 회사직원들과 식사를 함께할대는 고탄수화물 음식이나 고염분음식들을 자주먹었는데, 이를 다이어트 식단 도시락으로 바꾸니 확실히 몸의 붓기가 빠지는 것 같다.
물론, 이 식단을 저녁까지 먹어버리면 잠들기 직전에 너무 배가고파서,와이프 먹으라고 상자째로 사놓은 홈런볼, 빼빼로, 마가렛트등 과자들을 주워먹고 있는데, 이역시 빨리 줄여야할 것 같다. ..근데 쉽지 않음..
비용은 2주에 22만원정도로 결코 싸진 않은데, 이게 3끼를 다 챙겨주는것도 있고, 매일 뭐먹지 고민하다가 배고프면 시켜먹는게 습관이되서 돈은돈대로 더나가고 음식들 쓰레기 처리문제도있고 무엇보다 살이 더 찌게되는 현상..
반찬을 사먹으면서 나물반찬위주로 먹으니까 나라는 돼지는 나물반찬도 맛있어서 밥을 거의 두끼씩 쳐먹으니 오히려 햄휴먼화가 가속하가 되던찰나, 해당 식단으로바꾸고는 그래도 많이 나아졌다.
이제 여기서 운동도 가미를 해야하는데, 아 운동은 숨쉬는거빼고 다 싫어.................
개발 오래하려면 건강도 챙겨야하는데 너무너무 힘들다...
Inflearn - JUnit
최근 김영한님의 스프링 완전정복 로드맵을 마무리한 뒤 시작한 백기선님의 자바 테스트관련 강의.
아직 초반만 둘러봤지만, 뭔가 원리적이거나 내부 알고리즘이나 흐름을 설명하기보다는 API 를 알려주는식으로 사용법 강의와 같다. 공부를 깊게하려면 내부가 어떻게 돌아가는지도 중요하지만, 당장 사용하고싶은 입장에서는 이런 강의가 좋다.
이해하는데 크게 시간을 쓰지 않아도 되다보니 출퇴근시간에 조금씩 시간을 내서 보고있는데, 나쁘지 않다.
5월 계획
공부도그렇고 돈관리도그렇고, 건강관리도 그렇고, 뭔가 신경을 쓸려는기색은 있는데 마구잡이로하다보니 생각보다 효율이 막 좋은것 같지가 않다. 시간은 시간대로 쓰는데 효율이 떨어지는 상황인데, 나이가 나이인지라 이제 시간을 하루하루 소중히 써야하는 입장에서 이런점은 좋지가 않다.
그래서 이제 매 달 최소한의 계획은 세워서 행동해야 할 것 같다.
1. 학습계획
•
우테코프로 프리코스 합격시
⇒ 우테코프로 과정진행 및 우테코프로과정 진행에 필요한 지식위주 공부
⇒ AWS 서비스 배포 학습, Server 튜닝기법 학습, SQL 학습 , 모니터링, 로깅 학습, 기술면접 질문 준비
•
우테코프로 프리코스 불합격시
⇒ 기존에 사둔 책과 인프런 남은 강의 마무리
⇒ 이펙티브 자바, 개발자, 더 인터뷰 가이드, 자소서작성 가이드, 깃린이 가이드, TDD, Clean Code, Clean Architecture
2. 건강계획
•
식단 유지
•
가벼운 유산소운동 시작
3. 돈관리
•
배달음식 금지
•
가계부 작성