[10기] DND 프론트엔드 합격 후기와 지원서

이주영·2023년 12월 28일
15

회고

목록 보기
8/11
post-thumbnail

출처 : https://www.dnd.ac/

들어가기 앞서 🌱

약 3개월 전, 첫 번째로 부족한 나를 받아준 회사로 출근을 하게 됐다. 미국에 본사가 있고 한국에 지사가 있는 회사이다. 빠르게 성장하기 위해 약 3개월간 누구보다 빠르게 출근하였고 누구보다 늦게 퇴근하면서 부족하다고 생각하는 것 (Typescript, module, configuration setting, redux)들을 학습하며 빠르게 구현하는 것을 목표로 했다. 하지만 여러 회사의 상황과 대표님 기준에 못 미치는 비전공 신입 개발자라는 인식이 있었다. 그리고 한국 지사에서의 개발 팀장님과 개발 지원 팀원의 해고를 11월에 목격하였고 혼자 남은 상황에서 신입인 나는 열심히 발버둥을 쳤지만 함께 하긴 어렵겠다는 통보를 받게 됐다. 그날이 바로 어제인 12월 27일 수요일이었다. 마음 한편으론 억울한 마음도 있고 서운한 마음도 있지만 모든 것이 합력해서 자양분이 될 것이라는 믿음으로 12월 27일도 마찬가지로 운동과 일일 회고를 하며 잠에 들었다.

28일은 남은 휴가를 사용해야 해서 하루를 쉬었다. 그러고 카페에서 코딩을 하는데 손에 잡히지도 않고 DND 결과 발표만 학수고대하였다. 계속해서 메일을 보게 됐고 12시 5분경 메일이 도착했다.

합격했다. 회사에 합격했을 때도 이 정도의 기쁨이 아니었는데... 너무 감사하고 감사했다. 3개월 간 수습기간 동안 나에 대해 알 수 있었고 더 나아가 내가 채워야 하는 경험이 무엇인지 알 수 있게 됐다. 그 니즈를 DND 10기의 경험을 통해 채울 수 있는 기회가 주어졌다.

지원

11월 20일에 DND가 서류 지원이 있다는 것을 알고 퇴근 후, 바로 지원서를 작성했다. 그 당시 회사 수습은 당연히 전환될 것이라고 예상했고 미국에서 일하는 것 어떻냐는 대표님의 제안도 있었다. 그럼에도 불구하고 디자이너와의 협업과 다른 개발자들과의 협업 경험을 간절히 원했기에 간절한 마음으로 작성했다. 아래는 문항에 대한 나의 답변이고 솔직하게 공유한다.

1. 지원동기, 이루고 싶은 목표, 최대한 구체적으로 작성

"지원할 때"가 됐다고 생각해서 지원하게 됐습니다. 저에게 현재 수준에서 가장 필요한 스킬은 개발 실력입니다. 전 소프트 스킬에는 강점이 있습니다. 하지만 주니어 시기에 개발 실력을 압도적으로 키우기 위해 도약 지점이 필요한 시점이라는 것을 알게 됐고 더 이상 1인 프로젝트로는 만들 수 있는 Impact는 한계가 있다는 것을 알게 돼, 좋은 동료들과 함께 작은 실험을 반복하기 위해 지원하게 되었습니다.

저의 "대목표"는 개발 시장을 이끌어가는 기술을 만드는 것입니다. next.js를 만든 이들, supabase를 만들어 firebase의 기세를 몰아내고 그 시장을 쟁취하는 사람들이 눈에 보입니다. 저도 그들과 함께 할 수 있다고 진지하게 믿습니다. 저의 대 목표는 개발 시장을 이끌어가는 기술을 만드는 것이지만 , 현재 단계에서는 DND 동아리에서 "수익화할 수 있을 만한 서비스"를 론칭하는 게 첫 번째 작은 목표이고 그 이후 파생되는 문제를 해결하며 도약하고자 합니다. 두 번째 작은 목표는 DND 커뮤니티에서 "기여"하고 싶습니다. 멘토의 역할이 있다면 이후 들어오는 기수들에게 도움을 주고받은 은혜를 베푸는 프런트엔드 개발자가 되고 싶습니다.

2. 개발 활동(학교 수업, 프로젝트, 경진대회 등)을 진행하며 모르는 문제를 마주했을 때 해결한 경험에 대해 설명해 주세요.

