데브코스를 시작한지, 4달이 지나간다.
이번 한달은 팀프로젝트로 꽉채웠다.
지난달 mil 말미서 맡은일에 책임지자는 다짐을 하며끝냈다. 결론 부터 말하자면, 어떻게든 책임지려했고 다짐을 지켰다.
물론 책임을 지키며, 또다른 책임이 생겨났고, 그 책임은 잘 지키못했다.
학교 동아리서 협업을 해봤다. 보안 관련 문제를 내고, 대회를 개최하는 프로젝트였는데, 이때는 내가 낸 문제가 아닌것 즉 내 코드가 아닌것은 관심을 두지않았도 되었다.
그리고, git 도 쓸줄 몰라서 git 을 쓸줄 아는 분에게, 내 코드를 전달하여 배포하는 식이었다. 이런식으로 협업만을 해온 나로써는 이번 프로젝트는 정말 두려웠다.
덕분에 깃헙에 대해 공부도 하고, 리액트 프로젝트도 미리 해보면서 준비 했다.
준비하면서 한가지 놓친게 있는데, 다른사람들이 코드를 쉽게 수정할수있도록, 가독성 높은 코드를 짜는것이었다. 이 부분을 놓친채 프로젝트를 하며 작동만 되는 코드를 생산해냈다. 물론 아예 신경을 안쓴것은 아니지만, 다른 분들과 비교했을때 신경쓴거냐고 물어본다면 자신있게 대답 못할 수준이었다.
어느정도 프로젝트가 진행되고, 코드를 다시 봤을때, 내가 맡은 부분은 모두 코드의 가독성이 떨어져 읽기가 쉽지않았다.
물론 이번 프로젝트는 각 팀원의 담당 코드가 나눠져 있긴 했다. 덕분에 다른 분들의 코드를 고칠일이 잘없었지만, 공용 코드나, axios, redux 같은 인터페이스 역할을 하는 코드를 맡아구현했어서, 그코드는 나만 아는 상황이 되어버렸다.
redux 도 처음에 각자 필요한 것을 구현하자 했지만, 기본 redux 코드를 구현해놓은 내 가독성 떨어지는 코드를 참조하기가 어려워 팀원들이 구현하기 어려워졌고, 내가 도맡아 하게되었다.
팀원분들 뿐만 아니라 나 자신에게도 영향을 미쳤다. follow 버튼 로직을 먼저 구현해놓은 상태였고, 디바운싱을 적용하려고 했다. follow 버튼은 일주일 전에 짠 코드였지만, 엉망이었고, 간단한 디바운싱 적용하는데 3번에 걸친 풀리퀘를 수정해 올려 겨우 추가될수있었다.
이렇게 가독성 좋은 코드에 대한 필요를 느끼면서, 프로젝트가 끝난 직후부터 현재 까지, 내가 쓴 코드들을 리팩토링 해보고있다.
모르는 사람 혹은 내가 나중에 읽는다고 생각했을때, 해당 코드가 이해하기 쉬운가를 기준으로 리팩토링을 진행중인데, 확실히 가독성이 좋아진듯하다.
프로그래머의 뇌에서 나온 내용처럼, ltm, stm 의 원리를 잘 파악해서, 짜려고도 했다.
ltm 에 있는 정신모델을 사용하기위해, 구체적은 변수명을 사용했다.
stm 용량을 고려하여 코드를 응집도 있게 짜게되었다.
추상화는 충분히 해당 코드가 어떤일을 하는지 알기위한 정보를 제공하며 진행하였다.
클린 코드라는 완벽한 코드를 만들기 어렵다는것, 그리고 그럴수밖에 없다는것도 알았다. 모든 코드가 완벽히 아름다울수 없고, 그런 코드를 짜는데에도 trade off 가 있다는것도 알게되었다.
결국 코드를 짜는데에도, 완벽은 없다는것을 느끼게되었다. 내가 해야할것은 지금 상황(성능, 최적화, 팀 컨벤션 등) 에서 최적의 코드를 짜는것이 중요하다는것을 깨달았다.
이글의 처음에 내가 책임을 지게되면서 또다른 책임을 지게 되었다고했다. 이게 이번 글에 적은 거의 대부분의 문제의 원인이 된것같다.
여기서 말하는 책임은 그냥 책임이 아니라, 내 능력으로 할수없는 부분을 책임지려 했다는것이 문제였다.
내가 책임을 다하면서, 스스로 잘하고있구나를 느꼈다. 하지만, 내가 얼마나 책임 질수있는지에 대한 기준이 희미해지면서, 어떤것이든 내가 하려고했다. 과제가 이미 혼자서 할수있는 능력의 수준을 넘어섰는데 그부분까지 책임지려고했다.
결국 책임을 질수록 더 큰책임이 내게 돌아왔다.
내가 얼마나 할수있는지 잘 파악하는게 첫번째여야 할것같다. 그후 책임을 다해야겠다 선언해도 늦지않는다. 혹은 일부러 버퍼를 주는것도 방법이겠다.