Search
Duplicate

2021년 4월 4주차 회고록

4주차는 우테코프로 프리코스, 남해출장, 스터디 세미나 준비등으로 정신없던 한 주였던 것 같은데, 뭔가 마무리가 된 것이 아닌 마무리가 안되거나, 또 진행해야하거나, 남은파트를 또 준비해야하는 등 남은게 많아서 찝찝함이 크기에 이번주는 이런 찝찝함을 해소하는데 시간을 써야 할 것 같다.

인프런 - 스프링 MVC1

김영한님의 스프링 완전 정복 로드맵의 마지막강의인 스프링 MVC1편에서 마지막 챕터만 남은 상태이다.
4주차에 진행했던 파트는 스프링 MVC - 기본 기능 챕터로 새로 프로젝트 리포지토리를 만들어서 진행했는데, 스프링 프로젝트를 생성한 뒤 로깅 기능을 사용해보고, HTTP API 를 스프링에서 매핑해서 받아보기, 필터링해서 받아보기부터 HTTP 요청 포맷을 파싱하고 반환하는 것에대해서 예전에 사용되던 레거시한 방식부터 애노테이션 기반의 최신방식까지 살펴보고 라이브코딩을 통해 학습한다.
그리고 이런 객체 매핑들이나 파싱들이 어떻게 이뤄지는지에 대해서 구조를 그림으로 보여주고 코드를 통해 확인하면서 학습을 하는데, 확실히 책으로 이론만 읊는것보다 그림과 직접 코딩을 통해 학습을 하는게 체감도 많이 되었고, 실무에서도 매일 쓰면서 정확히 어떤개념이고 어디서 되고 어디서 안되는지에 대해 개념을 잡을 수 있었다.
다만, 나는 로드맵을 차례대로 따라학습하는지라 여기서 나오는 기반지식에 대해서 다 학습을 완료했기에, 큰 무리없이 들었으나 바로 이 강의부터 듣는 주니어 개발자가 미리 HTTP에대한 네트워크 학습이나, 스프링에 대한 기본 개념과 서블릿에대한 학습을 따로 하지 않았다면 중간중간 모르는 키워드들이 나오기에 답답할수도 있겠다는 생각을 하게 된다.
하지만, 정말 초급 기술지식(CS, DB, JAVA, Spring, JPA ...)은 다 알고있다는걸 가정하고 강의하는 백기선님의 강의 스타일과는 다르게 간략하게나마 기술에 대해 간략한 설명이나마 해주기에 답답함정도에서 끝나긴 한다.
남은 강의도 얼른 다 봐서 로드맵을 마무리하고싶은데, 이번주에 일정이 상당히 바빠서 시간이 될런지 잘 조절해봐야 할 것 같다.

해당 챕터(기본기능) 포스트

회사 - 남해 출장

현재 회사에서 진행중인 남해돌봄이라는 노약자-돌봄사-가족 간 화상통화 및 긴급구조 요청 웹&앱 개발 프로젝트가 있다. 작년 12월 정도부터 진행되던 프로젝트가 이제 마무리가 되어가는 시점에서 노약자에게 배포할 태블릿과 기타장비를 챙겨 출장 준비를 하게 되었다.

1. 태블릿 앱 설치

노약자분들이 구글아이디가 있을리 없기에 앱은 플레이스토어에 올라갔지만, 태블릿 50대에는 각각 직접 우리가 앱 설치를 해야했다.
그렇기에 직원들 5명이 각 10대씩 앱설치를 하는데, 태블릿을 하나하나 켜서 회사 내부 FTP서버에 등록된 앱을 직접다운로드해서 설치하도록한 다음 해당 앱의 위젯을 메인화면에 꽉차게 설정까지 해야했다.
5명이 나눠서 하니 크게 오래걸리진 않았지만, 하나하나 태블릿을 키고 해당 페이지에 접근해서 앱을 다운로드하고 설치하는데, 플레이스토어를 통해 받는게 아니다보니 권한설정도 해줘야하고 해당 앱도 카메라,마이크,위치정보등의 권한설정을 해야하다보니 허용해주고 토글해줘야하는 설정들이 꽤 많아서 번거로웠다.

