본문 바로가기

[회고] 2021년 하반기 - 돌에 글을 새기면 백 년을 간다

 

 

 

들어가며 

2021년 하반기는 '부족함', '어리석음'. 이 두 단어로 정리할 수 있을 것 같습니다. 당신의 정년을 앞두고, 이제야 당신의 보이지 않던 주름이 보이기 시작했습니다. 아직도 공부를 하고 있는 제 모습을 생각하면 빠르게 취업을 했어야 했는데, 후회가 들기도 합니다. 때로는 당신의 젊음을 갉아먹으면서 성장하고 있는 것은 아닌가 생각이 들기도 했습니다. 이제야 시행착오가 많았던 제 삶이 부끄럽다는 생각했습니다. 더 늦기 전에 치열하게 노력해서 당신에게 보답할 수 있는 사람이 되고 싶습니다. 이 글이부끄럽지 않은 자식이 되기 위해 치열하게 노력했구나 알 수 있게 과정이 보이는 참회록이 되길 바랍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

퇴사를 하며

2021년 2월, 포켓유니브의 백엔드 개발자가 됐습니다. 팀에 합류하기 전, "지금은 제가 실력이 부족하더라도, 미친 듯이 공부하고 성장해서 팀에 도움이 될 수 있는 사람이 되겠습니다."라고 이야기했는데, 6개월이 지나고, 과연 나는 내가 한 말을 지킨 사람이 됐을까 돌아봤습니다. 이 과정에서 포켓유니브의 백엔드 개발자로서 어떤 노력을 했고, 어떤 부족함을 느꼈는지, 그리고 이 과정에서 어떻게 팀에 도움이 됐는지 정리해봐야겠다고 생각했습니다.

 

홀로 서버 개발을 하면서, 나는 일을 할 때 어떤 문제를 해결하고 싶은가 생각하며 일하고 싶었습니다. 이 글을 통해 조금이나마 프로젝트를 할 때 했던 생각을 공유하고 싶었습니다. 

 

 

 

커뮤니티 서비스 개편

먼저 커뮤니티 서비스 개편의 경험이 기억에 남습니다. 제가 팀에 합류했을 때, 서비스의 UI&UX 측면에서 고쳐야 할 것이 보였습니다. 그중에서도 커뮤니티 게시글을 보기 위해서는 하단 네비게이션 탭 바의 커뮤니티 탭을 누르고, 특정 게시판에 입장해서 특정 글을 선택해야만 했습니다. 게시글을 보려면 세 단계를 거쳐야 하는 UI&UX 접근성에 문제가 있었습니다. 만약 이 문제를 해결한다면 DAU, MAU 등의 지표 개선이 이뤄질 수 있지 않을까 생각했습니다. 이 문제를 해결하기 위해 하단 네비게이션 탭 바에서 커뮤니티 탭을 눌렀을 때 특정 게시물의 정보가 바로 노출되게끔 수정했습니다. 그리고 이 기능이 제대로 동작할 수 있도록 커뮤니티, 댓글, 좋아요 CRUD API를 개발했습니다. 서비스 개선을 통해 앱 회원수를 3000명에서 5000명으로 증가시킬 수 있었습니다. 직접 만든 기능이 지표 개선에 도움이 되는 것을 보고서, 백엔드 개발자 또한 다른 직군과 똑같이 비즈니스 성장에 도움이 될 수 있는 사람이라는 것을 깨달았습니다. 그래서 앞으로 기능을 만들 때 비즈니스 성장에 도움이 될 수 있으려면 어떻게 일해야 할까 고민해야겠다고 생각했습니다. 이 경험을 통해 백엔드 개발자 또한 비즈니스 드리븐 하게 일하는 것이 필요하다는 것을 배웠습니다. 

 

 

푸시 및 내부 알림 서비스 개발

다음은 푸시 및 내부 알림에 대한 서비스 개발을 했던 경험이 기억에 남습니다. 커뮤니티 기능 개선을 통해 전반적인 서비스 개선을 할 수 있었고, 이를 통해 회원수는 증가했습니다. 하지만 재방문율 지표가 떨어지는 문제를 보면서 어떻게 하면 서비스 재방문율을 올릴 수 있을까 고민했습니다. 재방문율을 올릴 수 있는 방안으로 알림 서비스를 개발했습니다.

 

Node Schedule 모듈을 활용해서 특정 시간에 고객들에게 푸시 알림이 갈 수 있도록 구현했습니다. 하지만 EC2 서버가 갑작스럽게 중단되어 버리면, Node Schedule을 활용한 Cron job이 제대로 동작하지 않는 문제가 있었고, 심지어 여러 종류의 푸시 알림을 보내야 하는 경우에도 푸시 알림을 관리하기 어렵다는 문제가 있었습니다.

 

 

 

