위코드에 등록한 이유중 하나 였던 기업협업. 그만큼 많은 기대를 품고 시작했는데, 결론부터 말하자면 기대가 헛되지 않았을 만큼 정말 값진 경험이었다.
나는 한 부동산 스타트업에 당첨(?) 되었고, 그 곳에서 외주로 가져온 당구장 앱을 만들었다. 부동산 회사에서 당구장 앱이라... 사실 상상도 못한 전개였지만, React Native, typescript 등등 배워보고 싶었던 stack을 맘껏 써볼 수 있다는 점, 우리가 만든 앱이 실제로 배포된다는 점 이 좋은 동기부여가 되어서 한달 동안 재밌게 근무했던 것 같다.
댓글란 구현 (common component)
댓글 작성, 수정, 삭제 기능
댓글 0개일 경우 별도 페이지 노출되도록 구현
'Like' 버튼 터치 시 유저 로그인 여부 확인
댓글 작성자일 경우 수정/삭제 버튼 노출
Slice를 이용해 한 페이지 당 5개의 댓글 노출되도록 Pagination 로직 구현
인풋창 터치 시 확장되며 유저 로그인 여부에 따라 로그인 알럿 띄우기
로그인 유저 → 유저Id 및 등록버튼 노출
비로그인 유저 → 로그인 페이지로 이동
useEffect(() => {
getCommentData(); //Comment data를 불러오는 함수
}, [offset, commentData]);
//offset : 페이지 별 불러오는 댓글의 시작점 (ex. 1p - 0, 2p - 5)
//commentData : 서버로부터 받아오는 댓글 데이터
가장 기억에 남는 코드치고는 다소 짧아서 민망하지만 ㅎㅎ; 이번 인턴쉽에서 hook lifecycle 만큼은 꽤 제대로 공부한 것 같다.
당시의 문제상황은
1) 페이지를 바꾸면 한박자씩 늦게 댓글이 불러와짐
2) 댓글을 삭제, 추가 하는 경우 업데이트 된 댓글이 불러와지지 않음
대략 이 2가지 였는데, useEffect
가 렌더링 이후 실행된다는 점과 의존배열
의 역할을 간과했기 때문이었다.
의존배열에 offset
과 commentData
, 이 2가지 state
를 넣자 정확히 원하는 시점에 댓글 데이터를 불러올 수 있었다.
이전 프로젝트 동안은 '코드를 더 예쁘게 치는 법', '팀원들과 잘 지내는 법'을 고민했다면, 이번 기업협업 동안에는 '일을 잘하는 법'을 고민했던 것 같다.
그도 그럴것이, 인턴 기간동안 맡은 과제는 명확한 결과물을 요구받았기 때문이다. 프로젝트였다면 적당히 넘길수도 있는 사소한 버그들도, 실무에서는 ios 시뮬레이터 - android 시뮬레이터 - 실기기 이렇게 3번의 테스트를 통과해야만 merge될 수 있었다.
인턴쉽 초기에는 얼른 한 task를 끝내고 다음 task로 넘어가고 싶은 마음이 컸다. 그래서 셀프 버그 테스트는 휘뚜루마뚜루 끝내버리고, 회의시간에 모든 과제를 다 수행했다고 자신감 넘치는 얼굴로 말한 적이 있다.
그러나 돌아온 결과물은 당연히ㅎㅎ 수정요청 이었고, 그 버그를 해결하는 데에만 정확히 3일이 걸렸던 것 같다.
이러한 일을 겪고나니, 개발자로써 일을 잘한다는 것은 단순히 코드만 잘짜는 것을 의미하는 건 아닌 것이 아니라, 나의 업무가 어느 부분까지 진행되고 있는지 명료하게 설명하고, 어떤 blocking 요인이 있는지 솔직하게 말하는 커뮤니케이션 태도가 필요하다는 것을 느꼈다.
--
인턴쉽 기간동안 기술적 성장도 많이 했다고 느끼지만, 개발자가 지녀야할 태도의 방향성을 스스로 교정할 수 있어서 더욱 좋았다. 또한 정말 운이 좋게도 입사 제의를 받게되어 개인적인 결과로 봐도 만족스러운 한달이었다. 비록 개인적인 사정이 있어 입사를 하진 않았지만, 한달 또 하라고 해도 감사한 마음으로 시작할 수 있을만큼 좋은 사수분들, 좋은 동기들과 함께해서 즐거웠다.