2. 목요일 남해로 출발

소요시간 4시간 30분
이사님 두 분과 나 그리고 같이 개발(앱 위주)을 한 개발자 한명과 남해로 출발을 했다.
나는 다행인지 불행인지 운전면허는 있지만, 장롱면허이기에 직원분이 남해까지 독박으로 운전을 했는데, 괜찮다고는 했지만 고생했을께 뻔히보여 안타깝다. 날이 워낙 좋다보니 조수석에서 졸다 깨다를 반복하면서 경치도 구경하다 이사님들 수다떠는것도 듣다가 휴게소에서 우동한그릇을 먹는데, 시간이 촉박해서 거의 2~3분만에 완식을 했더니 계속 더부룩함이 가시질 않는다.
아니나 다를까 남해에 도착할쯤이 되니 우동을 급하게먹은게 체해버리고, 차멀미에, 안구건조증까지 같이오면서 극심한 두통과 어지러움이 생기기 시작했다.

3. 험난한 앱 소개및 교육

정말 산속에 축사옆 복지센터에 가서 노약자분들을 담당하시는 돌봄사분들에게 앱에 대해서 설명하고 설치가이드및 사용법을 PPT를 발표를 시작했다. 발표담당자는 앱개발자인 다른 직원분이 담당을 했고 나는 사진을 찍고 어려움을 겪는 돌봄사분들을 한분한분 찾아가면서 도와주기 시작했는데, 어머니분들은 일단 우린 모르겠다! 어렵다! 해버리고, 피피티내용도 개발자입장에서 최대한 친절하게 쓰긴했지만, 크롬, 로그인, 인스톨 등등 용어들이 나오니 돌봄사들은 분노하기 시작하는데.... 나는 뒤에서 몸이 너무안좋아서 식은땀을 흘리다가 분위기가 너무 안좋아져서
한분씩 찾아가서 1:1로 앱설치를 도와드리고 로그인까지 도와드리기 시작했다.
아주머니들은 처음에는 이런거 할머니 할아버지들은 못하고 우리도 못해요~ 하다가, 한 번 성공하니 그 뒤로는 사실 과정이 쉽긴 쉬운지라 그냥 감사합니다. 라고 끝났지만, 절반 이상의 돌봄사분을 한 분 한분씩 도와드리고나니 이제는 약간 주마등이 스쳐지나가는 것 같고 식은땀이 펑펑 나고 있으니 이사님도 괜찮냐고 물어보시기에 마지막으로 태블릿과 앱간 화상통화 시연을 한 번 보여준 뒤 먼저 나가서 쉬기 시작했다.

4. 회복

교육이 끝나고 남해군청으로 가서 태블릿 50대를 전달 한 뒤 이제 저녁을 먹으로 수산시장의 횟집으로 향했다.
회를 주문해서 먹는데, 이제는 몸상태가 안좋다못해 주마등이 지나가는 수준이 되서 얼굴이 너무 창백하게 질려있으니 먼저 숙소로 가서 쉬라고해서 회를 몇점 먹지도 못하고 숙소로 들어왔다.
다행히 숙소는
예전에도 몇 번 심하게 체하면 동일한 증상을 겪었기에 우선 두통제, 소화제를 먹고 인공눈물도 사서 넣은뒤에 숙소에 있는 욕조에 뜨거운물을 받고 들어갔다. 고혈압이 있는건지는 모르겠지만, 이렇게 아플때 뜨거운물에 들어가면 망치로 때린듯이 뒷목쪽이 쨍하고 통증이 몰려온다.
그때는 정말 아 이러다 죽을수도 있겠다 생각이 드는데, 그냥 계속 있다보면 상태는 호전되기에 이번에도 그렇게 1시간 가량 욕조에 들어가서 멍때리고 쉬다보니, 점차 두통도 가시고 워낙 습하니 눈의 건조함도 사라지고 회복이 되기 시작했다.

5. 세미나 준비