[협업] 협업을 위한 푸시알림 설정하기 (feat node.js)

들어가며 스타트업에서 서버 개발자로 일하면서, 푸시 알림에 대해 처음 개발을 시작했습니다. 푸시 알림을 어떻게 보내야 하는지도 전혀 몰랐기에, 푸시 알림을 보내는 법, 푸시 알림을 반복해

overcome-the-limits.tistory.com

 

 

이 문제를 해결하기 위해 Agenda 라이브러리를 활용해서 푸시 알림 정보를 DB에 저장시켜서, 만약 서버가 종료되더라도 다음 푸시 알림이 제대로 갈 수 있게 설정했습니다. 하지만 부족한 점들이 많았습니다. 푸시 알림을 보낼 때 2초 이상의 시간이 걸렸는데, 만약 앱 회원수가 지금보다 두 배정도 많았다면, 푸시 알림 기능이 서버에 무리를 줄 수 있겠다고 생각했습니다. 이 문제를 파악했지만, 계약 만료로 문제를 끝까지 해결하지 못한 부분이 아쉽습니다. 하지만 이 경험을 통해 성능 테스트의 중요성을 파악했습니다. 만약 다음에도 푸시 알림 서비스를 개발한다면, 성능 테스트를 통해 API 응답 시간을 줄일 수 있는 방법을 고안해보고 싶습니다.

 

 

일을 하며 부족했던 점

일을 하면서 전체적으로 팀에 도움이 될 수 있는 사람이 되어서 다행스러웠지만 한편으로는 부족한 점도 많았습니다. 먼저 홀로 서버 개발을 하면서 시장 검증을 위해 빠르게 기능 개발을 해야 했기에, 좋지 못한 코드를 양산하기도 했습니다. 이 때문에 QA 중에 문제가 생기거나, 서비스 배포를 했는데 문제가 생기면 수정하거나 디버깅할 때도 시간이 상당히 걸렸던 문제가 있었습니다.

 

두 번째는 기능 개발을 하고, 테스트 코드를 작성하지 않아서, 먼저 서버 배포를 했는데, 그때 되어서야 큰 문제를 발견하는 경우도 있었습니다. 만약 테스트 코드를 작성했다면, 그리고 타입 스크립트를 활용해서 컴파일을 진행했다면, 적어도 서버 배포 전에 문제를 발견할 수 있지 않았을까 생각했습니다.

 

 

일을 하며 배운 점

앞으로 어떻게 하면 코드를 잘 작성할 수 있을까, 그리고 테스트 코드는 어떻게 작성해야 할까에 대해 공부해야겠다고 생각했습니다. 그리고 백엔드 개발자로서 비즈니스를 성장시킬 수 있는 방법은 무엇일까 나만의 관점에서 생각해보고 싶다고 생각했습니다. 결국은 백엔드 개발자도 다른 직군처럼 비즈니스 친화적인, 비즈니스 드리븐 한 사람이 되어야 한다는 것을 배웠습니다. 비전공자로서, 전공자 개발자보다 부족함이 많을 수 있습니다. 하지만 당장은 실력적인 부분에서 부족할 수 있어도, 실력을 채워나간다면, 결국은 개발자로서 어떤 차별성이 있는가, 비즈니스 구성원으로서 비즈니스를 어떻게 성장시킬 수 있는가에 대한 고민을 깊게 할 수 있고, 여기서 나만의 의견을 낼 수 있는 사람이 언젠가는 더 가치 있는 사람이 될 수 있지 않을까 생각합니다. 기획자를 한 때 꿈꿨지만 지금은 개발자를 꿈꾸는 입장에서, 기획과 개발을 함께 고려할 수 있는, 비즈니스 드리븐 한 사고를 할 수 있는 개발자로서 성장하고 싶다고 생각했습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SSG.COM 지원 포기

8월 말, 포켓유니브의 개발자로서 일을 마무리했습니다. 그리고 9월이 시작되면서, 아버지의 정년퇴직을 앞두고, 많은 고민이 들었습니다. 2019년, 신세계 지식향연 청년 영웅으로 활동하면서 신세계 그룹에 지원하면 혜택이 있었는데, 이 혜택을 사용해서 개발자가 아닌 다른 직군으로라도 빠르게 취업해야 하는 것은 아닐까 생각했습니다. 그렇다고 이 혜택을 사용해서 지원하더라도 붙는다는 보장은 없지만, 그럼에도 혜택을 활용해서 취업을 향해 나아가야 하는 것은 아닐까 상당히 불안하기만 했습니다. 

 

