스토리 홈

인터뷰

피드

뉴스

조회수 884

이건 니가 하시고, 이건 내가 할게요.

<들어가기 전에 잠시 개인적인 생각>일이란 게 참 톱니바퀴 같아요. 이 글을 쓰고 있는 순간에도 사실 다양한 일을 처리해야 하기에 하루하루 생각도 바뀌고 경험도 바뀌어 가고 있어요. 제 앞에 누군가가 있고, 제 뒤에 또 누군가가 있죠. 결국 일이란 게 사람이 하는 일이기에 담당자의 성격과 역량에 따라 수많은 케이스가 나올 수 밖에 없더라구요.이걸 하나로 일반화시키려면 평균치를 내야해요. 다수의 케이스를 고민해야하고, 성공한 또는 실패한 케이스를 찾아봐야 하죠. 하지만 본질적인 고민이 들긴 합니다. 평균치란 건 꽤나 무서운 거예요. 마치 직장인들의 평균연봉이 4,000만원이다! 라는 기사와 같죠. 사실 누구도 딱 평균만큼의 금액을 받는 사람은 없어요. 거리만 다를 뿐 결국엔 각각 평균의 위아래 어딘가에 점으로 위치하고 있습니다. 그러니 어찌보면 평균선이란 것은 허구와도 같아요. 가상의 선이죠. 실무얘기를 하면서 제일 어려운 부분은 바로 이 부분이예요. 딜레마죠. 케이스란 걸 평균화시킬 수 있는가...에 대한 고민도 있고.평균화시킬만큼 케이스가 충분한가? 에 대한 고민도 있죠.마지막으론 그 평균이 과연 정확한 명제인가? 에 대한 의구심도 들어요.그럼에도 불구하고 이런 글을 쓰는 이유앞으로 저와 일할 분들과 '일을 잘하고 싶기 때문' 이예요. 이 글 하나에 무슨 문화가 바뀐다거나 더 나은 사회를 위한 철학을 담진 못할 거예요. 다만 저는 이렇게 일하는 걸 좋아하고 서로서로 편하게 일해야 한다고 생각해요. 안그래도 힘든 일 굳이 짜증내면서 하면 더 힘들잖아요. 대부분의 클라이언트를 제 글을 통해 만나게 되는 경우가 많기 때문에 밑밥까는 느낌으로 적어놓는 느낌이죠.시작에 앞서 이렇게 긴 서론을 쓴 이유는 저번, 오늘, 다음에 할 얘기가 사실 굉장히 이상적이고 추상적인 주제란 걸 알기때문이예요. 그래서 사실 책에 나온 얘기대로 이래저래 각색해서 쓰다가 다 지워버렸어요.평균선으로 어정쩡하게 말하기 보단, 구체적으로 단순하게 말해보도록 할께요. 오늘은 업무분장에 대한 얘기예요.1. 업무분장을 할 땐 리스트업을 해줘요.기획은 니가하고 디자인은 너가 해. 라고 하지 마세요. 기획, 디자인, 마케팅, 총괄..이런 단어들은 엄청나게 커요. 정확히는 하나의 '직무'에 가깝다구요. 어떤 업무들을 할 지 한 단계 더 들어가 줘야 해요.1) 사전미팅 주관/스케쥴링/회의록 작성2) 회의 토대로 기획안 작성(10p 미만) / 제출 및 피드백 반영 후 수정3) 9/15일까지 기획안 최종안 완성4) 투자제안서 플로우 기획 및 텍스트 정리(매출자료는 경지팀 지원)5) 9/20까지 텍스트 완료 후 보고 / 컨펌 시 디자인팀에 인계이렇게 투두리스트를 두두두두 써줘요. 정확하게 언제 얼만큼 무슨 일을 해야하는 지... 표로 만들지 타임라인 형태로 잡을 지 트렐로를 쓸지 플로우를 쓸 지 슬랙을 쓸지 등등은 자유지만 분명한 건 기한과 업무와 책임자이것이 분명하지 않으면 3일 정도 지난 후 혼돈의 사도가 되어있는 담당자를 만날 수 있을 거예요.담당자2. 담당자를 좀 정리해봐요.누가 무슨 일을 하는 지 헷갈리는 경우가 있어요. 외주를 맡길 땐 담당자가 있기 마련이예요. 외부업체 입장에선 컨택포인트...라는 것이 깔끔하길 바라죠. 이 사람 저 사람이 전화를 해대면 혼란스러워요. 만약 제작물 종류가 다양해서 회사소개서는 박사원이포스터와 초대장제작은 이대리가굿즈제작은 오과장이한다고 쳐봐요. 이럴 수 있죠. 한 사람이 모든 걸 다 맡을 순 없으니 쪼갤 수 있어요. 하지만 이건 내부사정이니까 클라이언트님밖에 몰라요. 외부업체입장에선 박사원, 이대리, 오과장의 전화를 번갈아 받아야 하는데, 이대리한테 해야할 말을 오과장한테 하기도 하고 전달이 되기도, 안되기도 하고.... 그야말로 톨킨 세계관의 중간계 전쟁과 같은 카오스가 펼쳐질 수 있어요.이런느낌.외부업체와 컨택 시 담당자가 여러명이라면 회사소개서 제작(9/15) :20p내외/가로좌철 중철제본/500부/표지4p(랑데뷰250g) + 내지16p(스노우180g)담당자 박창선(010-1234-5678 / [email protected]) 이런 식으로 3명 모두 정리해서 전달해주세요. 그리고 외부업체에도 컨택포인트가 있을 거 아녜요. 그러면 그 쪽 업체의 담당자와 매칭해서 누가 누구와 연락을 하는 지 확실히 하는 게 좋아요.우리회사 오과장 - 애프터모멘트 박창선대표 (이렇게 짝궁)이렇게 말예요. 그래야 박창선씨에게 전화오면 오과장님에게 넘겨줄 수 있죠. 참고로 박창선은 제 이름이에요.으하하..3. 사실 이 두개면 돼요. 다른 거 안해도 될 것 같아요.그냥 업무 확실히 잡고 담당자 연락처만 제대로 통일시켜줘도 성은이 망극하여 발등에 키스를 할 거예요.근데 생각보다 업무분장이 잘 되는 곳을 보기 드물어요. 그 이유를 생각해보니 아래와 같아요.1. 일 못하는 사람 짱많아요. 2. 일 잘하는 사람이 적어요.3. 일을 못하는 데 잘한다고 생각하는 사람이 더 많아요.4. 일을 잘하는 데 안하려고 하는 사람도 있어요.5. 전체 일이 어떻게 돌아가는 지 몰라요.6. 전체 일이 돌아가는 건 아는데 하기가 싫어요.7. 쫄보에요. 안해본 일은 안해요.8. 눈치도 있고 다 좋은데 손이 느려요.9. 사내정치가 오져요. 쟤랑 일하기 싫어요.10. 업무분장 자체가 없어요. 그냥 일잘러만 죽어나요.11. 분장은 잘했는데 결과물이 개판이에요.12. 담당자가 퇴사했어요. 인수인계를 안했어요.13. 자꾸 자기가 칭찬받고 싶어해요. 이런 등등의 이슈들이 있어요. 사실 업무분장 자체는 단순한 일이예요. 그냥 일을 구체적으로 쪼개서 나눠주는 거예요. 회사 엠티가서 된장찌개 만들 때 누가 감자썰래? 하는 것과 비슷한 거예요. 그런데 문제는....감자가 들어가는 지 모르거나감자를 썰 줄 모르거나감자를 썰다가 손이 다치거나감자를 정성스레 한오백년 썰고 있거나감자를 너무 크게 썰거나감자를 채로 썰거나감자를 안썰거나감자써는걸 떠넘기거나감자를 먹어버리기 때문이에요.모르면, 배워야 해요.이러다보니 된장찌개를 만들어본 사람에게 업무가 과중되고 그 사람은 지치고 다다음달에 그만둬요. 그럼 감자썰 줄 아는 사람이 아무도 없어요. 물론 껍질을 안벗기고 그냥 끓여도 된장찌개가 안되는 건 아니에요. 맛이 이상할 뿐이죠. 그렇게 이상한 된장찌개를 계속 끓이다보니 그게 맞는 줄 알게되요.아니예요 틀렸어요.업무분장은 제대로 확실하게 해야해요.회의시간이 10시간이면 7시간은 업무분장에 써도 돼요. 제발 그랬으면 좋겠어요.서로서로 납득이 가고 온당하게. 합리적이고 효율적인 배치가 나올 때까지 고민하고 또 대화했으면 좋겠어요. 그런 날이 언제쯤 올진 모르겠지만 그랬으면 좋겠어요. 
조회수 2186

.xyz 때문에 짜증이 나신다면 — GA에서 스팸 제거하기

Ghost Spam주로 referral report에 나타나는 스팸성 트래픽은 랜덤하게 Google anlaytics(GA) ID를 만들어서 트래픽을 보낸다. 주요 목적은 GA 담당자가 보고서에 나온 트래픽을 보고 해당 사이트에 방문하도록 만드는 것이다.스패머는 랜덤하게 만들어진 GA ID를 사용하기 때문에, 해당 ID를 사용하는 사이트가 어떤 사이트인지 모른다. 그래서 hostname이 정해져있지 않거나, 유명한 사이트의 도메인으로 채워넣곤 한다. Referral report에서 2nd dimension을 hostname으로 놓고 보면, 스팸여부를 확인할 수 있다.Filter to prevent ghost spamwhitelist 형태의 filter를 이용해서 유효한 hostname을 가진 트래픽만 GA에서 받아들이도록 하면 하나의 filter로 ghost spam traffic을 모두 차단 할 수 있다.Audience > Technology > Network 에서 Primary dimension을 hostname으로 설정하면, GA로 들어온 모든 트래픽의 hostname을 확인할 수 있다.여기서 자기 소유의 도메인과 관련된 hostname, 결제관련 서비스의 hostname, 번역서비스의 hostname 등을 확인한다.이제 필터를 만들 차례다.Admin > Filters > Add filterCustom을 선택하고, Include를 선택한다. 앞서 말했듯이 이 필터는 whitelist필터이다. 허용한 traffic만 들어온다. 오타에 주의하자.Filter field를 hostname으로 설정하고아래 filter pattern에 앞서 확인한 hostname을 적어준다.만약 확인한 hostname이 “www.example.com”, “example.com” 이었다면 아래와 같이 정규표현식으로 적어주어야 한다.www\.example\.com|example\.comhostname사이에 | 표시를 꼭 넣어줘야 한다. CS쪽 지식이 있는 사람이라면 단번에 or 연산자라는 걸 알것이다.주의해야 할 것은 hostname사이에 빈칸이 들어가서는 안된다. 다른 hostname으로 인식하더라.reference — moz blog#티엘엑스 #TLX #BA #BusinessAnalyst #업무환경 #꿀팁 #데이터분석 #인사이트 #조언
조회수 786

