기업협업 회고록

BY Jung·2022년 3월 9일
0

오늘은 기업협업 기간 중 틈틈히 작성해두었지만 마무리짓지 못하여 임시 글에 오랜 기간 잠들어있던 기업협업 회고록을 마무리짓고자 합니다.

얼리슬로스란 회사를 택한 이유

기업협업을 앞두고 내가 회사를 선택하는데 적용한 기준은 이러했다.
첫째, 회사가 운영하고 있는 서비스와 관련이 있는 주제의 프로젝트일 것.
둘째, 현업에서 일하는 개발자의 삶이 어떠한지 직접 부딪혀보고 온전히 체험해볼 수 있을 것.

그리고 얼리슬로스를 택한 이유는 오직 딱 한 가지.
얼리슬로스라는 회사와 우리가 함께 하게 될 프로젝트에 대해 정성껏 작성된 소개글 때문이었다. (나중에 알게 되었지만 대표님이 직접 작성하셨다고...)
해당글은 나의 니즈에 정확히 부합했고, 무엇보다도 전문 PM분과 일해볼 수 있다는 기대감에 나는 고민없이 얼리슬로스에 지원하게 되었다.

프로젝트를 수행하며 느낀 점

기획을 완벽하게 이해하는건 생각보다 어렵다

생애 처음으로 개발자로서 프로젝트 기획서를 받아보고 이후 미팅에도 참여하면서 느낀 점은 기획을 완벽하게 이해하는 것이 생각보다 어렵다는 것이었다.
이전 위코드에서 진행했던 프로젝트에서 직접 웹사이트 기능을 정의, 기획하고 구현할 때 기획 상의 miss로 인해 시간적 여유가 있었음에도 불구하고 비회원용 장바구니를 구현하지 못한 적이 있었다.
과거의 실수에서 배운 점을 토대로 기획서를 찬찬히 뜯어보았고, 프로젝트의 기반이 되는 얼리슬로스의 서비스 또한 직접 사용해보고 의문점은 PM분과 직접 소통하며 기획을 완벽히 이해하고자 노력하였다.

하지만..
개발에 착수하게 되면서 디테일한 부분에서 1) 기획서에서 언급되지 않아 구체적인 논의가 필요했거나 2) 내가 기획서를 잘못 이해했거나 3) 둘 다 해당하는 경우가 발생하기 시작했다!
단언컨대 이번 프로젝트에서 PM분을 가장 귀찮게 한 건 나라고 자신있게 말할 수 있을 정도로, 궁금한 점이 생길 때마다 정리하여 질문하고, 컨펌받고, 때로는 협의하면서 개발의 방향성이 기획과 일치하도록 지속적으로 수정해나갔다.
그 결과 PM분한테서 프로젝트에 대한 이해도가 굉장히 높다는 긍정적인 피드백을 받는 수준까지 올라가게 되었고, 팀원들 사이에서도 각자 프로젝트에 대한 이해도가 달라 의견이 분분할 때에 PM분을 대신하여 설명하고 방향을 제시할 수 있었던 점이 고무적이었다.
이 자리를 빌어 저의 계속되는 질문공세에도 성실하고 친절하게 답변해주신 PM분께 감사를 표합니다. ( ͡• ͜ʖ ͡• )

누구나 개발일정을 지키고 싶다. Blocker를 만나기 전까진...

프로젝트에 있어 핵심이라 할 수 있는 POP3를 통한 이메일 파싱을 담당하게 되면서 매순간마다 문제에 부딪히고 해결하는 과정의 연속을 경험했다.
내가 구현한 내용을 포인트 별로 정리하고 나름대로 느낀 점을 토대로 개발일지를 작성해보았다.

  1. POP3 이메일 sync하기
    • 처음이라 다소 생소했던 POP3 개념에 대해 학습하고 인터넷에 올라온 여러 개의 예제 코드를 분석하였다.
      예제 코드들을 분석할 때 매줄마다 print를 찍어가며 각 줄이 어떤 의미를 갖고 어떤 용도로 사용되었는지 파악하고나니, 불필요한 부분은 제하고 효율 좋게 로직을 구현할 수 있었다.
  2. 이메일 파싱
    • 텍스트 추출에는 정규표현식이 최고인 것 같다. 일일히 iterate하지 않고 조건만 잘 설정해주면 되고 성능도 뛰어나다.
      regex101.com은 앞으로도 매우 자주 방문할 웹사이트가 될 것 같다. 강추! 또 강추!
  3. 추출한 텍스트를 데이터베이스에 저장
  4. 위 과정을 일정 시간 간격을 두고 반복 (예: 10분)
    • time 모듈에서 sleep 메서드로 구현했다. __name__ 내부에 위치시켜 해당 함수가 호출되면
      POP3 서버에서 이메일 sync → 정규표현식으로 이메일 파싱 → 파싱된 내용을 변수에 담아 django ORM으로 데이터베이스에 저장 → 600초 타이머 시작 → 앞선 과정 반복이 되게끔 구현하였다
  5. Blocker 발생
    • POP3의 원리에 의하면 POP3 서버로부터 메일을 다운 받아 열게되면 서버에서는 메일을 삭제한다.
    • 따라서 10분으로 설정한 타이머가 돌아가는 동안 새로 수신된 이메일들만 다음 회차에서 로직이 실행될 때 파싱되어 데이터베이스에 저장될 거라 생각했다.
    • 그러나 로직을 반복해서 호출, 실행할 때마다 이미 읽어들인 메일들이 남아있어 데이터베이스에 계속 중복으로 저장이 되고 있었다.
  6. Blocker 해결 과정
    • 공식문서에서 pop3의 dele() 메서드를 발견하였고, 사용해 보았지만 blocker 해결이 되지 않았다.
    • 그러던 와중에 역시 공식문서에서 POP3로부터 연결을 종료하여야 한다는 구문이 눈에 띄었다.
    • quit() 메서드를 사용해 POP3 서버에 연결했던 connection을 끊었다가 재로그인하여 메일 파싱을 시도해보니 Blocker가 해결되었음을 확인!
    • 기존의 로직은 POP3 접속 상태를 유지한 상태에서 계속 메일을 불러오는 방식이었다면,
      새로운 로직은 POP3 접속 → 이메일 파싱 → DB 저장 → POP3 연결 해제 → 600초 후 로그인 → 반복으로 수정

