39P by xguru 2021-07-12 | favorite | 댓글 7개

- 연 매출 100억 규모 Mid-Stage 스타트업에 4명 정도 소규모 데이터 팀을 키우기 위해 합류한 사람의 이야기
- 몇 번의 경험에 의한 비유적인 글이며, 편향적*일 수 있으니 고려하고 읽을 것

7월 1일 : 아침
- 데이터팀 책임자로 출근 첫날
- CMO와 인사
ㅤ(CMO는 내가 왔다는 사실에 매우 흥분하고 있음, 자기 친구네 회사가 AI를 이용해서 고객 세그멘테이션을 하고 있는데 멋져 보인다고 얘기함)
ㅤ(간단한 얘기 후 마케팅팀의 데이터 프랙티스를 조사)
ㅤDATA: "고객 확보 비용 (CAC)은 어떤가요 ?"
ㅤCMO: "음.. 실제로 아주 훌륭해요. 우리 데이터 사이언티스트가 수치를 측정해보니 클릭당 비용이 점점 줄고 있어요"
ㅤDATA: (모든 데이터 사이언티스트는 데이터 팀에 보고한다고 들었는데, 다른 조직에 데이터 사이언티스트가 있다고?)
ㅤCMO: "진짜 문제는 Growth 팀이 우리가 사이트로 가져오는 트래픽을 다 전환시키지 못한다는 거에요"
ㅤDATA: "컨버전 퍼널을 볼수 있는 대시보드가 있나요 ?"
ㅤCMO: "리드를 전환하는 건 Growth 팀의 일이잖아요."

- Product Manager 중의 한명과 대화
ㅤ시작 페이지를 전체 재설계한 PM은 사용자 등록수가 14%나 증가했다고 흥분했음
ㅤDATA: "그 숫자의 차이가 통계적으로 유의미 한가요 ?"
ㅤPM: "그건 내 일이 아니고 당신의 팀이 할 일이죠"
ㅤPM: "우리가 전에 물었을 때는, 데이터 팀에서 데이터가 없다고 얘기했고, 데이터를 얻는데 몇달이 걸릴 거라고 했어요"
ㅤPM: "놀라운 건 이걸 인크리멘털하게 변경하지 않았다는 거에요. 우린 이 변경에 대해서는 A/B테스트를 하지 않기로 했어요. 가끔은 극값(Local Maxima) 를 벗어 나기 위해선 큰 베팅을 해야해요."
ㅤPM: "스티브 잡스는 iPhone 런칭할때 A/B 테스트를 하지 않았어요. 우리 팀은 마감 2일전에 이걸 런칭했고, 그게 중요한거죠!"
ㅤDATA: (바빠 보이는 척 노트에 끄적인다)

- 새로운 팀 멤버들과 대화
ㅤ→ 3명 팀이지만 연말까지 10명으로 늘릴수 있는 예산을 받았음
ㅤ→ 내가 와서 팀원들은 흥분한 듯
ㅤ→ 기존에 만든 것들을 보여줌. 꽤 많은 것들이 있고 그 중 일부는 멋짐
ㅤㅤ✓ 사용자 이탈 예측(Churn Prediction)을 위한 신경망
ㅤㅤ✓ 관련 상품 추천 시스템이 구현된 노트북
ㅤ→ 많은 코드가 다양한 시스템에서 데이터를 가져와야 하는 매우 복잡한 전처리 단계로 시작
ㅤㅤ✓ 이 작업중 일부를 수행하려면 올바른 순서로 수동으로 실행해야 하는 여러 스크립트가 있는 것 같음
ㅤ→ 팀원들에게 왜 프로덕션에 도입하지 않았는 지를 묻자
ㅤㅤ✓ 엔지니어들이 이걸 프로덕션 레벨로 하려면 매우 큰 프로젝트라고 얘기함
ㅤㅤ✓ Product Manager 가 백로그에 넣기는 했지만, 다른 일이 계속 발생해서 미뤄지는 중
ㅤㅤ✓ 이를 위한 경영진의 지원이 필요하다고 얘기함

