[Wecode] 전체 회고

Judy·2023년 3월 11일
1

[글또] etc

목록 보기
2/6

NLP Researcher 의 백엔드 개발자 체험판
리더십 트레이닝

작년 12월 12일부터 올해 3월 10일까지 3개월에 걸친 위코드 41기 부트캠프가 끝났다.
정확히 말하면 2개월 가량 위코드 강의장에서 학습 및 프로젝트를 진행했고
나머지 1개월 동안 협업 기업에서 인턴십을 진행했다.

지원 동기

  1. 경력 공백 메우기
    솔직히 이게 제일 컸다.
    작년에 재취업을 생각할 수 있을 만큼 한숨 돌리고 나니 10월이 지나 있었고
    이미 하반기 채용시장의 문이 닫혀가던 차에 때마침 모집 공고를 발견했다.

  2. 백엔드 개발 지식의 필요성
    전 회사에서 NLP Researcher 겸 Engineer 로 일할 당시
    모델 품질을 개선하기 위해 종종 서버 쪽을 살펴볼 일이 있었으나
    백엔드의 V도 모르는 (😜) 나로서는 눈 뜬 장님이나 마찬가지였고
    종종 내가 만든 모델이 고객에게 어떻게 서빙되는지를 몰라 답답하기도 했기에
    기회가 된다면 백엔드 구조와 흐름에 대해 알고 싶었다.

  3. 시스템 전체를 보고 싶다
    나의 새로운 직업적 목표는 '리더(CTO) 가 되는 것' 인데
    AI만 했던 나로서는 당장 개발자의 언어를 알아들을 수 없었을 뿐더러
    회사의 서비스 시스템이 어떻게 구성되어 있는지 알 수 없어서 리더로서는 부적격.
    추후 CTO 가 못 되더라도 나는 반드시 최소한 팀장 자리까지는 올라갈 것이고
    그 때를 대비하여 시스템 전체를 볼 줄 아는 넓은 시야가 반드시 필요했다.

  4. 3개월로 구성된 적당한 수강 기간
    대부분의 국비지원 부트캠프는 6개월 동안 진행되는데
    백엔드를 본업으로 삼지 않을 나에겐 너무 긴 기간이다.
    때마침 발견한 위코드 부트캠프는 3개월 과정으로 구성되어 있었고
    2~3월 초에 끝나는 일정이기에 상반기 채용 시즌과 시기가 딱 맞았다.

Training

부트캠프나 학원에서 학습을 한다면 보통 강사가 강의를 하고 학생은 강의를 수강하는 것으로 생각하기 마련인데
위코드의 강의 시스템은 주입식이 아니라 자기주도형, 다른 말로는 독학식(...) 이다.
개인적으로 나에게는 주입식보다 더 잘 맞았다.
내 페이스에 맞춰서 진도를 나가고, 특히 더 어려운 부분은 더 깊게 공부할 수 있었고
모르거나 어려운 건 언제든지 멘토님께 여쭤보거나 동기들과 이야기할 수 있었으니까.
(개인적으로는 일단 강의를 제작해두어 한번에 몇십명이 학습할 수 있고
새 기수마다 강의내용 유지/보수를 하면 되는 시스템이라
적은 리소스로 효율을 극대화한 최고의 수익창출 모델이라는 인상을 받았다)

  • Session
    • 강사(멘토) 가 주제에 대해 강의 진행
  • Flipped Learning
    • Notion 포맷의 학습자료와 동영상을 이용해 해당 주제에 대해 독학
  • Group Study
    • Flipped Learning 이후에 진행되는 일종의 그룹과외 시간
      멘토님이 질문을 모아서 답변해 주시고 특별히 중요한 부분을 짚어 주신다.

Project

1차 프로젝트 : WEAT 🥩