스타트업 견문록(1)

 15세기 후반부터 18세기 중반까지 미지의 땅을 찾아 너도나도 탐험에 뛰어들었던 대항해시대(大航海時代).      나는 이번 탐험을 하기 위해 은행에서 융자도 받고, 왕실의 후원도 받았어. 그들은 이번 항해로 엘 도라도의 황금을 한 가득 싣고 오길 기대하고 있지. 우리의 가장 큰 후원자인 여왕은 정해진 기한 내에 온갖 보물을 가지고 돌아오라고 응원 아닌 협박 같은 메시지를 보내왔지.  식량과 물은 오직 6 개월 치 분량인데 항해 도중에 상하거나 버려질 분량을 생각하면 4개월 내에 도착해야할거야. 항해를 위해 뽑은 선원들은 여전히 나를 미심쩍어 하는 눈빛이고 그나마 마음이 통하는 벗이자 항해사가 동행하게 되었지. 떠나기 전 날 연회에서 만난 평생 바닷길 지도를 그려온 학자가 이런 말을 하더군.“너무 서쪽으로 가면 세상 끝 낭떠러지로 떨어질 테니 안전하게 해안가로만 다니세요.”       현재는 바야흐로 대창업의 시대! 대한민국의 청년 실업률이 나날이 증가하고, 국가 성장동력에 이상신호가 감지되는 지금! 정부가 나서서 창업을 독려하고, 많은 지원과 교육/자금을 풀어서 잠재되어있던 수많은 아이디어를 현실에 소환하려는 계획은 어느 정도 효과를 보고 있어.  적어도 수치상으로는 매년 거의 10만개에 가까운 창업기업이 탄생하고 있으며, 언론 매체에서 스타트업 성공신화를 줄기차게 소개하잖아. 그럼에도 불구하고 자금 조달은 어디서 해야 하는지, 사업계획서는 어떻게 써야하는지, 팀 빌딩은 누구를 영입해야 할지에 대한 고민은 끝이 없어. 많은 예비창업자들은 준비단계에서부터 우왕좌왕할거야.  나 역시 2년 동안은 소위 베이킹(baking)이라는 시간을 가졌거든. 뒤늦게 알게 된 거지만, 창업 지원과 인프라, 교육은 다 활용하기 힘들 정도로 넘쳐나. 우리는 단지 방법을 몰랐고, 사람을 몰랐고, 실행을 못 하고 있었던 거지. 돌이켜보면, 조금만 더 디테일하게 신경 썼으면 시간을 더 단축하고, 자금을 더 효과적으로 운영했을 거야.        스타트업의 길은 탐험과도 같아. 어떤 분들은 여행으로 비유하는데 동의하지 못 하겠어. 룰루랄라~ 마음 맞는 친구들과 즐거운 상상을 하면서 계획 해 둔 일정과 여러 SNS 친구들이 방문해 보고 추천했던 맛집들을 찾아다니는 것과 현실은 정반대거든.       사업계획서라는 이름의 항로가 그려지지 않은 채 출처가 불명확한 지도를 가지고 있어. 이 지도는 계속 측정하고 수정하면서 그려 나가야하는 불완전한 지도야. 알음알음 또는 내가 그래도 경험이 있어서 조금은 더 뚜렷해 질 수는 있어도 100% 완벽하지 않기에 스스로 의구심을 가지고 항로를 개척해야 해.      탐험은 예측불가능한 잠재리스크가 많아. 스타트업도 그래. 내부적인 리스크는 관리하고, 조정할 수 있어도, 외부 리스크는 정말 암담하거든. 지난 번에 정치외교적인 사드 문제라던가 한일 외교 경색로 인한 시장 환경 변화는 마치 항해 도중에 만나는 폭풍우와 같아. 아무리 돛을 접고, 방향키를 돌려보아도 망망대해에 높은 파도와 비바람을 견디기란 쉽지 않거든.       계획한대로 흘러가지 않을 때, 팀원들의 불안감과 두려움은 고조되지. 그리고 불만이 여기저기서 독버섯처럼 퍼져나가기도 하지. 그러다 리더십에 대한 의문과 사업 방향에 대한 의심으로 확대 되면 이탈하고자하는 사람들이 나타나. 계획된 목적지 도달 일정이 지연되고 식량이 고갈되는 상황에서 선원들이 해상반란을 일으키는 영화 속 장면이 꼭 멀리 있지는 않거든. 팀 빌딩도 중요하지만, 인력관리는 그 보다 몇 배 더 중요하지.       바쁘고 정신없었던 하루가 끝나갈 때 쯤, 밤이 되면 선장(창업자) 역시 두려움과 고민의 시간을 가지게 되지. 우리가 잘 하고 있는 건지, 무언가 챙기지 못 한 것은 없는지 확인하고 의심해야 해. Plan A, PlanB, Plan Z를 준비해야 하지. 우리 항로에 대하여 가장 잘 아는 사람은 사실 우리거든. 다른 사람이 고민 해 주거나 고쳐주지 않아. 내일 아침도 무사히 항해하기 위해서는 나 자신이 더 확실한 지도를 만들어가야 해.       꿈에서 그려 본 황금의 도시 엘 도라도!  적어도 우리는 엘 도라도가 존재한다고 하는 믿음이 있어야 해. 그곳에 진짜 황금이 있을지, 아니면 우리를 위협할 창과 화살이 있을지는 솔직히 지금은 알 수 없어. 엘 도라도에 대한 우리의 상상과 현실은 다를 수 있지만, 분명한 것은 과거와 달리 지금은 정보가 공유되어 있다는 거야. 이전에 탐험가들은 정보교류나 자신의 지도를 쉽사리 넘겨주지 않았지만 현재는 집단지성과 이 길을 걸어 본 많은 경험자들과 현직자들, 인프라가 유용한 정보는 넘치고 있지. 어쩌면 이미 먼저 도착했던 사람들을 통해 어렴풋이나마 확신할 수 있어.      “당신만의 엘 도라도는 분명하게 있다. 너가 도착할 수 있느냐의 문제만 남아있을 뿐”        투자자가 되었든, 팀원이 되었든, 고객이 되었든 우리가 확신이 없으면 어느 누가 이 항해에 동참하겠어? 이렇게 수많은 위험이 있음에도 불구하고 우리를 웅원하고 후원해 주는 사람들에게 지속적으로 신뢰를 주어야 해. 따라서, 우리는 보다 전략적이고 계획적이며 성과로 증명해 나가야 하지. 효율적이고 영리해져야 해. 대안을 늘 찾아내야 해. 부단히 배우고 성장해야 해.     “너는 엘도라도에 어떻게 갈래?”지난 칼럼에서는 네가 이 탐험을 위해 얼마나 강한 동기를 가지고 있는지를 물었다면, 이번에는 네가 왜 전략과 실행을 끊임없이 반복해야하는지에 대한 이 질문을 던지면서 마무리할게. 의욕으로는 버틸 수 있어도, 전략과 전술이 없으면 목적을 달성하기 어려워.     (역주)* 팀빌딩이란 창업/프로젝트 수행을 위해 적합한 인재/동료/팀원을 구성하는 것을 뜻하며, 초창기 스타트업은 지인과 친구, 가족으로부터 시작해서 확장하는 경우가 많다.* 스타트업계에서 베이킹(baking) 이란 창업을 준비하기 위한 시간을 뜻하며, 보통 사업자등록을 내기 전까지 사업계획을 하고, 팀원을 모으고, 선행조사 등의 활동을 한다* Plan A, PlanB, Plan Z이라는 용어의 뜻은 다음과 같다.Plan A: 어떠한 업무 또는 프로젝트를 수행하는데 최선의 방법/방안/경로를 뜻함 Plan B: Plan A가 달성하지 못 할 때를 대비한 대안/대책을 뜻함Plan Z: 최종적으로 목표 달성이 어려운 상황에 대하여 더 큰 손실이 발생을 회피하고, 피해를 최소화하기 위한 최후의 출구전략을 뜻함 
조회수 1205

안드로이드 클라이언트 Reflection 극복기