7월 1일 : 오후
- 공급망 책임자(Head of Supply Chain)와의 대화 ( 그는 CMO 만큼은 흥분하진 않는듯 )
ㅤ"솔직히 데이터 팀의 도움이 필요한지 모르겠어요"
ㅤ"우린 그런 종류의 문제가 없거든요. 우리에게 필요한 건 비즈니스 분석가에요"
ㅤ"저에게는 전체 팀이 있고, 그들은 매우 복잡한 모델에 작업하는데 매일 몇시간씩 쓰고 있어요"
ㅤ"그들은 내가 가진 기본적인 질문에 대답할 시간조차 없어요."
ㅤ"전 답변을 구하고 싶은 질문들로 가득 찬 스프레드 시트가 있어요"

ㅤ(스프레드 시트를 보니 이런 것들이 있다)
ㅤ"고객이 티켓을 발행하고 1시간 내에 해결된 고객과, 1시간 이후에 해결된 고객의 전환율 비교를 주문 금액 $100 달러 간격으로 분류하기"

ㅤ(모델에 대해 물어보니)
ㅤ- 수많은 VLOOKUP 들로 구성된 구글시트에 올바른 형식으로 알맞는 탭에 복사 해야하는 것 같음
ㅤ- 데이터는 매일 업데이트 되고, 모델의 출력에 따라 팀의 그날 우선순위가 결정
ㅤ- 공급업체(벤더)들에게 나가는 비용도 스프레드 시트로 계산하고 있음

(집에 가서 위스키 한잔을 가득 따른다.. )

[ 무슨 일이 있었던 걸까 ?]
- 이건 기본적으로 데이터 성숙 단계에 있는 초기의 많은 회사에서 일어나는 일에 대한 (다소 냉소적인) 묘사임

- 데이터 부족 및 조각난 데이터
ㅤ→ 제품이 제대로 계측(Instrumented) 되지 않아서 데이터가 처음부터 존재하지 않는 경우가 많음
ㅤ→ 데이터가 여러 시스템에 분산되어 있는 데이터 시스템 단편화
ㅤ→ 데이터 드리븐으로 실행은 되지만 자동화가 거의 또는 전혀 없는 취약한 비즈니스 프로세스

- 데이터 팀의 업무가 무엇 인지에 대한 불명확한 기대
ㅤ→ R&D를 하고 AI를 배포하기 위해 고용된 데이터 사이언티스트 - 결과적으로 명확한 비즈니스 목표가 없음
ㅤ→ 데이터팀은 ML을 프로덕션화하기 어렵다고 불평하지만, 정작 제품팀은 그 기능에 별로 신경을 쓰지 않음
ㅤ→ "English-to-SQL 번역기"가 필요한 사람들

- 데이터 드리븐 트레이닝이 되지 않은 제품팀
ㅤ→ 프로덕트 매니저는 데이터를 더 좋은 기능을 구축하기 위한 도구로 생각하지 않음
ㅤ→ 제품팀이 구축하고자 하는 것과 데이터팀이 가진것 사이의 얼라인이 부족

- 근본적으로 데이터 중심 문화와 상충하는 문화
ㅤ→ 측정 가능한 발전과 학습을 축하하는게 아닌 배포(Shipping)를 축하하는 문화
ㅤ→ 실제로 메트릭을 사용하는 팀들도 일관되지 않고, 측정이 제대로 이루어지지 않으며, 경우에 따라선 다른 팀과 충돌함

- 데이터 리더십 없음
ㅤ→ 다양한 데이터 인력들이 여러 다른 부서(기능)들에 보고하는 분열된 데이터 조직
ㅤ→ 다른 부서들은 필요한 도움을 받지 못하므로 데이터 팀을 둘러싸고 많은 분석가를 고용
ㅤ→ 툴체인 및 모범사례의 표준화 부족

(와 이건 우울하다. 이 문제를 해결하기 위해선 어떤 일을 해야할까)

7월 8일
- 다음주 부터 데이터팀의 새로운 방향을 세우기 시작
- 한명이 인프라에 경험이 있는 것 같으니 그에게 Centralized 데이터 웨어하우스 구축하게 함
- 당장은 데이터를 한 곳으로 모으기 위한 가장 빠른 경로만 있으면 됨
- 계획은 기본적으로 매시간 마다 프로덕션 DB를 데이터 웨어하우스에 덤프 하는 것
- 프론트엔드에서 광고 추적 트래킹에 사용하는 프레임워크에서도 방대한 이벤트 로그를 보낼수 있지만 그건 기술부채로 담아두기