대략 7시정도가 되서 몸상태는 어느정도 회복이 되었고, 동료에게 노트북과 태블릿등이 든 가방을 받고, 편의점에 들러 가스활명수를 2병을사서 원샷을 한 뒤 커피한잔을 사들고왔다.
너무지쳐서 잠시 누워서 친구와 와이프와 전화를 해서 안부및 죽을뻔했다는 얘기를 좀 나누다가 대략 8시부터 주말에 있을 자바의정석 세미나 준비를 하다가 1시쯤되서 잠들었다. 내일은 부디 안아프기를....

6. 태블릿 방문 설치

8시반에 아침을 먹고, 시범적으로 3가구 정도 들려서 태블릿을 설치하고 사용법에 대해 가이드를 하기로 했다.
여기에는 우리 회사 뿐 아니라 돌봄사와 인터넷을 설치해주고 기가지니도 설치해주는 KT 직원 두 분도 동행을 했는데, 이때까지만해도 최대한 빠르게 11시가 되기전에 다 설치하고 바로 복귀하자! 라는 생각이였다.
하지만, 설마는 언제나 역시가 된다고 회사에서 그렇게 수십번을 테스트해도 잘 연결되던 화상채팅이 계속 끊기기 시작한다 특히 LTE - LTE환경에서는 성공보다 실패하는 경우가 더 많이 발생을 하는데, 처음에는 인터넷 망이 문제인가? 싶었다. 그래서 3가구 설치 후 올라오면서 계속 테스트를 해봤는데 계속 실패하는게 반복되었다.
회고록에서도 작성했던 (링크) 방식으로 영상통화를 계속 성공하도록 만들고 테스트도 수십번이상을 반복했는데, 현재 지금 이순간가지도 통화가 실패율이 50%를 넘고있다.
억울함도 있고 반성을 해야하는 부분도있다.
우선 반성을 해야하는 부분은 확실히 출장 마지막까지 테스트를 진행해보지 못한 것이다. 출장전날 10번만 테스트했어도 바로 나오는 경우인데, 3월 3주차에 마지막으로 테스트를 진행한 뒤 따로 진행을 하진 않았다. 테스트가 상당히 시간도 걸리고 귀찮고, LTE-LTE, WIFI-WIFI, LTE-WIFI, 동일한 네트워크 테스트를 IOS-IOS, IOS-ANDROID, ANDROID-ANDROID 환경에서 모두 수십번이상 테스트를 해야하다보니 생략한이유도 있다. 하지만 크게 바쁘지도 않았는데 테스트를 진행했어도 되었는데 거기에 개인발전이랍시고 인강만듣고 개인공부만 한 잘못은 분명히 있다.
억울한 부분은 나는 앱만 보는게 아니라 웹도보는데 심지어 웹페이지는 디자인가이드, 설계가이드 그 어떠한것도 없이 간단한 뭐뭐되는 기능 되는 관리자페이지 만들어~ 데이터베이스 설계부터, API 서버, UI/UX도 직접 진행해야했다. 그러다보니 해당 웹에 집중하느라 앱은 자세히 살피질 못했는데, 나는 여기서 직함은 과장이라고 불리고 있지만, 년차로는 이제 만 2년차 개발자로 사실 자기 앞가림하기도 힘들다.
그리고 내가 마지막으로 테스트를 진행한 이후 나는 앱쪽 플러터 코드는 전혀 건들지 않았기에 안될꺼라는 생각은 한적이 없었고, 앱쪽 위주로 개발한 개발자도 영상통화를건드리는 기능은 구현하지 않았다고 했기에 신경쓰지 않았다. 이사님도 얘기하셨고 공감하는 얘기로 개발을 할 때 하나에만 집중하느라 전체적인 그림을 못보니까 이런 일이 생기는거라는 건데, 확실히 내가 여기서 단순히 기능개발만하는 코더가 되는게 아니라 발전을 하고 인정받는 아키텍처가 되고 개발자가 되려면 이런 전체적인 시야를 가지는 노력도 해야 할 것 같다는 생각은 한다.

자바의 정석 스터디 - 발표

