Search
Duplicate

2020년 10월 4주차 회고록

나는 매년 하반기가 되면 바쁠 운을 타고난것 같다. 아니 사실 모두가 그렇지 않을까 생각한다.
하지만 그렇게 생각한다면 나의 이 정신없음이 퇴색되기에 나에게 집중한다.
이번주는 내 계획과는 다르게 예기치 못한 일들이 많이 일어났기에 정신없이 흘러갔다는게 맞을 것 같다.
우선, 나의 이번주를 책임져 준 유튜브 음악을 링크한다.

일할 때 집중력을 높히는 차분한 연주

본래 나는 워낙 산만하기에 노래 혹은 ASMR을 꺼놓고 일을 하게되면 주위 잡음이나 대화소리에 영향을 많이 받기에 항상 틀어놓는편인데, 이번주는 이 영상을 자주 틀어놓고 일과 공부를 했던 것 같다.
사실 평소에는 강성태님의 백색소음을 위주로 듣는데 이번주는 뭔가 빗소리나 피아노소리에 질려서 새로운 것을 찾다가 들은것인데 앞으로도 애용할 것 같다.

1. 인프런 - 더 자바 Java 8

원래 계획보다 늦어졌던 백기선님의 더 자바 Java 8강의 수강.
원래 계획은 최소 2주차부터는 수강을 시작하여 지금 참여하고 있는 nextstep의 TDD clean code 전에 2회차까지 수강을 들으려 했으나 김영보님의 자바스크립트 강의진도가 생각보다 더디게 진행되어 4주차가 되서야 듣게 되었다.
대략적인 핵심 파트는 다 들었다고 할 수 있는데 이렇게 빨리 들을 수 있었던 이유는
강의내용이 전체적으로 이론적인 내용을 파고들거나 원리를 분석하는 개념보다는 Java 8에 새로나온 API들을 소개하고 어떻게 사용하고 왜 사용하는지에 대해 알아보는 강의였기 때문에
처음부터 2회차를 염두하고 심도깊게 체득하기위해 나만의 예제를 만들거나 실습을 하기보단 내용을 따라가는데 주안점을 두었기 때문에
자바스크립트 강의때와 다르게 블로그에 정리하는데 힘을 주지 않았기에 거의 수업자료내용을 가져다 쓴 수준이기에(가장 큰 이유)
여기서 마지막 이유가 가장큰데 사실 이전의 강의들(특히 자바스크립트) 에서는 3분~5분짜리 강의여도
그걸 다 듣고 수업자료를 정리하고 내가 직접 서술하고 정리하고 예제를 따라 쳐보고 스코프까지 뜯어보면 한편 정리하는데만 30~50분씩 걸렸다. 하지만, 이번 강의에서는 그렇게까지 파고들질 않으니 시간이 적게 걸릴수밖에... 2회차를 들으며 재정리하며 예제를 직접 만들어서 구현하도록 해야할 것 같다.
여하튼 강의를 들으며 느낀점은 여러모로 자바스크립트 강의를 들을때 봤던 내용들과 비슷해서 익숙한 개념들도 많았고, 마냥 신기술이라고 생각해서 남용하던 내게 브레이크를 걸어준 강의 이기도 했다.
첫 째로 Optional인데 나는 이 객체를 알고나서 정말 오만간데 다 Optional을 붙혀서 사용했었다.
하지만, Optional은 신택스상으로는 어디서든 사용 가능하지만 실은 반환타입으로만 사용하길 권장하는데, 그 이유에 대해 하나씩 살펴보는 강의였고 너무나도 공감하면서 당장의 사내 프로젝트 리팩토링 대상으로 결정했다.
그리고 Stream 역시 알게되고나서는 기존에 잘 구현되어있는 for-of문들도 다 변경을 하려했지만, 사실상 퍼포먼스를 정말 따지고 들어가면 Stream이 더 낮은 퍼포먼스를 보여준다는 점을 알고 새로나온 API라고 무조건 적용을 할게 아니라 좀 더 고려해서 적용해야 한다는 점도 느꼈다.