- 채용팀과 함께 Generalist Data Role 정의
ㅤ→ 핵심 소프트웨어 기술을 강조하지만, Generalist(모든 것을 다 하는) 적인 태도와 비즈니스 요구사항에 대해 깊이 공감할 수 있는 사람
ㅤ→ 당장은 인공지능 및 머신러닝에 대한 모든 언급은 제거함

- 데이터팀에 보고하지 않는 다른 데이터 인력들과 시간을 보냄
ㅤ→ 마케팅 팀에 있다는 데이터 과학자는 젊은 사람이었음. "저는 항상 데이터 사이언티스트가 되고 싶었어요. 당신에게 많이 배우고 싶어요"

- 코딩 부트캠프를 운영하는 친구에게 좋은 "SQL 교육 강의"가 있는지 물어봤고, 있다고 해서 이달 말에 도입하기로

- 제품팀을 위해서 A/B 테스트 가 무엇이고 어떻게 동작하는지를 설명하는 발표자료 작성
ㅤ→ 예상치 못한 결과가 나온 테스트의 많은 예를 보여주고,
ㅤ→ 어떤 것이 이겼는지 추측해 볼 수 있게 인터랙티브 하게 작성

- CEO의 비서를 만나서 "매주 자동 발송되는 이메일을 통해서 보고 되었으면 하는 지표들"을 알아내기

- Supply Chain 팀의 비즈니스 분석가들과 얘기해보니, 합리적인 사람들인데 이전에 데이터팀과 얘기하면서 상처를 입었음
- 그들중 한명은 과거에 SQL을 사용한 경험이 있었음. 그가 전환율에 대해 질문하는 걸 보고 데이터 웨어하우스 접근권한을 줌

- 데이터를 필요로 하는 조직 전체의 사람들과 주간 1:1 미팅을 셋업
ㅤ→ 요점은 데이터 격차(Gap)와 기회들을 찾아서 데이터 사이언티스트에게 보내는 것
ㅤ→ 데이터 사이언티스트 들은 연구 우선순위가 밀리므로 실망할 수 있음
ㅤ→ "가능한 한 빨리 비즈니스 가치를 제공하는데 집중" 이라고 말하면서도 "곧 머신러닝관련 작업으로 돌아갈 수도 있어요. 일단 보시죠" 라고 얘기함

9월 1일 : 아침
- 3개월이 지나고, 이제 조금씩 일이 되어가는 것 같은 느낌
- 다양한 이해관계자들과 매주 1:1로 미팅하면서 데이터가 변화를 일으킬수 있는 사각지대와 기회를 계속 찾음
- 찾은 것들을 핵심 플랫폼 작업에 강제하도록 이용
- "파생된" 데이터 세트를 만들려면 많은 파이프라인을 구축해야함. 초기 비용이 많이 들지만 올바른 데이터셋이 만들어지면 후속 분석이 훨씬 쉬움

- 다른 부서들에 데이터 웨어하우스 액세스를 개방 시작
- 직접 SQL을 사용해서 기본 분석을 하기 시작
ㅤ→ 훌륭했던 일 : 쥬니어 프로덕트 매니저가 iOS Safari 의 전환율이 엄청 나쁘다는 것을 발견. 로컬스토리지 관련 프론트엔드 버그였고 한줄로 수정되었음

- 공급망 책임자가 화난 이메일을 보냄
ㅤ→ 데이터베이스가 변경되어서 500줄짜리 쿼리가 실패한다는 것..
ㅤ→ 투덜대는 데이터 사이언티스트에게 수정을 맡기고 다른 당근을 매달아줌 "이번 달 말에 멋진 머신러닝 문제를 찾아줄께요"

9월 1일 : 오후
- 아직 체크아웃팀의 제품 관리자는 메트릭 분석은 하지 않고 있음
- 마케팅팀의 데이터 과학자가 매니저와 얘기해서 나에게 직접 보고하기로 함

