Search

React Native 개발자 (경력 1년 이상)

안녕하세요? 인프랩 개발파트의 향로입니다.
인프랩팀이 새롭게 모바일 개발팀을 구성하게 되었습니다.
코딩 교육 특성상 대부분의 사용자분들께서 PC 웹 브라우저를 주력으로 사용하시다보니 웹 서비스에 집중을 하게 되었습니다.
그동안은 웹 프론트엔드 개발자분들이 처음 앱을 출시하고, 웹 서비스를 메인으로 하면서 하면서 앱을 운영해왔는데요.
그러다보니 앱에 대한 여러 불편 사항을 제때 해결하지 못했습니다.
그래서 인프런의 앱 서비스를 새롭게 개편하기로 결정하고, 이에 맞춰 React Native 기반의 모바일 개발을 전담할 개발팀을 구성하게 되었습니다.
앞서 언급했듯이 인프랩 팀에는 그동안 모바일 전담팀이 없었습니다.
그러다보니 제로에서 시작하는 개발팀에 대한 걱정과 우려로 다음과 같은 궁금증이 생깁니다.
코드리뷰는 하고 있는걸까? 서비스 기능 개발하기에 바빠서 각개전투 하는건 아닐까?
테스트 코드를 작성하고 있을까?
리팩토링 / 생산성 향상 등에 관심이 있을까?
성장을 위한 피드백 문화가 있을까?
구성원의 성장을 위해 회사에서는 어떤 지원을 해줄까?
개발자의 성장에 있어 가장 중요한건 개인의 노력인데요.
그렇다면 회사에서 해줄 수 있는 것은 무엇일까요?
제 생각에는 그 사람이 성장할 수 있는 좋은 재료와 환경을 제공해주는 것이 아닐까 싶습니다.
인프랩의 모바일 (React Native) 개발 파트를 소개드리려고 합니다.
이런 환경이라면 좋은 개발자로 성장할 수 있지 않을까 생각해보는 시간이 되셨으면 합니다.

직군 소개

인프랩의 모바일 (React Native) 개발자는 다양한 기기/브라우저에 맞춰 사용자를 위한 클라이언트 애플리케이션 개발을 담당합니다.
TypeScript, React Native 를 기반으로 Android / iOS 애플리케이션을 개발하고 배포합니다.
모바일 영상 플레이어, OAuth 를 비롯한 각 서비스에 필요한 기능들을 구현, 개선 합니다.
상황에 맞게 적절한 형태로 네이티브 구현과 웹앱 구현을 나눠 진행합니다.
시스템 전반의 성능 최적화를 위해 API 호출 최소화 / 렌더링 최적화 / 번들링 최적화 등을 상시로 진행합니다.
DataDog, Sentry 등의 APM을 통해 사용자 디바이스에서 발생하는 에러에 대해서 추적하고 해결합니다.
Figma를 통해 디자이너와 함께 사용자를 위한 UI/UX 개선을 고민하고 적용합니다.
Swagger, Codegen 기반으로 백엔드 개발팀과 함께 데이터에 대해 협업합니다.
웹 프론트엔드 개발파트와 함께 사용할 공통의 라이브러리 등을 개발/개선 합니다.

기술 스택

React Native 팀에서는 다음과 같은 기술 스택을 사용할 예정입니다.
가능하면 현재의 웹 프론트엔드 개발팀과 최대한 유사하면서도 견고한 코드를 작성할 예정입니다.
TypeScript
React & React Native
상태 관리 도구
클라이언트 상태 관리 도구는 최소화하여 사용할 예정입니다.
Context API, React Query, Repository 패턴 등을 주로 활용할 예정입니다.
Jest & Cypress
Git, Github
MS CodePush, Github Actions

자격요건

JavaScript, TypeScript 에 대한 이해가 있으신 분
React Native 사용 경험이 있는 분
Android/iOS 다양한 환경과 디바이스에 적합한 UI/UX에 전반적인 이해를 갖춘 분
CodePush 등을 이용한 효율적인 배포 관리 경험이 있는 분
HTTP 통신에 대해 기본적인 이해가 있으신 분
Git과 Github에 대한 기본적인 사용법을 알고 있고, Rebase, Merge, Squash 에 대해 이해하고 계신 분

우대조건