비트윈 팀은 비트윈 안드로이드 클라이언트(이하 안드로이드 클라이언트)를 가볍고 반응성 좋은 애플리케이션으로 만들기 위해 노력하고 있습니다. 이 글에서는 간결하고 유지보수하기 쉬운 코드를 작성하기 위해 Reflection을 사용했었고 그로 인해 성능 이슈가 발생했던 것을 소개합니다. 또한 그 과정에서 발생한 Reflection 성능저하를 해결하기 위해 시도했던 여러 방법을 공유하도록 하겠습니다.다양한 형태의 데이터¶Java를 이용해 서비스를 개발하는 경우 POJO로 서비스에 필요한 다양한 모델 클래스들을 만들어 사용하곤 합니다. 안드로이드 클라이언트 역시 모델을 클래스 정의해 사용하고 있습니다. 하지만 서비스 내에서 데이터는 정의된 클래스 이외에도 다양한 형태로 존재합니다. 안드로이드 클라이언트에서 하나의 데이터는 아래와 같은 형태로 존재합니다.JSON: 비트윈 서비스에서 HTTP API는 JSON 형태로 요청과 응답을 주고 받고 있습니다.Thrift: TCP를 이용한 채팅 API는 Thrift를 이용하여 프로토콜을 정의해 서버와 통신을 합니다.ContentValues: 안드로이드에서는 Database 에 데이터를 저장할 때, 해당 정보는 ContentValues 형태로 변환돼야 합니다.Cursor: Database에 저장된 정보는 Cursor 형태로 접근가능 합니다.POJO: 변수와 Getter/Setter로 구성된 클래스 입니다. 비지니스 로직에서 사용됩니다.코드 전반에서 다양한 형태의 데이터가 주는 혼란을 줄이기 위해 항상 POJO로 변환한 뒤 코드를 작성하기로 했습니다.다양한 데이터를 어떻게 상호 변환할 것 인가?¶JSON 같은 경우는 Parsing 후 Object로 변환해 주는 라이브러리(Gson, Jackson JSON)가 존재하지만 다른 형태(Thrift, Cursor..)들은 만족스러운 라이브러리가 존재하지 않았습니다. 그렇다고 모든 형태에 대해 변환하는 코드를 직접 작성하면 필요한 경우 아래와 같은 코드를 매번 작성해줘야 합니다. 이와 같이 작성하는 경우 Cursor에서 원하는 데이터를 일일이 가져와야 합니다.@Overridepublic void bindView(View view, Context context, Cursor cursor) { final ViewHolder holder = getViewHolder(view); final String author = cursor.getString("author"); final String content = cursor.getString("content"); final Long timeMills = cursor.getLong("time"); final ReadStatus readStatus = ReadStatus.fromValue(cursor.getString("readStatus")); final CAttachment attachment = JSONUtils.parseAttachment(cursor.getLong("createdTime")); holder.authorTextView.setText(author); holder.contentTextView.setText(content); holder.readStatusView.setReadStatus(readStatus); ...}하지만 각 형태의 필드명(Key)이 서로 같도록 맞춰주면 각각의 Getter와 Setter를 호출해 형태를 변환해주는 Utility Class를 제작할 수 있습니다.@Overridepublic void bindView(View view, Context context, Cursor cursor) { final ViewHolder holder = getViewHolder(view); Message message = ReflectionUtils.fromCursor(cursor, Message.class); holder.authorTextView.setText(message.getAuthor()); holder.contentTextView.setText(message.getContent()); holder.readStatusView.setReadStatus(message.getReadStatus()); ...}이런 식으로 코드를 작성하면 이해하기 쉽고, 모델이 변경되는 경우에도 유지보수가 비교적 편하다는 장점이 있습니다. 따라서 필요한 데이터를 POJO로 작성하고 다양한 형태의 데이터를 POJO로 변환하기로 했습니다. 서버로부터 받은 JSON 혹은 Thrift객체는 자동으로 POJO로 변환되고 POJO는 다시 ContentValues 형태로 DB에 저장됩니다. DB에 있는 데이터를 화면에 보여줄때는 Cursor로부터 데이터를 가져와서 POJO로 변환 후 적절한 가공을 하여 View에 보여주게 됩니다.POJO 형태로 여러 데이터 변환필요Reflection 사용과 성능저하¶처음에는 Reflection을 이용해 여러 데이터를 POJO로 만들거나 POJO를 다른 형태로 변환하도록 구현했습니다. 대상 Class의 newInstance/getMethod/invoke 함수를 이용해 객체 인스턴스를 생성하고 Getter/Setter를 호출하여 값을 세팅하거나 가져오도록 했습니다. 앞서 설명한 ReflectionUtils.fromCursor(cursor, Message.class)를 예를 들면 아래와 같습니다.public T fromCursor(Cursor cursor, Class clazz) { T instance = (T) clazz.newInstance(); for (int i=0; i final String columnName = cursor.getColumnName(i); final Class<?> type = clazz.getField(columnName).getType(); final Object value = getValueFromCursor(cursor, type); final Class<?>[] parameterType = { type }; final Object[] parameter = { value }; Method m = clazz.getMethod(toSetterName(columnName), parameterType); m.invoke(instance, value); } return instance;}Reflection을 이용하면 동적으로 Class의 정보(필드, 메서드)를 조회하고 호출할 수 있기 때문에 코드를 손쉽게 작성할 수 있습니다. 하지만 Reflection은 튜토리얼 문서에서 설명된 것처럼 성능저하 문제가 있습니다. 한두 번의 Relfection 호출로 인한 성능저하는 무시할 수 있다고 해도, 필드가 많거나 필드로 Collection을 가진 클래스의 경우에는 수십 번이 넘는 Reflection이 호출될 수 있습니다. 실제로 이 때문에 안드로이드 클라이언트에서 종종 반응성이 떨어지는 경우가 발생했습니다. 특히 CursorAdapter에서 Cursor를 POJO로 변환하는 코드 때문에 ListView에서의 스크롤이 버벅이기도 했습니다.Bytecode 생성¶Reflection 성능저하를 해결하려고 처음으로 선택한 방식은 Bytecode 생성입니다. Google Guice 등의 다양한 자바 프로젝트에서도 Bytecode를 생성하는 방식으로 성능 문제를 해결합니다. 다만 안드로이드의 Dalvik VM의 경우 일반적인 JVM의 Bytecode와는 스펙이 다릅니다. 이 때문에 기존의 자바 프로젝트에서 Bytecode 생성에 사용되는 CGLib 같은 라이브러리 대신 Dexmaker를 이용하여야 했습니다.CGLib¶CGLib는 Bytecode를 직접 생성하는 대신 FastClass, FastMethod 등 펀리한 클래스를 이용할 수 있습니다. FastClass나 FastMethod를 이용하면 내부적으로 알맞게 Bytecode를 만들거나 이미 생성된 Bytecode를 이용해 비교적 빠른 속도로 객체를 만들거나 함수를 호출 할 수 있습니다.public T create() { return (T) fastClazz.newInstance();} public Object get(Object target) { result = fastMethod.invoke(target, (Object[]) null);} public void set(Object target, Object value) { Object[] params = { value }; fastMethod.invoke(target, params);}Dexmaker¶하지만 Dexmaker는 Bytecode 생성 자체에 초점이 맞춰진 라이브러리라서 FastClass나 FastMethod 같은 편리한 클래스가 존재하지 않습니다. 결국, 다음과 같이 Bytecode 생성하는 코드를 직접 한땀 한땀 작성해야 합니다.public DexMethod generateClasses(Class<?> clazz, String clazzName){ dexMaker.declare(declaringType, ..., Modifier.PUBLIC, TypeId.OBJECT, ...); TypeId<?> targetClassTypeId = TypeId.get(clazz); MethodId invokeId = declaringType.getMethod(TypeId.OBJECT, "invoke", TypeId.OBJECT, TypeId.OBJECT); Code code = dexMaker.declare(invokeId, Modifier.PUBLIC); if (isGetter == true) { Local<Object> insertedInstance = code.getParameter(0, TypeId.OBJECT); Local instance = code.newLocal(targetClassTypeId); Local returnValue = code.newLocal(TypeId.get(method.getReturnType())); Local value = code.newLocal(TypeId.OBJECT); code.cast(instance, insertedInstance); MethodId executeId = ... code.invokeVirtual(executeId, returnValue, instance); code.cast(value, returnValue); code.returnValue(value); } else { ... } // constructor Code constructor = dexMaker.declare(declaringType.getConstructor(), Modifier.PUBLIC); Local<?> thisRef = constructor.getThis(declaringType); constructor.invokeDirect(TypeId.OBJECT.getConstructor(), null, thisRef); constructor.returnVoid();}Dexmaker를 이용한 방식을 구현하여 동작까지 확인했으나, 다음과 같은 이유로 실제 적용은 하지 못했습니다.Bytecode를 메모리에 저장하는 경우, 프로세스가 종료된 이후 실행 시 Bytecode를 다시 생성해 애플리케이션의 처음 실행성능이 떨어진다.Bytecode를 스토리지에 저장하는 경우, 원본 클래스가 변경됐는지를 매번 검사하거나 업데이트마다 해당 스토리지를 지워야 한다.더 좋은 방법이 생각났다.Annotation Processor¶최종적으로 저희가 선택한 방식은 컴파일 시점에 형태변환 코드를 자동으로 생성하는 것입니다. Reflection으로 접근하지 않아 속도도 빠르고, Java코드가 미리 작성돼 관리하기도 편하기 때문입니다. POJO 클래스에 알맞은 Annotation을 달아두고, APT를 이용해 Annotation이 달린 모델 클래스에 대해 형태변환 코드를 자동으로 생성했습니다.형태 변환이 필요한 클래스에 Annotation(@GenerateAccessor)을 표시합니다.@GenerateAccessorpublic class Message { private Integer id; private String content; public Integer getId() { return id; } ...}javac에서 APT 사용 옵션과 Processor를 지정합니다. 그러면 Annotation이 표시된 클래스에 대해 Processor의 작업이 수행됩니다. Processor에서 코드를 생성할 때에는 StringBuilder 등으로 실제 코드를 일일이 작성하는 것이 아니라 Velocity라는 template 라이브러리를 이용합니다. Processor는 아래와 같은 소스코드를 생성합니다.public class Message$$Accessor implements Accessor { public kr.co.vcnc.binding.performance.Message create() { return new kr.co.vcnc.binding.performance.Message(); } public Object get(Object target, String fieldName) throws IllegalArgumentException { kr.co.vcnc.binding.performance.Message source = (kr.co.vcnc.binding.performance.Message) target; switch(fieldName.hashCode()) { case 3355: { return source.getId(); } case -1724546052: { return source.getContent(); } ... default: throw new IllegalArgumentException(...); } } public void set(Object target, String fieldName, Object value) throws IllegalArgumentException { kr.co.vcnc.binding.performance.Message source = (kr.co.vcnc.binding.performance.Message) target; switch(fieldName.hashCode()) { case 3355: { source.setId( (java.lang.Integer) value); return; } case -1724546052: { source.setContent( (java.lang.String) value); return; } ... default: throw new IllegalArgumentException(...); } }}여기서 저희가 정의한 Accessor는 객체를 만들거나 특정 필드의 값을 가져오거나 세팅하는 인터페이스로, 객체의 형태를 변환할 때 이용됩니다. get,set 메서드는 필드 이름의 hashCode 값을 이용해 해당하는 getter,setter를 호출합니다. hashCode를 이용해 switch-case문을 사용한 이유는 Map을 이용하는 것보다 성능상 이득이 있기 때문입니다. 단순 메모리 접근이 Java에서 제공하는 HashMap과 같은 자료구조 사용보다 훨씬 빠릅니다. APT를 이용해 변환코드를 자동으로 생성하면 여러 장점이 있습니다.Reflection을 사용하지 않고 Method를 직접 수행해서 빠르다.Bytecode 생성과 달리 애플리케이션 처음 실행될 때 코드 생성이 필요 없고 만들어진 코드가 APK에 포함된다.Compile 시점에 코드가 생성돼서 Model 변화가 바로 반영된다.APT를 이용한 Code생성으로 Reflection 속도저하를 해결할 수 있습니다. 이 방식은 애플리케이션 반응성이 중요하고 상대적으로 Reflection 속도저하가 큰 안드로이드 라이브러리에서 최근 많이 사용하고 있습니다. (AndroidAnnotations, ButterKnife, Dagger)성능 비교¶다음은 Reflection, Dexmaker, Code Generating(APT)를 이용해 JSONObject를 Object로 변환하는 작업을 50번 수행한 결과입니다.성능 비교 결과이처럼 최신 OS 버전일수록 Reflection의 성능저하가 다른 방법에 비해 상대적으로 더 큽니다. 반대로 Dexmaker의 생성 속도는 빨라져 APT 방식과의 성능격차는 점점 작아집니다. 하지만 역시 APT를 통한 Code 생성이 모든 환경에서 가장 좋은 성능을 보입니다.마치며¶서비스 모델을 반복적으로 정의하지 않으면서 변환하는 방법을 알아봤습니다. 그 과정에서 Reflection 의 속도저하, Dexmaker 의 단점도 설명해 드렸고 결국 APT가 좋은 해결책이라고 판단했습니다. 저희는 이 글에서 설명해 드린 방식을 추상화해 Binding이라는 라이브러리를 만들어 사용하고 있습니다. Binding은 POJO를 다양한 JSON, Cursor, ContentValues등 다양한 형태로 변환해주는 라이브러리입니다. 뛰어난 확장성으로 다양한 형태의 데이터로 변경하는 플러그인을 만들어서 사용할 수 있습니다.Message message = Bindings.for(Message.class).bind().from(AndroidSources.cursor(cursor));Message message = Bindings.for(Message.class).bind().from(JSONSources.jsonString(jsonString));String jsonString = Bindings.for(Message.class).bind(message).to(JSONTargets.jsonString());위와 같이 Java상에 존재할 수 있는 다양한 타입의 객체에 대해 일종의 데이터 Binding 기능을 수행합니다. Binding 라이브러리도 기회가 되면 소개해드리겠습니다. 윗글에서 궁금하신 점이 있으시거나 잘못된 부분이 있으면 답글을 달아주시기 바랍니다. 감사합니다.저희는 언제나 타다 및 비트윈 서비스를 함께 만들며 기술적인 문제를 함께 풀어나갈 능력있는 개발자를 모시고 있습니다. 언제든 부담없이 [email protected]로 이메일을 주시기 바랍니다!
조회수 1121

회사, 사람을 연결한다는 것...

소프트웨어 개발자로서 30년이 되어간다.그 사이 만난 많은 사람들중에 구루급이 된 사람도, 멋진 개발자로 성장한 사람도, 멋진 사업가로 성장한 사람도 많다.사업가, 의료분야, 제약분야, 보험분야, 스타트업등등...모든 만난 사람들과의 좋은 인연들이 꾸준하게 유지되는 경우가 많다.최근들어 직장을 옮기는 개발자나 관리직종에 있는 사람들을 추천하거나 구직을 하게 되는 경우를 연결해주는 경우가 생긴다.전문적인 헤드헌트는 아니지만...믿을 만한 회사이거나 신뢰할만한 대표들에게...괜찮은 경험과 좋은 스킬을 가진 친구들을 연결해주는 보람도 크다.자본을 가진 사람에게 기업을 소개해서 M&A하게 하는 경험도 흥미롭고,작은 팀을 큰 팀에게 소개하는 경우도 재미있다.CTO를 구해달라는 요구에 정당한 대우와 의미있는 비전을 공유하게 한다면...그정도 직급도 구해준다.이제 하나의 기업에 10년이상 근무하는 시대는 아닌것 같다.다들, 새로운 도전과 새로운 일에 흥미를 가지고, 많은 사람들이 모이고, 정리되었다가 다시 모인다.많은 성장과 변화를 보면서...회사와 사람을 연결하는데 보람을 느낀다.ㅎㅎ...전문적인 헤드헌팅회사는 저를 싫어할 가능성이. ㅎㅎㅎㅎps.싸고 일만 잘하는 개발자를 구해달라는 요청에는 웃음으로 이야기드린다..'없다고'정당한 대우와 의미있는 미래를 보장한다면...구루급 개발자도 CTO로 섭외가 가능하다고 이야기드린다.그리고, 돈 퍼주는 사업가도 없으며.정당한 일을 하는 개발자나 기획자, 디자이너를 찾는 분에게 소개한다.아.. 요즘은... 본인의 실력이 답보상태인것을 깨닫는 개발자들이 여럿있다.그래서, 초기 스타트업에 들어가서 고생하면서...다시, 테크를 수련하는 녀석들도 여럿있다.그래서, 다시 스마트한 스타트업으로 입사하는 녀석까지... ~.~세상은 참 재미있다.
조회수 1217

네거티브 타겟팅을 위한데이터 포스트백

네거티브 타겟팅(NEGATIVE TARGETING)이란? ‘타겟팅’이란 단어에 ‘네거티브’가 더해지니 생소하게 느껴지기도 합니다. 하지만 네거티브 타겟팅(Negative Targeting)은 이미 빈번하게 활용되고 있기 때문에 설명을 들으시면 충분히 익숙하게 느끼실 것이라 생각합니다.네거티브 타겟팅이란 제외(Exclude)를 통해 더 나은 타겟을 확보하는 모든 방법을 의미합니다. 예를 들어 중국어 학원을 페이스북에 광고를 한다면, 타겟에서 중국인을 제외하는 것이 네거티브 타겟팅이 됩니다.네거티브 타겟팅의 수준이 정교할수록 타겟의 순도는 높아지고, 그렇게 타겟이 확실해지는 만큼 광고의 성과 역시 향상됩니다. 타겟팅의 정교함을 높이기 위해서는 타겟 오디언스에 관한 더 많은 데이터가 필요하며, 결국 사용자와 그 행동에 대한 분석이 뒷받침 되어야 합니다.포스트백(POSTBACK)이란?포스트백(Postback)의 정의는 업계마다 차이가 있습니다. 포스트백의 가장 근원적인 의미는 온라인 상에서의 거래 데이터(Sales Transaction Data)를 알려주는 프로토콜입니다. 예를 들어 설명하면 다음과 같습니다.온라인 쇼핑몰에서 상품을 구매하면 일반적으로 중간에 결제 모듈을 거치게 됩니다. 결제 모듈은 구매자가 대금 지불을 완료했다는 것을 쇼핑몰에 알려주는데, 이것이 쇼핑몰과 결제 모듈간의 포스트백입니다. 쇼핑몰은 대금 지불이 성공했다는 포스트백을 받았기 때문에 구매자를 다음 단계로 안내하며 결제 프로세스를 완료하게 됩니다.와이즈트래커가 속한 모바일 앱 어트리뷰션 업계에서는 광고 관련 데이터를 광고 매체에 알려주는 프로토콜을 포스트백이라고 부르고 있습니다. 앱 설치 숫자가 과금의 기준(CPI, Cost Per Install)이 되는 업계의 특성상 광고 매체는 정확한 앱 설치 숫자를 반드시 알아야 합니다. 그래서 매체가 직접 개발한 측정용 SDK나 3rd Party Tool로부터 광고를 통한 앱 설치 숫자를 포스트백 받습니다.포스트백과 타겟팅앞서 더욱 정교한 타겟팅을 위해서는 데이터가 필요하다고 말씀 드렸습니다. 이런 맥락에서 포스트백 데이터의 중요성은 매우 큽니다. 주로 포스트백되는 데이터는 아래와 같습니다기기 고유 식별자 (ADID, IDFA)앱 설치, 앱 실행상품 조회, 상품 구매기타 커스텀 액티비티위의 데이터를 포스트백 받은 매체는 새로운 타겟팅 옵션을 활용할 수 있게 됩니다. 앱이 설치된 기기에는 더 이상 광고가 노출되지 않도록 네거티브 타겟팅을 먼저 시작합니다. 이는 불필요한 광고노출을 억제하기 때문에 ROAS(Return on Ad Spending)의 하락을 방지하는 동시에, 이미 클릭한 광고를 다시 보는 경험을 사용자가 하지 않도록 예방하는 효과도 있습니다.앱 설치 후 상품을 조회했으나 구매하지 않은 기기는 리타겟팅 광고의 대상이 됩니다. 이미 앱이 설치되어 있기때문에, 다시 설치 광고를 노출하지 않고 조회한 상품 및 관련상품을 직접적으로 광고합니다. 상품의 존재를 인지하고 있는 사용자만을 대상으로 구매의사를 자극하는 광고를 노출함으로써 ROAS에 긍정적인 영향을 줍니다.광고의 목적이 설치나 구매가 아니라 회원가입 또는 앱 설치 후 첫 구매자 증가일 수 있습니다. 광고주가 이런 커스텀 액티비티 기준의 광고 최적화가 필요할 때 매체와 트래킹 툴이 이와 관련한 포스트백을 지원할 수 있어야 합니다. 커스텀 액티비티를 측정할 수 있는 기술력, 그리고 매체와의 포스트백을 위한 기술지원이 가능한 툴을 선택해야 하는 이유입니다. 포스트백 고도화: 리얼타임 포스트백포스트백을 이용한 최적화에도 맹점은 있습니다. 동시에 여러가지 매체를 운영할 때 포스트백의 장점이 일정 부분 무력화되는 경우가 생깁니다. 아래 그림을 보면서 설명 드리겠습니다.앱 설치 광고를 A, B, C 세개의 매체에 동시 집행하는 상황을 가정한 것입니다. 한 사용자가 A 매체의 광고를 보고 앱을 설치 했습니다. A 매체는 포스트백을 받았기 때문에 해당 사용자에게 더 이상 광고를 노출하지 않지만, 이 사실을 모르는 나머지 매체들은 이미 앱을 설치한 사용자에게 계속 광고를 내보내게 됩니다. 포스트백을 통한 네거티브 타겟팅이 기대만큼 동작하지 않는 것입니다.다양한 매체를 동시에 운영하는 일은 굉장히 흔합니다. 따라서 자기 매체에서 발생한 데이터만 포스트백 받는 현재 상황에서는 위와 같은 비효율이 지속적으로 발생할 가능성 역시 높습니다. 이런 문제를 해결하기 위해서 와이즈트래커는 포스트백 기능을 고도화 했습니다.앱 설치뿐만아니라 앱에서 발생하는 모든 사용자 이벤트들을 실시간으로 포스트백 하는 ‘리얼타임 포스트백’에 대한 설명입니다. 리얼타임 포스트백으로 연동된 매체는 앱에서 발생한 모든 이벤트 데이터를 전달받습니다. 따라서 이미 앱을 설치한 사용자, 자연유입된 사용자, 타 매체에서 유입된 사용자의 행동데이터를 실시간으로 알 수 있게됩니다.최근 주목받고 있는 다이나믹 리타겟팅은 광고 매체의 인벤토리에 진입한 사용자의 Status에 가장 적합한 광고를 자동으로 노출하는 것이 핵심입니다. 따라서 타겟팅이 잘 동작하려면, 광고의 대상이 되는 사용자가 앱을 설치했는지, 관심을 가지고 조회한 상품은 무엇인지, 장바구니에 담아놓고 구매하지 않은 상품은 있는지에 대한 분석 데이터를 실시간으로 알아야 합니다. 이런 점에서 매체와 트래킹 툴이 고도화된 포스트백으로 연동되는 것이 중요합니다.광고매체 운영에 필요한 타겟팅 옵션 중 하나인 네거티브 타겟팅, 그리고 타겟팅 고도화에 필요한 포스트백에 대해서 설명해 보았습니다. 광고 성과를 최적화하기 위해서는 데이터가 필요하고, 트래킹 툴은 그 데이터를 확보하기 위해 더욱 다양한 것을 보다 정확하게 측정하여 매체와 연동할 수 있어야 합니다. 툴을 선택하기 위한 기준으로 참고가 되었으면 합니다.
조회수 1038

곤약은 테라피(Therapy)다?

#1곤약은? 구약나물의 *알줄기에서 비롯된다.구약을 건조하고 분쇄하고 도정해서 만든 만난(mannan)은 물과 만나서 점성이 있는 콜로이드액이 되는데, 여기에 알칼리성 응고제를 첨가하여 가열한 후 식혀 반투명의 묵이나 국수의 형태로 만든 것이 식용곤약이다.  *알줄기는 녹말 등의 양분을 많이 저장하는 둥근모양의 구경으로, 토란, 구약나물, 소귀나물, 글라디올러스 등 땅속에 있는 감자 모양의 기관을 말한다.  #2곤약은 다양한 성질이 있다. 수분과 식이섬유로 이루어져 배변활동을 지원한다. 콜레스테롤 수치의 경감 효과도 있다. 또 탱탱한 식감에 포만감이 우수하다. 긴 유통기한으로 조리 및 섭취의 편의성도 갖췄다.#3무엇보다 곤약의 특장점은 저칼로리에 있다. 많은 양을 섭취해도 열량이 거의 없다.게다가 탱탱말랑한 식감은 미각을 자극한다. 그래서 곤약을 주재료로 한 다양한 제품들이 시중에 안착하고 있다. 냉면, 판모밀보다 맛있는 간편식도 있고, 쫄깃한 젤리, 마시는 젤리부터, 심지어 곤약쌀도 나오면서 밥으로 대두되는 밥상을 곤약상으로 대체할 수도 있을 것 같다.끊임없는 다이어트 연구의 솔루션으로 등장한다.대용식, 간식의 모습으로 먹으면서도 살을 뺄 수 있다고 속삭인다.    소소한밤은 곤약과 메밀의 적량혼합 면요리 간편식으로, 야식러들의 편안한 마음가짐을 도모하고 입맛을 사로잡는다.#4하지만 곤약에는 영양소가 없다. 수분과 소량의 식이섬유가 전부다.과한 의존은 영양결핍을 불러온다.#5즉, 곤약은 이 시대를 살아가는 이들의 걱정을 덜어주는 매개체다.걱정 거리가 너무 많다. 다양한 구성원들과 사회에서 경쟁한다.급속도로 변화하는 트렌드를 쫓는다.날씬한 허리, 날렵한 턱 선 등 자기 관리에도 명확한 기준이 생긴 듯 보인다.개인과 타인, 사회의 모든 시각을 수용하느라 먹는 것도 편히 먹지 못한다.야식은 건강을 해치고, 살을 찌우며, 성인병을 불러오고 신체에 모호한 핏을 선사해 매력도를 떨어뜨리기 때문이다.#6곤약은 식품일까? 아니다 곤약은 테라피다.현재의 각박한 삶의 솔루션이자 빛이다.곤약이 들어가는 식품으로 위안을 얻는다. 곤약을 먹으면서 안도한다.맛있게 가공까지 마친 곤약 간편식은 맛과 살에 대한 걱정을 해소한다.영양소가 없는데 효능과 기능이 있다고 말할 수 있을까?곤약은 섭취하기까지의 심리, 섭취 후 몸에서 발현되는 편안한 기분과 감정 등곤약 섭취는 심리적 테라피에 가깝다.#7지금 이 사회에도 곤약이 필요하다.확실한 지식과 정보로 사람들을 돕고 구원하는 의약품같은 사람보다완벽한 방법으로 문제를 바라보고, 해결하는 GMO곡물같은 사람보다(영양소가 없지만)완벽이 아닐지라도, 먼저 의견을 내면서 다가오는 김대리.(영양소가 없지만)누가 봐도 부족한 역량이지만 자기가 가진 능력은 모두 발휘하면서 바닥을 보여주는 이과장.(저칼로리)심심하게나마 이야기 거리를 던지며, 편안한 대화를 나누고 이내 위안을 주는 최사원.(영양소도 없고 칼로리도 없는)그저 바라봐 주고, 옆에 있어주면서 걱정거리를 덜어주는 박팀장.나는 이 모든 사람들을 곤약같은 인간이라 부르고 싶다. 극찬이다.  “으이그 곤약 같은 인간아"곤약 테라피가 필요한 요즘이다.Jason KH커뮤니케이션    기획자
조회수 1434

더 편해진 메시지로 문의하세요

“배송은 어떻게 진행되고 있나요?” “이번 프로젝트 펀딩을 놓쳤는데 제품을 꼭 구입하고 싶습니다 . 어디서 구할 수 있나요?”프로젝트에 대해 궁금한 것이 있을 때, 프로젝트 창작자에게 직접 문의하는 것만큼 빠른 것이 없죠. 텀블벅은 어떻게 하면 프로젝트 창작자와 후원자가 서로 쉽고 빠르게 소통할 수 있을까 고민했습니다.후원자는 편리하게 질문할 수 있도록, 창작자는 더 빠르게 답변할 수 있도록 텀블벅 메시지를 개편했습니다. 무엇이 좋아졌나요?문의하는 과정이 간편해졌어요.상대방이 자신의 메시지를 읽었는지 확인할 수 있어요.프로젝트 단위로 대화를 진행할 수 있어요. 창작자는 해당 프로젝트에 대한 후원 정보를 보면서 대화할 수 있어요.모바일에서도 바로 확인 가능해요.어떻게 사용하죠?프로젝트 창작자에게 문의하기프로젝트 페이지에서 문의하기 버튼 클릭창작자에게 문의하기 창에서 문의 유형을 선택메시지 내용 작성하고 보내기!메시지 확인하고 답장 보내기텀블벅 사이트 상단에 있는 편지 아이콘( ✉️ ) 클릭자신이 문의를 했다면 ‘후원/문의한 프로젝트’ 를, 창작자는 ‘만든 프로젝트’를 선택읽고 싶은 메시지를 눌러서 답장 보내기!그 밖에 추가된 기능읽음/읽지 않음 기능 추가메시지에서 프로젝트 페이지로 이동 가능메시지에서 후원자의 후원 정보 확인 가능새로 받은 메시지를 ‘안 읽은 메시지’에서 빠르게 확인 가능그렇다면 기존 메시지는요?기존 메시지와 달리 새로운 메시지는 프로젝트 및 후원 정보를 담고 있어 기존 메시지와 함께 사용되었을 때 혼선이 생길 수 있습니다. 그래서 기존 메시지(2017년 3월 2일 이전에 나눴던 모든 대화)는 ‘메시지 보관함’에 따로 보관하였습니다.메시지 보관함에서 기존 메시지 확인하기2017년 3월 2일 이전에 주고받은 메시지가 있는 분들은 ‘메시지 보관함’ 버튼을 눌러서 기존 메시지를 확인할 수 있습니다.보관된 메시지에서 대화 이어가기대화 이어가기 기능 화면메시지 하단의 ‘대화 이어가기’ 버튼을 눌러 대화를 이어갈 수 있습니다. 이때 해당 메시지가 어떤 프로젝트에 대한 것인지 선택하고 메시지 내용을 적어주시면, 기존 메시지에서 하던 대화를 새로운 메시지로 이어갈 수 있습니다.원문: 미디엄
조회수 1322

“매일매일 새로운 도전으로 채워지는 자리”

“매일매일 새로운 도전으로 채워지는 자리” – 패스트캠퍼스에서 일하는 콘텐츠 마케터 이야기“마케팅 중 유효한 것은 콘텐츠 마케팅 뿐이다.” – 세스 고딘<보랏빛 소가 온다>를 쓴 세계적인 마케팅 구루 세스 고딘의 말처럼 콘텐츠 마케팅은 마케팅의 주류로 자리잡으며 전통적인 광고의 입지를 위협하고 있습니다. 그런데 콘텐츠 마케팅은 범주가 넓어 기업 특성에 따라 실무에서 담당하는 업무가 다양한데요. 이번 글에서는 패스트캠퍼스의 콘텐츠 마케터들은 무슨 일을 어떻게 하는지 자세히 알려드리고자 프로그래밍팀 시니어 콘텐츠 마케터 김하림님과 파이낸스팀 콘텐츠 마케터 이유나님을 모시고 인터뷰를 진행했습니다.안녕하세요 하림님 유나님, 오늘 인터뷰에 응해 주셔서 감사합니다. 간단하게 자기소개 부탁드려도 될까요? 안녕하세요, 프로그래밍팀 시니어 콘텐츠 마케터 김하림입니다. 지난주에 막 입사한 지 1년이 되었어요.안녕하세요, 저는 파이낸스팀 콘텐츠 마케터 이유나라고 합니다. 패스트캠퍼스에서 일한 지 이제 9개월 째고요. 두 분께서는 패스트캠퍼스에 합류하기 전 무슨 일을 하셨는지, 어떤 계기로 패스트캠퍼스 콘텐츠 마케터로 입사하게 되셨는지 궁금합니다. 패스트캠퍼스에 오기 전에는 웹디자인 일을 하고 있었는데, 회사 규모가 작아 세금계산서 발행부터 제안서 작성까지 회사 운영의 전과정에 참여해야 하다 보니 웹디자인에만 몰두할 수 있는 환경은 아니었어요. 전문성을 가지고 한 가지 일에 좀 더 집중하고 싶어 회사를 그만두었습니다. 그러다 채용공고를 살펴보던 중 패스트캠퍼스의 콘텐츠 매니저(지금은 콘텐츠 마케터로 직함이 바뀌었죠) 자리를 발견하게 되었고요. 제가 할 수 있는 다양한 일들을 업무 역량으로 발휘할 수 있을 것 같아 지원했어요. 저는 지금 마지막 학기를 보내고 있는 대학생이에요. 경영을 전공했고, 교육 분야에도 관심이 있어 국어교육학과를 복수전공하고 있었어요. 제가 흥미를 느낀 이 두 분야를 접목해 할 수 있는 일을 찾다 교육업에 있는 마케터 일이 저에게 딱 맞을 것 같아 지원서를 넣었던 기억이 납니다. 인턴으로 입사했다 정직원으로도 계속해서 함께하는 중이예요. 유나님께서는 인턴 기간이 종료된 후에도 이곳에서 일하고 계신데, 패스트캠퍼스를 선택하신 이유가 무엇일까요? 패스트캠퍼스에서는 인턴이라도 정직원과 같은 일을 하면서 눈치 보지 않고 자기 의견을 낼 수 있던 것이 좋았어요. 저에게는 자기발전을 계속할 수 있는지가 직업을 선택할 때 중요한 기준인데 여기에 맞고, 사회 초년생으로서 일을 배우기에도 좋은 환경인 것 같아 정직원으로 계속 일하고 있습니다. 제가 막 입사했을 때, 당시 팀장님께서 제 직무에 대해 설명해주셨던 것이 기억에 남아요. “프로덕트 매니저가 오프라인에서 기획을 하는 사람이면 콘텐츠 마케터는 온라인에서 기획을 하는 사람이다”라는 말이었는데 저희는 고객분들이 온라인에서 접하는 모든 콘텐츠를 기획·제작하고 글을 쓰는 만큼 일리가 있는 것 같아요. 기획자, 제작자, 에디터의 역량을 모두 발휘해야 하는 사람이 콘텐츠 마케터라고 생각합니다. 하림님의 말씀에 더해, 우리 회사 콘텐츠 마케터가 맡는 특별한 일 중 하나는 상세페이지를 기획 및 디자인해 고객을 설득하는 글쓰기를 한다는 것이에요. 마케터라 하면 광고 크리에이티브를 제작하는 데 업무의 초점이 맞춰져 있다는 느낌이지만, 여기서는 기획 역량까지 발휘해야 하는 점이 특징이죠. 콘텐츠 마케터로서 다양한 일을 하고 계시는데, 어느 정도 정해진 일과가 있을까요? 하루 일과를 딱 잘라서 말하긴 어렵습니다. 그때그때 담당하는 일의 중요도가 달라져서요. 우선 프로덕트 매니저 분이 새로운 강의 기획을 완성하시면 신규 상세페이지를 제작하고, 기존 강의를 업그레이드해 오시면 그에 맞게 기존 상세페이지의 내용을 수정합니다. 홍보 진행이 원활하지 않으면 팀원들과 트러블 슈팅을 통해 상세페이지나 광고 크리에이티브를 손보기도 하고 강사 인터뷰, 수강생 인터뷰 혹은 블로그 게시물이나 카드뉴스 형태의 오가닉 콘텐츠를 발행하기도 합니다. 업무 진행에 있어 큰 틀은 있겠지만 그때그때 업무의 우선순위가 달라져요. 일이 많아 야근할 때도 종종 있고요. 패스트캠퍼스 콘텐츠 마케터 직무, 입사 전 생각했던 것과 실무를 진행하는 것에 차이가 있나요? 저는 비슷한 것 같아요. 간단한 퍼블리싱, 마크업(HTML/CSS로 코딩을 하는 것)을 할 수 있는 사람으로서 이런 스킬들이 상세페이지 제작 업무에 도움이 될 거라고 생각했거든요. 입사 전 필수적으로 갖춰야 할 스킬은 아니었지만 업무를 진행하다 보니 마크업을 알아서 더 도움이 되는 게 많았어요. 그런데… 트러블 슈팅이 이렇게 많을 줄은 몰랐네요. 하하. 저는 하림님과 반대예요. 콘텐츠 마케팅이 이렇게까지 다양한 능력을 요구하는 일인 줄 전혀 몰랐어요. 업무 스킬은 물론 담당하는 강의에 대한 지식적인 부분까지도요. 깊게 파고들 필요는 없지만 얕고 넓은 지식이 필요한 일이더라고요.물론 하림님처럼 업무와 관련된 스킬을 가지고 입사하시면 실무에 확실히 도움 되는 부분이 있어요. 포토샵이나 HTML/CSS 같은 것들요. 하지만 저의 경우에는 포토샵도 못 다룰 만큼 아무것도 모르는 상태로 일을 시작했는데도 필요한 것들을 배워 가며 일할 수 있는 환경이라 괜찮았어요. 그 과정에서 성장하고 있는걸 스스로도 느낄 정도에요.지금 패스트캠퍼스에서는 프로그래밍, 데이터 사이언스, 마케팅, 외국어 등 다양한 팀에서 콘텐츠 마케터를 채용 중인데요. 팀별로 콘텐츠 마케터가 갖춰야 할 배경지식, 선호하는 스킬셋이 다를까요? 크게 차이는 없는 것 같아요. 합류하는 팀에 따라 만들게 되는 콘텐츠의 성격은 달라질 수 있지만 배경지식이 필수는 아니거든요. 프로덕트 매니저 분들이 작성하신 기획 문서를 읽고 핵심이 되는 부분을 짚어 콘텐츠로 만들어낼 수 있으면 됩니다. 이해하기 어려운 부분은 프로덕트 매니저 분들께 물어보면 어느 팀에서건 친절하게 알려주실 거예요. 맞아요. 저도 파이낸스 분야를 공부하며 콘텐츠를 만들고 있는데, 아는 게 점점 많아지고 있는 것 같아 뿌듯합니다. 콘텐츠 마케터는 끊임없이 새로운 것들을 배워야 하는 직무 같은데요. 패스트캠퍼스에서 콘텐츠 마케터로 일하며 가장 힘든 점은 무엇인지 솔직하게 말씀해 주신다면? 하나의 콘텐츠에 오랜 시간을 투입할 수 없는 점? 일주일에 새로운 상세페이지를 세 개씩 만들 때도 있다 보니 한 가지 업무만 집중해서 파고들 시간적 여유가 없어요. 특히 트러블 슈팅이 많이 발생하다 보면 업무 시간이 절대적으로 부족하죠. 유나님 말씀에 더해, 강의마다 특징을 가장 잘 보여줄 수 있는 상세페이지를 만들기 위해 고민하는 게 재밌으면서도 어려운 일 같아요. 이런 부분에 대해 어떤 도움을 드릴 수 있을까 다른 시니어 분들과 함께 고민 중이고요. 그리고 솔직히 말하자면, 일이 정말 많아요. 그게 제일 힘들죠. 업무 과다로 고생이 많으신데, 힘든 점들이 있음에도 이 일을 계속하게 만드는 원동력은 무엇인가요? 일은 많지만 업무 방식에 제한은 없어서 이것저것 새로운 시도를 해 볼 여지가 있다는 게 좋아요. 상세페이지를 수정했거나 새로운 광고 크리에이티브를 만들었는데 효율이 좋다거나, 오가닉 콘텐츠를 발행했는데 커뮤니티 등에 업로드되는 등 좋은 반응을 얻었다거나 하면 보람도 있고요. 틀에 박힌 일을 하지 않는다는 점이 재밌어요. 맞아요. 새로운 시도에 대한 제재가 없으니 할 수 있는 게 많아서 좋죠. 성과에 따른 연봉협상도 유연하게 이뤄지고요. 어떤 콘텐츠 마케터를 동료로 맞이하고 싶으신지 궁금합니다. 새로운 시도에 대한 거리낌이 없으신 분. 새로운 일이 주어졌을 때 ‘저는 이거 못하겠어요’가 아니라 ‘이것도 저것도 해 볼게요’라고 말할 수 있는 분! 팀원들과 협업을 잘할 수 있는 분. 프로덕트 매니저, 퍼포먼스 마케터의 의견을 반영해 콘텐츠를 제작하고 배포하기 때문에 커뮤니케이션 능력이 좋다면 일을 잘할 수 있을 것 같아요. 거기에 하나 더, 자신의 의견만 고집하기보다 다른 사람의 의견을 잘 받아들일 수 있는 분. 서로의 잘잘못을 따지기보다 더 나은 방향을 위해 협업하고 있다는 걸 잊지 않는 분이면 좋겠어요. 쓰는 걸 두려워하지 않는 분이면 정말 좋고요. 맞아요. 포토샵이나 워드프레스 스킬들은 모르셔도 괜찮아요. 저희가 알려드릴게요! 마지막 질문입니다. 두 분께 패스트캠퍼스란 어떤 곳일까요? 매일매일 변화무쌍한 곳. 틀에 박힌 일을 하지 않아요. 오늘, 지금입니다. 오늘이 쌓여서 내일이 되고 매일이 되는데, 그 오늘이 매일매일 새로워요.* 패스트캠퍼스 콘텐츠 마케터는? *  패스트캠퍼스 고객들이 접하게 되는 모든 접점을 컨트롤하는 역할을 담당합니다. 기획 과정에 참여하는 것은 물론 교육 콘텐츠 상세페이지를 제작하고, 매력적인 광고 크리에이티브를 만들고, 강사와 수강생들의 목소리를 전달하기도 합니다. 즉, 패스트캠퍼스에서 만들어지는 모든 콘텐츠의 외모를 결정하고 그 톤앤매너를 관리합니다.
조회수 992

Fuck You Startup World!

** 본 글은 shem의 미디엄글 'Fuck You Startup World'을 번역/편집했습니다.어제 미디엄 베스트 글 중에 내 눈길을 끈 제목의 글을 발견했다. 'Fuck You Startup World.' 이 얼마나 자극적이고 직설적인 제목인가. 안 열어 볼수가 없는 글 제목이다. 이건 그냥 농담반 진담반으로 스타트업에 미친 사람들이 얼마나 별종들인지를 자조적으로 까는 내용의 글이다. (물론 진짜 까는건 아니고 어디까지나 재미로) 내용이 재미있어서 소개한다.참고로, 글에서 계속 나오는 What the fuck...  어쩌고의 어감을 가장 잘 살릴 한국어 표현에 뭐가 있을까 고심하다가 다음의 단어로 선택했다. (개를 사랑하는 사람으로서 별로 좋아하는 표현은 아니지만...)이런 개소리좀 그만!내가 뭘 어쨌다고 맨날 나만가지고 ㅈㄹ이야!!!맨날 아침에 30분씩 TechCrunch, TNW, Wired, Gizmodo, Mashable, The Verge and ProductHunt 읽어보면서 뭔가 내가 뒤쳐지고 있지 않는다는 개소리좀 그만하자.이런 요상한 대화좀 그만하자. "오 싯! 스냅챗 어제 새로나온 기능 봤냐?" "이런 젠장, 인스타 이거 완전 스냅챗 배꼈네?" "어제 주커버그 라이브 봤어?" "오마이갓! 엘론머스크 트윗한거 죽이는데?" "헐, 우버가 넥스트 펀딩에 또 성공했데" 이런 개소리좀 그만해. 너네 빼고는 아무도 신경 안쓰거든.너의 크레이지한 업무시간 자랑질좀 하지마. 아무도 엘론머스크처럼 주 100시간 일하고, 메리사 마이어가 주 130시간 일하면서 모유수유하는거에 놀라거나 동기부여 받지 않거든. 그리고 넌 엘론머스크나 메리사 마이어가 아니거든? 너가 우주에 갈것도 아니고 스페이스 X 만들것도 아니면 니 ㅅㅂ맥북은 저리 집어치우고 니 애들이랑 좀 놀아줘.너네 그 이상한 술문화좀 어떻게좀 해봐. 맨날 상상력 넘치는 마일스톤 만들어놓고 뭐만하면 '오늘도 우리 마일스톤 달성했으니 축배 들어야지!' 하면서 사무실에서 위스키, 맥주, 피자 같은것좀 먹지마라. 모든 회사가 다 사무실에 바 차리고 글랜리벳 17년산 갖다놔야 쿨해보이는거 아니거든.너 그 요상한 먹는 습관좀 그만할래? 왜 넌 모든게 항상 극단적이니? 왜 맨날 "나는 내 모든 순간을 최적화시켜야해!!" 하면서 피자랑 스낵을 거의 마시듯이 먹어대는가 하면 (스타트업 하는 사람들이 맨날 시간 아낀다고 밥 빨리 먹는거 비꼬는듯), 또 어떤때는 "난 이거 소이렌트만 마시면서 다이어트 중이야" 라고 하질 않나...펀딩 받을때 마다 축하+자랑질한다고 파티좀 그만 열어대라. 너 그거 아니? 너 그럴때 마다 니 무덤 조금씩 더 깊게 파고 있는거라는거? 너가 진정 축하해야할 때는 (펀딩 받았을 때가 아니라) 니가 니 회사의 일부분을 팔지 않고서도 사업 잘 굴릴 수 있게 됐을 때거든!! (개인적으로 가장 맘에드는 부분임 ㅋㅋㅋ)너 오픈형 사무실 만든다고 그만좀 깝쳐댈래? 스탠딩형 책상도 짜증나고, 짐 볼 갖다논것도 짜증나고, 누워서 일하는 데스크도 짜증나고, 심지어 런닝머신에다가 책상 매달아논것도 짜증나거든? 그런다고 도리토스 맨날 우적우적 씹어대던게 빠질것 같어? 제발 좀 평범한 책상에 평범한 사무실 만들자.일주일에 책 한권씩 읽는다는 개소리좀 그만해 제발. 책 그렇게 빨리 독파할 수 있는사람 없거든? 다시 말해줄까? 이 지구상에 그 누구도 책 한권을 그렇게 빨리 읽을 수 있는 사람은 존재하지 않아! (실제로 읽지도 않으면서 읽은 척 하는거 비꼬는 중임) 어디서 맨날 남이 단 코멘트 갖은거 읽어가지고 너가 읽은 척 하는거 내가 모를줄 아니? 아! 그리고 말콤 글래드웰이나 린 스타트업 같은거 그만좀 인용해. 솔까말 그거 안 읽어본 사람 누가 있냐?요즘 뭐만하면 창업한다고 찌끄리는거 이제 좀 지겹거든? 특히 대학 갓 졸업해서 창업가라고 설치는것들! 내가 솔직히 말해줄까? 너 그거 "창업가" 아니고 그냥 "실업자" 라고 말해야 하는거거든! 아, 그리고 맨날 뭐만 하면 "나 이거 부트스트랩 중임" "지금은 차고에 사무실 차려놨음" "위워크에 (1평도 안되는) 사무실 차렸음!" 이런 개소리좀 그만하자. 내가 이렇게 말하면 꼭 이러는 애 있더라. "뭐? 그래도 난 사무실에 우리 개도 데려갈 수 있거든?"너 그 '생산성병' 걸린것 좀 어떻게 해봐라... 난 아침에 6시에 일어나거든? (이 정도면 제법 일찍 일어나는 거라는 뜻) 근데 넌 맨날 "난 새벽 4시에 일아나서 30분 명상하고 30분 분기별/연간 목표 점검하고 소이렌트 드링크로 아침을 대신하면서 동시에 리텐션 차트를 점검하고..." 이런 개소리 하면서 내가 마치 게으른 사람인것 마냥 얘기하더라? 아, 그리고 너 맨날 노이즈 캔슬링 해드폰쓰고, 뽀모도로 타이머 (25분 집중, 5분간 휴식의 4 사이클을 알람으로 알려주는 타이머)니 빽빽한 할일목록, 각종 생산성 앱, 노트, 포스트잇 노트 뭐 이런거 주루룩 나열해대는거 아 진짜.. 멘붕이다!!!너 맨날 TV보는거는 시간낭비고 시대에 뒤떨어 지는거라고 욕하는거, 그러면서 정작 너는 (내가 TV보는 시간에) 넷플릭스에서 내가 보는 TV쇼 죄다 완주하고 있는거, 그거 진짜 짜증난다. (원문에 Netflix and chill 이라고 표현되어 있는데 그 넷플릭스에서 영화한편 때리고 애인이랑 붕가붕가하는 뜻으로 쓴건지 아니면 진짜로 그냥 넷플릭스 보면서 소파에 늘어지고 있는거 표현한건지는 솔직히 모르겠음...) 너 맨날 Mr. Robot이 딱 니 상황 같다고 얘기해 대는것도 완전 웃끼거든?? (Mr. Robot은 미드 제목입니다.) 너랑 미스터 로봇이랑 다른점은 넌 그저 진짜 로봇같은 놈이라는거지. 너 또 맨날 HBO의 실리콘 밸리 미드 보면서 의문 갖지도 않고 맹목적으로 "ㅋㅋㅋㅋ 저거 진짜 현실적인데? 잘 묘사했는데?" 그러잖아? 그러면서 정작 너는 맨날 내가 뭐만 말하면 나한테 "그게 왜 그렇다고 생각하는데? 이유가 뭔데?" 그러는거 솔직히 짜증나거든?너 채용할때 마다 그 요상스러운 인터뷰 질문들좀 그만해주라 제발. 세상에 누가 그딴 질문들을 할까? 나 지금까지 C배열 비트로 바꾼다던지, whiteboard에 컴파일 에러 뜬다던지 한 적 없었고, 자바에 해쉬셋 필요하면 그냥 해쉬셋 쓰고말지 그걸 무슨 complexity 코드 블락 어쩌고 끙끙대고 있을 필요 없거든? 그냥 다른 EC2 인스턴스 쓰고말지. (솔직히 이 부분은 내가 개발자가 아니라서 잘 이해는 안감..ㅋㅋㅋ)제발 각종 용어들이랑 뭐만하면 줄임말 써대는것좀 그만해줘. DAU’s, WAU’s, MAU’s, ARPU, LTV, CPM, CPI, CPC, PPC, CPA, CTR, SEO, ASO, YoY, WoW... 아 진짜 쉬팍 너무한거 아냐?? 세상에 누가 저 많은 지표들 일일이 매일 체크하고 있냐? 아, 그리고 제발 그놈의 네트워킹 이벤트!!!! 무슨놈의 네트워킹 이벤트에만 가면 모두가 다 어떤 어떤거의 CEO고 나는 뭐 이 시장을 디스럽트할 어쩌고 MVP를 만들고 있고, 일단 만들기만 하면 하키 스틱같은 J커브 그리는건 당연 빠사고...Tranceparency trend니 post mertem (사후 분석 툴 같은데 잘 모르겠음..)이니 5 whys니 이런거 지겹거든? 그리고 맨날 A/B 테스트 해댄다고 사이트 바꿔대는데, 무슨 내가 리프레시 할때마다 피처가 막 휙휙 바뀌냐? 난 그저 접속할때 마다 같은 버전의 사이트가 보고싶을 뿐인데 그만좀 바꿔대라.너네 맨날 파티나 뭔가 크레이지한 오프라인 이벤트 한다고 돈 펑펑 써대는거 그만좀 할래? 그리고 아무도 사용하지도 않는 탁구테이블이며 뮤직룸이니, 수면실, 명상실, 스트레스프리존, 필라테스룸이니... 이딴거에 돈낭비좀 그만하지 그래? 아, 그리고 뭔가 있어보인다고 요상스런 인센티브 플랜이나 휴가 무한대로 준다고 자랑해 대는거 솔직히 다 ㅂㅅ같거든? (아무리 휴가 무한대라도) 실제로 너네 직원들 휴가도 못가고 죽어나는거 내가 모를것 같니?아, 그리고 다른거 진짜 다 집어 치우고라도 이 말은 좀 꼭 하고 싶다.'너도 나처럼만 하면 되'라는 개소리좀 그만해라!!!번역은 여기까지 인데, 솔직히 뭐 공감가는 내용도 있고 아닌것도 있고 한데, 그냥 농담반으로 작성된 글인 듯 하니 너무 진지빨고 달려들지는 말자 ㅎㅎㅎ글쓴이는 스팀헌트 (Steemhunt) 라는 스팀 블록체인 기반 제품 큐레이션 플랫폼의 Co-founder 및 디자이너 입니다. 비즈니스를 전공하고 대기업에서 기획자로 일하다가 스타트업을 창업하고 본업을 디자이너로 전향하게 되는 과정에서 경험한 다양한 고군분투기를 연재하고 있습니다.현재 운영중인 스팀헌트 (Steemhunt)는 전 세계 2,500개가 넘는 블록체인 기반 앱들 중에서 Top 10에 들어갈 정도로 전 세계 150개국 이상의 많은 유저들을 보유한 글로벌 디앱 (DApp - Decentralised Application) 입니다 (출처 - https://www.stateofthedapps.com/rankings).스팀헌트 웹사이트 바로가기
조회수 1937

[직무] PO(Product Owner) : 미미박스 프로덕트 살림꾼 PO 직무 소개

안녕하세요. 미미박스의 소식을 전달하는 Ava입니다.오늘은 미미박스의 PO(Product Owner)는 어떤 업무를 하고 있는지 소개해드리려고 합니다!아직 당신이 만나지 못한 당신의 아름다움을 미미박스에서 만날 수 있도록, 상상과 협업을 통해 최고의 고객 경험을 만드는 미미박스의 PO(Product owner) !PO는 위에 말씀드렸듯 Product Owner의 약자입니다. Product는 미미박스 커머스 플랫폼, 안드로이드 앱, iOS 앱 등 미미박스가 제공하는 모든 서비스를 말하죠! PO는 미미박스 프로덕트의 오너로써 가장 근본적인 자리에서 '고객 경험'에 대한 고민을 하고 프로덕트를 만들어가고 있습니다. 이러한 업무를 하는 미미박스의 PO가 어떤 마음가짐을 가지고 있는지, 구체적으로 어떻게 일을 하는지 키워드와 함께 소개해드립니다. PO는 크게 두 가지를 계속 생각하는 일입니다.동시에 프로덕트를 매일 같이 살펴보고 버그가 있는지,고객 반응은 어떤지도 세심하게 살펴야 합니다. 즉, 프로덕트에 대한 목표를 설정하고, 회사 내의 협업을 이끌어 최고의 고객 경험을 만드는 프로덕트 살림꾼인 것이죠. 회사 전략에 따른 경영진의 요청, 고객의 소리, 내부 직원들의 피드백, 그리고 PO의 경험과 직관까지한 프로덕트는 수많은 목소리 가운데 있습니다. PO는 프로덕트가 지속적으로 성장할 수 있도록 이런 수많은 니즈의 우선순위를 설정하고 정의할 수 있어야 합니다. 우선순위가 정해졌다면 동료, 혹은 대표를 설득해서 끌고 나갈 수 있는 의지와 깊이가 있어야 합니다.PO는 조직의 협업을 이끄는 역할을 합니다. 크게 기술 조직과 영업조직을 연결하는 역할을 하죠. PO는 영업조직의 데이터, 정보, 전략을 받아 기술 조직에서 설계할 수 있도록 기획하고, 반대로 기술 조직에서 할 수 있는 것들을 파악하고 구현하여 영업조직 운영이 더 빠르게 될 수 있도록 기획합니다. PO는 혼자 아웃풋을 낼 수 있는 직무가 아닙니다. 프로덕트의 성장을 위해 영업, 프로모션, 디자인, 기술 등 다양한 조직과 끊임없이 커뮤니케이션해야 합니다. 우리는 왜 이걸 만들어야 하는지 설득과 토론을 통해서 전문가들이 유기체처럼 움직일 수 있도록 만들어야 하죠.  예를 들면 고객 경험을 개선하기 위해서 UX 디자이너와 커뮤니케이션을 통해 PO의 전략이나 콘셉트에 맞는 디자인을 스스로 고민하고 만들어 낼 수 있게 해야 합니다. 반대로 디자이너에게 미적인 감각을 요구하는 게 아니라 경청을 통해 실무자의 전략에 대한 의견이 얼마나 합리적인 지도 빠르게 이해할 수 있어야 합니다. 즉, 회사에 있는 전문성을 잘 융합해 최고의 고객 경험을 만드는 예술인 것이죠.미미박스의 PO는 파괴적 혁신과 기본적인 고객 경험, 이 두 가지 방향을 동시에 기획해야 합니다. 기본적으로 고객이 예측할만한 탄탄한 프로덕트를 구축할 수 있어야 합니다. 동시에, 기존 커머스와는 다른 파괴적 혁신을 품은 프로덕트를 기획해야 하죠.  이를 위해 기존의 프로덕트에 대해 계속 질문을 던져야 하고 개선, 혹은 혁신을 위한 위한 새로운 생각의 틀을 만들어가야 합니다.  현재 미미박스는 데이터를 통해 추천 경험을 강화할 계획을 가지고 있습니다. 자 여기서부터는 PO의 상상이 시작되는 것이죠PO는 어떤 팀에서 어떤 것을 구현할 수 있는지 파악하고 있어야 합니다. 미미박스의 PO인 Ryan은 풀스텍 개발자의 경력을 가지고 있으며, 타 커머스 업체에서도 일을 했었습니다.또한 프로덕트를 기획해본 경력이 있었죠. 이런 경력으로 테크팀에서 누가 뭘 구현할 수 있을지, 커머스에는 어떤 기능이 필요한지 빠르게 알 수 있습니다.즉, PO 직무를 하기 위해서는 기술적 배경지식(개발, 디자인 등)과웹&모바일 프로덕트 기획해본 경험이 있어야 합니다.두 번째는 커뮤니케이션 스킬입니다. 전략이나 콘셉트, 문제 등 추상적인 것을 정의하고,데이터를 기반으로 실무자들과 커뮤니케이션할 수 있어야 합니다.  마지막은 가장 중요한 건데요. 바로 문제 해결 의지입니다. PO는 스스로 목표와 전략을 설정하고 리드해야 하죠. 다양한 협업관계 속에서 깊이와 의지가 부족하다면 이것도 저것도 아닌 결과물이 나올 수 있어요. 그렇기 때문에 확고한 문제 해결 의지를 가지고 있어야 합니다. 다시 한번 미미박스를 살펴보세요. 당신의 상상을 펼칠 수 있는 부분이 보이나요?미미박스와 함께 게임체인저가 되어보세요!
조회수 931

[퍼포몸쓰 일상] #0 어쩌다 슬라운드

다니던 회사를 그만두고 한 달 정도 방황했다. 친구들의 동업 제안, 머릿속을 맴도는 사업 아이디어, 이런저런 스카우트 제의. 무엇하나 쉬운 게 없다고 생각했다. 핑계처럼 로켓펀치를 켜고 뻑뻑한 눈알 위를 겉도는 채용공고를 훑었다.딱 하나, 홈에 덜컥 걸리는 느낌이 들었다. 저녁 8시 40분. 입사 지원하고 두 시간이 채 지나지 않아 전화가 걸려왔다. 당황과 반가움 중간 어딘가의 감정을 안고 통화했던 기억이 난다. 그들이 찾던 포지션이 신기할 정도로 나와 맞아떨어진다는 데서 오는 반가움. 굉장히 빠른 액션에서 오는 당황. 전화받고 이틀 후 오전 11시로 인터뷰 약속이 잡혔는데 재밌는 건 그 날이 일요일이었다는 거다. 많은 인터뷰를 봤지만(인터뷰어로서, 인터뷰이로서) 주말 오전 인터뷰는 처음이었다. 좋고 나쁨을 떠나서 나에겐 이례적인 일이라 가벼운 마음으로 갈지, 진중한 마음으로 갈지 갈팡질팡했다.일요일 오전 11시.매트리스 업계의 적폐를 바꾸고 싶다던 두 남자와 만나 가장 먼저 한 이야기는 폴리에스테르 빨대에 관해서였다. 거북이의 콧구멍에서 빨대를 뽑아내는 영상 속 거북이가 얼마나 쾌감에 젖은 표정을 지었는지가 우리의 첫 이야기 소재였다. 아무도 어색해하지 않고 첫 만남에서 그런 이야기부터 시작했다는 게 지금도 조금 어처구니가 없지만 우리는 꽤 진지하게 이야기를 이어나갔다.다른 건 모르겠고, 제품 하나는 잘 만들고 싶었다던 그들은 고맙게도 내가 개인적으로 끄적이던 콘텐츠들을 너무나 마음에 들어했다. 반대로 난 짧은 대화에서도 묻어 나오는 그들의 제품에 대한 자부심과 전문성, 열의가 좋았다. 난 내 길지 않은 커리어의 대부분인 4년 반 정도를 스타트업에서 보냈다. 그래서 초기 스타트업이 멤버의 유능함과는 별개로 얼마나 고단한 길을 걷는지 잘 알고 있다.'그동안 쉼 없이 고생했으니 이번엔 좀 편하게 일하자''일단 돈 많이 주는 곳으로 가자''이름이 알려진 곳으로 가자'이직 고민을 하면서 머릿속을 가득 메웠던 생각들은 결국 사람 앞에 스러졌다. 초기 스타트업에서 굴러다녔던 경험만큼, 능력 있고 좋은 사람들과 같이 일하는 즐거움을 알기에 두 명의 founder와 이야기하면서 다시 한번 가족을 생각하지 않는 이기적인 결정을 내렸다(부모님, 장모님, 마누라 죄송합니다).一切有爲法 如夢幻泡影 如露亦如電 應作如是觀스타트업을 하면서 가장 많이 떠올리는 문구다(참고로 교회 다닌다). 현실의 꿈이 비록 손에 잡히지 않더라도 꿈을 빚기 위해 그렇게 난 슬라운드에 콘텐츠 마케터로 합류했다.  

기업문화 엿볼 때, 더팀스

로그인

/