프로젝트는 어떻게 성공하는가?

  1. 목표한 일정을 지켜 기획한 모든 기능을 완성했다
    정해진 일정 내에 기획했던 모든 기능이 정상적으로 동작하도록 개발했다.
    이것 하나만으로도 이 프로젝트는 성공했다고 생각한다.

  2. 인성도 실력도 좋은 팀원들
    팀원들 모두가 인성이 모난 사람이 없이 서로 배려하는 동시에
    개발 실력도 좋은 편이라 모두가 기한에 맞춰 자기 몫을 완수했다.
    덕분에 우리 팀은 가장 원만하게 프로젝트를 진행한 팀이라는 평을 들었다.
    나는 그동안 팀플레이를 거의 해 본 적이 없던지라 더더욱 팀의 중요성과 소중함과 감사함을 깨달았고
    처음으로 단체활동에서 리더를 맡아 좋은 팀원들 사이에서 리더십 트레이닝을 할 수 있었던 소중한 기회였다.
    참고 : 회고 링크

  3. 훌륭한 매니저 겸 짝꿍
    나는 프로젝트 일정을 관리하는 프로젝트 매니저를 맡았다.
    매니저로서 나와 손발을 맞추는 짝꿍은 프로덕트 매니저, 즉 서비스 기획 매니저인데
    나는 백엔드, 짝꿍은 프론트엔드 개발자라 자연스레 매니저 겸 각 개발파트 리더 역할까지 수행하게 되었다.
    나는 당장 일정관리, 업무 배분, 소통 등 백엔드 일처리를 하느라 바빠서 나중에야 알았는데
    짝꿍이 서비스 기획뿐만이 아니라 프론트 개발 총괄까지 잡음 한번 안 나게 일을 잘 해줬다.
    나중에 알고 보니 팀 막내였는데 우리 중 가장 어른스러웠고 개발도 잘했고 전체 팀 매니징도 잘했다.
    정말이지 좋은 리더가 될 재목이야.... 🌱
    (이 친구는 2차 프로젝트에서도 나와 같은 팀이 되었다!)

  4. 기획의 중요성
    우리는 모두 열정이 가득한 초심자이지만
    당연하게도 초보자인 우리의 실력은 열정에 미치지 못하는데다
    단 2주뿐인 프로젝트 기한은 너무나 촉박했다.
    그만큼 우리가 현실적으로 할 수 있는 것이 무엇인지를 알고 그에 맞게 기획을 하고
    때로는 팀원들이 바라는 게 있더라도 쳐낼 수 있어야 하는데
    나중에야 알았지만... 내 짝꿍이 이걸 조용히 잘 해냈다.

적고 보니 전부 팀 구성원 이야기인데, 그만큼 일을 할 때에는 사람이 중요하기 때문인 것 같다.
나도 우리 팀원들에게 좋은 매니저이자 좋은 팀원이었기를.

2차 프로젝트 : PetWithU 🐶