[ 무슨 일이 일어나고 있을까 ? ]
- 가장 시급한 것들의 기본 토대를 마련 하는 중
ㅤ→ 중요한 데이터를 한 곳에서 쿼리가능하게 함
ㅤ→ SQL 접근을 개방하고 다른팀에서 사용하도록 해서 많은 "SQL 번역" 일들을 없앰
- 반대로 다른 팀은 이런 자유 때문에 더 멀리가려고 할 수도 있음. 데이터 접근에 권한을 설정해서 방지할수는 있지만 단점이 더 많음
- 체크아웃팀이 데이터 분석을 못한것은 누구에게 물어봐야 할 지를 몰랐기 때문
- 이건 주로 조직의 문제임
ㅤ→ 팀들은 데이터 팀과 협력하는 방법을 모름
ㅤ→ 깨닫지 못하지만 데이터팀이 병목일 수도 있음
- 가장 합리적인 것은 "보고는 중앙 집중화 하고, 작업 관리는 분산화 하는 것"
ㅤ→ 데이터와 결정이 더 긴밀한 피드백 루프를 생성하기 때문
ㅤ→ 데이터 팀 멤버들이 각각의 팀에서 협업하고 보고만 나(데이터팀 리드)에게 할 수 있도록

9월 2일
- 데이터 팀이 6명으로 늘어남
ㅤ→ 1명 데이터 웨어하우스 인프라
ㅤ→ 5명은 각각 팀에 할당 : 온보딩, 공급망, 체크아웃, 마케팅, CEO 지원및 투자자/이사회용 발표자료 작성
- 전사에 변경을 설명하고, 데이터 요구 사항을 위해서는 누구와 일해야 하는 지를 명확히 함
- 앞으로 데이터 인력은 뽑더라도 다른 팀에 할당할 계획

1월 3일
- 데이터 사이언티스트 한명이 떠나기로 함. 그가 즐거워할 일도 많지 않기 때문에 잡지 않기로 함
- 팀에는 새로운 사람들이 많음. 약간의 소프트웨어 엔지니어링 지식과 SQL, 그리고 데이터에서 흥미로운 것들을 찾고자 하는 사람들
ㅤ→ 데이터에서 "특종"을 찾는 사람들이니 "데이터 저널리스트" 라고 생각
- 온보딩 팀과 작업하는 멤버의 경우
ㅤ→ 온보딩 흐름에서 고객 주소가 필요하지 않아도 주소를 묻는 것을 발견
ㅤ→ 이걸 제거하면 A/B 테스트에서 전환율이 21% 증가
ㅤ→ 데이터를 쿼리하기 쉽게 하기 위해 ETL 작업이 필요해서 쉽지는 않았지만, Python 이 살짝 도와서 가능해졌음
- CEO 와 분기 보고
ㅤ→ 성장 이니셔티브 에서 PM이 새로 런칭한 랜딩페이지 재 설계를 소개
ㅤ→ PM은 20명의 엔지니어 들이 마감을 맞추기 위해서 초과 근무를 하고 있다고 강조
ㅤ→ CMO도 이 재설계의 일환으로 Direct Mail 에 큰 기대를 걸었기 때문에 깊게 관여하고 있음
ㅤ→ CEO의 질문 "현재 지표는 어떻습니까? 고객 확보 비용이 줄어들었습니까 ?"
ㅤㅤ(당신은 CEO가 이런 질문을 하길 기대했는데 딱 나와서 미소 지음)
ㅤ→ PM은 실제로 A/B 테스트를 진행했다고 부록에 있는 숫자들을 보여줌
ㅤ→ 일부 지표는 상승하고, 일부는 하락해서 유의미한 결과를 보여주는 결과가 없음, 고객 확보 비용 수치는 안 좋아 보임
ㅤ→ CMO는 아직 숫자는 만들어 가는 중이며, 이런 캠페인은 몇 달이 걸릴 수 있다고 강조

[ 무슨 일이 일어나고 있을까 ? ]
- 좋은 소식은 제품 팀이 A/B 테스트를 하기 시작했다는 것
- 나쁜 소식은 결과를 무시하고 프로젝트가 대부분 마일스톤과 인위적인 데드라인에 맞추도록 진행된다 는 것
- 최고의 소식은 CEO가 각 팀들이 데이터가 진실(truth)로 사용되도록 푸시하고 있다는 것

