2주나 지나버렸다니.. 요즘 아주 바쁘다 바빠~~ 내가 제일 좋아하는 소스코드 분석도 맘껏 하고, 이런저런 일들도 생기고말이다~~ 요즘에는 열심히 소스코드를 보다보니 진짜 하루가 눈깜빡할사에 지나간다.. 분명 똑같이 24시간인데 하루 시간이 너무 짧다.. 소스 코드를 분석하는 것이 지루해보이고, 재미없지 않냐는 주변의 이야기도 많이 듣는데, 나는 이상하게 소스코드 분석하는게 너무 재밌다.(물론 내가 개발하는 일도 너무 재밌고 보람찬일이긴 하지만)
소스코드 분석, 기능개발 ?
소스 코드 분석만 한지 1주가 지났을 무렵, 주변에서 그런이야기들 들었다. "이제 슬슬 Leo(나) 도 개발좀 해야되지 않겠냐고, 언제까지 코드만 볼거냐?" 라는 말을 들었다. 사실 나는 과거에도 그리고 지금도 여전히 코드를 보는 일이 즐겁다. 왜 코드를 이렇게 작성했을까? 이름은 왜 이렇게 되어있지? 여기에 사용된 디자인 패턴은 이거같은데? 이렇게하니깐 파일 가독성이 좋네, 이건 이렇게 바꾸면 좋겠다 등등 여러 즐거운 생각들이 떠오르기 때문이다. 하지만 나도 개발자인만큼 보는것 뿐만아니라 개발하는 일 또한 너무 해보고싶다.
이런 고민을 하다보니 이전에는 하지못한 고민들을 하게되었다. 기능개발의 절차는 어떻게 되는걸까? 개발자가 기능개발을 생각해서 추가를해야하는걸까? 아니면 사용자에게 피드백을 통해 해당 기능을 추가하고 기존 기능을 수정보완해나가는 것일까? 둘 다 개발자가 해야하는 일이라고 생각이 들었는데, 그게 어렵다. 그래서 일단 내가 확실히 할 수 있는, 그리고 내게 주어진 일을 충실히 해내기로 했다.
최근에 보고 있는 책, 구글엔지니어는 이렇게 일한다. 에서는 소스코드 문서에 대한 내용이 나온다. 마침 딱 문서화를 많이 시도해보고 있는 도중에 해당 내용을 보게 되면서 소스코드 분석을 어떻게 정리를 해두어야 좋을지에 대한 고민과 시행착오로 시간을 보내고 있다.
내가 꼭 해야겠다 한 부분은 다음과 같다.
1. (클래스, 함수의)주석 작성하기
2. 해당 파일의 의존성 표현하기
파일을 보면서 내가 어려웠던 부분은 아무래도 해당 클래스와 메서드에 대한 설명이 없었던 부분이다. 처음 파일을 슥 ~ 훑어 보았을 땐, "파일구조가 비슷해서 파악하기 쉽겠다." 라고 생각했다. 하지만 이건 내 착각이였다.
파일 구조는 동일했다. 하지만 파일 구조가 복잡했다. 재사용성, 확장을 위해서는 파일 구조가 단순하지 않았다. 그래서 첫 파일을 보는데 다른 여러개의 파일을 참조해야했고, 상당한 시간이 소요되었다. 여러 참조하는 파일을 확인하는데도 시간이 걸렸지만, 무엇보다 비슷한 메서드들의 이름 때문에 더 헷갈렸다. 그래서 들은 생각이 "여기에 주석으로 설명한줄만 있으면 좋을텐데.." 하는 생각과 혹은 "파일 이름의 규칙에 대한 문서가 있으면 좋겠을거같은데?"라는 생각을 하게되었다. 그래서 나 다음에 볼... 미래의 다음 사람을 위해, 또 내가 더 잘 이해하기 위해 주석을 작성하기로 마음 먹었다. 클린코드에서 보았던 주석 부분들을 떠올리며.. 지금 보고 있는 책의 내용을 떠올리며, 주석에 대한 템플릿을 만들고.. 조금씩 나만의 스타일로 작성해 나갔다.
그런데 주석을 작성하다보니 함수에 대한 주석이 고민이다.. 생각보다 클래스 내에 메서드가 많고, 매개변수(진짜 어지럽다..)가 3개이상인 경우 등등 함수에 대한 주석이 생각보다 많이 애매하다. 이건 사수님과 이야기를 해보면서 후에 작성해야겠다.
사실 이걸 바로 프로덕션코드에 올리지 않고 내 로컬 브랜치에다가 따로 만들어서 작성하고 있는데, 이게 작성이 되어 올라갈 수 있을지 모르겠다.(프로덕션 코드에 주석이 작성되어 있는게 맞는지도 의문이다.)
수습평가 API 작성
벌써 내가 입사한지 3개월차가 되었다.(진짜 시간빠르다...) 그래서 잊고 지냈던 수습기간 3개월이 지나가며, 이 수습평가를 해야한다고 한다. 그래서 지금사수님과 함께 어떤 기능을 만들면 좋을지 고민을 했는데, 나는 도저히 추가하면 좋을 기능이 생각나질 않아, 사수님이 정해주셨다. Django를 통한 임시(?) API는 작성하여 django 부분은 평가할 자료가 충분하고, 나머지 php 부분에 대해서 평가를 위해 API를 개발하게 되었는데, 내가 개발할 API의 주제는 타임머신 이다. (타임머신이라히니 조금 오바스러운 감이 없지 않아 있다. 아니 많다.)
개발할 기능은 실제 서비스를 이용하는 고객(창고 관리자)분들의 요청사항에서 나온 부분으로, 현재 시점에 존재하는 재고만 조회 가능한 현 서비스 상태에서 특정 시점에 존재하는 재고를 확인하는 것이 요구사항이다. 요구사항을 듣고 나는 간단하게 해당 기능을 구현할 수 있을 거란 생각이 들었다. 어떤 테이블들을 참조하고, 어떤 필드값들을 확인해야할지 어느정도 그려졌기때문이다. 그런데 생각보다 내가 생각하는 데이터를 뽑아내는 쿼리를 작성하는것이 내 발목을 잡는다..
다방면으로 여러 방법들을 생각해보고 내가 생각한 방법에 대해(개발전) 사수님께 피드백도 받고있는데, 역시 데이터를 가져오는게 어렵다.
아직 기간이 많이 남았으니 좀 더 고민해보고 작성해봐야겠다.
느낀점
10월의 3,4 주차는 정말 내가 좋아하는 일만 하며 지나갔다. 결과물이 크게 남지않은것이 아쉽지만, 과거에는 하지못한 고민을 하는 내가 좋다. 그리고 내가 좋아하는 일이 무엇인지 내 자신에 대해서도 알아갈 수 있는 것 같아서 행복하다. 그리고 벌써 3개월이라는 시간이 흘러, 수습 평가를 위한 API를 작성한다니, 너무 설렌다. 다른 이들에게는 아무것도 아닌 그저 일상인 개발일이 나에게는 왜이리 설레고 즐거운지 모르겠다. 지금처럼 책도 꾸준하게 읽고, 부지런히 내 자신을 개발해 나가면서 이 재밌는 일을 평생 하고 싶다.
'회고 > WIL' 카테고리의 다른 글
[ WIL ]11월 2주차 회고 (0) | 2023.11.10 |
---|---|
[ WIL ] 11월 1주차 회고 (0) | 2023.11.03 |
WIL 10-2 DB 스키마 분석, 소스코드 작성 준비, Django ORM (0) | 2022.10.09 |
WIL 10-1 리눅스 공부, CS 공부, 정보처리 기사 공부, DB 스키마 분석 (0) | 2022.10.03 |
WIL 9-4 도메인 분석과 이해 (0) | 2022.09.25 |