우대 조건은 아래 조건을 모두 할 수 있는 분을 의미하진 않습니다.
이 중 일부라도 해당하는 분이시면 즐거운 마음으로 관련 대화를 나눠볼 수 있을것 같습니다.
아래 관점으로 모바일 (React Native) 개발파트가 지향하고 있다고 봐주시면 좋을것 같습니다.
TypeScript의 타입시스템에 대해 깊은 이해가 있으신 분
FP, OOP 등 좋은 코드와 구조를 찾기 위해 노력해보신 분
Jest, Mocha 등 테스트 프레임워크를 통해 단위 테스트 코드를 작성해오신 분
UI / 사용성 테스트에 대한 경험이 있으신 분
모바일 OS 별 다양한 트러블 슈팅 경험이 있으신 분
앱 서비스 성능 개선을 진행해본 경험 혹은 노하우가 있으신 분
본인이 만든 애플리케이션을 실제 서비스, 운영까지 해보신 분
CI 가 단순히 Build가 아닌 지속적 통합이라는 것에 대해 이해하고 있고, 이런 시도를 노력해보신 분
서버 개발자와 협업한 경험이 있으며, 서버 업무에 대한 최소한의 이해도가 있으신 분
디자이너와 협업한 경험이 있으며, 디자인 요소에 대한 최소한의 이해도가 있으신 분
(주니어분들이라면) 위 언급되어있는 개념들을 몰라도 빠르게 내 것으로 만들수 있는 나만의 학습법을 가지고 계신 분
(경력무관) 운영/기획파트 등 개발자가 아닌 분들께 상황을 설명할 때 그들의 입장에서/그들의 언어로 이야기하는게 당연하신 분
(경력무관) 대화보다 하나의 문서를 작성하고 공유하길 좋아하시는 분

업무 방식

현재 모바일 (React Native) 팀은 Building 단계이기 때문에 함께 개발 문화를 만들어갈 예정입니다.
다만, 이미 기존의 프론트엔드 / 백엔드 개발 파트가 어떻게 업무를 하는지를 볼 수 있다면 모바일 (React Native) 개발 팀이 어떻게 일을 할지 예측할 수 있을것 같습니다.
모든 개발팀은 스타트업 특유의 빠른 제품 릴리즈서비스 안정성 이라는 2마리 토끼를 최소한의 인원으로 잡기 위해 적절히 업무 균형을 유지하고 있습니다.
Confluence cloud / Jira를 도입하여 문서화를 적극적으로 진행하고 있습니다.
각 개발 파트의 개발규칙을 문서화해, 신규 입사자분들의 심리적 안정감과 일관된 코드스타일을 유지하려고 노력하고 있습니다.
1주 단위의 스프린트로 업무 공유와 회고를 주기적으로 진행합니다.
스프린트 방식 자체에 대해서도 주기적으로 회고를 진행합니다.
어떤 방식이 가장 효율적이고 성과를 낼 수 있을지 정기적으로 고민하고 논의합니다.
JIRA로 각자 티켓을 생성해서 업무를 진행합니다.
Git Flow를 변형한 저희만의 Git Flow에 맞춰 Branch 를 생성하고 Rebase / Merge 등을 진행합니다.
작업된 코드는 PR을 요청하고 코드리뷰를 진행하여 반영하고 있습니다.
개발된 코드는 테스트서버에 배포를 하여 QA를 진행합니다.
모든 배포는 Jenkins와 Github Actions 를 통해 dev / master 브랜치 push 시에 자동으로 배포가 진행됩니다.
APM 모니터링 도구 (DataDog, Sentry)를 통해 사용자 브라우저에서 발생하는 에러를 추적하고 해결합니다.
DataDog 대시보드
Sentry APM 알람
상시로 시스템 부하를 낮추기 위해, 로컬 캐시를 통한 백엔드 API 호출 최소화 / 브라우저 렌더링 최적화 / 번들링 최적화 등을 진행합니다.
소나큐브를 이용하여 Pull Request, 배포후 코드 등에 대해 정적 분석을 하여 코드 퀄리티를 지속적으로 관찰하고 개선합니다.
한번 발생한 장애에 대해서는 장애보고서를 공유하여 다른 개발자들이 같은 실수를 하지 않도록 방지/예방합니다.
매주 담당 파트가 모여 기술 공유 시간을 가지며, 이를 통해 각자가 해결한 기술 문제에 대한 공유와 토론을 진행합니다.
6개월에 한번씩 제품 개발 파트 전체 회고를 진행합니다.
진행했던 과제에 대한 소개와 아쉬운점/개선점등을 이야기합니다.
다음 반기에 진행할 과제들을 정리합니다.
이를 통해 제품 릴리즈에 몰두하느라 방향성을 잃는 일이 없도록 중심을 잡고 있습니다.

