스타트업에서 새로운 커리어를 시작한다는 선택을 내리기 이전에 정말 많은 고민의 시간이 존재한다는 것을 잘 알고 있습니다. 그래서 우리는 천명 개발팀이 어떻게 일하고, 어떤 문화를 갖고 있으며, 무엇을 추구하는지에 대해서 있는 그대로, 가장 진솔하게 전달하고자 합니다.
우리는 조인이라는 결코 쉽지 않은 판단을 내리기 이전에, 합류하고자 하는 팀에 대해서 잘 알고 있어야 가장 올바른 선택을 내릴 수 있을 것이라고 굳게 믿습니다.
그래서 소개합니다. 천명 개발팀은 어떤 모습인가요?
아래 목차를 클릭하시면 해당 항목으로 빠르게 이동하실 수 있어요!
천명 개발팀이 비즈니스 성장을 리드하는 방법
우리는 기술을 통해서 미개발된 점술 시장을 혁신합니다
1.4조원 점술 시장에서 일어나는 거래의 97%는 현재 직거래를 통해서 일어나는만큼, 천명팀이 점술 시장을 독점하기 위해서는 기존 직거래에서 결코 이용할 수 없는 편리하고 만족스러운 기능을 제공하여 기존 직거래보다 10X 나은 고객 경험을 줄 수 있어야 합니다. 따라서 천명 개발팀은 점술 시장의 소비자와 공급자 모두가 ‘따로 거래할 때보다 천명을 이용하는 것이 훨씬 더 만족스럽다'라는 생각이 들 수 있을만큼 유저 경험을 혁신하는 프로덕트를 제공하는데 집중하고 있습니다.
상담 전, 상담 중, 상담 후의 모든 소비자 여정을 강력하게 혁신하기 위해 천명 개발팀은 직거래에서 유저들이 겪는 페인 포인트를 기술을 통해 해결했습니다. 아래는 천명 개발팀이 만들어낸 자랑스러운 기능과 서비스들의 예시입니다.
우리는 지금까지 이러한 서비스를 만들었어요!
소비자 경험에 집중하여 강력한 비즈니스 임팩트를 만들어낼 수 있는 기능과 서비스를 현실로 만들어내며, 우리는 천명 비즈니스가 1.4조원 점술 시장을 독점할 수 있도록 최전선에서 리드하고 있습니다. 2년이라는 짧은 시간 내에, 우리가 이러한 기능과 서비스를 구현할 수 있었던 이유는 ① 적극적으로 최신 트렌드의 기술을 도입했고, ② 린하게 유저 니즈를 프로덕트에 녹여낼 수 있도록 ‘우리가 일하는 방식’에 대해 적극적으로 고민/실험/업데이트했으며, ③ 팀원 하나 하나가 굉장히 스마트하고 성장에 목말라 있는 사람들로만 구성되어 있었기 때문입니다.
천명 개발팀의 꿈은 ‘국내에서 가장 뛰어난 개발자 집단의 표본’이 되는 것입니다. ① 매순간 기술의 최신성과 안정성을 유지하고, ② ‘유저 경험 혁신’이라는 가치를 실현하기 위해 더욱 더 빠르게 프로덕트를 업데이트하는 방향으로 우리의 조직 문화를 혁신하며, ③ 이러한 가치에 공감하는 뛰어난 인재만이 천명팀 내에 존재할 수 있도록 만들고자 합니다. 천명 개발팀의 꿈과 비전에 가슴이 뛰신다면 지금 바로 천명이라는 로켓에 탑승하세요!
천명 개발팀은 이렇게 일해요
천명팀의 모든 엔지니어는 매트릭스 구조에 속해 있으며, 본인이 속한 ① 스쿼드, ② 챕터의 목표를 딜리버합니다.
천명팀의 Multi-functional한 목적 조직은 스쿼드라 불리며, 천명팀의 엔지니어는 PO/PM/PD/Biz Team과 함께 프로덕트 리드로 비즈니스 성장에 가장 핵심적인 문제를 해결합니다. 각 스쿼드를 통틀어 같은 직무를 하는 구성원들은 ‘챕터’라 불리며 기술의 최신성과 안정성을 유지하기 위해 챕터 리드의 목표를 달성합니다.
천명팀의 엔지니어는 스쿼드의 목표를 달성하기 위해서 이렇게 일해요!
기술적인 전문성에 기반한 인풋, 인사이트 공유
천명팀의 엔지니어는 스쿼드의 일원으로서 공동의 목표를 달성하기 위해 기술적인 전문성을 바탕으로 강력한 인풋, 인사이트, 피드백을 전달합니다. 엔지니어의 시각에서 기술이 미칠 수 있는 비즈니스 임팩트를 공유하고, 스쿼드 내에서 Align된 우선순위에 따라 유저에게 더 빠르게, 더 큰 가치를 전달할 수 있도록 강력한 기능과 서비스를 만듭니다.
기술 선택의 권한
천명팀의 엔지니어는 유저에게 최고의 경험을 제공하기 위한 다양한 기술을 자율적으로 탐색하고, 본인이 선택한 기술을 적용할 수 있는 권한을 갖습니다. 기술의 최신성과 지속가능성 등을 고려하여 적정 기술을 선택하며, 기술의 장단점을 충분히 인지한 상태에서 원하는 기술을 사용합니다.
천명팀의 엔지니어는 챕터의 목표를 달성하기 위해서 이렇게 일해요!
코드리뷰
좋은 PR을 위해 같은 챕터의 엔지니어가 리뷰어로 참여하여 코드를 검증하고 리뷰합니다. 코드는 정리된 커밋과 적절한 단위로 분리합니다. 이슈에 정리되어 있는 내용을 바탕으로 코드가 구현하고자 하는 기능의 목적 및 맥락을 고려할 때 가장 적합하게 짜여져 있는지, 챕터/펑션 내 컨벤션과 인라인한지 검토합니다.
스크럼
엔지니어가 각 스쿼드에 속하며 일하는 만큼, 챕터별 싱크를 맞추기 위해 주기적으로 스크럼 미팅을 갖습니다. 챕터가 주/월/분기에 달성해야할 목표, 본인이 현재 맡고 있는 프로젝트의 진행 상황 및 기술적인 어려움을 공유합니다. 모든 엔지니어는 동료의 성장은 자신의 성장이라 믿고, 하나의 팀처럼 협업합니다.
문서화
천명 개발팀은 문서 없는 코드는 죽은 코드라고 믿습니다. 프로젝트가 완료된 이후, 기능 아키텍처를 개발팀 Notion에 상세히 정리합니다. 이렇게 정리한 문서는 새롭게 조인한 팀원이 천명 개발팀과 싱크를 맞춰 일할 수 있는 강력한 기반이 됩니다. 이외에도 개발팀 노션에는 빠른 동기화와 공유를 위해 챕터별로 달성해야할 기술적인 타겟, 프로젝트를 진행하며 얻은 인사이트를 공유하는 Lightning Talk, 장애 히스토리 등이 정리되어 있습니다.
천명 개발팀의 문화를 소개합니다
천명팀의 모든 엔지니어는 동료의 성장은 곧 자신의 성장이라고 믿습니다.
Tech Lunch
빠르게 변화하는 기술 트렌드를 선도하는 엔지니어 집단이 되기 위해, 외부 컨퍼런스나 기술 블로그 등을 참고하며 점심 시간에 원하는 사람들끼리 모여 자유롭게 주제를 정하고 토론하는 비정기 세션을 갖습니다. 이는 천명 개발팀이 기술로써 비즈니스 성장을 이끌 수 있는 강력한 원동력이 됩니다.
Learning Session
스스로 관심을 가져서 스터디를 한 내용이나 프로젝트를 진행하며 얻게 된 인사이트를 30분 ~ 1시간 정도 발표하는 세션을 갖습니다. 이 세션을 통해 팀 내 기술부채나 레거시를 점검하고, 이를 해결하기 위한 Next Step을 정의합니다. 현재까지의 러닝세션은 발표를 준비하는 개인부터 세션에 참여하는 구성원까지 팀 전반의 기술적인 성장을 촉진하는데 강력한 영향을 끼쳤고, 우리는 이를 문화로서 계속해서 가져가고자 합니다.
기술 블로그
① 10배 나은 사용자 경험 제공을 위해 노력하며 얻은 기술적인 노하우나, ② 많은 개발자들이 궁금해하지만 레퍼런스가 거의 없는 케이스에 대한 문제 해결 경험을 기술 블로그에 작성합니다. ‘개발자는 함께 성장한다’라는 가치 하에, 팀 내에서 작성에 대한 별다른 요구가 없음에도 불구하고 재미있게 작성하고 있습니다.
천명 개발팀은 추구해요
천명 개발팀의 Core Value는 개발팀이 가장 폭발적인 퍼포먼스를 보일 때 팀원들이 보이는 모습의 총체입니다. 개발팀의 강력한 실행을 가능케하는 근본 가치로, 개발팀 모든 구성원의 합의를 기반으로 만들었습니다.
Growth
•
우리는 빠르게 변화하는 기술 시장에서 선구자가 되기 위해 끊임없이 노력합니다.
•
우리는 적극적인 외부 행사 참여와 사내 스터디 참여를 지향합니다.
•
우리는 서로의 성장을 위해 주도적으로 각자의 지식을 공유합니다.
Excellence
•
우리는 우리가 작성하는 모든 코드가 항상 고객과의 최접점에 맞닿아 있다고 믿습니다.
•
우리는 항상 고객에게 가장 높은 품질의 프로덕트를 제공하기 위해 노력합니다.
Nonstop Impact
•
우리는 언제나 현재 상황에서 무엇이 중요한지 파악하고, 그 우선순위에 따라 행동합니다.
•
우리는 항상 긍정적인 임팩트를 끼치기 위해 주도적으로 행동합니다.
Team Player
•
우리는 컴퓨터와 대화하는 사람이 아닌 다른 팀과 협업하며 시너지를 만들어내는 사람입니다.
•
우리는 정확한 추산을 기반으로 불필요한 커뮤니케이션 비용을 최소화합니다.
•
우리는 다른 개발팀 구성원의 불필요한 반복 업무를 방지하기 위해 항상 문서화합니다.
Living Legacy
•
우리는 주기적인 프로세스 개선을 통한 최상의 생산성을 추구합니다.
•
우리는 주기적인 회고를 통해 더 나은 프로세스를 탐색합니다.
•
우리는 잘 짜인 문서에서 좋은 개발 문화가 피어난다고 믿습니다.
•
적극적인 문서화로 같은 에러가 발생하지 않도록 합니다.
Enjoyment
•
우리는 우리가 천명, 그리고 개발팀의 일원이라는 사실이 만족스럽고 즐거울 수 있도록 최선의 노력을 다합니다.
•
악영향을 끼칠 수 있는 범위를 제외하고, 개발팀 구성원이 재미를 느낄 수 있는 모든 시도를 응원하고, 지원합니다.
•
우리는 언제나 모든 개발팀 구성원이 행복할 수 있도록 우리의 손으로 문화를 만듭니다.
천명 개발팀 구성과 미션 및 기술 스택
천명 개발팀은 ① Frontend, ② Backend, ③ Data Chapter로 구성되며, 동일한 개발팀이지만 각 Chapter만이 딜리버할 수 있는 독자적이면서 유의미한 밸류를 만들어내기 위해 Chapter 별로의 미션을 수행하고 있어요.
Frontend Chapter
1. Chapter Mission
•
유저와 가장 밀접하게 맞닿아있는 프론트엔드 챕터는 항상 유저의 관점에서 생각하며, 최고의 프로덕트/서비스 이용 경험을 제공하는데 집중합니다.
•
끊임없는 토론을 통해 빠르게 성장하는 비즈니스 요구를 맞추는 동시에 팀 내에서 정의된 개발 컨벤션을 지키며 유지보수하기 용이한 코드를 만듭니다. 프론트엔드 챕터는 PR에서 활발한 리뷰를 나누는 것을 중요한 덕목으로 생각합니다. 지속적인 상호 피드백은 빠르게 변화하는 프론트엔드 생태계에서 최신성과 안정성 두 마리 토끼를 잡을 수 있도록 만들기 때문입니다.
•
프론트엔드 챕터에서 개발하는 서비스는 4개의 웹으로 구성되어 있고, 이 중 3개의 웹이 웹뷰 환경에서 동작합니다. 웹뷰와 웹 사이에서 필요한 정보들은 이해하기 쉬운 인터페이스를 제작하여 주고 받습니다. 웹프로젝트들은 재사용성과 변경 가능성을 고려하여 컴포넌트가 설계되어 있으며, 각 프로젝트별로 자주 쓰이는 모듈은 공통 유틸로 관리합니다. 최상의 효율과 생산성을 만드는데 집중하고 있습니다.
•
어느 환경에서든 사용자에게 빠르게 서비스를 제공하는 것은 프론트엔드 챕터의 중요한 미션입니다. Core Web Vital과 Lighthouse Performance 수치를 지속적으로 모니터링합니다. 기능 개발만큼 성능 최적화 작업도 높은 우선순위를 지닙니다.
•
크로스 브라우징 환경에 매끄럽게 대응하며 어떤 기기에서든, 어떤 OS에서든 천명 서비스를 만족스럽게 이용할 수 있도록 개발합니다. 천명의 고객, 선생님 모두 연령층이 몹시 다양한만큼, 각 세그먼트 별로 사용하는 환경을 모두 고려하여 서비스를 제공합니다.
2. Tech Stack & Business Tool
•
언어 Typescript
•
IDE Visual Studio Code
•
프레임 워크 & 라이브러리 React, Nextjs, Jotai, React-Query, Styled-Components
•
기타 Tool Github Action, Eslint, Sentry
•
협업 Tool Notion, Slack, Figma, Github
Backend Chapter
1. Chapter Mission
•
서버 안정성은 긍정적인 유저 경험을 위해 필요한 1번 가치입니다. 또한 고가용성의 서버를 유지하기 위해 모니터링 시스템을 적극 활용하여 문제가 발생하기 전 장애 유발 요인을 선제 대응합니다.
•
현재는 Monolith, Layered Architecture 기반으로 프로젝트가 구성되어 있으며, 객체지향적인 소프트웨어 설계와 유지보수성의 향상을 위해 Domain Driven Design(DDD) 기반으로 아키텍처를 변경하고 있습니다.
•
잘 만들어진 문서는 좋은 코드의 근간이 된다고 굳게 믿습니다. 각 도메인간 상호작용과 역할, 책임을 한눈에 파악할 수 있는 문서화를 활발히 진행합니다.
•
한 기능을 개발하기 위해서는 테이블 설계 및 인프라 설계, 코드 레벨에서의 아키텍처에 대한 결정을 내려야 합니다. 본인이 속한 스쿼드의 기능이 아니더라도 PR과 코드 리뷰를 통해 전체 프로젝트에 기여할 수 있습니다.
•
무엇보다 중요한 것은 사용자에게 지속적으로 비즈니스 임팩트를 전달하는 것이기 때문에, 스쿼드 내에서 PO, PM, PD에게 강력한 인풋을 전달하며 사용자에게 정말로 필요한 기능을 찾고 개발하는 경험을 합니다.
•
서비스가 빠르게 성장하고 개발팀의 사이즈가 커지면서, 기존의 기능 개발 위주의 소프트웨어를 유지보수하기 좋은 아키텍처로 개선해나가고자 합니다. 더 나은 코드에 대해 함께 고민하고 개선해나갈 수 있는 분을 찾고 있습니다.
2. Tech Stack & Business Tool
•
언어 & 프레임워크 TypeScript, Node.js, Nest.js, Express, TypeORM, Sequelize, Socket.io
•
데이터 엔진 PostgreSQL, Redis, Elasticsearch, RabbitMQ, SQS
•
실행 환경 K8S, Docker, EKS, EC2
•
기타 Tool Swagger, Eslint, Github Action, Datadog
•
협업 Tool Notion, Slack, Figma, Github
현재 아래 스택으로 마이그레이션 진행 중이에요!
Data Chapter
1. Chapter Mission
•
데이터 챕터는 천명팀이 매순간 데이터에 기반하여 최고의 비즈니스 의사결정을 할 수 있도록 리드합니다. ‘점술’과 관련된 데이터는 전세계에서 천명팀이 가장 깊게 이해하고, 가장 유의미하게 활용하고 있으며 이것이 가능한 근간에는 데이터 챕터가 있다는 사실에 매순간 자부심을 느끼며 일합니다. 점술 시장 및 유저 전방위의 데이터를 수집, 분석하여 높은 수준의 비즈니스 임팩트를 만듭니다.
•
실제 비즈니스 상에서 마주하는 데이터는 정제되어 있지 않으며 섬세하지 않습니다. 주어진 정보는 불분명할 수 있으며, 때로는 문제를 직접 정의하여 데이터를 가공 및 분석해야 합니다. 그러나 비즈니스 임팩트는 언제나 본질을 꿰뚫습니다. 천명의 데이터 챕터는 스마트한 질문과 정의를 통해 데이터의 이면에 있는 사용자의 핵심 정보를 주도적으로 파악합니다. 그리고 이 ‘핵심’을 뛰어난 팀원들과 함께 재미있게 프로덕트와 비즈니스에 녹여내며, 가장 어려운 문제를 풀어낸만큼 강력한 임팩트를 매순간 두 눈으로 확인할 수 있습니다.
•
강력한 데이터 수집 파이프라인을 기반으로, 고객에게 개인화 추천 시스템(Personalized Recommender System)을 제공합니다. 점술 시장의 97%를 차지하고 있는 ‘직거래 유저’들은 ① 지인에게 점술인을 추천받고, ② 해당 점술인에게 상담을 받습니다. 대부분의 직거래를 천명 서비스로 대체하기 위해, 우리는 직거래보다 10X 만족스러운 소비자 경험을 천명 서비스에서 제공하고자 하며, ‘지인 한 명의 주관적인 추천’보다 10X, 100X 신뢰도 있고 만족스러운 ‘머신러닝 베이스의 개인화된 추천’을 통해 기술로써 천명 비즈니스의 점술시장 독점을 리드하고자 합니다.
2. Tech Stack & Business Tool
•
공통 인프라 AWS, Kubernetes
•
언어 SQL, Python
•
데이터 ETL 파이프라인 Glue, Kinesis Data Firehorse, S3
•
로그 수집 웹 SDK React, TypeScript
•
기타 Tool Jupyter Notebook, Docker
•
협업 Tool Notion, Slack, Github
천명 개발팀은 지금 채용 중!
Open Positions
Update: 2023.12.06
Chunmyung & Company Inc.