Blocker를 해결하는데에 나는 장장 이틀 가량의 시간을 모니터와 씨름하면서 보내야했다.
프론트엔드 측에 빨리 API를 구현해줘야한다는 생각에 압도되어 때때로 조바심이 나기도 했지만, 최대한 이런 스트레스를 긍정적으로 승화시키고자 노력했다.
특히 나는 얼리슬로스 사옥 옥상에 올라가 시원한 겨울 바람을 쐐며 정신을 환기시키는 걸 유독 좋아했는데, 실제로 Blocker를 해결한 단서도 사옥 옥상에서 핸드폰으로 검색하다가 발견했었다. (광화문 광장 + 경복궁 + 청와대 + 인왕산이 한눈에 들어오는 전경은 정말 죽여준다...)

지난 한 달을 회상하며...

얼리슬로스에서 보낸 한 달이라는 시간은 감사함이 넘치는 시간이었다.
긍정적인 분위기에서 열정적인 마인드로 일하는 사람들.
친밀하지만 또 서로를 존중하는 조직문화.
기획 미팅 때 개발팀 전원이 참석해 모두가 동일한 이해도를 갖고 개발을 시작하기 위해 열띤 토론을 펼치며 소통하는 개발문화 등등...
앞으로 내가 일하게 될 회사를 정함에 있어 얼리슬로스는 여러모로 좋은 기준이 될 수 있을 거라는 확신이 들었다.

또한 개발자로서의 성장에 있어서도 얼리슬로스는 크나큰 도움이 되었다.
그동안 내 마음 한구석에는 "미숙하지만 개발자로서 첫 발을 내딛게 되는건데 과연 잘할 수 있을까?" 라는 의문이 남아있었고, 또 그 해답을 이 곳에서 찾을 수 있었다.
얼리슬로스의 개발자 분들께서는 나의 성장을 위해 여러모로 가이드를 제시해 주셨지만 결코 정답을 던져주진 않으셨다. 그게 절대로 도움이 될 순 없기 때문이다.
주어진 가이드를 토대로 나의 역량을 총동원한 결과, 나는 온전히 나의 힘으로 프로젝트가 기획한 1, 2차 목표를 모두 달성할 수 있었다.

한 가지 유일하게 아쉬운 점을 꼽으라고 한다면 아직 개발자로서 미숙한 나로 인해 얼리슬로스 개발팀장이신 Z님께 많은 걸 물어보고 또 얻어가지 못했던 것. (실제로 Z님은 프로젝트 개발 외에도 이거 공부하고 정리한 거 제출하세요~ 하면서 가볍게 툭툭 던져주셨는데, 정말정말 유익한 것들 뿐이었다)
그렇지만 얼리슬로스는 나에게 한없이 좋은 기억으로 남아있기에 앞으로도 지속적으로 관계를 이어나가고 싶다.

와신상담(臥薪嘗膽).
장작 위에 누워 쓴 쓸개를 맛보며 목표를 이루기 위해 노력함을 일컫는 사자성어다.
기업협업은 나에게 내가 아직 모든 방면에서 얼마나 부족하고 갈 길이 먼지 뼈저리게 느끼게 해주는 자극제가 되었다.
이를 동기 삼아 앞으로의 취준 그리고 그 이후의 과정 속에서도 끊임없이 나를 채찍질하며 성장하는 그런 개발자가 되어야겠다고 다짐해본다.

profile
Slow and steady wins the race

0개의 댓글