전 항상 메모하며 업무를 하거나 프로젝트를 진행합니다. 그러다 문제를 마주하면 문제를 정의하고 문제를 해결하기 위해 기대한 결과, 다른 이유, 근본적인 해결책 이렇게 4가지를 정리하면서 해결합니다.

가령, 쉬운 문제는 바로 구글링 해서 해결하지만 어려운 문제는 복합적인 문제 발생 요인으로 정의가 어렵다고 생각합니다. 그래서 문제를 정의하는데 집중하고 기대하는 결과와 해결하지 못한 이유를 찾아가며 정리합니다. 그러다 해결이 되었을 땐 바로 덮지 않고 근본적인 문제가 무엇인지 찾고 마무리하려는 방향성으로 나아가고 있습니다.

지난달 회사에서 신입 프로젝트를 진행하며 만난 문제를 가지고 왔습니다. 핵심 문제는 코드로 보는 것이 이해를 쉬울 것 같아 아래와 같이 추가합니다.


{isNavSide && !isMobile ? ( <SideNav routeInfo={currentRouteInfo} /> ) : null}

side가 nav이거나 모바일이 아니면 SideNav 컴포넌트를 렌더링 해야 하는 로직입니다. 하지만 알 수 없는 이유로 해당 조건을 넣으면 null이 반환되는 문제를 마주했습니다.

문제 해결을 하기 위한 사고의 흐름을 정리하였습니다.

  • 기대하는 결과는 SideNav가 렌더링이 되는 것.

  • 조건을 삭제하여 렌더링 하였으나 그렇다면 모바일 환경에서의 sidenav를 표현할 수 없음.

  • 두 번째로 회사 코드는 redux-toolkit을 활용하고 있는데 connect 함수를 활용, 그래서 redux Dev Tool을 활용하여 redux State의 상태를 확인했으나 상태가 존재하지 않음.

  • devtool 연동이 안 되는 건지 reducer를 만드는 로직이 문제인지 정의가 어려워서 공식문서를 찾아보니 redux devtools 인자에 Boolean 값을 넣어야 한다는 것을 알게 돼, 수정하니 작은 문제는 해결.

  • 다시 돌아와 동일한 로직을 가지고 있으나 다르게 동작하는 두 개의 컴포넌트를 비교. 동작을 하지 않는 컴포넌트는 A , 반대는 B라고 생각해 보면 A의 mapStateToProps 함수 내부에서 console.log()로 디버깅을 해본 결과 값이 없다는 것을 발견. 그럼 왜 없을까?

  • A 컴포넌트의 mapStateToProps가 읽히지 않는 이유 분석.

  • 첫 번째 React Suspense 문제인 줄 알았으나 아니었음.

  • connect 함수를 사용하지 않고 최신 문법인 useSelector를 사용하니 해결.

  • 하지만 근본적인 문제를 찾기 위해 정리해 보니 결과적으론 모듈.

  • export와 export default의 차이가 핵심인데 기존 코드는 export default로 전체 스크립트가 상위 컴포넌트에 import 된 것이 아닌 export로 connect() 함수 이외의 부분만 상위로 전달되어 있었던 것이 원인이었다. (근본 해결)

이런 식으로 과정을 정리하고 해결하고 있습니다. 결국 근본적인 문제는 esm모듈의 export 문법에 대한 이해도가 부족해서 생긴 문제라는 것을 알게 됐습니다.

3. 본인이 열정을 가지고 깊게 몰입하여 목표했던 것을 성취한 경험에 대해서 최대한 자세히 작성해 주세요. 개발 관련 경험이 아니어도 괜찮습니다.

[8년 만에 해낸 버킷리스트 덩크]

어릴 적부터 덩크가 너무 멋있어 보였습니다. 누구보다 멋있는 덩크를 하고 싶다는 열망은 중학교 1학년때부터 시작되었습니다. 그 당시 농구 골대 아래의 백보드 판도 점프로 닿지 않았지만 제가 기억하기로 매일 점프 관련 영상을 유튜브로 찾아보았습니다. 하지만 그 당시 유튜브에 많은 정보가 없어 구글 검색을 통해 전문적인 문서를 찾아가며 학습하였습니다. 그렇게 3년간 꾸준히 관심을 가지고 찾아보며 훈련하다 보니 어느새 손가락 끝에 농구 골대가 잡히기 시작했습니다.

