개발일지 (11월 & 12월 회고)

2022. 12. 18. 10:58Developer History

 

 

 

After Class

중간고사 / 기말고사가 끝나고, 이렇게 복무 만료 이후의 첫 학기가 잘 마무리되었다. 아직 성적은 나오지 않았지만, 던진 과목은 없어서 계속해서 장학금을 받지 않을까 생각이 된다. 굉장히 고된 3달 반여를 보낸 것 같지만, 남은 두 학기도 우선은 계속 이렇게 진행할 수 있을 것 같다. 학기 내내 들었던 생각은 나의 "앎"에 대한 기준, 그러니까 무언가를 "이해했다"라고 생각하는 기준이 동기들에 비해 그렇게 높지 않다는 것이었다. 어쩌면 이 사실을 깊게 깨달은 것이 이번학기의 가장 큰 소득일 수도 있겠다. 

 

생각해보면 늘 내가 생각하는 무언가를 "이해했다"고 생각하는 기준은 완벽에 가깝진 않았던 것 같다. 전반적으로 꼼꼼함이 부족하다고 해야 하나, 동시에 많은 일들을 하는 것을 즐기지만 각각의 일들을 끝까지 완벽하게 마무리하는 것에 대해서는 그렇게 높은 역량을 가지고 있지 않았던 것 같고, 회사에서 맡은 역할도 한두가지의 일을 꼼꼼하게 마무리하는 일보다는 80% 정도의 정확도를 가지고 많은 일들을 다양하게 챙기는 것이 더 중요하다 보니 점점 마무리 능력이 저하되고 있다는 것을 느끼게 된 것 같다.

 

아직 주니어 개발자인 나에게는 꼼꼼하게 마무리하는 습관을 갖지 못한 상태로 다양한 일을 벌리고 책임지는 상황은 나에게나 팀에게나 좋지 않을 것 같아서 돌아오는 학기에는 이 기준을 조금 더 높여서 수업들을 들으려고 한다. 다만 사용할 수 있는 에너지의 양이 제한되어 있다보니 집중해서 마무리해야 하는 일들의 개수를 최소한으로 줄이고 끝까지 짜내서 마무리하는 연습을 해보려 한다. 근육을 키우기 위해서 15번 덤벨을 들어 올려야 한다고 했을 때, 실제로 근육을 키우는 것은 마지막 3회인것처럼, 적당히 마무리하는 것과 끝까지 마무리하는 것에는 질적인 차이가 있음을 인식하고 끝까지 짜내서 마무리하는 습관을 좀 길러보려 한다.

 

To the broad level

시스템 프로그래밍을 들으면서 AI Lab, Backend, Frontend와 같은 기존 내 인식체계속의 개발 경계가 많이 허물어졌다. 어떠한 형태의 개발이든, 어떠한 형태의 언어든 결국 근본적으로는 커널에서 제공하는 기능들을 추상화해서 사용하는 것이고, 그 위에서 서비스를 제공한다는 것을 조금 더 저수준의 단계에서 이해할 수 있게 되었다. 부서를 나누고 그 안에서 나는 "웹 개발자고, 백엔드는 잘 몰라요"라고 당연하게 생각하고 있었는데, 이 장벽을 이제는 넘어야 하지 않을까 하는 생각이 들었다. 실제로 구글에서는 프론트엔드 업무를 하더라도 기본적인 알고리즘이나 컴퓨터 시스템에 대한 이해를 갖추고 있어야 하며 채용 분야도 "Software Engineer" 하나로 되어 있었다.

 

이러한 인식의 변화가 생기고 나서 방학 때, 장벽을 넘기 위한 프로젝트를 좀 시작해보기로 했다. 결국 토이 프로젝트를 통하는게 가장 빠르게 많은 것들을 접근할 수 있는 방법인 것 같아서 1월이 가기 전에 아래와 같은 단계들을 마무리하고 1월 회고때 공유해보려고 한다.

 

  1. Spring + Kotlin으로 Todo Service 만들기
  2. AIP를 사용해서 gRPC Service 정의하고, Stub 정의하기
  3. Stub 사용해서 Spring + Kotlin 서비스 추가하기
  4. Kubernetes Cluster에 해당 서비스 배포하기 + DB연결하기
  5.  istio연결하기 + Load Balancer 연결하기
  6. 외부에서 접근가능하도록 만들기