프로젝트는 어떻게 실패하는가?

  1. 개발 기획이 자주 변경되었고, 개발 일정이 미뤄졌고, 일부 기능이 정상적으로 동작하지 않았다.
    이 점은 전적으로 이번 팀에서 프로덕트 매니저를 맡은 내 불찰이다.
    이전 팀 프로덕트 매니저가 그랬듯이 기획을 명확히 하고 중요하지 않은 변경/추가사항은 쳐냈어야 했다.
    필수 기능 위주로 100% 정상적으로 동작하는 것을 목표로 개발했어야 하는데
    프로젝트 마감일이 다가올수록 추가 기능이 자꾸만 더해지고 있었다.
    이번 팀은 동기들 중에서도 가장 잘하는 프론트 3명, 백엔드 나 1명으로 구성된 데다
    팀원 모두가 새벽 서너시까지 코딩할 만큼 정말 최선을 다했는데도
    결과는 리소스에 비해 낮은 완성도로 돌아왔다는 점이 아직까지도 마음이 아프다.

  2. 의욕인가 욕심인가
    앞서 말했듯이 '리더로 성장하겠다' 는 내 의욕을 앞세워서 매니저를 맡았는데
    당연한 말이지만 나 혼자 의욕이 넘친다고 일이 잘 되는 게 아니었다.
    우리 팀원은 탑티어 프론트 셋, 프로덕트 매니저를 겸하는 백엔드 한명으로 구성되어 있어서
    일단 내 입장에서만 얘기하자면... 탑티어 셋의 싱크를 나 혼자 맞춰야 한다는 점이 처음부터 큰 부담이었다.
    그럼에도 프론트가 좀 더 수월하게 일할 수 있도록 내가 어떻게 싱크를 맞출지 매일 고민했고
    낮 시간에 강의장에 함께 있는 동안에는 최대한 내 시간을 프론트와 소통하는 데에 썼다.
    시간적 여유도 정신적 여유도 부족한 탓에 점차 처음의 내 의도와 다르게 극도로 예민한 상태에서 팀원들을 대하다 보니
    팀원들에게 소통 문제를 지적받았고, 감정이 태도가 되지 말라는 멘토님의 피드백도 들었다.
    의욕과 욕심을 판별하는 기준은 무엇일까.
    같은 상황을 다시 마주하게 된다면 그때 나는 어떤 결정을 내려야 할까.

  3. 소통
    소통이란 단순히 자기 주장만을 내세우는 것이 아님을 깨달았다.
    나는 팀원들이 최대한 자신의 성장을 챙기길 바랐고, 그걸 내가 충분히 뒷받침하고 싶었는데
    팀원들은 내 말을 내 의도와는 다른 의도로 받아들여 부담스러워했고
    서로가 생각한 배려는 결과적으로 서로에게 전혀 배려가 아니었다.
    팀원들과 한명씩 티타임을 가져볼까.........
    라고 생각했을 때 마침 코로나에 걸려서 집에 격리당했다.
    정말이지 일이 안 풀리려면 이렇게까지 꼬일 수가 있구나.

  4. 양보다 질?
    백엔드 팀원으로서 나는 잘한 건 없어도 적어도 못한 건 없다고 자부한다.
    코로나에 걸린 와중에 백엔드 인력 혼자서 API를 23개나 개발했으니까.
    공장처럼 API 를 찍어내는 동안 개발 속도도 빨라졌고
    효율성과 재사용성을 고려하는 동시에, 즉 설계하는 동시에 코드를 치는 게 가능해졌다.
    다만 23개의 API 중 특별히 새로운 시도를 했던 API 는 몇 개에 그쳐
    과연 이렇게 공장처럼 개발하는 게 나의 성장에 무슨 의미가 있나 고민했으나
    나는 팀 리더고 유일한 백엔드 팀원이기 때문에 내 성장을 챙길 때가 아니었다.
    도리어 팀을 위해서는 가장 먼저 버려야 할 것이 나 자신의 성장이었으니.
    내가 더 좋은 코드를 짠다고 API당 개발 시간이 늘어나면
    그만큼 프론트와 작업 싱크를 맞출 수가 없으니까.
    ...라고 변명을 하기엔 현업에서도 마찬가지로 시간과 리소스의 제약이 있다. 😂

  5. 하면 된다
    그럼에도 불구하고 얻은 것이 있다.
    나 자신의 한계를 뛰어넘었다는 것.
    나는 학, 석사 모두 컴퓨터과학을 전공했음에도 항상 코딩(개발) 에 자신이 없었지만
    팀 리더니까, 백엔드 인력은 나 혼자니까, 어떻게든 해내야 했다.
    프로젝트 마지막 주에는 코로나에 걸려서 약 먹고 방에 틀어박혀서 코딩만 했다.
    식사 때 많이 먹으면 소화 안되니까 최대한 소화 잘 되는 밥 종류로 적정량만 밀어넣고
    저녁에 졸리면 잠 깰 겸 씻고 와서 다시 이슈 처리하고 새벽까지 API 개발하다 보니 코로나가 다 나았다.
    코로나 특효약은 코딩인가..... 😇
    정말 오랜만에 나를 극한까지 몰아붙였고 뭔가에 미친듯이 몰두한 경험이었다.

  6. 좋은 리더란 무엇일까
    정말, 정말 리더로서 많은 고민을 했고 노력했지만 족족 실패했다.
    인성도 실력도 리더십도 너무나 부족했고... 아직 내가 리더가 될 때가 아니라고 느낀다.
    좋은 리더가 되기 위해 뭘 어떻게 해야 할지는 여전히 답을 찾지 못했지만
    리더와 함께 일하기 위해서는 내가 어떻게 리더와 손발을 맞춰야 하는지 알 것 같다.
    좋은 부하가 되면 언젠가는 좋은 리더도 될 수 있겠지...

기업 협업 프로젝트 🧾

무에서 유를 창조하기