농구 골대가 잡히니 친구들이 말하길, "넌 탄력을 타고났다"는 이야기를 들었습니다. 그러다 보니 더 재밌어졌고 고등학교 2학년 땐 제자리 점프로 농구골대를 잡고 러닝 점프로는 두 손을 잡기 시작했습니다. 그렇게 시간이 지나 대학교 1학년 중앙동아리에 들어가게 됐고 그 이후로 꾸준히 웨이트를 진행하여 23살에 첫 인게임 덩크를 터트리며 꿈만 꾸던 일을 실제로 실현해 본 경험이 있습니다. 현재는 몸을 풀면 한 손으로 덩크가 가능한 상태입니다.

덩크의 경험은 저에게 있어 가치 있는 경험이었습니다. 작은 실험들을 무수히 반복해 조금씩 성장하여 결국 덩크를 하게 됐고 해당 경험이 이젠 개발되었다는 것을 느끼고 있습니다.

4.공동의 목표를 달성하기 위해 타인과 협업했던 경험과 본인이 수행한 역할에 대해 작성해 주세요. 또한 갈등, 의견 차이 등 문제 발생 시 해결 경험과 해당 경험을 통해 얻은 것은 무엇인지도 최대한 구체적으로 기술해 주세요.

개발 관련 경험이 아니어도 되며, 만약 협업 경험이 없다면 본인의 협업 가치관과 문제 발생 시 어떻게 해결할 수 있을지에 대해 작성해 주세요.

[부정적인 낌새를 내버려 두지 않는다]

코오롱 인턴 당시, 주어긴 기간 내에 기획의 70퍼센트를 만족하는 survey 애플리케이션을 구현하고 베포 하여 발표해야 하는 상황이었습니다. 백엔드 2 , 프런트엔드 2로 구성된 팀이었고 그 당시 리더의 역할을 감당하고 있었습니다. 기획과 디자인 기간이 주어진 기간의 반을 차지하게 됐고 대략 12일 만에 기능을 개발하고 베포 해야 하게 됐습니다. 그렇게 기술 스택과 업무 분담을 진행하고 jira를 활용하여 진척도를 평가하며 프로젝트를 진행하였습니다.

갈등은 베포 기간 5일 전부터 조짐이 보였습니다. 베포 기간 전 QA를 진행하려고 했기 때문에 현실적으로 조급한 상황이었습니다. 그때부터 팀원 중 한 분의 말투에서 조급함이 많이 묻어났고 그러다 보니 공격적일 때가 있다는 걸 느꼈습니다. 여러 이유로 그럴 수 있다는 것을 공감했습니다. 오전 스프린트 미팅을 진행한 후, 따로 잠시 만나 조급한 마음의 원인을 같이 이야기하는 시간을 가지고 우리가 해낼 수밖에 없는 이유와 비전을 제시하여 갈등의 불이 타오르기 전에 해결했던 경험이 있습니다.

[비판을 이기는 탁월함]

위에서 말했듯, 전체 프로젝트는 약 3주였지만 기획을 1주일 정도 진행하게 됐습니다. 다른 팀원은 기획을 너무 깊게 이해하지 말자는 의견이었으나 그 당시 전 기획을 이해하지 못하면 앞으로 변경될 때마다 기획자님의 의도를 전혀 파악할 수 없다고 생각했습니다. 개발 시기에 팀원들이 어려움을 만나면 계속 "기획에 시간을 많이 쏟아서 이렇게 됐다"라는 부정적인 에너지가 나타날 때가 많았습니다. 그럴 때 감정적으로 동요하지 않고 저의 생각을 정확히 제시하였습니다.

첫 번째, 기획을 제대로 이해하여서 우리가 빠르게 해결할 수 있었던 것들 제시

두 번째, 가장 어려운 개발 기능과 페이지 도맡아 진행

세 번째, 에러 해결 시 정리하여 공유

이런 식으로 최대한 저의 발언에 책임을 지려고 노력하여 무사히 기획의 70퍼센트 이상의 기능을 포함하여 최종 발표롤 하고 프로토타입을 보여드릴 수 있었습니다. 갈등 경험과 의견 차이를 해결한 경험을 통해 제가 얻은 것은 '나'를 조금 더 명확히 알게 된 것입니다. 전 해석을 잘하는 사람이라는 것을 알았습니다. 사람들의 마음과 의도를 해석을 잘하고 내가 말하고자 하는 메시지를 잘 해석하여 명확하게 사람들에게 전달하는데 강점이 있다는 것을 알게 됐습니다.