모바일 (React Native) 개발자로서 얻을 수 있는 것들

React Native 에 관한 유명한 컨텐츠라고 하면 Airbnb의 RN 이야기와 리디-라프텔 팀의 RN 이야기가 있습니다.
RN으로 시작하여 네이티브 앱으로 전환한 Airbnb
네이티브 앱으로 시작하여 RN으로 전환한 리디-라프텔
두 팀 모두 좋은 서비스를 만들었지만, 서로 다른 시작과 선택을 하게 된 것인데요.
이 과정에서 두 팀의 개발자분들은 정말 많은 성장을 할 수 있었을 것이라 생각합니다.
RN이라는 기술의 발전이 저희 서비스의 발전 보다 더 빨라서 RN을 계속해서 공부하고 개선해야될 수도 있습니다.
반대로 저희 서비스의 발전이 기술 보다 더 빨라 새로운 기술로의 전환이나 네이티브로 전환해야할 수도 있습니다.
어떤 기술이 가장 좋다 보다는 어떤 상황에 맞는 가장 적합한 기술과 아키텍처가 있다고들 합니다.
타사가 네이티브 앱으로 전환하기로 했다면 그건 무엇 때문일까?
타사가 RN을 선택했다면 그건 무엇 때문일까?
우리는 RN의 한계를 극복할 수 있지 않을까?
등등 여러가지 생각과 고민들을 직접 경험하면서 해결해나갈 수 있는 시간이 될 것이라 생각합니다.
인프런 서비스는 매년 2배이상의 폭발적인 성장을 하고 있습니다.
앞으로도 계속 이런 성장세를 유지한다면, 비즈니스의 발목을 잡지 않으면서 기술적 한계를 계속해서 격파해나가는 경험이 개발자에겐 큰 성장의 재료가 될 것이라 생각합니다.
그리고 각 단계별로 어떠한 기술적 결정이 내려질때 어떤 과정으로, 어떤 기준으로 이런 기술적 결정들이 내려지는지 바로 옆에서 경험하실 수 있습니다.
인프랩 개발팀은 아직 완성된 팀이 아닙니다.
그래서 모든 팀원이 성장에 대한 갈망을 가지고 있습니다.
조직에서는 이를 위해 정기적으로 시니어들의 기술적 공유를 흡수하는 시간을 갖고 있습니다.
정기적으로 좋은 코드, 좋은 소프트웨어를 만드는 방법을 CTO인 제가 공유하고 있으며
저 이외에도 외부의 좋은 시니어분들을 사내로 모셔 특정 주제로 특강을 받고 있습니다.
이외에도 사내 스터디 등을 동료를 통한 성장 역시 도모하고 있습니다.
좋은 팀원들과 함께 좋은 개발 문화속에서 성장하는 느낌을 얻고 싶으신 분들에게 저희팀은 좋은 선택지가 될 것 같습니다

마무리