- 조직이 더 데이터 드리븐이 되도록 압력을 받게 되면, 데이터 팀이 다른 팀과 협력하는 방식을 가속화 해야 함
- 특히 최고 경영진들은 더 지표에 집중하게 되고, 데이터 팀이 이런 지표들을 작업하도록 하는게 당신의 일
- 가장 간단한 방법 하나는 각 팀들이 중요시 하는 지표에 대한 대시보드가 있는지 확인 하는 것

4월 1일
- 데이터 팀에서 수행했던 예전 머신 러닝 작업들은 아직 그대로 있음
- 인벤토리 제품 팀에서 일하는 데이터 사이언티스트가 예전에 만든 추천 시스템 작업들에 관심을 가지고 있음
- 새로 뽑은 멤버중 한명으로 Generalist 인 사람이어서, 추천 시스템 노트북을 작은 Flask 앱으로 만들어서 내부에 배포했음
- 인벤팀의 제품 관리자가 보고 좋아함 "이거 어떻게 배포하죠?"
- 인벤팀의 주요 지표중 하나는 "평균 주문 금액" 이고 이 추천이 그걸 크게 개선 할수 있을 것으로 봄
- 짧은 추정으로도 크게 배포하는 건 어려울 것 같지만, "고객중 1%에만 배포해보면 어떨까요?" 라는 아이디어를 냄
- "멍청하지만 Cron Job으로 추천 제품들을 미리 생성해두면 되고, 며칠 안에 만들수 있을 것 같아요"

- 공급망 팀과 일하면서 더 많은 거대한 SQL 쿼리들을 발견
- 계속 깨지고 있지만, 데이터 팀이 이걸 적절한 파이프라인으로 변환 작업중
- 공급망 팀 헤드가 더 많은 데이터 사이언티스트를 고용해 달라고 요청

[ OK, 무슨 일이 일어나고 있는건가요 ? ]
- 먼저, 멋진 기계 학습 작업에 대한 희망이 생겼음
- 제품팀이 드디어 추천 시스템을 작은 테스트로 런칭 하는 것에 흥분해 있음
- 예전에는 제품 엔지니어링팀이 작업을 예측하기 힘들고, 직접 기여하기 원치 않았고, 데이터팀이 프로덕션화할 스킬이 없었으므로 진행할 수가 없었던 일
- 이 문제를 해결 한 것은 데이터팀이 실제로 데모를 구축했기에 가능한 것. 이렇게 하면 프로덕션에 가까워 질 뿐 아니라 가능성을 명확하게 보여줌

- 또 하나는 공급망 팀에 일어나는 일
ㅤ→ 자체 "비즈니스 분석가" 로 시작했지만, 데이터를 얻기 위해서는 데이타 팀이 쿼리를 실행해줘야 했음
ㅤ→ 분석가들이 데이터팀의 도움을 받아서 직접 쿼리를 실행하기 시작
ㅤ→ 먼저는 데이터팀과 마찰이 생겼던 "그림자 기술 부채"(괴물 같은 크기의 SQL 쿼리)를 없애기 시작
ㅤ→ 데이터 팀이 공급망 팀에 붙어서 돕기 시작
ㅤ→ 데이터 팀 멤버가 임베딩 되면서 비즈니스 분석가의 필요성은 줄어들고 데이터 과학자들이 증가함

- 처음에 프로덕션 DB를 데이터 웨어하우스에 직접 덤핑하기 시작할때 "기술 부채"을 떠맡았음을 기억할 것
- 처음에는 많은 것들이 깨지지만 안정적으로 쿼리하도록 하는 레이어를 추가 해야함. 굉장히 많은 일이 될수 있음