5. 자신을 드러낼 수 있는 개인 블로그나 노션 링크 등을 자유롭게 입력해 주세요.

  1. 삶을 돌아보고 방향성을 정리하는 주제로 글을 작성하는 링크드인입니다.
  1. 학습한 기술에 대해 정리해 보는 기술 블로그입니다.

100퍼센트 위에 있는 자기소개서를 바탕으로 지원하여 합격하였다. 나의 합격 비결은 솔직함과 간절함이었다. 11기에 지원하시는 분들께 도움이 되길 바라는 마음에 공유합니다.

목표

어제 대표님과 면담을 통해 피드백을 받았다. 다소 아프긴 했지만, 너무 감사했고 이해가 되지 않는 것을 포함하여 모든 것을 수용해서 보완하려고 한다. 나한테 실이 될 것은 없었다.

  1. 비전공자라 맡길 수 있는 게 없다.

  2. 디자이너와의 협업 경험이 없어 일일이 알려줘야 하는데 그럴 수 있는 리소스가 현재 없다.

  3. 기본기가 없다.

  4. 요령이 없다.

  5. 교육을 바라지 마라. 그런 회사는 없다.

여러 피드백을 받았고 이러한 피드백에 근거하여 DND 활동에서 목표를 세우려고 한다. 내가 3개월의 수습을 통해 다음 도약을 위해 필요하다고 생각한 것은

1. 디자이너와 백엔드와의 협업

백엔드와의 협업은 작년 7월부터 10월 3번의 프로젝트와 이후 개인 프로젝트를 통해 진행한 경험이 있다. 하지만 소수이기도 했고 주먹구구식으로 진행했기에 조금 더 제약 조건을 두고 깐깐하게 진행해보고 싶은 마음이 있다. 디자이너와의 협업은 이번이 처음이라 기대하는 부분이 크다. 수습 기간에 대표님의 말씀 중 인사이트가 있었는데 디자이너와 협업하는 순간부터 프런트엔드는 픽셀하나 동일하게 만들 수 있는 역량이 중요하다고 했고 이번 기회에 연습해 볼 생각이다.

2. 정보처리기사 자격증

대학원을 컴공으로 가는 방법도 있지만 시간적, 물질적 자원이 하나도 없다. 그렇기에 내가 할 수 있는 수준에서 당장 실무에 도움이 되지 않을 수 있지만 전반적인 지식들을 익히는 시간이 반드시 필요하다는 것을 느꼈다. 토익을 절대 무시할 수 없는 것처럼 정보처리기사도 마찬가지라고 생각하고 올해 2월 필기와 4월 실기에 취득하는 것을 목표로 준비하고 있다.

3. 기본기

이번 DND 8주간의 프로젝트 활동을 하면서 기본기에 집중하려고 한다. 구름 12월 커밋 오프라인 미팅에 참석하여 개발자의 기본기는 여러 형태일 수 있지만 현재 단계에서는 3가지를 유념하려고 한다.

  • 사람이 이해하기 쉬운 코드

  • 변경이 용이한 코드

  • 유지보수 비용이 낮은 코드

세 가지에 집중해서 프로젝트를 진행하는 것을 목표로 한다.

4. 발표

여러 청중 앞에 서서 발표하는 것을 좋아하는 동시에 긴장에 몸부림을 친다. 참 이상한 성격을 가지고 있다. 이번에도 마찬가지로 중간발표와 최종 발표에 발표를 하고 싶고 그 시간을 통해 조금 더 스스로 단련하고자 한다.

마치며 🌱

작년 7월부터 IT로 입문한 후, 여러 상황들을 헤쳐나가며 성장하고 있다. 약 1년 반여 간의 시간을 통해 깨닫는 것을 한 단어로 정의해 보면,

역전

이다. 매번 낭떠러지인 줄 알았으나 정상이었고 정상인줄 알았으나 낭떠러지 같은 상황을 반복적으로 경험하면서 절대 낙심할 필요 없고 계속 정진하면 되겠다는 생각을 하고 다짐한다. 모든 개발자 파이팅.

profile
https://danny-blog.vercel.app/ 문제 해결 과정을 정리하는 블로그입니다.

3개의 댓글

comment-user-thumbnail
2024년 1월 2일

주영님의 서사 잘 잘봤습니다 ㅎㅎ
2024 화이팅입니다 👍

2개의 답글