이번주 자바의정석 스터디에서는 내가 발표할 차례였다.
발표구간을 정할때 기본적으로 한 챕터씩을 담당했는데, 내가 맡은 부분은 예외처리부분이였고, 뒤에 있는 챕터들이 java.lang의 유용한 클래스 소개, 날짜와 데이터, 콜렉션 프레임워크, 지네릭스 등이였는데, 적어도 3개정도는 간단한 소개만하고 넘어가도 될 것 같아서 해당 챕터를 모두 준비해서 발표한다고 호기를 부렸다...
왜그랬을까. 왜 허세를 부렸을까 아니 그땐 왜 허세가 아니라고 생각했을까?
물론, 그때는 내가 우아한테크코스 프로를 할꺼라 생각하지 않았고, 남해출장을 갈꺼라 생각하지도 않았다.
준비를 열심히 하기는 했지만 결국 끝까지 준비는 못했고 예외처리와 유용한 클래스 소개및 날짜와 데이터까지만 준비를 하게되었다.
이번주는 새로운 스터디원이 참가를 하게되었는데 비전공자에 국비출신으로 현재 취업준비를 하고있다고 하는데, 말하는걸 들어보면 준비를 좀 열심히하시고 어느정도 규모가 있는 회사를 노리는 것 같아서 기대가된다.
그래서 간단한 소개 후 발표를 시작했고 내 예상은 예외처리를 제외하면 금방금방 끝날꺼라 생각했기에 전체적인 발표시간을 1시간 이내로 잡고 그 이후 HTTP 네트워크 세미나를 진행할 예정이였다.
하지만, 라이브코딩과 예시를 들면서 하는 설명, 그리고 질의응답까지 포함하니 발표시간은 기하급수적으로 늘어났는데, 심지어 유용한 클래스 소개는 20분내로 설명이 끝날꺼라생각햇는데 해당 챕터만 한시간 가량 발표를 한 것 같다. 그렇게 날짜와 데이터 챕터까지 발표를 하고나니 어느덧 2시간 30분 정도가 지나있었고, HTTP 네트워크 세미나까지 연달아서 발표를 끝내니 4시간중 3시간 40분가량이 지나버렸다... 가버린건 시간 뿐이 아니라 내목도 포함되었는데, 이렇게 오래 말할일이 없어서 그런지 목이 칼칼~하고 쉬어버려 난감한 경험이였다.
다음주에는 다음 사람의 발표 차례지만 콜렉션 프레임워크랑 지네릭스가 내 분량으로 아직남았기에 새로 오신분에게 지네릭스 발표를 분배하고 콜렉션 프레임워크에 대한 발표준비를 또 해야 한다.
앞일이 어떻게 될 지 모르니 확신하지말고 여유있게 일정조정을 해야겠다는 교훈을 얻었다.

우아한테크코스 프로 - 프리코스

우테코프로 프리코스 미션을 받았다. 미션은 간단한 야구게임 만들기로, 전공자라면 학부생 1학년쯤에 한번쯤은 해보는 실습 예제다. 서로 다른 숫자를 특정 자릿수만큼 입력받아 스트라이크,볼,낫싱으로 매치해서 컴퓨터가 생성한 야구숫자를 맞추는 것인데, 나도 학부생시절(거진 14년전!!!!) 만들었던 기억이 있다.
그때는 C++로 했었고, main로직 하나에서 만들었는데 예외처리고 추상화고 어떠한 개발기법도 사용하지 않았었다. 야구게임 자체는 어려울게 없는 미션이지만, 문제는 이를 TDD기반으로 테스트코드를 짜고 추상화와 의존관계주입및 예외처리 그리고 그밖에 제한조건들인 클린코드 규칙들(메서드는 10줄 이하, 코드의 depth는 1을 유지, Stream API 사용 금지)을 지켜야 하기에 생각보다 쉬운 미션은 아니였다.
지금은 대부분 구현을 해놓은 상태인데, 기능 요구사항이 아닌 과제 진행 요구사항에서 구현기능부터 README에 작성하라했는데, 이를 제대로 못봐서 나중에 커밋한것이 많이 걱정된다.
요근래는 계속 Stream API를 즐겨사용했기에, 다시 for문이나 forEach, while문을 쓰려니 어색했지만, 좋은 경험이였고, 벌써 PR을 하신분들이 70명에 가까워지는걸 보니 내가 잘 되는건 힘들겠다는 생각도 든다.
그래도 되는한 열심히 마지막까지 진행해보려한다.