7월 1일
- 3분기 기획회의
ㅤ→ 에전에는 다음 분기에 회사가 뭐에 베팅할 지를 논쟁했음
ㅤ→ 이번에는 당신이 회사의 최상위 지표들을 발표하고, 각 팀들이 서브 지표들을 통해서 최상위 지표들을 세분화 해서 발표
- 제품관리 팀 작업이 성과를 내었음
ㅤ→ PM이 테스트를 실행하면서 배운 내용이나 데이터에서 발견한 내용에 대해 이야기 하면서 프로젝트에 대한 투자를 정당화
- 큰 성과는 체크아웃 팀과 일하는 데이터 과학자가 사용자가 확인페이지에서 뒤로 가기 버튼을 눌렀을 때 장바구니 개체가 이상하게 되는 것을 발견했다는 것
ㅤ→ 이 문제를 해결하자 전환율이 크게 상승 되었음
- 또 다른 인사이트는 서로 다른 광고 캠페인을 통해서 온 트래픽들이 매우 다른 전환 프로필을 가진 다는 것
ㅤ→ 일부 캠페인은 클릭 가격이 쌌지만 전환율이 끔찍했고, 다른 캠페인은 비용이 많이 들었지만 전환율이 매우 높았음
- UTM 변수를 추적하고 계정 생성에 연결해서, 광고 클릭에서 구매까지의 전환율 측정이 가능해졌음
ㅤ→ 모든 데이터를 같은 데이터 웨어하우스로 가져와서 쉽게 쿼리할 수 있도록 정규화 하기 전에는 불가능 했음
ㅤ→ 마케팅과 협력을 통해 주요 KPI는 클릭당 비용이 아닌 End-to-End 고객 확보 비용임
- 또 다른 재미난 소식은 1% 추천 시스템 테스트가 이례적으로 성공했다는 것
ㅤ→ 사용자의 100%까지 확장하는 것은 매우 큰 프로젝트이지만 CEO가 프로젝트를 승인했음
- 모든 결과물이 긍정적인 것은 아니고, 많은 테스트는 실패했음.
ㅤ→ 슬라이드중 하나는 배송비가 별도로 청구되지 않고 가격에 포함된 테스트에 대한 설명이었음
ㅤ→ CEO가 이렇게 말함 "여기서 무엇을 배웠습니까?"
ㅤ→ 이건 다시 일련의 후속 실험을 계획하는 대화로 이어짐

(집에 가서 샴페인을 터뜨림)

[ 무슨 일이 일어난거지 ?]
- 당신이 해냈습니다.
- 조직을 진정한 데이터 네이티브로 변화 시켰습니다.
- 데이터 팀은 다양한 이해 관계자와 교차 기능적으로 작업합니다.
- 데이터와 인사이트가 계획에 이용되고, 데이터는 목표가 불분명한 연구가 아닌 비즈니스 가치를 창출하는데 사용됩니다.
- 회사는 빠른 데이터 기반 피드백 주기를 이용해서 대규모 "워터폴" 스타일 계획 대신 반복적인 방식으로 작업 합니다.
- 지표들은 비즈니스 가치를 만들고 그에 대한 책임감을 가질 수 있는 방식으로 정의됩니다.
- 데이터 문화는 위(CEO가 추진하고)와 아래(직원들)로부터 양쪽이 함께 주도 합니다.
- 적어도 무언가를 배웠다면 실패해도 괜찮습니다.

(축하합니다. 당신은 샴페인을 들 자격이 있어요)

초반부 읽는데 저희회사인줄 알았네요,,,,ㅠㅡㅠ(물론 저희는 데이터팀조차 없습니다ㅎ)

재밌게 읽었습니다. 감사합니다~!

엔지니어들이 즐겨볼만 한 테크 스타트업 관련 드라마의 어느 에피소드를 시청한 느낌입니다. 재미있어요! 👍

사람이 많아 보이는데 이 정도가 mid-stage군용

아마도 국내하고는 보는 규모가 좀 다를 것 같습니다.

편향적(Opinionated)* 에 대해서는 깔끔하게 번역이 어려운데, 저는 주로 "자신의 의견이 반영되어 편향적이다" 의미에서 "편향적" 으로 쓰긴 합니다.
이에 대해서 다른 분이 적은 글이 있으니 참고하세요
- 컴퓨터 용어로서의 opinionated(편향적)의 의미 https://www.clien.net/service/board/cm_app/13558026

그리고, 원래 글은 내용이 풀어 써져 있는데, 조금 읽기 쉽게 대화체로 재구성했습니다.