인턴십을 진행할 협업 기업은 매장 데이터 수집 분석 플랫폼을 개발하고 서비스하는 회사로
우리에게 주어진 과제는 배달 플랫폼별 리뷰 데이터를 이용해 프로젝트를 하는 것!
기술 스택도 요구 조건도 기획도 그 어떤 것도 지정해 주지 않았기에 장단점이 명확했는데

  • 장점 : 우리가 하고 싶은 걸 실컷 할 수 있다
  • 단점 : 우리가 다 알아서 해야 한다
  1. 소통
    총 4주간의 프로젝트 기한 중 첫 주에는 내내 기획 회의를 했다.
    우리 팀은 프론트 1명, 백엔드는 나를 포함해 2명이었는데
    프론트 팀원이 기획에 가장 많은 도움을 주고 기획자로서의 역할을 가장 많이 했다.
    (이 팀원은 1차 프로젝트 때 우리 팀에 내 메이트만큼 많은 도움을 줬던 팀원!)
    프로젝트가 진행될수록 프론트 팀원 - 백엔드 나 둘이서 일하는 경우가 점점 많아졌는데
    항상 서로 격려하고 적극적으로 상대방을 도우려 하고 최대한 소통하려 애썼다.
    기획 또는 데이터 포맷을 변경할 때 프론트 팀원에게 잠시 검토를 요청할 때마다
    팀원이 한창 일하던 중에도 일손 멈추고 기꺼이 검토하고 피드백을 준 덕분에 기획 초안이 나온 후에는 각자의 일에 충실할 수 있었다.
    프로젝트 초반에는 다소 시간이 들더라도 충분한 소통을 하고 방향을 잡는 게 장기적으로는 이득인 셈.

  2. 동료와 발 맞추기
    처음으로 프론트 팀원이 백엔드 팀원보다 적은 상황에서 어떻게 해야 프론트 팀원을 배려할 수 있을지 내내 고민했고
    가급적 프론트의 수고를 덜어드리는 쪽으로, 백엔드인 내가 많이 맞춰드리는 쪽으로 일을 하려고 노력했다.
    (사소하지만... 데이터 포맷을 백엔드가 편한 방식이 아니라 프론트에서 바로 파싱해서 쓰면 되도록 프론트에게 편하게 만든다던가.)
    혼자 새로운 기술 독학해가며 개발 다 해낸 프론트 팀원에게 감사하고
    팀장이 도와줄 수 있는 게 없어서 미안한 마음도 들었고
    내가 잘 알지 못하는 업무를 맡은 팀원은 어떻게 서포트해야 하나... 고민하고 방법을 찾는 기회였고
    좋은 팀원을 만나는 것이 얼마나 중요한 일인지 다시 한 번 더 느꼈다.
    나도 함께 일하고 싶은, 함께 일하기 좋은 리더이자 팀원이 되어야지.

  3. 리더의 역할 : 업무 분배, 스케줄링..
    리더의 역할 중 하나는 팀원들에게 업무를 분배하는 것.
    특히 백엔드 팀원이 나 포함 2명이었으니 원하는 업무와 기술 수준을 고려하여 적정하게 업무를 분배해야 했고
    프론트 그리고 우리 백엔드끼리 싱크를 맞추기 위해 작업량과 작업 속도, 기한을 간단하게나마 정해야 했다.
    고민 끝에 우선 설계 및 초기 세팅, ERD 설계를 백엔드 팀원이 맡아 기한 내에 완수했으나
    2주차에 개발 언어를 모두가 다룰 줄 아는 Javascript 에서 나 혼자만 다룰 줄 아는 Python 으로 변경하게 된 데다
    DB에 모든 데이터가 아니라 필요한 데이터만을 저장하는 것으로 개발 계획이 변경된 탓에
    팀원이 첫 주 내내 한 작업들이 더 이상 프로젝트에서 쓰이지 않게 되었다.
    다시 업무 분배를 고민한 끝에 팀원에게 AWS 와 Docker 를 이용한 배포를 맡겼는데 결과적으로는 실제 배포까지 이어지지 못했다.
    업무 분배 또는 스케줄링에 실패했을 경우 팀원의 멘탈 케어는 어떻게 해야 하나.
    기술 스택이 차이나는 팀원들이 있을 때 업무 분배는 어떻게 해야 공정할까.

  4. 성장
    아무리 생각해도 주니어인 우리가 3주만에 알아서 독학해서 개발까지 해야 하는 환경이 마음에 안 들었다.
    리더로서 팀원들의 성장을 돕기 위해 고민한 끝에
    3주차부터 매일 하루에 약 15-20분씩 기초 자료구조와 알고리즘 스터디를 진행했다.
    시간복잡도 계산(O) 부터 큐, 스택, 그래프, 트리, 탐색, 정렬까지 간단하게 강의했는데
    부디, 부디 나의 작은 노력과 짧은 지식이 우리 팀원들의 성장에 도움이 되었기를.

  5. FastAPI
    이미 배운 지식만을 이용해 프로젝트를 진행하는 것이 우리의 성장에 도움이 되지 않는다는 판단을 내리자마자
    나는 내 학습 버킷리스트였던 FastAPI 를 배워서 쓰기 시작했다.
    한마디로 요약하자면 '레퍼런스가 적은 신기술 익히기'
    FastAPI 레퍼런스는 공식문서와 공식문서를 재해석한 블로그가 전부였는데
    다시 말해 웹 프레임워크에 대한 이해도가 낮으면 개발이 어려울 수밖에 없다.
    덕분에 웹 프레임워크 배경지식을 쌓고자 요즘 서비스 아키텍쳐 강의를 듣고 있다.

