이번주는 온전히 내 손으로 직접 소프트웨어를 만들며 현재 나의 실력을 점검해보는 주간이었다. 어떤 프로그램을 만들지 고민하다 평소에 잘 사용하던 [북적북적]이라는 독서 기록 앱을 참고해서 클론하기로 정하고 프로젝트를 진행했다. [북적북적]은 귀여운 북적이와 책 읽는 습관을 만들 수 있는 앱이다. 앱의 기능을 참고해서 1주 안에 완성 가능한 규모로 프로젝트 설계를 했다.
생성되어있는 내 repository를 fork하고 프로젝트 세팅을 시작했다. 프로젝트 세팅부터 PR을 main에 merge하는 것까지 스스로 한다는 점이 이전과 달랐다. 보통 작업 단위 별로 branch를 생성한다고 알려주셨는데 이 부분이 익숙하지 않았다. 하지만 어려울 건 없었다. 작업 단위 별로 branch를 생성하고 해당 작업이 모두 끝나면 [add -> commit -> push -> merge -> fetch -> 다음작업을 위한 branch 생성] 순서대로 해주면 된다. 과제 제출할 때랑 크게 달라진 루틴도 아닌데 git에 push하고 merge한 후 fetch해오는 과정에서 자꾸 문제가 생겼다. branch를 바꿀 때마다 내가 작업하던 코드가 보여지지 않았는데 지금 와서 생각해보면 아마 upstream main에서 fetch 해와야 하는데 origin main에서 fetch 해오는 실수를 했던 것 같다. 그래서 내가 upstream main에 merge한 코드가 보이지 않았을 것이다. 차분히 생각해보면 충분히 해결가능한 문제들이었을텐데 git이 내 마음대로 되지 않으면 너무 긴장하게 된다. 과정을 진행하면서 git 사용법을 점점 익혀가고 있으니 git을 너무 두려워말고 사용해보면 좋을 것 같다.
월요일에 git 때문에 시간을 많이 날린터라 화요일 아침까지 불안한 마음이 가득 차 있었다. 코드는 안돌아가고.. 벌써 화요일이고.. 프로젝트 진행에 있어서 큰 위기였다고 생각한다. 그래도 다행인 점은 화요일 아침 이후로 그런 마음들을 다 털어내고 프로젝트 구현에 집중할 수 있었다는 점이다. git 관련 문제도 더 이상 생기지 않았고 복잡했던 마음도 말끔히 정리됐다. 덕분에 화요일 저녁쯤에는 내가 계획했던 기능들을 모두 구현할 수 있었다.
내가 계획했던 기능 외에 도서 검색 기능, 로그인 / 회원가입 기능 등을 추가로 구현해냈다. 리드미 파일과 시연 영상도 정리해서 기록했다. 계속 프로젝트 구현을 진행하긴 했지만 아쉬웠던 점은 적극적으로 질문하지 않았다는 점이다. 계속 질문을 회피하고 혼자 덮고 넘어갔던 것 같다. 논리적으로 질문하면 생각하는 힘도 길러지고 내 상황을 판단하는 데도 효과적일 것 같아 다음주에는 조금 더 적극적으로 질문해보려 한다.
내가 만든 앱에 대해 간단히 소개하고 시연하는 시간을 가졌다. 코드도 확인해주셨는데 각각의 객체가 담당하는 기능이 부족하다는 피드백을 주셨다. 객체가 스스로 기능할 수 있도록 코드를 짰어야 하는데 보여지는 곳에서 모든 걸 처리하고 있었다. 여전히 UI와 핵심 로직의 분리가 잘 되지 않는다. 단숨에 되지는 않더라도 계속해서 인지하고 조금이라도 나은 코드를 짜야겠다.