OKR 진행 현황
1. 수습 통과하기
- LMS console migration 프로젝트: 10%(7/1)→ 60%(7/31)
2. 백엔드 개발자 커리큘럼 달성
- Java/OOP
- 이것이 자바다 2권 끝내기(~8/15) (총 4챕터 완료)
- Spring
- 스프링 핵심 원리 강의 끝내기(~7/30) (현재 72.15% 달성)
1. Keep
데일리 리포트 작성
저번 주 Try로 선정된 Action item이었던 데일리 리포트를 일주일간 썼다. 업무 일지와 병행해서 써서 그런지 예전과 달리 매일 적는 게 훨씬 수월해졌다. 업무 일지를 꾸준히 쓰는 버릇이 들여서 새로운 습관을 얹는데 드는 부담이 크지 않았다.
쓰면서 느낀 건데, 컨디션이 좋지 않은 날에는 데일리 리포트를 꾸준히 쓰는 것 역시 힘들어졌다. 한 번에 몰아 쓰거나, 혹은 써야 하는 것을 머리로는 인지함에도 몸으로 완강히 거부하게 되더라. 마침 그날은 새벽 4시까지 잠에 못 들었던 날이었다. 주중 컨디션 관리는 정말 중요함을 다시 한번 느낀다. 다음 주도 계속 이어서 데일리 리포트를 써보자.
주간 회고 스터디 시작!
이번달 말에 주간 회고 스터디를 시작했다. 개발자를 모으기에 앞서 인스타를 통해 주변 지인들 대상으로 스터디 모집 글을 올렸는데 대번에 모였다. 갓생에 대한 니즈는 늘 있는 듯. 이 모임에서는 2개월 동안 단기 목표 및 핵심 결과지표(OKR)를 설정한 뒤, 매주 주말마다 모여 한 주 있었던 일을 회고하고 다음 주에 달성하려는 일을 모두 앞에서 선언한다. 오늘 첫 모임에서는 각자 소개 및 삶에서 이루고 싶은 바를 공유하는 시간을 가졌다. 이전 주간 회고 스터디에서도 느꼈지만, 함께의 힘은 언제나 대단하다.
이전까지는 직접 사람을 모으기보다 만들어진 판 위에서 주도하는 포지션에 있었다. 분위기를 띄우거나 모임이 좋은 방향으로 흘러가게 하거나 등. 여전히 이 포지션이 가장 잘하는 것으로 생각하지만, 판을 주도하는 것과 별개로 만들 줄 아는 능력은 다음 레벨로 올라가는 데 있어 꼭 필요한 스킬이라 생각한다. 지금이야 실무로 능력을 판단 받는 위치에 있지만 올라갈수록 하드 스킬 이상의 것이 필요하다. 그것이 필요 없다는 것은 아니나, 하드 스킬을 잘해야 하는 건 주니어의 위치다. 시니어는 판을 벌이고, 그 판 위에 실무진들이 뛰놀게 할 줄 알며, 그 판의 책임을 지는 사람이다. 어떻게든 판을 짜는 경험을 계속 쌓아야 한다. 그것이 사내에서는 다음 스텝으로 넘어가는 길이며, 회사를 나와서는 내 게임을 만드는 길이다.
물론 현재 더 우선순위가 높은 건 코딩 스킬이다. 하지만 메인과 서브를 명확히 인식하되, 서브를 절대 놓지 말아야 한다. 언젠가 그 서브가 메인이 될 날이 올 테니까. 앞으로도 Keep going 해보자.
1일 1커밋 (26/31)
계속해서 꾸준히 작업 중인 1일 1커밋. 이번 달에는 31일 중 총 26일을 커밋으로 채웠다. 주중에는 자바/스프링 공부한 내용을 커밋으로 올리고 주말에는 리트코드에서 파이썬으로 이미 풀었던 알고리즘 문제를 자바로 다시 풀어보는 연습을 하고 있다.
지난달까지만 해도 1일 1커밋 달성 여부에 꽤 목맸지만, 지금은 힘을 많이 뺐다. 때로는 소챕터 하나 짧게 공부한 내용 하나 올리고 마는 등의 형식적인 커밋(그렇다고 스페이스 한 칸치고 커밋을 올리지는 않는다...)을 할 때도, 주말에 놀다 보면 빼먹을 때도 있다. 하지만 그다음 날 아무렇지 않게 다시 커밋하게 하는 환경설정이 꾸준하게 할 수 있게 만드는 핵심이다.
우리의 자유의지는 생각보다 믿을만하지 않다. 이번 주말에 읽은 <역행자> 책에서는 이를 적나라하게 깐다. “나는 마음 먹으면 언제든 미친 듯이 공부할 수 있어!” 따위의 다짐은 개나 주도록 하자. 인간은 사실상 선천적으로 타고난 유전자와 후천적으로 조성된 환경으로 움직이는 존재이다. 물론 피를 토하는 의지로 뭔가를 해낼 수는 있겠지만 그걸 의지만으로 한 달, 1년, 평생을 유지하는 건 사실상 불가능에 가깝다. 그 의지로 매일 뭔가를 다짐할 시간에 환경을 설정하자.
이제는 1일 1커밋을 의지로 하지 않는다. 처음에는 이걸 해야만 하는 환경을 세팅했다. 내 경우 “주변에 선언하기”로 시작했다. 그다음은 장벽을 낮춘다. 1커밋이라고 하면 뭔가 대단한 걸 해야 할 것 같지만 그건 욕심이다. 원래 커밋 자체도 가독성을 위해 1커밋에 보통 200줄 이하로 작성한다(회사마다 다르긴 함). 하루에 10분만 투자하는 식으로라도 커밋을 하는 버릇을 들이면 그다음부터는 피를 토하는 다짐? 그딴 거 없이도 안 하면 찝찝하고 불안해서 하게 된다. 어차피 금방 한다는 걸 몸으로 아니까 후딱 하고 치운다. 그러다 공부를 많이 하는 날에는 많이 커밋하고. 그러니 중간에 한 두 번 빼먹어도 별 타격이 없다. 어차피 내일 다시 할 거니까. 그냥 삶의 일부로 만들어버리면 된다. 이게 계속 쌓이면 절대 무시 못 할 자산이 된다는 걸 안다.
앞으로도 1일 1커밋이라고 외치겠지만 “2023년에는 모든 날을 커밋으로 채운다.” 따위의 목표를 설정하진 않는다. 그냥 개발자 하는 그 기간 늘 1일 1커밋하려고 하되 못하면 가볍게 넘기고 만다고 생각하는 게 오히려 꾸준히 하는 비결이다.
2. Problem
생각보다 많이 느린 개발 속도
현재 사내 온보딩 프로젝트를 진행 중이다. 사내에서 사용하는 게시판 툴을 클론 코딩해서 새로 짜는 프로젝트를 맡았다. 서버는 스프링부트 그대로 사용하지만, 프론트는 AngularJS로 되어 있어 이걸 React로 변경하는 것은 새로 짜고 있다.
해당 프로젝트를 대략 6월 말부터 시작했으니 지금까지 약 한 달 정도 지났는데, 구현해야 할 기능을 이제 겨우 절반 남짓 달성했다. 심지어 다른 서버와의 연계 기능은 모두 제하고 간단한 CRUD만이 요구사항이었음에도 말이다. 처음에는 “자바와 스프링부트에 대한 이해도가 떨어지니까”라며 조급해하지 말고 하나씩 배워가자고 생각했다. 근데 최근 짧은 글 하나를 읽고 뭔가 잘못됐음을 인지했다.
초보자: 처음부터 100점짜리를 하려고 노력해서 시간이 많이 걸림 >>> 70점짜리 결과로 마무리
숙련자: 30점짜리 초안을 빨리 씀 >>> 많이 고쳐서 100점짜리 결과로 마무리
초안을 빨리 쓰고 열심히 고치자.
순간 머리가 띵했다. 이거 내 얘기가 아닌가?
간단한 CRUD 기능을 쳐내는데 처음부터 레이어를 엄청 세밀하게 나눠야 할 필요가 있었나? 현재 프로젝트가 헥사고날 아키텍쳐로 설계되어 있다고, CQRS가 적용되어 있다고 나 역시 처음부터 헥사고날 아키텍쳐를 도입할 필요가 있었나? 처음부터 CQRS를 적용할 필요가 있었나? 물론 방대한 코드를 찬찬히 읽으며 이것들을 하나하나 공부한 건 도움이 되었다. 하지만 이것이 실제 비즈니스라 가정했을 때, 내가 받은 요구사항은 클론을 뜨되 모양만 같은 CRUD 게시판이었지 다른 복잡한 건 없었다. 레이어를 더 세밀하게 나누고, 역할과 책임을 분리하는 등의 작업은 반드시 필요하지만 그게 맨 처음부터 필요한 것은 아니다. 해당 서비스를 사용하는 고객의 수가 늘어나고, 도메인에서 요구사항이 복잡해짐에 따라 하나둘씩 발전해나가는 게 아니던가. 그게 소프트웨어 엔지니어링이라고 얼마 전에 배우지 않았나.
지금 내가 하고 있는 건 초등수학부터 문제를 하나씩 풀어 고등학교 단계까지 올라가는 게 아니다. 초등학교 수준으로 고등수학 문제를 푸는데 답지를 보며 하나씩 끙끙대고 있는 양상이지 않나. 리드님과 상담을 통해 정확히 진단을 내릴 필요가 있지만 현재 속도는 문제가 있다고 느꼈다. 내일 회사 가서 빠르게 조언을 구해야겠다.
절대 공부량의 부족(하루 2시간 개인 공부 시간 채우기)
하루 절대 공부량이 충분히 채워지지 않는 것을 파악했다. 특히 지난주부터 데일리 리포트를 쓴 덕분에 명확해졌다. 당장 지난주를 보면 주중 약속이 2건이었는데 이틀 다 공부를 전혀 손도 대지 못했다. 이번 주말은 스마일라식을 하느라 주중에 못 채운 공부량을 덜 채운 것도 있다. 하지만 주중에 매일 2시간의 개인 공부 시간은 반드시 확보하기 위해 애쓸 필요가 있다. 특히나 실력이 부족한 지금은 더더욱. 이 역시 시스템으로 해결해야 한다.
다음 달 역시 데일리 리포트를 쓰면서 어디가 병목인지 파악해야겠다. 아니, 그 전에 되도록 아침에 공부하는 방향으로 꼭 선회해야 할 듯. 저녁으로 미루면 진짜 답 없다. 약속을 없애는 것도 중요하지만 그런 것에 흔들리지 않고 애초부터 반드시 할 수밖에 없는 환경설정을 고민하자. 한 가지 문제라면 아침에 비몽사몽 하느라 집중이 잘 안된다는 점인데, 커피를 마시든 어떻게든 잠을 깨울 수 있는 방향 역시 고민해볼 것. 사실 답은 간단하다. 잠 잘 자면 못 일어날 수가 없다. 8월의 액션 아이템은 잠 잘 자기 - 반드시 7시간 취침과 아침에 2시간 공부하기로 진행한다.
3. Try
- 리드님께 현재 개발 진행 상황 보고 후 상담하기
- 구조 단순하게 가더라도 빠르게 기능 쳐낼 것인가?
- 아니면 현재 구조 계속 공부하면서 지금 속도를 유지할 것인가?
- 7시간 취침
- 아침에 2시간 공부(정 안되면 아침 1시간 / 저녁 1시간으로 쪼개기)