강의 정리 내용

2. TDD, Clean Code with Java

펀드까지 깨고 거금을 투자해서 참가한 nextStep의 TDD, Clean Code with Java 수업..
이번주 수요일부터 드디어 시작했다. 내가 듣기엔 너무 고급아닐까, 일단 좀 더 공부하고 들어야하지 않을까? 하면서 고민만하고 놓치고 하다가 연말까지 오면서 아는 동생이 코틀린과정으로 수강을 하며 강력 추천하는것을 듣고 큰맘먹고 만약 수료하지 못하더라도 공부 더해서 내년에 또 참가하겠다는 마음으로 수강을 했다.
하지만, 수요일 OT 첫날부터 고생길이 열렸는데, 화요일 오전 8시경 아내의 외조부친상 소식...
바로 회사에 연락을해 수, 목 휴가를 받고 경남 거창까지 왕복 9시간의 여정을 시작했다.
수요일 당일, 첫차를 타고 내려가 부의금을 전달하고 아내얼굴도 잠깐 보고 오후 6시 버스를 타고 올라오며 8시부터 버스안에서 핸드폰으로 테더링을 켜 노트북을 들고 오티를 듣기 시작했다.
버스안에서 OT 참석
터미널에서 OT듣는 중
박재성 강사님의 OT를 듣고 이런저런 생각을 하던찰나 10시쯤 터미널에 도착해서 터미널 의자에 앉아서 대략 30분가량을 더 듣다가 집에가 씻고 짐을 풀고 자려던 찰나 강사님이 했던 오늘부터 하면 좋다는 말이얼핏 떠오르며 다시 불을 키고 1단계 미션을 시작했다.
이 과정은 8주 과정 4개의 미션으로 구성되어 있는데 한 미션 당 대략 2주의 시간을 사용한다고 보면 된다. 1단계 미션도 5단계로 나뉘어져 있는데 1-1단계는 간단한 몸풀기 미션으로 왠만해서는 다 merge를 해준다는 말에 첫 번째 PR이후 바로 1-2단계 미션을 시작했다.
여기서 정말 생각외로 엄청 많은 시간을 쏟았는데, 단순히 기능 요구사항이 아닌 프로그래밍 요구사항과 제약조건들을 지키면서 개발하는게 힘들었고, 타인에게 리뷰를 받고 통과를 해야한다는 부담감은 같은 코드를 작성하더라도 불안감에 더 고민을 하게 만드니 생각이 정말 많아지는 시간들이였다.
더하여 이제 PR을 하려는 찰나에 다른사람들의 코드를 보니 너무나도 유려한 코드들...
그리고, 항상 커밋단위가 기능 구현을 다 해놓고 한번에 커밋을 하는 습관이라 단위별로 상세하게 커밋하는게 익숙치가 않았다.
before commit style
after commit style
물론, 이제 첫 시도이기에 아직도 많이 부족하지만 조금씩 더 나아지리라 생각한다.
현재는 1-3단계까지 PR을 한 상태로 대기하고있는 상태이다. 얼마나 많은 피드백이 올지 조금 무섭다
1-2 단계에서도 결코 적지 않은 피드백을 받았는데 정리해보자면
private static final Map<String, IntBinaryOperator> functionByOperator = new HashMap<String, IntBinaryOperator>() {{ put("+", Integer::sum); put("-", (i, j) -> i - j); put("*", (i, j) -> i * j); put("/", (i, j) -> i / j); }};
JavaScript
복사
나는 이렇게 사칙연산 Operator를 Map으로 구현해 if문이나 switch/case문으로 operator 비교 없이 ㅂ로 꺼내서 쓸 수 있도록 구현했지만, 여기서 Enum을 사용해 한층 더 Refactoring 아이디어를 주셨고,
기존에는 genericType에 BinaryOperator를 사용했지만 좀 더 특화된 IntBinaryOperator로 변경하라 해서 바로 변경했지만,아직 Enum은 조금 더 공부를 한 뒤 적용을 해야 할 것 같다.
다음으로
private final String DELIMETER = " "; private final String OPERATOR_PATTERN = "[+\\-*/]"; private final String NUMBER_PATTERN = "(^\\d*)$";
JavaScript
복사
상수화 할 수 있는 변수들(구분자, 각종 정규표현식)을 인스턴스를 만들 때마다 생성하는것은 불필요하다해서 static 키워드를 붙혀주었다.
그밖에 나는 바쁘지않을때는 최대한 주석을 상세히 달려고 하는 편인데, 그보다는 메서드의 네이밍만으로 의도를 나타내는 것을 권장한다고 한다.
그밖에는 접근제어자에 대한 것인데 실무에서는 약간 습관적으로 public을 사용하곤 있었고, 개인 공부에서는 항상 패키지하나에서 처리하거나 소규모단위다보니 접근제어자가 큰 의미를 가지지 않기에 크게 신경을 쓰지 않고 썼는데, 조금 더 생각하면서 코드를 짜야할 것 같다.