저는 종종 KBL이나 생활 농구를 비롯한 농구 소식들을 보곤 하는데요.
꽤 오래전에 작성된 기사이지만, 저희가 중요하게 생각하는 지점을 그대로 표현하고 있어서 공유 드립니다.
손흥민 선수의 프리미어리그 대활약에 많은 국민들이 박수를 보냈다. 허나 손흥민 선수의 국가대표팀 활약은 미비한 수준이다. 국내 선수 중 손흥민 선수가 프리미어리그에서 가장 좋은 활약을 보이고 있으니 그에게 몰빵 축구를 하면 모든 게 해결될까? 이에 대한 답은 모두가 안다. 절대 그렇지 않다는 것을. 2옵션도 봐야 하고 3옵션 4옵션까지도 염두에 둬야 한다. 그 옵션들을 살릴 선수도 필요하다. 우리가 뛰고 있는 생활체육 농구도 마찬가지다. 화끈한 공격력이 있는 선수 출신 스타플레이어 한 명이 코트를 밟는다고 모든 경기를 이겨주진 못한다. 그를 도울 제2옵션 3옵션을 팀에서 연구하고 준비를 해야 한다.
저는 이 지점이 저희팀이 추구하는 방향과 참 닮았다고 생각했는데요.
슈퍼스타 개인의 퍼포먼스에 기대는 방식은 한계가 너무 명확합니다.
그 분이 퇴사만 해도 회사가 휘청거리기도 하니 더더욱 위험합니다.
그래서 저희는 이미 잘하는 사람이 와서 그 사람이 하자는대로 따라가는게 아닌, 합류한 사람들끼리 같이 성장하고자 하는 문화를 가지고 있습니다.
이런 문화 덕분에 바쁘게 비지니스 요구사항을 진행하는 와중에도 지속적으로 컨벤션 / 구조 / 스터디 등등을 공유하고 정리할 수 있었습니다.
여담이지만 부산 중앙고의 사례를 모티브로 한 웹툰 가비지타임 참 재밌습니다!
그동안 인프랩은 창립 이후 적은 인원으로 시작해서 해마다 꾸준하면서도 큰 폭으로 성장해왔습니다.
이 과정에서 구성원 개개인의 역량도 성장하고 새로운 팀원들도 다수 합류하고 있습니다.
하지만 시리즈 A 투자를 유치하고 현재 돌아보니 그동안 양적인 성장에 치중하여 소홀히 했던 부분들이 조금씩 눈에 띄기 시작하며 아쉬움이 남았습니다.
앞으로는 양적인 성장과 함께 질적인 성장도 놓치지 않고 사용자들에게 다양한 기능과 훌륭한 사용자 경험을 제공하는 서비스를 만들어보려고 합니다. 인프랩 모바일 (React Native) 개발 파트에 오셔서 즐겁게 일하고 함께 많은 걸 이루면 좋겠습니다!
긴 글 끝까지 읽어주셔서 감사합니다.
면접장에서 뵙겠습니다.
여기까지 채용 공고가 마음에 드셨다면, 아래 지원하기 버튼을 통해 지원해주세요

채용 과정

서류전형 → 기술과제 수행 →  실무면접 → 문화면접 → 최종협의
필요 서류를 준비하여 '지원하기'로 제출해주세요
1.
이력서 - 자유양식
2.
포트폴리오 - 자유양식
이력서가 접수되면 심사를 거쳐 서류전형 통과자에게 연락드립니다.
접수 마감일은 정해져 있지 않으며, 본 공고는 채용시 종료됩니다. 
Step 1 서류전형
이력서 & 포트폴리오(선택)를 제출합니다.
인프랩과 해당 직무에 지원하는 동기를 작성해주세요.
이력서가 접수되면, 지원서 검토 후, 7~10일 이내에 결과 안내 메일을 드립니다.
Step 2 과제전형
실무자로서의 역량을 확인하기 위한 과제 전형이 진행됩니다.
과제 제출 후, 7~10일 이내에 결과 안내 메일을 드립니다.
Step 3 1차 실무면접
입사 후 실제 협업하게 되는 동료들과 인터뷰를 진행합니다.
실무자로서의 역량과 경험, 소통 방식 등 직무 중심으로 인터뷰를 진행합니다.
서비스와 회사에 대해 궁금한 점을 충분히 물어보실 수 있으며, 지원하신 직군이 인프랩에서 어떻게 일하는지 이해할 수 있습니다. 인터뷰는 1시간~1시간 30분 정도 진행합니다.
Step 4 2차 문화면접
인프랩의 비전에 공감하고, 조직문화에 잘 적응할 수 있는지를 중심으로 인터뷰를 진행합니다.
어떤 비전을 생각하고 어떻게 나아가는지, 인프랩의 조직문화에 대해 궁금한 점을 물어보실 수 있습니다.
C-Level 과의 인터뷰로 1시간~1시간 30분 정도 진행합니다.
 회사에 대해 더 궁금하다면? 인프랩 채용 안내 보러가기  인프랩 팀의 기록이 담긴 인프랩-실록 보러가기  인프랩 복지를 소개해요

참고 사항

근무 시작 날짜는 조정 가능합니다.
수습 기간은 3개월입니다.
수습 기간 중 급여는 감액하지 않습니다.
궁금하신 점이 있다면 hiring@inflab.com으로 문의주세요.
재지원은 결과 통보일 기준 6개월 이후부터 가능합니다.
※ 포지션 지원은 하단의 버튼 혹은 지원하기를 클릭해주세요!
인프랩 채용 (지원하기)