지원에 대해 고민하면서 지나온 삶에 대한 시간들이 스쳐 지나갔습니다. 개발자가 되기 위해 도전하고, 노력했던 시간들. 그 과정에서 내가 왜 개발자가 되고 싶었는지를 떠올리며, 이제야 돌고 돌아 나의 길을 찾았는데, 이대로 포기할 수 없다는 생각이 들었습니다. 부모님께 지금의 상황에 대해 말씀드렸고, 부모님은 저를 응원해주셨습니다.  

 

사랑하는 사람들을 지킬 수 있는 사람이 되기 위해 더 노력하고 싶다고 생각했습니다. 이제야 씨앗 하나 심고 토양을 비옥하게 만드는 과정을 거치고 있는데, 벌써 과일이 나오길 바라다보니 조급함을 가진 게 아닐까 생각했습니다. 이제는 이런 혜택을 포기하고, 나만의 길을 걸어야겠다고 생각했습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

기초를 공부하자

9월부터는 지금까지 개발 공부를 하면서 부족하다고 느꼈던 점들을 정리하고 그 부분들을 공부하는 시간을 가져야겠다고 생각했습니다. 앞으로 자바스크립트를 활용해서 서버를 개발하는 개발자라면, 다양한 기술들을 익히는 것도 중요하지만 자바스크립트에 대한 기본부터 제대로 알고 넘어가야겠다고 생각했습니다. 지금까지 개발하면서, 자바스크립트를 제대로 공부해본 적이 없었습니다. 자바스크립트의 특징은 무엇이고, 데이터 할당은 어떻게 되는지, 자바스크립트를 프로토타입 기반의 언어라고 하는데, 프로토타입은 무엇인지 등. 제대로 알고 있는 부분이 없다고 생각했습니다. 더 늦기 전에, 기초에 대해 정리하는 시간을 반드시 가져야겠다고 생각했고, 공부를 시작했습니다.

 

 

 

 

[자바스크립트] 데이터 타입 종류와 배경지식 (feat 코어 자바스크립트)

들어가며 많은 기업들이 타입스크립트와 nest.js를 활용해서 서버 개발을 하곤 합니다. 취업을 하려면, 타입스크립트와 nest.js를 공부해서 실무를 익히는 것이 중요할 것입니다. 하지만 아직 자바

overcome-the-limits.tistory.com

 

 

 

이를 위해 '코어 자바스크립트' 책을 보면서 공부한 내용을 블로그에 정리했습니다. 정리하는 과정에서, 자바스크립트에 대해 잘 알고 있다고 생각했는데, 단 하나도 제대로 알고 있는 것이 없었다는 깨달음을 알 수 있었습니다. '코어 자바스크립트' 책을 정리하면서 이제야 코드가 어떻게 동작하는지 원리에 대해 조금씩 이해할 수 있었습니다. 빠르게 바뀌는 기술변화에 적응하고, 러닝 커브를 줄이기 위해 새로운 기술들을 공부하는 것도 물론 중요하지만, 기본이 없는 상태에서 공부했다가는 밑 빠진 독에 물 붓기 밖에 되지 않겠다는 생각으로, 시간을 내서 공부했습니다. 

 

공부를 통해 이제는 자바스크립트에 대해 조금은 이해하고 있다고 생각할 수 있었습니다. 이 과정에서, '기본'에 대해 공부하는 시간을 꾸준히 가져야겠구나 생각할 수 있었습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

원티드 프리온보딩 백엔드 코스

기초를 공부하면서, 홀로 공부하는 것도 좋지만, 많은 사람과 함께 공부하는 시간을 가져보고 싶다고 생각했습니다. 그 과정에서 원티드 프리온보딩 백엔드 코스를 알 수 있었습니다. 원티드 프리온보딩 백엔드 코스는 취업을 준비하는 사람과 기업 간의 정보 비대칭을 해소하며 Fit이 맞는 직장과 지원자를 연결하기 위한 채용연계 실전 코스입니다. 이 과정에서 8개의 기업과제를 수행하며, 기업과제가 끝나면 블로그에 회고 글을 남기며 프로젝트를 통해 배운 점, 그리고 프로젝트를 진행하면서 부족했던 점은 무엇인지 작성했습니다. 

 

 

 

[회고] 원티드 프리온보딩 백엔드 코스 - 프롤로그

들어가며 우리 인생에는 각자가 진실되게 원하는 무언가가 있다고 믿습니다. 그리고 나에게도 분명, 나만의 다른 길이 있다고도 믿습니다. 스무 살부터 기획이 재미있어서 기획자가 되기 위해