이제는 웹 개발자가 아니라 소프트웨어 엔지니어로 발돋움할 때가 된 것 같다.

 

 

React Again with Next 13

사내에서 React 18 / Next 13스터디를 진행하면서 Next13의 RFC를 2시간에 걸쳐 꼼꼼히 읽어보았다. 생각보다 React18에 대한 강한 Dependency를 가지고 있음을 깨닫게 되었고, 이제 웹 개발자도 서버 환경, 적어도 노드 런타임과 엣지 런타임에 대해서는 깊은 이해를 가지고 있어야 되겠구나 하는 점을 깨닫게 되었다. 전체적인 그림을 깊게 이해하기 위해서는 React의 Fiber구조와 스케줄링, 그리고 이를 활용해서 만든 단순 로딩 UI 이상의 Suspense, 그리고 이를 서버컴포넌트와 함께 잘 사용하기 위한 Next13의 큰 그림, 그리고 이러한 기능 위에서 만들어진 React Query, Relay 등의 Data Fetching 라이브러리등의 일련의 흐름을 이해해야 한다는 사실을 깨닫게 되었다.

 

결국 Back to Basics인 것 같다. 단순히 기능을 "사용한다"는 측면에서 벗어나서 "왜 이 기능을 만들게 되었으며, 어떤 문제를 어떻게 해결하는가"의 측면에서 React / Next / React-Query 각각의 코드를 살펴볼 필요성을 느꼈고, 사내 스터디를 통해서 이러한 단계들을 가볍게나마 거칠 예정이다. 이전에 Suspense 시리즈를 연재하면서 스케줄러에 대해 살펴보다가 중간고사 기간이 돌아오면서 연재가 잠시 멈췄는데 조금 시간적 여유가 있는 방학동안, 스케줄러부터 다시 연재를 시작해보려 한다.

 

Philosophy

통학 / 통근시에 경제, 시사 관련된 구독 채널들을 다 보고 나서 시간이 남으면 틈틈히 철학 관련 유튜브들을 구독하며 넓고 얕게 이런저런 철학사조들을 살펴보고 있다. 이게 생각보다 재밌어서 학점을 채우기 위한 계절학기도 서양 철학의 이해를 신청했다. (종강하고 1주일만에 바로 계절학기라니) 특히 이번달에는 쇼펜하우어 - 비트겐슈타인으로 이어지는 "언어와 표상"에 대한 생각들에 빠져 시간을 보냈다. 책이 너무 어렵고 두꺼워서 다 읽지는 못했지만 쇼펜하우어의 "의지와 표상으로서의 세계"를 조금 읽었는데, 첫장에서 나오는 "세계는 나의 표상이다"라는 표현을 보고 한참동안 이 표현이 갖는 의미에 대해 생각했던 것 같다.

 

세계가 나의 표상이라면, 내가 인식할 수 있는 만큼의 세계가 나의 표상으로서의 세계가 되며, 나의 세계의 수준은 곧 내가 사용하는 언어와 인식의 수준이 된다. 이는 필연적으로 실존하는 자체로서의 세계와 내가 지각하는 세계간의 간극을 만들며, 이를 메꿀 수 있는 수단으로서의 "언어"에 대해 고민하게 되었다. 생각보다 내가 어휘력이 높지 않다는 걸 깨달았고, 어휘력을 좀 높여야겠다는 생각이 들었다. 내가 사용하는 언어의 수준이 곧 나의 세계의 수준이며, 생각보다 나는 한국어를 잘 모르는 것 같다. 아마 사용하는 한국어의 대부분이 한자여서 그런것 같고, 틈틈히 국어사전을 보기 시작했다.

 

Reference

https://nextjs.org/blog/layouts-rfc

 

Layouts RFC

Nested routes and layouts, client and server routing, React 18 features, and designed for Server Components.

nextjs.org

 

반응형

'Developer History' 카테고리의 다른 글

개발일지 (2월 회고)  (0) 2023.03.01
개발 일지 (1월 회고)  (2) 2023.01.29
개발일지 (10월 회고)  (0) 2022.11.06
개발일지 (9월 회고)  (0) 2022.10.03
개발일지 (8월 회고)  (2) 2022.08.28