본문으로 건너뛰기
면접 학습
복습세션 →

이력서 기반

토픽 7 · Phase 2

인성·소프트 스킬

질문 6개
  1. Q7-1

    기술 부채와 일정이 부딪힐 때 어떻게 해결하시나요?

    핵심 포인트

    • "둘 다 다 한다"는 답변은 비현실적 — 어떤 기준으로 양보·결합·연기하는지가 핵심
    • 본인 사례: Emotion v10 → v11 업그레이드를 패키지 재편 PR에 결합한 사례
    • 판단 축: 사용자 임팩트 / 안전망 유무 / 결합 가능성
    • 결합·연기·즉시 처리 세 가지 옵션을 사례별로 다르게 적용
    모범 답안먼저 답해보고 펼치기

    원칙은 단순합니다. 사용자에게 보이는 일정과 사용자에게 보이지 않는 시스템 건강성을 분리해서 우선순위를 매기되, 결합할 수 있으면 결합합니다.

    구체 사례를 말씀드리면, 멀티 프로덕트 패키지 재편을 진행하던 시기에 Emotion v10 → v11 메이저 업그레이드라는 별도 부채가 있었어요. 둘을 따로 진행하면 사용처에서 import 경로를 두 번 손대야 해서 동료 부담이 컸습니다. 그래서 한 PR에 두 변경을 결합했어요. 단, 결합의 정당화 조건이 있었습니다 — 시각 회귀 테스트라는 안전망이 미리 깔려 있어서, 어디가 깨지면 즉시 잡힐 수 있었어요. 안전망이 없었다면 결합을 포기하고 별도 PR로 분리했을 겁니다.

    다른 사례로, "이 부채는 지금 안 잡으면 6개월 뒤엔 못 자른다"는 신호가 있을 땐 일정을 일부 양보해서라도 잡았습니다. core 패키지를 product별로 자른 결정이 그 사례였어요. 반대로 "지금 잡든 1년 뒤 잡든 비용이 같다"는 부채는 일정을 우선했고요.

    결국 판단축은 세 가지입니다 — 사용자 임팩트, 안전망 유무, 결합 가능성. 이 세 가지를 동료들과 공유하고 결정 근거로 합의한 뒤 진행하면, 일정과 부채 둘 다 어느 정도 챙길 수 있다고 봅니다.

    이 답변, 어땠나요?

    꼬리 질문
    • Q-a. 일정이 빠듯한데 부채가 절대 못 미루는 수준일 때는요?

      PM·디자이너에게 "이 부채를 안 잡으면 다음 사이클에서 추가 비용이 N% 올라간다"는 데이터를 들고 협상합니다. 감으로 말하면 안 받아들여지고, 데이터로 말하면 양보 받기가 가능합니다.

    • Q-b. 결합 PR이 너무 커지면 리뷰가 어렵지 않나요?

      그래서 PR 안에서도 commit을 의미 단위로 분리합니다. "패키지 분리 commit", "Emotion 업그레이드 commit", "import 경로 일괄 변경 commit" 식으로 쪼개서, 리뷰어가 한 단위씩 따라갈 수 있게 했어요.

  2. Q7-2

    새 기술이나 라이브러리를 도입할지 판단하는 기준이 뭔가요?

    핵심 포인트

    • "최신이라서" "트렌드라서"는 답이 아니다 — 우리 문제를 정확히 푸는가가 핵심
    • 판단 축: 현재 문제의 명확성 / 대안과의 비교 / 메인테이너 건강성 / 마이그레이션 비용
    • 본인 사례: Recoil → Jotai 결정 과정 (Zustand·Redux Toolkit 비교)
    • 신중함과 결단력의 균형 — "안 도입한다" 결정도 동등하게 의식적
    모범 답안먼저 답해보고 펼치기

    순서가 정해져 있어요. 첫째, 지금 푸는 문제가 라이브러리 없이는 해결 못 하는 문제인가를 자문합니다. 단순 useState로 충분한 화면에 상태 관리 라이브러리를 넣지 않아요. 둘째, 여러 후보를 같은 기준으로 비교합니다. 도입 비용·러닝 커브·번들 사이즈·메인테이너 건강성·생태계 — 이 다섯 축으로 매트릭스를 만들어서 명시적으로 비교했어요. 셋째, 마이그레이션 비용을 본다. 신규로 도입하는 거라면 부담이 작지만, 기존 코드를 옮기는 거라면 6개월~1년 단위 작업이 될 수 있어요. 넷째, 메인테이너의 건강성. OSS는 메인테이너가 떠나면 끝이라 활동도·릴리스 주기·이슈 응답 시간을 본 뒤 결정합니다.

    구체 사례로, Recoil → Jotai 결정 때 Zustand·Redux Toolkit·Valtio까지 네 가지를 매트릭스로 비교했어요. Zustand는 store 단위 사고라서 atom 단위로 잘게 쪼갠 코드를 옮기는 비용이 컸고, Redux Toolkit은 보일러플레이트가 늘어 학습 곡선이 가팔랐습니다. Jotai만이 atom 모델을 1:1 매핑하면서 Recoil의 약점(key 충돌)을 보완하는 선택지였어요. 이 비교가 PR description에 표로 정리돼서 동료들이 의사결정 근거를 함께 검토할 수 있었습니다.

    반대로 안 도입한 사례도 많아요. use-context-selector는 Context value 일부만 구독할 수 있는 좋은 라이브러리인데, useMemo + React.memo로 우리 케이스에선 충분해서 의존성을 늘리지 않았습니다. "안 도입한다"는 결정도 도입만큼 의식적으로 합니다.

    이 답변, 어땠나요?

    꼬리 질문
    • Q-a. 신중하게 검토하다가 너무 늦게 도입하는 리스크는요?

      신중함이 의사결정 지연이 되면 안 되니까, "기술 도입 검토는 1주 안에 결론 낸다"는 셀프 룰을 둡니다. 1주 안에 결론 안 나면 데이터가 부족한 거지 검토 시간이 부족한 게 아니라고 봐요.

    • Q-b. 팀 내에서 새 기술 도입에 반대하는 사람이 있다면요?

      반대 의견에 데이터가 있는지 먼저 확인합니다. 데이터 있는 반대면 진지하게 받아들이고, 인상 기반 반대면 작은 spike로 검증해서 같이 결과를 봅니다.

  3. Q7-3

    동료와 의견이 다를 때 설득한 사례가 있나요?

    핵심 포인트

    • 설득 = 이기는 것이 아니라 공통 데이터 위에서 합의
    • 추상적인 사례 X → 구체 사례 1개를 골라서 짧게
    • 본인 사례 후보: VAC 패턴 도입, Recoil → Jotai 전환, Compound Component 패턴 채택, 디자인 시스템 패키지 재편
    • 결과 + 회고 (이렇게 하길 잘했다 / 다음엔 이렇게 하겠다)
    모범 답안먼저 답해보고 펼치기

    디자인 시스템 v2를 Compound Component 패턴으로 전환할 때의 사례가 가장 잘 기억나요. 일부 동료들이 v1의 단일 Props 방식이 익숙하고, 새 패턴은 학습 비용이 든다는 이유로 처음에 반대 의견을 줬어요. 단순히 "Compound가 더 좋다"고 우기지 않고 두 가지를 했습니다.

    첫째, 데이터로 보여줬어요. v1에서 prop이 10개 넘어가는 컴포넌트들이 어떤 화면 변형 요구에 막혔는지를 실제 PR 리스트로 정리해서 공유했습니다. "이 16개 PR 중 N개가 prop 추가만으로는 해결 안 돼서 컴포넌트를 fork했다"는 식으로요. 둘째, 작은 spike로 직접 써보게 했어요. v2 후보 컴포넌트(Accordion) 한 개를 먼저 만들어서 storybook에서 v1과 v2를 나란히 띄워두고, 동료들이 직접 마크업을 작성해 본 뒤 의견을 받았어요. 직접 써본 동료들의 80% 이상이 "확실히 v2가 자유롭다"는 피드백을 줬고, 그 시점부터는 도입에 대한 합의가 자연스럽게 만들어졌습니다.

    회고하자면, 추상적인 주장보다 작은 검증 결과 한 개가 훨씬 강하게 합의를 만든다는 걸 배운 사례였어요. 다음에 비슷한 결정을 할 때도 spike → 직접 써보기 → 합의의 순서로 가려고 합니다.

    이 답변, 어땠나요?

    꼬리 질문
    • Q-a. 그래도 끝까지 반대하는 동료가 있다면요?

      데이터 위에서 합의가 안 되면 결국 의사결정자(테크 리드·매니저)에게 결정을 위임합니다. 다만 그 단계까지 가기 전에 작은 spike로 데이터를 만드는 게 거의 모든 케이스에서 충분했어요.

    • Q-b. 본인이 틀렸을 가능성은 어떻게 검증하나요?

      spike 단계에서 "이 패턴이 안 맞으면 어떤 시나리오가 생길까"를 의도적으로 찾아봅니다. 반대 의견을 자기 검증의 입력으로 받는 자세가 핵심이에요.

  4. Q7-4

    가장 큰 실패 또는 후회되는 의사결정이 있다면요?

    핵심 포인트

    • "실패 없습니다"는 가장 나쁜 답 — 자기 인식이 부족하다는 인상
    • 진짜 실패 + 학습 + 다음에 어떻게 다르게 할지의 3단 구조
    • 너무 거대한 실패(서비스 장애)보다 본인 의사결정의 실패가 솔직하게 들림
    • 후회 사례 후보: v1을 너무 일반화 욕심으로 만든 것, Lerna 선택의 한계, 결합 PR로 디버깅 어려웠던 경험
    모범 답안먼저 답해보고 펼치기

    가장 후회되는 결정은 디자인 시스템 v1을 처음 만들 때 일반화 욕심을 너무 부린 것이에요. "한 컴포넌트가 가능한 모든 변형을 prop으로 받을 수 있게 하자"는 사고로 시작했는데, 6개월쯤 지나니 prop이 10개 넘는 컴포넌트가 생겼고 동료들의 학습 비용이 누적됐습니다. 결국 v2에서 Compound Component 패턴으로 전면 개편하는 비용을 치렀어요.

    학습 두 가지가 있었습니다. 첫째, 추상화는 미래의 모든 케이스를 예측하려고 시도하면 실패한다는 것. 추상화는 3번 이상 반복되고 변화 축이 같을 때 가치 있고, 처음부터 만능 컴포넌트를 설계하는 건 오버엔지니어링이라는 걸 체감했어요. 둘째, API 설계는 prop이 아니라 마크업으로 표현되는 게 자유도가 높다. JSX 트리 자체가 사용자에게 자유도를 주는 인터페이스라는 사고가 v1 시점엔 없었습니다.

    지금 다시 한다면, MVP는 가장 단순한 prop 형태로 만들고, 변형 요구가 3번 이상 누적되는 시점에 Compound로 진화시키는 점진적 설계로 가겠습니다. v1의 학습 덕에 v2에서는 그 균형을 더 잘 잡을 수 있었습니다.

    이 답변, 어땠나요?

    꼬리 질문
    • Q-a. 이 학습이 다른 결정에 어떻게 적용됐나요?

      그 이후로 새 컴포넌트를 만들 때 "지금 필요한 prop만 받자, 변형 요구가 3번 들어오면 그 때 Compound로 진화시키자"는 룰을 명시적으로 두고 있어요. 과제(기차예약)에서도 같은 사고가 적용됐습니다.

    • Q-b. 회사 안에서 회고를 어떻게 공유하나요?

      같은 PR description의 회고 섹션에 한 줄로 남기고, 분기 단위 팀 retrospective에서도 공유합니다. 실패 자체보다 "이걸 배웠다"가 팀 자산이 되도록.

  5. Q7-5

    어떤 동료와 일할 때 본인이 가장 잘 일하나요? 본인의 협업 스타일은요?

    핵심 포인트

    • 회사 컬쳐와 본인 핏을 자연스럽게 연결
    • 본인 스타일: 데이터·작은 검증 위주의 의사소통 / 솔직함 / 동료 학습 비용 의식
    • 어떤 동료를 좋아하는지 = 어떤 동료가 되려고 하는지의 거울
    모범 답안먼저 답해보고 펼치기

    의견을 데이터·작은 검증으로 표현하는 동료와 가장 잘 맞습니다. "이게 좋다고 느낀다"보다 "이걸 spike로 해봤더니 이런 결과가 나왔다"는 식의 의사소통이요. 추상적인 주장만 오가는 회의는 시간 낭비라고 생각하고, 작은 검증을 만들어 와서 같이 보는 자리가 합의가 가장 빠르다는 걸 여러 번 경험했어요.

    협업 스타일은 세 가지로 정리됩니다. 첫째, PR description에 의사결정 근거를 길게 씁니다. "왜 A를 골랐고 B는 안 골랐는지"를 명시해서 미래의 동료(또는 미래의 나)가 맥락을 잃지 않게요. 둘째, 솔직하게 말합니다. 모르는 건 모른다고 하고, 잘못된 결정이었으면 회고를 빠르게 공유합니다. 셋째, 동료의 학습 비용을 항상 의식합니다. 새 패턴을 도입할 때 마이그레이션 가이드부터 같이 만드는 게 습관이에요.

    토스는 외부에서 봐도 데이터·솔직함·학습 비용 의식 세 가지를 강하게 공유하는 컬쳐라는 인상을 받았고, 그게 제 스타일과 자연스럽게 겹치는 부분이라 지원에 대한 자신이 있었습니다.

    이 답변, 어땠나요?

    꼬리 질문
    • Q-a. 반대로 같이 일하기 어려운 동료 유형이 있다면요?

      의견을 인상으로만 강하게 주장하시는 분과는 합의 만드는 데 시간이 더 들어요. 그 경우엔 제가 먼저 spike를 만들어서 같이 보자고 제안하는 식으로 풀어 갑니다.

    • Q-b. 본인이 동료에게 받는 피드백 중 자주 듣는 것은요?

      "의사결정 근거가 길게 정리돼 있어 합의에 도달하기 좋다", "코드 외에 시스템 관점을 같이 본다"는 피드백을 자주 받았어요. 동시에 "더 빠르게 결정하고 진행해도 된다"는 의견도 받아서 단기 출력 속도를 의식적으로 높이려고 합니다.

  6. Q7-6

    일정이 빠듯해서 모든 걸 다 못 할 때 우선순위는 어떻게 정하나요?

    핵심 포인트

    • 우선순위 기준 사용자 임팩트 → 안전성 → 동료 DX → 본인 만족도
    • 명시적으로 자르고 명시적으로 보존하기 — "이건 안 합니다"를 동료들에게 알리는 게 핵심
    • "다 한다"는 답은 인상 나쁨
    모범 답안먼저 답해보고 펼치기

    다 못 한다는 사실을 가장 먼저 인정합니다. 그 다음 우선순위 기준을 명시적으로 세웁니다. 제 기준은 사용자 임팩트 → 안전성 → 동료 DX → 본인의 코드 만족도 순이에요. 단기 일정에서는 본인의 코드 만족도를 가장 먼저 양보합니다.

    구체 사례로, 디자인 시스템 v1을 출시할 때 "30개 컴포넌트를 다 만들고 싶다"는 욕심이 있었는데, 일정상 20개로 잘랐습니다. 자르면서도 사용처 빈도가 높은 것 위주로 남겼고, 안 만든 10개는 "다음 분기 작업"이라고 명시적으로 백로그에 등록했어요. 동료들에게 "지금은 이 20개만 가능합니다"를 분명히 알린 게 핵심이었습니다.

    명시적으로 자르지 않으면, 동료들은 "곧 나오겠지"라고 기대하고 본인은 일정 압박에 시달리는 회색 지대가 생겨요. 그래서 자를 땐 자른다고 알리고, 보존할 땐 보존한다고 알리는 게 일정 관리의 절반이라고 봅니다.

    이 답변, 어땠나요?

    꼬리 질문
    • Q-a. 우선순위 협의가 매번 잘 되나요? PM이 다 해달라고 한다면요?

      그 경우는 "우선순위를 정해주시면 그 순서대로 가능한 만큼 합니다"라고 역으로 던집니다. 우선순위 결정의 책임을 PM에게 명시적으로 넘기는 거예요. 그러면 PM도 모든 걸 1순위로 두지 않게 됩니다.

    • Q-b. 본인의 코드 만족도를 양보한다는 게 구체적으로 뭔가요?

      예를 들어 "이 컴포넌트의 추상화를 더 깔끔하게 하고 싶다"는 욕구가 있어도, 사용자 영향이 없는 영역이면 다음 사이클로 미룹니다. 일정 안에선 "동작하고, 안전하고, 동료가 쓸 수 있다"가 충분 조건이에요.