Before & After

Tech Skill

  1. 개발 두려움 감소
    새 언어 (Javascript) 를 배워서 웹서비스를 개발한 경험을 쌓고 나니
    시간과 노력을 들이면 새로운 기술을 익히고 응용할 수 있다는 자신감을 얻었다.

  2. Git 익히기, 협업하기
    개발은 아니지만 Git 을 손에 익히게 되어
    내가 공부하고 개발한 것들을 아카이빙하기 쉬워졌다!
    또한 Github 을 이용해 팀을 이루어 프로젝트를 할 수 있게 되었다.

  3. 개발 시야 확장
    원래 나는 코드가 '돌아만 가면 된다' 라고 생각했으나 😂
    코드로 구현할 때 효율성, 재사용성, 가독성까지 고려하여 개발할 수 있게 되었다.
    이제 슬슬 딥러닝 프레임워크의 코드를 리뷰하며 다시 NLP 공부를 할 예정인데
    설계 방식, 객체 구조까지 염두에 두고 코드를 리뷰하게 될 것 같다.

Soft Skill

  1. 리더십 트레이닝
    프로덕트 매니저, 프로젝트 매니저, 팀장까지 모든 팀 프로젝트에서 리더를 맡아
    좋은 평도 나쁜 평도 모두 들었고 리더로서 나의 역량에 대해 정말 깊게 고민하는 계기가 되었다.
    (예전에 현업에서 일할 때에도 종종 팀장을 맡은 적이 있지만... 1인 팀장이라 😂)

  2. 사회성 향상
    우리 동기들 중에는 실력도 인성도 훌륭한 동기들이 많았다!
    갈등 상황에 대처하는 방법을 직,간접적으로 배웠고
    배려하는 방법을 배웠고, 나 또한 동기들로부터 정말 많은 배려를 받았다.
    나는 혼자 일하는 직종의 업무를 오래 해 왔고, 대학원에서는 사실상 교수님과 1:1로 일했으며
    NLP Researcher 로 일할 당시에도 팀원이 나 혼자뿐이라 팀플레이를 한 경험이 극히 적었는데
    40명이 함께 모여 코딩하는 어쩌면 처음이자 마지막일 이 특이한 경험 속에서
    조금이나마 나의 사회성이 향상되었다고 자부한다 😂

  3. 적성 발견
    오랫동안 나는 멘탈이 약하고 의지가 약하여 혼자 하는 일은 잘 못 한다고 생각해 왔으나
    이번 팀 프로젝트를 통해 나의 적성을 깨달았다.
    나는 혼자서는 못 하는 나약한 사람이 아니라 팀플레이를 할 때 내 능력 이상을 해내는 누구보다도 강한 사람이었다!
    예를 들면... 나 혼자서라면 결코 2주 안에 API 23개를 칠 수 없었을 테지만
    심지어 코로나에 걸린 와중에 우리 팀 그리고 팀원들 덕분에 해냈다.

마무리

백엔드 개발의 맛을 보았고, 동료의 소중함을 깨달았고,
리더로서 나 자신을 혹독하게 몰아붙였으나 아직 역량이 부족하다는 점을 깨달았다.
이제 다시 내 본업인 NLP 를 하러 내 자리로 돌아갈 시간.
부디 3개월에 걸친 고군분투 경험이 앞으로 값지게 쓰이길.

profile
NLP Researcher

0개의 댓글