NextStep 미션 진행하며 피드백 정리 포스팅

3. HyperFocus

이번주는 포스팅을 할 정도의 양을 보진 못했기에 따로 포스팅을 하기보다는 실제로 책의 내용들을 실천을 해보는 시간을 가졌고 그에 대해 써보려 한다.
우선, 내 데스크셋업은 트리플 모니터로 각 모니터는
우측 노트북 모니터: 유튜브로 노래를 틀어놓거나 작아도 상관없는 텍스트가 얼마 없는 화면
중앙 모니터: 보통 IDE창이나 크롬 개발자 콘솔창을 띄워놓고 작업(가장 텍스트가 많은 작업들)
좌측 모니터: 세로로 볼일이 많은 브라우저창이나 코드창(작성용이아닌 참고용) 하지만 정말 바쁠때가 아니면 보통 텔레그램, 카톡 등의 SNS들
위와같은데 여기서 좌측 모니터에서 SNS를 모두 꺼놓고 우측화면에도 움직이는 영상들은 올려놓지않고 썸네일만 있거나 아니면 그냥 이미지하나만 띄워놓고 작업을 했다.
그 결과, 작업 중 집중이 흐트러지는 경우가 정말 많이 줄었는데, 기존에는 일을하거나 공부를 하더라도 곁눈질로 새로운 톡이오면 거기에 집중해 답변을하거나 대화를하거나 하는경우가 상당히 많았고, 여기서 대화가 끝나더라도 바로 복귀하는게 아닌 괜히 인터넷 메일함 확인하고 자주가던 카페글도 확인해보고 복귀를 했다, 책에 나온대로 집중이 분산되면 다시 복귀하는데까지 23~30분이 걸린다는게 괜한소리가 아니였다.
그 다음으로 작업을 들어가기전에 명상을 하는건데, 이는 내가 자주 시도하지는 않았는데 그 이유로
회사에서 혼자 가만히 앉아서 눈감고있기엔 눈치가 보여서 그랬으며, 효과도 극적이진 않았기 때문이다. 하지만, 확실히 효과가 있긴있었는데, 내가 다른 작업을 하다가 바로 다른 업무에 집중을하면 처음 수분에서 길게는 수십분까지 이전에 하던 작업에 대한 잔류사념으로 현재 업무에 집중이 되기까지 시간이 걸렸다. 그러다보니 집중이 흐트러질 확률도 많았는데, 이에 대해 또 다른 생각은 명상을 10분하고 바로 집중하는 것과, 집중을 제대로 못하고 10분동안 방황하다가 집중하는것과 차이가 무엇인가 하는 생각이다...
아직 본격적으로 실생활에 이 책의 내용을 적용하진 못하고있는 것 같지만 점차 하나씩 시도해보면서 내 시간을 좀 더 알차게 써볼 생각이다.