지난 6일 간의 몰입
지난 6일 간 미니 프로젝트에 몰입해서 개발했다. 마감일이 정해져있으니, 마감일에 맞춰 요구사항을 충족시키기 위해 우선 계획을 세웠다. 내 계획은 다음과 같다.
0일차 : 프로젝트 세팅(CNA, eslint, prettier, next.config 설정)
1-2일차 : 개발 (퍼블리싱, API연결)
3일차 : 리팩토링
4일차 : 문서화 및 Article 작성
5일차 : 테스트 코드 작성 및 리팩토링
지금 돌이켜보면 이대로 실천이 잘 되었고, 이 프로세스가 딱 적당하다고 생각한다.
몰입하여 개발을 하며 느낀 점들이 많다.
6일간 몰입하며 개발하며 느낀 점 3가지
-
나는 역시 개발을 좋아한다.
5일간 사람을 단 한명도 만나지 않았다. 집-할리스-집-헬스장-할리스, 놀랍게도 정말로 이 과정을 매일 반복했다. 그런데 이 과정에서 외로움이나, 지루함, 삶의 무료함을 전혀 느끼지 못했다. 개발에 몰입하는 순간들이 즐거웠고, 이동하거나 식사하는 시간에도 ‘다음에는 어떤 개발을 할까?하는 생각에 설레었다.
기능 개발을 더 진행하고 싶고, 팀원이랑도 협업하고, 소통하며 개발을 하고 싶지만, 프로젝트 특성상 그러지 못해서 아쉬웠다. 이대로 프로젝트가 버려지기는 사실 너무나 아쉽다.
향후 상황에 따라 프로젝트를 계속 진행할 지 결정될 듯하다. 하지만, 이번에 몰입한 경험 자체로 매우 소중했다. 특히 내가 개발에 대해 재밌어 하고, 흥미를 느낀다는 점이다. 많은 것을 느꼈고, 좋은 경험이었다. 그거면 된거다.
-
개발은 코드 짜는 것이 다가 아니다.
개발은 사실상 이틀에 끝났다. 그 중 하루는 코드를 개선하고, 뜯어 고치는 작업이었다. 왜 선배 개발자들이 ‘개발자는 개발만 잘하면 안된다’고 했는지 알겠더라. 개발보다 중요한 것들이 많기 때문이다. 개발은 쉽다. 하지만, 이 개발을 좋은 코드로 작성하고, 디벨롭하고, 성능 개선하고, 문서화하고, 테스트하고.. 더 중요한 과정이 많다.
코드를 단순히 작성하는 것이 아니라, 깊이 있게 고민을 하며 개발을 해야겠다는 것을 느꼈다. 사실 개발은, 막말로 공식문서의 코드를 복사-붙여넣기 하면 어떤 개발도 가능하다. 그런데 이 코드를 더 유지보수성, 재사용성, 가독성을 고려하며 작성할 수 있는 능력이 중요한 차이를 만든다.
이번 미니 프로젝트를 진행하며 불편함을 해결하기 위해
SearchParams클래스와useSearchParams커스텀 훅을 개발하여 생산성이 크게 향상되었음을 경험했다. 이러한 도구들을 통해 개발 과정이 더욱 효율적으로 변화했고, 만약 프로젝트 규모가 더 컸더라면 이 효과를 더 뚜렷하게 느낄 수 있었을 것이다.이 경험을 바탕으로, 앞으로는 단순히 코드를 작성하는 것을 넘어서 “어떻게 하면 효율적으로 코드를 짤 수 있을까?”라는 질문을 끊임없이 스스로에게 던지며 개발하는 개발자가 되어야겠다고 느꼈다.
-
어떠한 개발도 가능하다
Jest는 전에 잠깐 사용해보았고, cypress는 처음 사용해보았다. Jest는 약 3-4시간, cypress는 3시간 만에 세팅과 테스트 코드를 작성완료했다. 처음 써보는데도 공식문서가 너무 잘나와있어서 일까 정말 빠르게 개발해냈다. 처음에 react-query, react-hook-form 등의 라이브러리를 처음 사용했을 때와 다르다. 어느 정도 프로세스를 아니 빠르게 적용하고, 사용할 수 있다.
앞으로 Three.js, WebRT 등 다양한 기술들도 사용해보고 싶다는 생각이 강력하게 들었다. 다음 번에 프로젝트를 하게 된다면, 이러한 기술을 사용할 수 있는 프로젝트를 꼭 하고 싶다. 그 전까지는 우선, 지금 하고 있는 프로젝트 디벨롭을 잘하고, 기초를 탄탄히 다지자.
나는 그렇다면, 어떤 개발을 할 때 흥미를 느끼고 재미를 느낄까?
개발을 하며 흥미를 느끼는 타이밍
-
에러를 해결했을 때
에러를 해결했을 때만큼 짜릿한 순간이 없다. 그 순간, ‘아싸’가 마음 속에서 자연스레 외쳐진다.
요즘은, 이러한 에러 해결한 경험을 잊지 않고, 원인을 파악하고 깊이 있게 탐구하기 위해 개발 wiki에 꾸준히 기록 중이다.
-
새로운 기술을 도입했을 때
이 때는 마치 새 상품을 사는 기분이다. 새 상품을 사면 설레듯이, 새로운 기술을 도입했을 때 나는 설렌다. ‘이 기술은 어느 기능이 더 있을까?’, ‘이 기술을 어떻게 더 유용하게 사용할 수 있을까?’, ‘이 기술을 어떻게 구현을 했을까?’ 다양한 궁금증들이 생긴다.
-
원하는 대로 구현해냈을 때
디자인 대로, 요구사항 대로, 생각한 대로 구현이 되었을 때이다.
디자인 대로 구현이 되면 디자이너에게 자랑이 막 하고 싶어진다. 요구사항 대로 구현을 했을 때면 기획자에게 자랑이 하고 싶어지고, 생각한 대로 구현이 되면 나 스스로가 자랑스럽다. 이것이 인간의 본성인 ‘인정 욕구’가 아닐까. 자랑을 하고, 칭찬을 받았을 때만큼 기분 좋을 때가 또 없다.
-
커스텀 훅/유틸 함수를 만들어 개발 생산성이 높아졌을 때
부채를 쓰다가 선풍기를 썼을 때의 기분이랄까. 매 번 내가 직접 작성을 해줘야 했는데 이러한 공통 로직을 커스텀 훅이나 유틸 함수로 빼고, 이를 가져다가 사용할 때 기분이 짜릿하다. 내 손도 편해지고 머리도 편해진다. 그리고 동료에게 칭찬도 받을 수 있다.
맞다. 이런 순간들에 나는 개발에 흥미를 느꼈다. 그래서 나는 개발이 좋았던 것이고, 의지를 잃지 않고 지난 2년간 개발을 할 수 있었던 것이다.
이번 ‘몰입하는 개발’을 통해 이러한 많은 것을 느꼈다. 앞으로도 ‘몰입하는 개발’을 지향하는 개발자가 되도록 해야겠다.