overcome-the-limits.tistory.com

 

어나더글라스

6인의 클라스가 남다른 안경잡이 개발자들의 모임. 어나더글라스 has 7 repositories available. Follow their code on GitHub.

github.com

 

 

 

약 3일의 시간 동안 과제를 할 시간이 주어지는데, 팀원들과 함께 빠르게 기업과제를 수행하는 과정에서, 새로운 기술을 빠르게 적용시킬 수 있는 연습을 할 수 있었습니다. 그리고 이 과정에서 저의 부족한 점을 많이 깨달을 수 있었습니다. 물론 빠르게 기술을 적용해야 하다 보니, 왜 이 기술을 사용해야 하는지, 이 기술이 어떤 장단점이 있는지 등에 대해 고민할 시간이 없었습니다. 그 부분이 상당히 아쉬웠는데, 코스가 끝난 지금 시점에서부터 팀원들과 함께 한 프로젝트를, 홀로 리펙터링하면서 이 부분들을 같이 정리해야겠다고 생각했습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

기본으로 돌아와서

포켓유니브 개발자로 일하면서, 원티드 프리온보딩 백엔드 코스에 참여하면서 많은 부족한 점을 느꼈지만, 이 부족함을 해결하기 전에 먼저 '기본'에 대해 공부부터 해야겠다고 생각했습니다. 생각해보면 내가 왜 Node.js를 바탕으로 백엔드 개발을 시작했는지, Node.js의 Non-blocking I/O는 무엇인지, 이벤트 루프는 무엇인지, 멀티 스레드와 싱글 스레드의 차이는 무엇인지, 왜 회원가입 기능을 JWT로 개발했는지, 세션과 JWT의 차이는 무엇인지, 트랜잭션이란 무엇인지 알지 못하고 개발을 하고 있었습니다.

 

저는 새로운 개발 기술을 잘 알지 못합니다. 하지만 새로운 개발 기술을 모른다고 부끄러움을 느끼지 않습니다. 하지만 기본을 모른다고 생각하니 무척이나 부끄러웠습니다. 항상 기본이 튼튼한 개발자가 되고 싶다고 생각했는데, 기본도 모르고 개발하고 있다는 점이 한심하기도 했습니다. 부디 기본이 튼튼한 개발자가 됐으면 좋겠습니다. 기본이 튼튼해야 업무를 진행할 때도 작은 실수를 하지 않을 수 있다고 생각합니다. 기본이 없어서, 실수를 하고, 그 실수가 비즈니스에 영향을 준다면, 이보다 부끄러울 수 없다고 생각합니다. 기본을 먼저 쌓은 후에 포켓유니브, 원티드에서 부족하다고 느꼈던 부분들을 채워나가도 괜찮지 않을까 생각했습니다. 

 

이제야 기본에 대한 중요성을 깨닫습니다. 아버지. 부족함을 채워갈 수 있는 개발자로 성장하겠습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

마치며

백사장에 글을 쓰면 파도 한 번 치면 끝이지만, 돌에 글을 새기면 백 년을 간다는 말처럼, 공부한 내용을 잊지 않고 기억하기 위해 블로그에 개발자가 되기 위해 노력하는 과정을 정리하고, 공부한 내용을 꾸준히 작성하고 있습니다. 기본에 대해 공부한 내용을 꾸준히 정리하면서 개발자로서의 실력을 꾸준히 키울 수 있는 사람이 되고 싶습니다. 현재 상황이 어렵고 힘들수록, 기본에 충실할 수 있는 개발자가 되고자 노력하겠습니다. 

 

무던히 포기하지 않고 견디고 견뎠던 그 시간들이 변함없는 단 하나의 해답임을 믿습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고

 

삶에서 잘못 들어선 길이란 없으니 - 박노해의 걷는 독서

길을 잘못 들어섰다고 슬퍼하지 마라, 포기하지 마라 삶에서 잘못 들어선 길이란 없으니 - 박노해 '잘못 들어선 길은 없다' 사진 India, 2013. 길을 잘못 들어섰다고 슬퍼하지 마라 포기하지 마라 삶

www.nanum.com

 

꿈을 품은 사람아 - 박노해의 숨고르기

꿈을 품은 사람아 / 시린 겨울 대지를 바라보자 // 꽃들은 훗날을 위해 언 땅속에 / 자신의 씨앗을 미리 묻어 놓았다 // 오늘 피어날 자신을 버리듯이 / 겨울 대지에 미리 묻어 놓았다 // 꿈은 봄에

www.nanum.com