스토리 홈

인터뷰

피드

뉴스

조회수 1642

린스타트업의 한계

'스타트업'이라는 단어 아는 사람 치고 '린스타트업'이라는 것을 모르는 사람은 흔치 않을 것이다.내가 린스타트업에 대해 알게 된 것은 2013년이었던 것 같다. 1년 정도 열심히 연구해보면서, 실제로 린스타트업에 맞춰서 사업개발을 해보기도 했고, 여러시도를 해봤던 것 같다. 하지만, 지금 나는 린스타트업 회의론자다. 린 스타트업에는 많은 약점이 있다고 본다.우선, 린스타트업은 기업이라면 마땅히 갖춰야 할 '방향성'과 '거시적인 전략'을 갖추는 부분에 있어 매우 취약하다. 이는, '스타트업'을 아직 '기업'이 되기 이전의 실험적인 임시조직으로 보기 때문이다. 이 때문에 린스타트업은 사업을 Bottom-up 형태로 개발하게 유도한다. 아주 낮은 단계 가설을 세우고, 그것에 맞는 실험을 하여, 실험을 통과하면 그다음 단계 가설로 넘어가는 방식이다.하지만 린스타트업을 알고 5년이 지난 지금 다양한 사례를 보며 연구한 결과, 린스타트업 이론으로 성공한 기업은 매우 드물었다. 마치, 실험실에서 실험을 하는 것처럼 작은 가설을 하나하나 입증한 기업들은 자신의 최종 목적이었던 '특정 타겟군 X를 위한 유튜브(우버, 페이스북 등)'이라는 가설을 입증하는 데 도달한다. 그러나, 사실 이런 린스타트업 모델을 서비스에 적용한 스타트업들의 최종 목적은 여기서 끝나는 것이 아니라 이 작은 승리를 바탕으로 사업을 확장시키는 데 있었다.실제로, 'X를 위한 페이스북'등을 바탕으로 한 많은 SNS, O2O 업체들 중 어느 정도 성공한 스타트업들이 많았지만, 그들이 진짜로 만들고 싶었던 것은 'X를 위한 페이스북' 정도가 아닌 이것을 바탕으로 비즈니스 모델을 하나하나 늘려, 의미 있는 규모의 시장을 빠르고 정확하게 잡아내겠다는 것이었을 것이다. 그리고, 그 최종 가설(방향성)에 금융자본도 몰렸을 것이라 생각한다.하지만, 대부분 이렇게 정확한 타겟팅으로 정확한 실험에 성공한 스타트업은 해당 서비스를 Horizontal 또는 Vertical Expansion 하는 데 대부분 실패했다. 이는 작은실험에 성공한 스타트업들이 일정 궤도 이상으로 지속가능하게 성장 가능한 사업모델을 갖추는 데 실패했음을 의미한다. 왜 이런 일이 발생했을까? '고객이 만족하는 것을 만든 것' VS '고객이 원하는 것을 만든 것'대부분의 Bottom-up 사고방식은 아주 작은 단계에서 그다음 단계로 넘어가는데 너무 집중하는 경향이 있다. 여기에 더해, A/B 테스팅까지 하다 보면, 고객의 취향에 따라 사업의 Focus가 마치 사다리 게임처럼 여기저기 랜덤 하게 움직이게 된다. 결론적으로, 창업자 스스로도 자기가 왜 창업을 했으며, 이 서비스를 하고 있는지 망각하고 전체적인 방향성을 잃고 고객의 취향과 단기적인 실험 결과에 의해 사업을 운영하게 될 수 있다. 하지만 창업자 스스로는 이것을 전혀 문제로 느끼지 않을 확률이 크다. 린스타트업 이론에 너무 몰두하게 되면, 이 상황을 '나는 고객을 만족시켰어'라고 단순하게 바라볼 수 있다. '고객을 만족시켰어'와 '고객이 원하는 것을 마침내 만들었어'에는 아주 큰 차이가 존재한다. 린스타트업 이론은 이 두 가지 경계를 모호하게 만들어 중대한 오류를 야기할 수 있다.고객이 만족하는 것을 만들기 위해서는 고객을 지속적으로 인터뷰하며 직접적 또는 간접적으로 힌트를 얻어, 그들이 원하는 것을 만들어주면 된다. 이 때문에, 린 스타트업은 가설에 대한 반복된 실험을 통해 고객이 '만족하는 것'을 만들 수 있는 완벽한 이론인 것이다. 그러나, 고객이 '원하는 것'을 만드는 것은 실험적으로만 풀어낼 수 없는 것이다. 고객의 '니즈'는 고정된 것이 아니라 시간, 상황 등에 따라 지속적으로 변화하기 때문이다. 대부분의 크게 성공한 비즈니스를 보면 '타이밍'이 가장 핵심 Factor인 경우가 많았다. 즉, A라는 가설을 검증하는 실험에 실패했더라도, 한 달 뒤에 실험을 재개하면 성공할 수 있다는 것이다. 이 때문에 '린스타트업'이라는 실험주의적인 모델은 단독으로 쓰여선 안된다. 무엇보다 먼저, 거시적인 사업전략과 방향성을 세운 뒤, 전략의 실행방안을 디테일하게 세분화하여 그 점들에 국소적으로 '린스타트업'을 적용하는 것이 더 합리적으로 보인다.전통적인 기업들은 이러한 '전략'의 형태가 더욱 강한데, 스타트업들은 이런 것을 대기업들이나 하는 것이라고 무시하는 경향이 있다. 그들이 말하는 전략이 너무 광의의 개념을 담고 있기 때문이다.예를 들어, 삼성전자의 의사결정자가 '우리는 반도체 사업에 사활을 걸겠습니다'라고 말한다면, 똑같은 사업을 하더라도 스타트업의 의사결정자는 '우리는 전자사전 업체가 사용할 수 있는, 기존 메모리칩보다 20배 빠르고 2배 싼 메모리칩을 만듭시다'라고 말한다. 이는 스타트업이 대기업의 소규모팀과 매우 유사하게 생각하고 움직인다는 것을 뜻한다. 대기업의 제품개발팀은 작은 승부에서 승리하거나 실패하거나 결론적으로 생존에는 큰 지장이 없지만, 스타트업은 그 자체로 기업이기 때문에 작은 승리만으로는 살아남을 수 없다. 결국 큰 승리를 위해 작은 승리들이 필요한 것인데, 스타트업의 경우 작은 승리 다음의 시나리오가 매우 약하다. 무엇이 '작은 승리'인지 '큰 승리'인지 정확하게 정의할 수가 없는 것이 린스타트업의 약점인 것이다. '고객'에 따라 전략을 선회하기 때문에 창업자 스스로도 Next를 정확하게 예측하고 준비할 수 없는 것이다.이런 이유들 때문에 스타트업이 사업을 개발하고 계획함에 있어, '린스타트업'은 결코 단독으로 쓰일 수 없는 이론인 것이다. 그렇다면 왜, 린스타트업은 이렇게 선풍적인 인기를 끌었던 것일까?1. 무려 '실리콘밸리'에서 왔다.이미 미국 경영학계, 피터 틸 등 창업자들 사이에서 린스타트업에 대한 반론이 나오고 있는 상황이었지만,우리나라에서는 그 점에 크게 주목하지 않고 린스타트업 이론을 아무 비판 없이 수용했다. 지금도 린스타트업을 국내에서 반대하는 글을 쓴 사람을 찾기 어렵다. 2. 누구나 가르치기 쉽다.우리나라 사람들은 명확한 '답'이 있는 것을 좋아하고 그것을 필기하고 공부하는 것을 좋아한다.불확실한 것을 극도로 피하는 경향이 있는데, 린스타트업은 여기에 딱 맞는 사업 이론이다. 거기에, 린스타트업 책 몇 권 읽고 린 캔버스만 조금 공부하면 누구나 강사가 될 수 있고 책도 쓸 수 있다.편향 확증을 활용하면 모든 스타트업 성공사례에 린스타트업 이론을 적용할 수 있다. 롯데도 일본에서 껌 팔다가 대기업 됐으니, 껌으로 린스타트업한 회사다.3. 투자자금을 끌어들이는 데 유리하다.린스타트업 이론이 없었다면 사실 엔젤투자나 시드 투자가 이렇게 활성되기 어려웠을 것 같다. 린스타트업 이론이 퍼지면서 대부분 스타트업들이 최소한의 제품을 만들어 어느 정도 검증을 한 뒤 투자를 받았다. 투자자 입장에선 린스타트업이라는 게 아주 좋은 이론이라고 생각한다. 초기기업의 마일스톤을 측정할 수 있는 지표가 만들어지기 때문에, 투자자 입장에선 아주 좋은 것 같다.4. 대부분 스타트업에 만능으로 써먹을 수 있다.보통 사업전략이라면 분야마다 다르고, 활용방식도 제각각인데 린스타트업은 어떤 사업에도 적용할 수 있는 이론이다. 모든 사업이 '고객'을 갖고 있기 때문이다. 이 때문에, 다양한 경영사례나 더 광범위한 고객, 시장분석 없이도 매우 적은 범위의 타깃 고객을 대상으로 한 린스타트업 실험만으로도 사업을 시작해볼 수 있다. 거기에 대한 위험성은 위에 언급한 것과 같다.5. 창업자 마음에 위안을 주고, 용기를 준다.창업자로서 가만히 앉아서 생각만 하고 있으면 자괴감이 든다. 뭔가 발로 뛰고 땀 흘리면 더 값진 하루를 보낸 기분이 드는 것도 사실이다. 그리고, 발로 뛰면 당연히 그만큼 피드백 또는 인사이트를 얻는 것이 있다. 린스타트업은 '결론적인 승리'를 위한 것이라기보다는 '효율성'에 초점이 맞춰져 있다. 어차피 대부분의 스타트업이 실패할 거라면 발로 뛰면서 작은 승리라도 쟁취하라는 것이 핵심인 것이다. 린스타트업을 충실히 따르다 보면, 천천히 검증되가는 내 가설을 트렐로의 'Doing'에서 'Done'으로 옮기는 쾌감을 얻을 수 있다. 그리고 열심히 하루 종일 고객들을 만나며 인터뷰한 것을 보며 더 정상에 다다르고 있다는 생각이 들게 만든다. 린스타트업은 창업자에게 정서적으로 좋다. 성취감을 주기 때문이다.린스타트업은 스타트업이 반드시 공부하고 연구해야 할 이론이라고 생각한다. 하지만, 이것 단독으로는 답을 찾을 수 없다고 생각하며, 추가적으로 활용하는 툴 정도로 사용해야 한다고 본다. 린스타트업으로 얻는 작은 승리 또는 성취감 등이 확률적으로는 '큰 승리'에 기여할 확률이 클지도 모르지만, 역으로 '큰 승리'가 '작은 승리'의 합으로 이뤄지냐고 묻는다면, 그렇지는 않은 것 같다. '큰 승리'를 먼저 정의하는 것이 선행되어야 할 것이라고 본다.린스타트업에서 말하는 '가설', '검증', '학습'에는 약점이 분명히 존재한다. 여기에는 '타이밍'이라는 중요한 사업의 성공요인이 배제된다. '타이밍'이라는 것이 '시간의 흐름을 특정 구간에서 절단한 단면'이라면, 우리는 그 '흐름'에도 몸을 실어서 완전히 이입한 상태가 되어야 하지 않을까?그리고 그러한 완전한 이입상태에서 내린 결론이 '사업전략'이 되고 '큰 승리'로 정의될 것이다. 이것은 사업에 대한 '당위성'이 되기도 하며, 이것은 가설이 아니라 목표이자 비전 그 자체가 된다. 그 아랫단에 존재하는 것들은 실험하고 검증하는 것은 필요할 지 모르나, 이것은 실험 대상이 아닌 것이다. '부자가 되려면 부자인 친구 옆에서 살라'고 누가 그랬다. 이게 전통적인 대기업 방식의 사업전략이다.결론은 무조건 부자가 되겠다는 것이다.린스타트업을 여기에 적용하면 '부자가 되기엔 아직 넌 서민이니까 1,000만 원을 모을 수 있는지 먼저 실험해보자'라고 하는 것과 같다. 그다음 가설은 '3000만 원'이다. 이렇게 단계적으로 실험하는 것이 부자가 되는데 큰 영향을 주는지에 대해선 미지수다. 그리고 이러한 가설과 실험에는 '부자가 되지 못할 지도 모른다' 또는 '돈을 모으다 보면 다른 결론에 도달할 지도 모른다'는 모호성이 담겨있다.'반드시 해내야 된다'라고 고집스럽게 정의된 '큰 승리' 없이는 '큰 기업'이 될 수 없다는 것이 나의 결론이다.성공한 사업들과 사업가들의 이야기를 듣고 연구하다 보면, 거기에 너무 다양한 패턴이 있어 이것을 무언가로 명확하게 정의 내릴 수 없다는 생각이 들었다. 결론은 명확하게 정의 내릴 수 있는 답이 없는 것 같다. 너무 많은 요인이 작용한다. 그런데, 답이 있다고 생각하고 몰입하다 보면 무언가를 반드시 놓친다는 것이다. 기민하고 유연하게 전략을 계속해서 수정하는 작업이 필요하겠다.
조회수 1000

똥바크 UX 디자인 이야기

나는 바크 (Bark)라는 이름의 개의 대화법을 적용하여 주변의 서로 모르는 사람들과 소소한 소통이 가능하게 만들어주는 위치기반 채팅 서비스를 운영하고 있다. 이에대한 디자인 이야기는 예전에 쓴 '대화의 장벽을 허무는 UX' 글을 참고하시길 바란다. 오늘 글에서는 이번에 새롭게 런칭한 신기능 이면에 고민했었던 UX 기획 이야기를 좀 풀어보고자 한다.소셜미디어 메인 인터페이스의 양대산맥: 타임라인 VS 카드스와이프개인적인 의견이지만, 세상의 수백가지의 소셜미디어 서비스들의 메인인터페이스는 사실 페이스북으로 대표되는 타임라인 방식과 틴터로 대표되는 카드스와이프 방식으로 양분된다고 생각한다. 타임라인 방식이란, 유저의 메인화면에 사람들이 포스팅한 컨텐츠를 순차적으로 (Chronological Order) 아래로 스크롤 하며 보여주는 방식을 말하고, 카드스와이프 방식이란 컨텐츠를 하나씩 메인화면에 띄워주고, 유저는 제안된 컨텐츠를 왼쪽/오른쪽으로 스와이프 하는 방식으로 컨텐츠를 소비하는 인터페이스를 말한다.유저 입장에서 위 인터페이스가 어떤 의미가 있는지 우선 생각해 보자. 우선 타임라인 방식의 경우 유저의 컨텐츠 소비 편의성에 초점이 맞춰져 있다. 유저가 수 많은 소셜미디어 계정에서 올라오는 컨텐츠를 직접 찾아다닐 필요 없이 그냥 메인 피드에서 순차적으로 보여지는 컨텐츠를 스크롤 쭉쭉 내려가며 소비하는, 마치 잘 차려진 밥상에서 내가 먹을 음식만 젓가락으로 콕콕 찝어가며 소비하는 방식이다. 옛날 원조 소셜미디어인 싸이월드나 마이스페이스와 비교해보면 이 타임라인 방식이 얼마나 편리한지 이해할 수 있다.싸이월드는 유저가 일일이 게정을 들어가서 컨텐츠를 소비하는 방식이였다. (사진 출처 - http://zodiacsword.tistory.com/211)반면, 틴더로 대표되는 카드 스와이프 방식은 타임라인 방식과 싸이월드같이 계정에 일일이 들어가서 컨텐츠를 소비하던 방식의 장점을 적절하게 섞은 방식이다. 타임라인 방식의 경우 발생하는 가장 큰 문제는 크게 1) 차려진 밥상에 음식이 너무 많을 경우 모든 음식을 맛보기가 힘들다는 것과 2) 계정보다는 컨텐츠가 부각되어 사람들을 '소셜라이징'하게 만들기 보다는 '수동적 소비'만 하게 만든다는 단점이 있다. (실제로 페이스북 계정의 45% 이상이 Lurkers, 즉 컨텐츠 업로드 없이 수동적으로 남의 컨텐츠만 쳐다보고 있는 사람들이라는 통계도 있다.)페이스북의 45%는 컨텐츠 공유 없이 타인의 컨텐츠만 소비하는 사람들이라고 한다.카드 스와이프 방식은 위에 언급된 단점을 절묘하게 개선하면서도 여전히 유저 편의성을 유지시키는 방식이라고 할 수 있다. 즉, 유저는 여전히 타임라인 방식 처럼 다른 사람 계정을 일일이 들여다 볼 필요 없이 잘 차려진 밥상을 수동적으로 소비만 하면 된다. 하지만 밥상에 있는 음식을 하나씩 내 앞에 들이밀어줌으로써 내가 직접 맛보면서 음식을 계속 먹을지, 버릴지를 결정할 수 있게 해 주고, 더 나아가 그 음식이 맘에 들었을 때 음식을 만든 사람과 추가적인 교류를 유도하는 방식인 것이다.위치기반+즉시성에 맞는 인터페이스란바크 앱이 유저에게 전달하고자 하는 핵심 경험은 '언제 어디서나 지금 바로 내 주변과의 교류'라고 할 수 있다. 즉, 바크에서 컨텐츠가 소비되는 방식의 핵심 성공요인은 (Key Success Factors) '지금 내 주변'이라는 위치기반의 맥락 조성, 그리고 '즉시 주변 사람들과 감정을 교류'한다는 컨텐츠 공유-소비의 즉시성 담보 이 두개에 모든게 달려있다고 해도 과언이 아니다. '개처럼 서로 짖다'의 UX 이면에는 사실 저 두가지 KSF를 달성하기 위한 중요한 목적이 있는 것이다. 이 목적을 달성하기 위한 새로운 컨텐츠 공유 인터페이스로 위에서 언급했던 타임라인 방식과 카드 스와이프 방식은 모두 다음과 같은 이유로 부적합하다.1) 즉시성이란 몇시간만 지나면 이미 즉시성의 가치를 잃고 만다.타임라인 방식은 스크롤을 아래로 조금만 내려가도 (카드스와입 방식은 스와입을 옆으로 10번만 해도) 이미 반나절 전, 어제, 심지어 몇일 전 컨텐츠 까지 쭉쭉 읽어 내려가기 마련이다. 이미 몇 시간 전의 일도 가물가물 해질 정도로 바쁜 세상에서 살아가는 현대인들에게 타임라인 방식으로는 즉시성이 담보된 컨텐츠를 교환한다는 목표를 달성시키기 어렵다. Short-term memory 연구로 유명한 Atkinson and Shiffrin의 논문에도 인간의 단기 기억 용량은 최대 30초를 넘기지 않는다고 나와있다. 즉, 이미 30초만 지나가도 해당 기억은 working-memory에서 long-term memory영역으로 넘어가거나 사라진다는 뜻이다. 물론 타인의 컨텐츠가 몇시간 전에 형성된거랑 본인의 단기기억과는 아무런 관련이 없는 얘기지만, 얘기하고자 하는 바는 인간의 '즉시성'이란 그만큼 하루, 이틀의 단위가 아닌 한시간, 두시간의 아주 짧은 term에 해당하는 영역이라는 걸 강조하기 위함이다.2) 밥상을 차려주는 순간 이미 위치기반의 맥락을 잃고 만다.타임라인이던 카드스와입 방식이던간에 대부분의 소셜미디어 메인화면은 자체 알고리즘에 의해 유저에게 컨텐츠 밥상을 차려주기 마련이다. 아무리 내 근처에 있는 컨텐츠를 위치순으로 정렬해 준다 하더라도 이미 밥상을 차려줘서 보여주는 순간 위치기반의 맥락을 형성시키기 매우 어렵다고 생각한다. 이유는 두가지가 있는데, 첫째, 위치 기반이란 '나'라는 객체와 '주변'이라는 객체들이 한 공간영역에서 구분 가능해야 형성되는 개념인데 타임라인, 카드스와입 방식 모두 '나'라는 객체는 생략해 버리기 마련이다. 또한 '주변'을 느끼게 만드는 인터페이스는 그저 필터에 '가까운 순'이라는 버튼 하나가 다이다. 유저가 그 '가까운 순'이라는 필터를 지속적으로 기억해주고 있지 않는 한 스크롤을 조금만 내려가도 이게 '위치기반 이구나' 하는 맥락 형성은 실패하게 된다.이런 이유로 바크에는 타임라인이나 카드스와입과는 다른 새로운 방식의 컨텐츠 소비 인터페이스 고안이 필요하게 되었다.Locale Mapping과 개의 대화법과의 결합위치기반 맥락을 가장 잘 살려줄 수 있는 인터페이스는 사실 우리에게 이미 너무나도 친숙한 인터페이스가 존재한다. 바로 지도기반 (Locale Mapping) 인터페이스 이다. 유저에게 유저 객체와 주변객체를 공간영역에 뿌려주는 지도기반만큼 위치기반 맥락을 잘 전달할 수 있는 인터페이스는 존재하지 않는다. 문제는, 이 로케일맵핑 방식을 소셜미디어의 컨텐츠 공유 방식과 적절히 결합시키는 것인데, 이게 쉬운 과제는 아니다. 이미 Periscope라는 라이브스트리밍 앱에서 지도기반의 스트리밍 인터페이스를 구현한 이력이 있지만, 유저 편의성 부분에서 단점이 많아 지금은 타임라인 방식과 지도기반을 병행해서 보여주고 있고, 타임라인 방식이 메인 인터페이스로 변화되가고 있다.유저가 직접 포인팅 된 컨텐츠를 클릭해서 들어갔다 나갔다를 반복해야 하는 로케일 맵핑은 소셜미디어 컨텐츠 공유 인터페이스로서 유저에게 절대로 편리한 방식이 아니고, 이를 아무리 변형한다 해도 기본 골격상 유저 편의성을 담보하기 쉬운 방식이 아니기 때문에, 우리는 아예 방향성을 바꿔서 유저로 하여금 이런 불편함을 감안해서라도 로케일 맵핑방식이 당연하다고 여기게끔 하는 스토리를 부여하고, 이를 컨벤션화 하는 방법을 선택했다. 바로, '개의 대화법'과의 결합이다.바크에서는 이미 모든 유저가 '개의 대화법'으로 소통한다는게 메인 컨벤션이 되어 있다. 개가 아무 맥락없이 서로 짖어대고 단타성 짙은 커뮤니케이션을 하듯이 바크에서도 모두가 뜬금없이 서로 짖어대고 아무 맥락없는 소소한 대화들을 (속된말로) 지껄여 대는 그런 공간이 형성되어 있는 것이다. 여기에서 더 나아가 우리는 '개가 메시지를 남기는 방법'에 대한 고민을 해 보기 시작했다. 즉, 서로 짖는게 사람의 경우 서로 실시간 대화를 나누는 행위라면, 사람들이 뭔가 쪽지를 남기거나 메시지를 전달하기 위해 하는 행위가 개의 경우 뭐가 있을까를 고민하다가 영감을 얻은 행위가 바로 개의 '똥을 누는' 배변행위이다.알다시피, 개는 똥/오줌과 같은 배변행위를 통해 본인의 메시지를 해당 장소에 남겨놓고, 다른 개들은 그 냄새를 통해 '이건 내 영역이다,' '나 오늘 참 행복하오' 등등의 메시지를 읽는다. (물론 생물학적으로 정확한 표현은 아니다. 그저 인간의 레벨에서 해석하기에 저런 행위를 할 것이라는 추측 정도이다.)이 행위를 인터페이스화 하기 위해 구현하게 된 것이 바로 '드랍 바크'라는 신기능이다. 유저는 마치 개가 현재 위치에 똥을 누듯이, 본인의 현재 감정이나 자랑하고 싶은 내용을 현재 위치에 떨어뜨려 놓는다. 이렇게 떨어뜨려진 '똥'들이 로케일 맵핑방식으로 내 주변에 형성되고, 메인화면에서 저렇게 '똥'으로 개체화된 컨텐츠로 보여준다. 이 '똥'을 열면 유저가 남긴 이미지+텍스트가 조합된 메시지가 보여지고, 유저들은 이 메시지에 대해 나도 같이 신난다는 의미의 'Happy,' 본 메시지가 별로거나 불쾌하다는 의미의 'Angry'를 사정없이 눌러댐으로써 본인의 감정을 표현할 수 있다.또한, 앞서 언급한 '즉시성'을 강조하기 위해 모든 메시지는 기본 4시간이 지나면 사라지는 휘발성 메시지로 디자인 했다. 위의 오른쪽 화면 중간에 있는 바가 현재 그 포스트의 남은 수명을 나타내는 바 이고, 4시간이 지나면 그 메시지는 맵에서 사라지게 된다. 마치 똥이 식어서 냄새가 사라지는 것 (또는 냄새가 약해져서 메시지로서 가치가 떨어지는 것)과 같은 것이다. 여기에 재미요소를 주기 위해 다른 유저들이 'happy'보트를 한번 할때 마다 포스트의 수명이 1분씩, 'angry'보트를 할때마다 1분씩 감소하도록 설계했다. 본 인터페이스의 더 자세한 내용은 다음 동영상을 참고해 주시길 바란다.https://www.youtube.com/watch?v=jAFZ5Upu_7k<iframe width="700.000000" height="394.000000" src="//www.youtube.com/embed/jAFZ5Upu_7k" frameborder="0" allowfullscreen="">드랍바크 소개영상안드로이드까지 정식 오픈한지 약 일주일이 안된 지금 하루 약 30% 이상의 활성유저들이 열심히 똥바크를 싸고 있다. 물론 모든 유저가 사용중인 기능도, 모든 사용자가 만족하고 있는 기능은 아니지만 현재까지 반응은 매우 긍정적인 편이고, 앱 내에서 뭔가 소비할 컨텐츠가 생겼다는 점, 그리고 '개의 대화법'이라는 앱의 컨셉을 더욱 공고히 하는 인터페이스라는 점에서 향후 앱의 체류시간 및 리텐션율을 높이는데 긍정적인 역할을 할 것으로 예상하고 있다.글쓴이는 스팀헌트 (Steemhunt) 라는 스팀 블록체인 기반 제품 큐레이션 플랫폼의 Co-founder 및 디자이너 입니다. 비즈니스를 전공하고 대기업에서 기획자로 일하다가 스타트업을 창업하고 본업을 디자이너로 전향하게 되는 과정에서 경험한 다양한 고군분투기를 연재하고 있습니다.현재 운영중인 스팀헌트 (Steemhunt)는 전 세계 2,500개가 넘는 블록체인 기반 앱들 중에서 Top 10에 들어갈 정도로 전 세계 150개국 이상의 많은 유저들을 보유한 글로벌 디앱 (DApp - Decentralised Application) 입니다 (출처 - https://www.stateofthedapps.com/rankings).스팀헌트 웹사이트 바로가기
조회수 1780

[인터뷰] 인스타 떡볶이를 만든 주인공! 제이키친 이민재 대표님

한국식 간식 / 떡 전문몰 '윙잇'은 처음에 제이키친 떡볶이 단 한 제품을 판매하는 것으로 시작했다. 비록 시작은 초라했지만, 제품력 하나만을 믿고 인스턴트 이미지를 탈피한 야채가 포함된 건강한 떡볶이를 선보였다. 이런 마음을 고객들이 알아주셔서 일까? 기존의 반조리 떡볶이와는 다른 모습으로, 제이키친 떡볶이는 신선한 야채와 함께 배송하여 소비자들로부터 많은 호응을 얻었다.일명 '인스타 떡볶이' 불리우며, 고객들의 후기가 꾸준히 올라오고 있다.이후 본격적으로 '인스타 떡볶이'로 알려지며 '윙잇' 브랜드를 알리는 효자 노릇을 톡톡히 한 제이키친 떡볶이. 윙잇은 제이키친을 발판으로 최초 서비스 시작에 비해 판매 상품이 크게 늘어나게 되었고, 지금의 간식 전문몰로까지 이어져 왔다. 그 일련의 과정에서 윙잇과 제이키친은 유통사와 제조업체의 관계를 떠나 정말 특별한 인연이 된 것. 그런 의미에서 윙잇 창업 1000일을 앞두고, 제이키친 떡볶이 대표님을 만났다.제이키친 떡볶이, 이민재 대표님윙잇 : 안녕하세요. 대표님! 일단 윙잇과 시작을 함께 한 '제이키친 떡볶이'라 감회가 새롭습니다. (하하)윙잇과 함께 하면서 가장 기억에 남았던 순간부터 여쭤봐도 될까요? 이민재 대표 : 아무래도 첫 사업 시작을 함께한 순간이 아닐까 해요. 윙잇 공동 대표님과 셋이 모여, 서울 근교 촬영장에 가서 떡볶이 사진만 7시간을 촬영했었죠. 이다빈 대표님의 콘티에 따라서 멋진 사진이 연출될 때까지... 또 SNS 홍보로 첫 고객님이 떡볶이 3팩을 샀을 때 참 벅찼었답니다. 그땐 촬영한 사진을 보정 중이라 상세페이지 없이 오로지 글로만 홍보 중이었거든요. ㅎㅎ 팔린 게 신기했었습니다.윙잇 : 감사합니다! 현재 제이키친은 떡볶이 말고도 메밀소바, 돈까스 등 다양한 제품들이 출시되고 있는데요. 혹시 이 일을 하시기 전에 과거에는 어떤 일을 하셨는지요 ...?이민재 대표 : 저는 경기도 의왕시에 '웰메이드 김밥'이라는 동네 김밥집을 운영했었어요. 그래서 자연스럽게 김말이 / 만두 등 다양한 간식거리를 판매하며, 오프라인 매장에 내공 아닌 내공(?)을 쌓았죠. 가끔 동네 아주머니들과 수다를 떨며 인사이트도 얻고요. 제겐 소중한 경험과 추억이었어요.윙잇 : 아 그러셨군요, 그럼 많은 제품 중 온라인 판매로 떡볶이를 선택하신 이유는요? 이민재 대표 : 단순한 이유지만, 일단 떡볶이가 재료 손질이 쉽고 관리하기가 편해서 많은 업체들이 뛰어들지만...^^; 저희는 모든 재료에 배합 비율을 5g씩 조절해가며 최적의 밸런스를 찾기 위해 노력했습니다. 또 오프라인 장사를 하다 보면 여러 정보를 얻게 되는데, 가끔 매장에 어머님들이 오셔서 저에게 떡볶이에 대한 자신감을 심어주고 가세요.온라인 판매를 시작하게된 계기는 저희 단골 손님이 떡볶이가 너무 맛있다며 강원도에 계시는 어머니집으로 보낸다고 포장을 부탁하셨는데, 떡이랑 소스 외에 야채도 같이 넣어달라고 하시더라고요. 택배는 하루면 도착하니까 아이스팩과 함께 넣으면 된다고 하시면서요.... 그리곤 "택배로 한번 팔아보세요 사장님, 잘 될 것 같아요"라고 하고 나가시는데 그 순간 깜짝 놀랐어요. 당시의 저에겐 '떡볶이 택배'가 쇼킹한 일로 다가왔거든요. 그래서 우연찮은 기회에 결심을 하고 도전하게 되었어요.제이키친 떡볶이 (왼쪽 시계방향부터 짜장, 카레, 기본)윙잇 : 그렇다면 '제이키친 떡볶이'는 어떤 노력 끝에 탄생하게 되었나요?이민재 대표 : 김밥집 운영 당시에 만들었던 떡볶이는 전반적으로 맵고 칼칼하다는 의견이 많았어요. 그래서 어떻게 남녀노소 즐길 수 있는 떡볶이를 만들 수 있을까 정보를 수집해 가면서 자연스럽게 터득해 나갔답니다.일단 너무나 당연한 얘기지만 설탕 대신 양파로 단 맛을 내고, 고춧가루 대신 대파로 건강한 매운맛을 내자는거였어요! 게다가 당시엔 온라인으로 파는 반조리 떡볶이 중에는 야채를 함께 보내주는 업체는 없었거든요. (지금도 없습니다) 또 고춧가루도 원산지별로 다 테스트하고... 각 재료마다 최상의 맛을 내기위해 초반에 제조공장도 계속 돌아다니고 많은 노력을 했던 것 같애요. 그때의 노력이 지금의 자산이 되었죠. ㅎㅎ윙잇 : 그렇다면 제이키친 떡볶이가 시중  떡볶이와 다른 점이 있다면요?이민재 대표 : 제이키친 떡볶이는 내 가족, 내 아이도 믿고 먹일 수 있는 건강한 떡볶이예요. 맛의 결정타는 바로 재료인데, 제이키친의 주재료는 국산과 신선함에 있죠!우선 제이키친은,1) 국내산 고춧가루와 고추장을 사용해요. 캡사이신이 아닌 손수 빻은 청양고추를 넣어 만들어요. 2) 그리고 프리미엄 열풍 건조떡을 사용해요. 떡의 쫄깃함과 식감을 최대한 보존하기 위해 상온에서 떡을 말린 뒤 (기존 떡은 여기서 마무리) 열풍 기계를 이용해 한 번 더 떡을 건조시켜, 수분을 모두 제거해요.3) 어묵은 밀가루보다는 어육량이 높아서 텁텁하지 않고 떡볶이의 감칠맛을 더 살려주고 있어요. 마지막으로 4) 방부제나 냉동 식재료는 사용하지 않고요.제이키친 대표님의 맛과 재료에 대한 철학은 확고하다.윙잇 : 역시 SNS에서 유명한 이유가 있군요...지나가는 얘기로 혹시 대표님은 제이키친 떡볶이를 얼마나 많이 드셔보셨나요?이민재 대표 : 한 달 기준으로 고춧가루를 20kg 정도나 먹었으니... 단기간 동안 아마 200인분 정도를 먹은 것 같아요... 그때 당시에 너무나도 하고 싶은 생각이 간절했었거든요.윙잇 : 와 대박인걸요? 떡볶이를 만드면서 가장 주안점을 두는 부분이 있다면요.이민재 대표 : 무조건 위생부터 신경쓰죠. 개인 관리와 더불어, 정기적인 시설 소독을 통해 청결한 시스템을 한결같이 유지하려고 노력하고 있어요. 배송은 신선도 유지를 위해 월~금 오전 10시까지 주문 분에 한하여 당일 발주기준 '선입선출'원칙을 철저하게 지키고 있고요.이르자면 새벽에 야채를 다듬고, 떡을 압축하고, 48시간 숙성된 특제 소스를 선입선출해서 72시간 내에 소비자가 받으실 수 있도록 해요. 재료들이 '최상의 맛'을 내는 상태로 보내졌으면 하는거죠. (후문으로 어묵 공급업체는 저때문에 동선이 바꼈어요... 일부러 새벽에 가져다 주시고, 저때문에 고생이 많으십니다. 이 자리를 빌어 감사드려요 :)모든 공정에서 사람의 손을 거치지 않은 곳이 없는 제이키친 떡볶이.윙잇 : 대표님의 꼼꼼함이 느껴지는 부분이군요. 제이키친은 제조공정이 하나하나 정성이 들어간 수작업인데요. 자랑할 거리가 있다면요?이민재 대표 : 각 공정단계에서도 분업별로 쪼개어 세심하게 체크하는 편이예요. 예를 들자면, 야채 같은 경우는 흙이 있기 때문에, 흙이 안들어가게끔 2중 3중으로 체크를 하는거죠. 그래서 야채를 까시는 분, 깐 야채를 검수하시는 분, 야채를 씻으시는 분, 씻고 담는 분으로 나뉘어서 분업을 하고 있어요. (왼쪽부터) 윙잇 이다빈 대표와 제이키친 떡볶이 이민재 대표.윙잇 : 자, 이제 쑥스럽지만 대표님에게 '윙잇'은 어떤 서비스인가요?이민재 대표 : 윙잇은 단순히 판매업체라기 보다는 남다른 형제애가 느껴지는 것 같아요. 서로의 서비스가 시작될때부터 같이 으쌰으쌰 하다보니 약간 가족같은 느낌이예요. 서로 도움도 많이 받았고요. 애정이 가는 곳이예요. (윙잇의 1,000일! 미리 축하드려요^^)윙잇 : 윙잇 고객님께도 한마디 부탁드려요!이민재 대표 : 저희 제이키친은 언제나 고객님들을 위해 열심히 달리고 있답니다. 여러분들에게 '제이키친 떡볶이보다 맛있는 것은 없다!' 라고 피드백을 받을 때까지 정말 열심히 할테니 애정해주시면 감사드리겠습니다♥  - 다음 편에 계속 -#아그레아블 #윙잇 #제이키친 #인터뷰 #인스타떡볶이 #화제의그집
조회수 1024

앱 데이터 분석 시 사용자 세그먼트의 필요성

사용자 세그먼트(USER SEGMENTATION)란? 모바일 분석 툴을 사용하면 앱 사용자에 대한 많은 정보를 얻을 수 있습니다. 하지만 방대한 데이터는 오히려 의사결정에 혼란을 일으킬 수 있어 비즈니스에 의미가 있는 데이터를 선별해서 보는 것이 중요합니다.‘사용자 세그먼트’란 데이터의 필터 기능으로, 1차 데이터를 하위 기준으로 분류해서 보는 것을 의미합니다. 예를 들어, 앱 서비스 사용자들을 성별, 연령, 국가, 플랫폼 별로 나누어서 보는 것도 세그먼트에 해당합니다. 이 기능을 이용하면 ‘우리 사용자는 누구인가?’ 에서 더 나아가, 앱 서비스의 충성고객, 구매고객, 이탈고객 각각의 특성을 파악하고 이에 맞는 비즈니스 전략을 만들 수 있습니다.아래 내용을 통해 앱분석 시 사용자 세그먼트의 방법과 필요성을 알아보겠습니다.사용자 세그먼트 적용하기사용자 세그먼트가 무엇인지 실제 데이터 분석 툴의 예시를 보며 자세히 알아보도록 하겠습니다. 모바일 분석 서비스 와이즈트래커(WISETRACKER)는 기본 세그먼트와 사용자 정의 세그먼트 기능을 제공하고 있습니다.기본 세그먼트기본세그먼트 기능을 통해 플랫폼, 성별, 연령대에 따라 데이터를 분류할 수 있습니다. 비즈니스에 따라 사용자 구분 시 중요한 지표가 있다면, 그것을 기본세그먼트 항목으로 추가하는 것도 가능합니다. 광고채널, 회원여부, 회원등급 등이 이에 해당합니다.[ 와이즈트래커 세그먼트 설정화면 – 필요한 세그먼트를 더블 클릭하거나, 오른쪽 상단의 ‘Drag Here’ 로 세그먼트 항목을 Drop하면 세그먼트가 적용됩니다. 여러가지 세그먼트를 동시에 적용할 수 있습니다 ]아래 데이터는 기본 세그먼트 중 연령대(20대, 30대, 40대) 세그먼트를 이용해 [신규방문 vs 재방문] 리포트 데이터를 하위 분석한 결과입니다.이를 통해 단순히 신규방문/재방문의 수치/비율 뿐 아니라, 각 방문 유형별 연령대 구성을 파악할 수 있습니다. 이 데이터를 통해 처음방문자의 경우, 20대와 30대의 수치가 비슷하게 나타나지만 반복방문자의 경우 30대의 비율이 20대보다 훨씬 높게 나타나, 앱 서비스가 20대보다 30대에게 지속적으로 어필되고 있다는 것을 확인할 수 있습니다.사용자 정의 세그먼트사용자 정의 세그먼트를 통해 기본적으로 제공되는 세그먼트를 조합해 비즈니스에 필요한 맞춤 세그먼트를 설정할 수 있습니다. 예를 들어, 앱 서비스의 주요 고객이 iOS를 사용하는 20~30대 여성이라면 아래와 같이 해당 속성값을 가지는 사용자 정의 세그먼트 ‘iOS_2030_여성’을 생성합니다.위에서 생성한 세그먼트를 위의 [신규방문 vs 재방문] 리포트에 적용하면 아래와 같은 데이터가 나타납니다.이처럼 사용자 정의 세그먼트를 이용하면 앱 사용자를 비즈니스에서 정의한 타겟 고객군과 잠재 고객군으로 분류하여 유의미한 사용자 그룹의 숫자를 파악할 수 있습니다.사용자 세그먼트의 필요성데이터 분석은 분석 자체가 목적이 아니라, 비즈니스의 성장과 목표 달성에 도움이 될 때 의미가 있습니다. 그럼 사용자 세그먼트는 비즈니스의 성장에 어떤 도움을 줄 수 있을까요?1. 의사결정에 필요한 데이터를 선별해 추출할 수 있다. 신규 고객을 위한 이벤트 기획 시, 신규 고객들의 성별, 나이, 플랫폼 등을 세그먼트 기능을 통해 파악할 수 있습니다. 만약, 아래 테이블처럼 신규 고객의 대다수가 20,30대 여성이라면, 이들의 흥미를 끌만한 이벤트를 기획해 이벤트 참여율을 높일 수 있습니다.[ 와이즈트래커 내 처음방문자 방문수 데이터에 연령_성별 사용자정의 세그먼트를 적용한 화면 ]2. 어떤 유저가 우리 비즈니스에 가장 유의미한지 파악할 수 있다. 앱 서비스의 핵심적인 유저는 앱을 주기적으로 방문하고, 구매 빈도/금액이 높은 사용자입니다. 이들의 특성을 세그먼트를 통해 파악하고, 이러한 데이터를 기반으로 해당 사용자들의 충성도와 구매율을 높이기 위한 프로모션을 진행할 수 있습니다.[ 와이즈트래커 내 1회 구매자 방문수 데이터에 여성들의 연령_플랫폼 사용자정의 세그먼트를 적용한 화면 ]3. 오디언스 타겟팅(AUDIENCE TARGETING)에 이용할 수 있다.세그먼트 기능을 통해 파악한 특정 사용자 그룹의 특성을 바탕으로 오디언스 타겟팅을 진행할 수 있습니다. 앱에서 한번도 상품을 구매하지 않은 비구매자 그룹의 특징을 파악했다면, 이를 기반으로 해당 그룹의 ADID/IDFA를 추출해 구매를 유도하는 푸시메시지 또는 광고를 노출할 수 있습니다.[ 와이즈트래커 오디언스 타겟팅 설정화면. 비구매자 그룹의 주요 특징이 회원인 40대 국내 남성이라면 이들의 ADID/IDFA를 추출해 구매를 유도하는 푸시메시지/광고 프로모션을 진행할 수 있다.]비즈니스 성장의 지름길 고객에 대한 이해도가 높을수록 비즈니스는 빠르게 성장합니다. 이 때문에 모바일 비즈니스에서 사용자 세그먼트를 통해 비즈니스 고객군 별 특성을 정확하게 파악하는 것은 선택이 아닌 필수입니다. 모바일 데이터 분석을 이제 시작했다면, 사용자 세그먼트 기능을 통해 데이터에 깊이를 더하고 비즈니스 성장에 핵심적인 데이터를 확인해보세요! * WISETRACKER는 모바일 광고 성과 측정부터 In-app 이용자/컨텐츠 분석, 푸시메시지 최적화까지 지원하는 모바일 통합 분석/타겟팅 솔루션입니다. 와이즈트래커 솔루션의 무료체험을 원하실 경우 여기를 클릭해주세요.* WISETRACKER가 제공하는 무료 데이터 분석 컨설팅를 원하신다면 여기를 클릭해주세요.#와이즈트래커 #앱마케팅 #마케터 #성과분석 #데이터분석 
조회수 1304

[우리는 비투링커 #4] '빵빠레' 하나면 행복한 그녀, 박예지 님 ♥

안녕하세요, 비투링크의 소식을 전하는 미나 입니다! 벌써 한달이 지나, 다시 돌아 온 [우리는 비투링커] 시간인데요.3월의 비투링커로 선정된 그녀는 누구일까요?'빵빠레' 라면... 요거?*~*~짜잔~*~*자.. 먼저 추천영상을 함께 보시죠!이번 영상의 주제는 "엽기적인 그녀" 입니다 (ㅋㅋㅋ)보고있으면 참 밝은 그녀는 누구일지!▼▼영상 클릭 클릭▼▼3월의 비투링커 추천영상 (영상 고퀄주의 ㅋㅋㅋㅋ)그 주인공은... "엽기적인(?) No No~ 보고있으면 참 밝은 그녀" 박예지님 입니다!(짝짝짝짝!!!!!)3월의 비투링커 박예지님 :)특별히 빵빠레를 먹으면서 인터뷰 하고 싶었지만....빵빠레가 회사근처에 안팔더라구요 (또르르)그래서 그냥 빈손으로 예지님을 만났습니다.그래도 활짝 웃고 있던 그녀...................^^안녕하세요, 저는 비투링크 Brand Operation Division 내 구매팀에서제품구매, 발주 및 운영을 담당하고 있는 박예지 입니다 ^_^정말 0.1%도 예상치 못했어요. 팀원들이랑 꽤 친하다고 생각했는데, 정말 아무도 말을 안해주더라구요 ㅋㅋㅋ 그래서 제가 타운홀미팅날 연차를 써서 직접 영상을 못봐서 아쉬워요 ㅠㅠ그래도 이후에 영상을 봤는데, 진짜 행복했어요 ^_^ 보면서 같은 팀 제용님의 흑역사가 될 거 같다는 생각이 살짝 들었지만요...........:) 사실은 전 워낙 스트레스를 안받는 성격이기도 해요!또, 받게되면 내부에서 받기보다는, 외부 거래처와 커뮤니케이션을 하며 받는 스트레스가 대부분이에요. 그래서 팀원들이랑 같이 얘기하고, 간식을 사먹는다던지, 달달한 커피를 마시러 간다던지, 바깥공기를 쐬러 간다던지 ㅋㅋ 많은 것들을 팀원들과 함께 해요 :)슬픈 건, 요즘 회사근처에 빵빠레가 안팔아요..................... (슬퍼요 ㅠ_ㅠ)옛날엔 2+1 행사하고 그랬는데... 대체품을 찾고 있는데, 빵빠레를 대신 할 수 없을거같아요 ㅋㅋㅋ작년 송년회 때 같이 찍은 팀사진!주말엔 주로 제가 키우는 강아지 (단추) 랑 시간을 보내요 ^_^눈이 단추구멍 같아서 ㅋㅋㅋ 이름이 단추에요 (크큭)너무 애교쟁이 ㅠㅠ그리고, 제가 요즘 찾은 저만의 비밀스러운....... 문화생활이 있는데요.저 폴댄스 배웁니다!!!! 지금 거의 6개월 째 하고 있는데요. 정말 재밌어요 ^_^사진은...공개할 슈 없숴요~ (부끄러움)대박! 폴댄스라니 :) 멋져멋져... 저는 사실 몰래 예지님이 폴댄스하시는 사진 봤는데장난아니네여 섹시해 ㅠㅠ 저두 하고싶어요 ㅋㅋㅋㅋㅋㅋ제 컵이름은 "구갈동 빨간거" 입니다 ㅋㅋㅋ제 별명 너무 대충 지은거 같아요 ㅋㅋㅋ 불만이에요 !!이유는 제가 맨날 입술을 빨갛게 바르고 다녀서 ..........ㅋㅋㅋㅋㅋㅋㅋㅋㅋ근데 또 바꿔달라고 하기 무서워요 ㅋㅋ이상한 별명할까봐여... 빨간걸로 있을게요 그냥(좌) 한스킨 Blemish Cover (우) 23 Years old Sibiton cream [출처: 네이버 블로그]저는 한스킨 블레미쉬 커버 (Blemish Cover) 과 23 Years Old 시비통 크림 (Sibiton Cream) 을 추천합니다 :) 첫 번째 제품은, 컨실러 제품인데요. 커버력이 진짜 좋으면서도 촉촉한 게 장점! 휴대하기도 편하고, 가끔을 얇게 펴바르면 BB크림처럼도 사용할 수 있어요!두번째 제품은 크림인테, 이름이 약간 욕같져? ㅋㅋ 피부에 보호막을 설치해줘서 수분감도 오래 지속되고, 붉은 홍조피부 진정효과도 있어서 데일리로 사용하기 좋은 비타민 크림이에요!(친구한테 추천해줬는데, 친구가 지금까지도 계속 사용하고 있어요 ㅋㅋ)올해를 시작하면서 많은 계획을 세웠는데요!그 중에 꼭 이루고 싶은 건, "유럽여행" 을 가는 거에요 ^_^원래 1년에 한번 이상은 꼭 해외여행을 가는데요, 가장 멀리 갔던 게 동남아 였어요!올해가 제가 앞으로 살 날 중에 가장 젊고 예쁠 때니까꼭 가보도록 하겠습니다 :)손잡아주실 분 찾습니다 ^^....인터뷰 하는내내 예지님 때문에 저도 계속 웃었던 거 같아요 ㅎㅎㅎ앞으로도 계속 미소 잃지않는 밝은 예지님으로 ^_^(담엔 빵빠레 같이 먹어효)#비투링크 #팀원 #팀원소개 #팀원인터뷰 #인터뷰 #팀원자랑 #기업문화
조회수 2988

국내 스타트업 개발자들도 저녁이 있는 삶을 산다.

[대화 1]친구 A: 남편은 무슨일 해?아내: 어, IT회사 다녀.친구 A: 거기서 무슨일 하는데?아내: 개발자에요.친구 A: 아 그래? 그럼 퇴근 제때 못할텐데, 애들 키우기 힘들겠네.…[대화2]아내: 아니 그렇게(반바지) 입고 회사 가려고?필자: 음... 요즘 판교 쪽에서는 패피들은 반바지에 샌들 정도 신어줘야 인정받아..아내: 우리(금융회사)는 반바지 입는 사람은 생수 배달하는 사람 뿐인데. 갈아입고 가.금융기관에서 일하는 필자 아내와의 일상 대화 중 일부입니다. 대화는 짧지만 많은 의미가 함축되어있습니다. 우리 사회에서 금융권 직원이라 하면 말끔한 수트를 차려입고 아침부터 아메리카노 한잔 하면서 뭔가 중요한 딜을 성사시킬 것 같은 느낌이라면, IT개발자라 하면 그 금융권에서 사용하는 시스템 개발을 하위 위해 파견온 협력회사 직원과 그 회사에서 고용한, 소위 을, 병, 정 프리랜서들로 반바지에 좀 헝크러진 머리를 하고 밤늦게까지 그리고 주말에도 코딩하느라 제대로 씻지도 못하고 다니는 사람을 먼저 떠올립니다. 최근에 국내 유수의 게임 회사 한 곳에서만 세 명이 과로사하거나 업무 부담으로 회사에서 자살했다고 하니 그런 인식이 전혀 틀리지만은 않은 듯 합니다.미국에서는 개발자들이 대접은 잘 받지만 업무 난이도와 강도는 정말 높다고 합니다. 미국에서는 소프트웨어 개발자라고 하면 엄지손가락을 치켜 세우며 ‘6 digits’이냐고 물어보고들 합니다. 연봉이 $100,000 즉  1억 1,200만원 이상이냐고 묻는 것입니다. 연봉 10만 달러는 미국에서도 높은 편이지만, 소프트웨어 개발자들은 일반적으로 이를 상회합니다. 실리콘밸리에서는 개발자 대졸 초임이 10만 달러 정도 된다고 합니다.시가총액 상위 기업 대부분이 ICT 기업들이고 미국에서도 소프트웨어 개발 인력은 공급이 상당히 부족하니 그럴 수 밖에 없습니다. 공대중에서 최고라 하는 스탠포드와 MIT에서 최고 인기 전공은 단연 컴퓨터 사이언스라고 하는데, 대한민국에서는 인재들이 소프트웨어 분야를 기피하고, 이 분야가 더 열악해지는 악순환이 계속되고 있습니다. 자율주행 시스템, 암진단을 인간 의사보다 잘한다는 IBM 왓슨, 자산관리 로봇까지 가지 않더라도 뱅킹, 콜센터, 주차 정산, 음식 주문, 모바일 게임 등 우리 일상 생활을 소프트웨어 개발자들이 책임지고 있는데, 만성적인 개발 인력 부족으로 우리 ICT 산업의 경쟁력이 갈수록 떨어지지 않을까 걱정입니다.어제 오늘의 이야기도 아니고, 해결책이 과연 있는가?고무적인 것은 과거보다는 소프트웨어 개발자의 근무 환경에 더 관심을 가지고 야근 문화를 없애나가려고 노력하는 기업들이 많아지고 있다는 점입니다.핀테크 기업 핀다도 접근 방법은 다소 다르지만 이런 긍정적인 문화를 확산시키는 데 노력하고 있습니다. 그로 인해 우수한 인력이 한명이라도 더 핀다를 선택하고, 대한민국 젊은이 몇명이라도 더 공시생이 되기보다는 소프트웨어 개발자로 진로를 선택하기를 기대합니다.업무 환경이 중요하다.핀다의 개발자는 공유오피스 위워크(Wework) 을지로점 내의 사무실 및 라운지 등에서 자유롭게 근무합니다. 근무중에 사무실 내의 탁구장에서 함께 탁구를 치기도 하고 다트 게임을 하기도 합니다. 위워크 다른 층 라운지 쇼파에서 탁트인 전망을 보며 일하기도 합니다.물론 업무가 몰리고 데드라인에 쫓기면 야근을 하기도 하고 주말에 집에서 일하기도 하지만 이를 권장하기 보다는 지양하고 더 줄여나가려고 합니다. 저녁이 있는 삶을 보장하기 위해 지속적으로 노력할 것입니다.Wework 16층 회의실 겸 탁구장에서 열심히 탁구치는 우리 개발자. Le Viet Hoang‘월화수목금금금’ 일해도 일정 맞추기 어려운데 무슨 배부른 소리인가?소프트웨어 개발은 집중력을 요하는데, 사람이 하루 8시간도 집중해서 일하기는 쉽지 않습니다. 집중하지 못한 상황에서 작성한 낮은 품질의 코드로 더 많은 오류를 일으키고 이를 해결하기 위해 더 많은 시간을 일해야 하는 악순환이 발생합니다. 해당 직원의 행복지수도, 건강도, 로열티도 떨어지고 퇴사할 가능성이 높아집니다. 결국 회사는 잃는 것이 더 많아지게 됩니다. 하지만, 단지 초과 근무로 인해 생산성이 떨어지므로 이를 지양해야 한다고 하기에는 현실은 일반적으로 너무 열악하고 다급합니다. 초과 근무를 대신할 다른 혁신적인 방안이 있어야 기업의 관리자를 설득할 수 있을 것입니다.핀다 개발팀은 다릅니다. 개발 환경을 소개합니다.1. 이슈관리 시스템 Jira를 이용하여 태스크, 오류 등 모든 이슈를 관리합니다.      위키 시스템 Confluence를 통해 회사 및 프로젝트의 날리지를 관리합니다.  위키에 프로젝트별로 이와 같이 스페이스를 만들고 트리 구조로 페이지를 생성합니다.그림 상의 페이지에는 Jira에서 생성한 이슈들을 나열한 것을 볼 수 있습니다. 이런 방식으로 회사의 모든 지식은 체계적으로 정리되고 공유됩니다.2.  Git을 이용하여 소스코드 뿐 아니라 디자인 프로젝트까지 관리합니다.동시에 여러 버전의 소스를 유지하고, 여러 사람이 협업하기 위해 위와 같은 Git flow를 준수합니다.소스 변경(커밋) 시에는 그림과 같이 관련 이슈 번호를 넣어서 커밋과 이슈를 연동합니다.상용 배포 버전에는 그림과 같이 버전을 태그로 달아두고 버전별로 릴리즈 노트를 작성합니다.3. Jenkins를 이용하여 시스템 빌드 및 배포를 자동화하고 있습니다. 각 빌드에도 버전을 태그로 붙이고 있습니다.4. 객체지향 프로그래밍 방식을 철저히 준수합니다.시스템을 모듈로 나누고 각 모듈 간의 의존도는 최소화합니다. 논리적으로 관련된 코드는 한 패키지, 클래스 등에 모아서 응집도를 최대화합니다. 데이터와 데이터 처리 코드는 한 클래스에 모읍니다. 중복된 코드는 피할 수 있다면 한 줄이라도 허용하지 않고, 상속, 함수화, 오버로딩 등을 최대한 활용하여 코드 사이즈를 줄입니다.5. 이해하기 쉬운, 설명이 필요 없는 코드와 문서를 작성합니다.소프트웨어는 본질적으로 복잡합니다. 복잡한 문제를 최대한 쉽게 풀어내는 것이 소프트웨어 개발자의 능력의 핵심 중 하나입니다. 문제를 더 복잡하게 만들어서 다른 사람이 이해하기 어려워 하는 것을 본인의 능력이 뛰어나서라고 자만하거나, 주석을 달거나 문서화를 하지 않고서 다른 사람이 코드를 보고 이해하면 된다는 식의 생각은 아마추어리즘일 뿐입니다.핀다의 소프트웨어 프로젝트는 경험이 부족한 신입 개발자라도 30분 내에 구조와 흐름을 파악할 수 있도록 하고 있습니다.6.  웹, 안드로이드, 아이폰 앱은 철저히 통일된 MVC 구조로 구현합니다.모델(M) 부분은 서버로부터 데이터를 받아오는 모듈, 데이터의 세부사항을  처리하는 모듈, 데이터의 보존과 공급을 담당하는 모듈로 철저히 분리하여 구현합니다.화면의 부분을 담당하는 뷰(V)는 주어진 데이터로 화면을 그리는 것만 담당합니다.화면을 구성하기 위해서는 뷰를 배치하고 모델로부터 데이터를 받아서, 뷰에 전달해야 합니다. 이는 컨트롤러(C)가 담당하는데 컨트롤러는 철저히 컨트롤만 하고 세부적인 사항을 처리하지 않습니다.핀다의 웹, 안드로이드, 아이폰 앱은 모두 동일한 폴더, 클래스 구조를 가지도록 설계하고 있습니다. 이로 인해 다른 분야를 접해보지 못한 개발자라도 하루 내에 파악하여 코드 수정까지 할 수 있어서 누구나 쉽게 풀스택 개발자가 될 수 있습니다.종합해보면, 핀다 개발팀은 나만의 스타일로 코드를 작성할 자유가 없고, 프로그래밍 컨벤션을 따라 최적의 간결한 코드를 작성해야 합니다. 타이트한 프로세스를 따라야 합니다. 구글이나 마이크로소프트 보다 더 높은 수준의 클린 코드를 작성해야 합니다. 다소 타이트해보일 수 있지만, 유능한 핀다의 개발자들은 적극적으로 이를 준수하고 오히려 더 나은 개선 방안을 내놓고 있습니다. 결국 핀다의 개발자는 저녁이 있는 삶 뿐 아니라 신나고 발전적인 직장생활까지 누리게 될 것입니다.핀다의 미래가 밝아 보이나요? 아니면 너무 타이트해 보이나요?핀다는 핀다의 미래가 밝아 보인다고 느끼는 개발자에게 문을 활짝 열어놓고 있습니다.많은 기업이 핀다 방식 혹은 더 나은 방식을 도입하여 행복하게 일하는 개발자들이 더 많아지기를 기대해봅니다.#핀다 #개발 #개발팀 #개발자 #저녁이있는삶 #기업문화 #조직문화 #사내복지
조회수 1622

[인터뷰]미미박스의 TECHNOLOGY를 이끄는 CTO KAY를 만나다

안녕하세요. Ava입니다.여러분에게 더 건강하고, 아름다운 라이프스타일을 제공하기 위해 노력하는 미미박스 뒤에는여러분의 니즈를 만족시키고 안정된 서비스를 제공하기 위한 개발이끊임없이 진행되고 있습니다.오늘은 미미박스 TECHNOLOGY UNIT를이끌고 계신 김종광 CTO(이하 KAY) 님을 소개해드리겠습니다.KAY는 대기업과 IT기업에서 앱 개발과 웹 개발을 진행했던 커리어를 갖고 계신데요. 경력과 전문성 뿐만 아니라 개발자들이 상상할 수 있는 문화를 강조하며 만들어나가고 있습니다.항상 푸근한 아빠 미소로 미미박서의 질문과 제안을 받아주고,열린 리더의 모습을 보여주시는 KAY를 소개합니다.김종광 (Kay) 한국기술교육대학교 전기전자공학 석사전) NC소프트전) SK communicationsUNIT1. KAY를 소개해주세요.Q. 안녕하세요. 항상 아빠 미소를 짓고 계신 KAY~KAY를 소개해주세요.A. 처음에 미미박스에 모바일 앱 개발 총괄로 입사했어요. 지금은 개발 UNIT 전체를 맡고 있고요. 세 가지의 주 업무가 있는데요. 개발 전체 프로젝트를 leading 하고 다른 팀과 연관된 업무에 대해서 지원하는 일과, 새로운 개발자를 충원하는 업무를 하고 있습니다.Q. 미미박스에 입사하시게 된 계기는 무엇인가요? A. 처음에는 지인이 추천해서 미미박스를 알게 되었어요. 그 후에 미미박스에 대해 조사를 해봤죠. 비즈니스 모델, 성장 가능성을 봤을 때 '될 것 같다'는 생각을 가졌어요. 그리고 몇 번 찾아갔었는데 회사 분위기가 활기차고 재밌었어요. 그리고 일하는 사람들 중에 아는 사람들이 4~5명 정도 더 있었어요. 이분들과 다른 구성원들을 보면서 '이 친구들이랑 같이 일하면 즐겁게 일할 수 있겠다'라는 생각이 들었죠.Q. 여러 조직에서 있으셨던 만큼 개발 업무 자체에 대한 이유도 있을 것 같아요. A. 보통 기업에서는 개발자의 역할이 상당히 제한되어있어요. 업무에 대한 의사결정 권한이 거의 없죠. TOP-DOWN 방식으로 내려온 것들을 그냥 해야 하는 경우가 많거든요. 개발자들은 다들 알 거예요. 만들면서 '이거 안될 것 같다.'라는 감이 있는데, 느낌상으로 안될 것 같은 것을 만드니까 의욕이 생기지 않는 경우가 있었어요. 효과성보다는 어떤 서비스를 오픈했다는 것 자체가 실적이 되는 경우가 많거든요. Q. 그런 경우가 있군요. 그렇다면 미미박스 내에서는 개발 업무에 대해 어떤 식으로 의사결정이 이루어지나요?A. 업무에 대한 의사결정은 반반인 것 같아요. 우선 TECHNOLOGY UNIT 내부에서 프로젝트를 진행하는 것이 있어요. '이렇게 하면 회사와 서비스에 도움이 되겠다. 매출도 좋아질 것 같다. 사람들도 좋아할 것 같다'이런 의견을 내고 직접 만들 수 있고요. 서비스를 같이 진행하는 마케팅팀이나 플랫폼 운영팀에서 요청이 들어오면 그 요청에 대해 저희가 납득하고 하면 좋겠다고 생각하는 업무에 대해서 일정을 짜고 진행해요. 각 요소 별로 개발 측면의 논의도 많이 하고 실제 만드는 사람의 의견이 많이 반영됩니다. Q. 직접 만들고 구축하는 사람들의 의견은 정말 중요한 것 같아요.TECHNOLOGY UNIT을 이끌고 있는 UNIT 장님으로서 KAY의 하루 스케줄은 어떻게 되나요?A. 출근 후, 오전에는 집중 개발 업무를 하고 있어요. 제가 플랫폼 개발 팀장도 겸임하고 있거든요. 오후부터는 대부분 팀미팅이나 프로젝트 미팅을 많이 합니다. 프로젝트의 진행사항을 체크하고, 개발이 어려운 부분과 개발하면서 중요하게 생각하는 부분에 대해서 토론하죠. 그리고 새로운 개발 인력들 채용을 위해 면접을 많이 봅니다.Q. TECHNOLOGY UNIT 내부에서 소통과 역량 강화를 위해 주기적으로 여는 세션이 있다고 들었는데 소개해주세요!A. 일주일에 한 번씩 주니어 개발자를 대상으로 스터디를 진행하고 있습니다. 저는 스터디를 leading 하고 멘토 역할을 하고 있고요.이런 시간을 만들게 된 이유는 소통의 장을 만들고 개발자들의 역량을 키우기 위해서입니다.주니어 개발자들이 시니어 개발자들 앞에서 의견을 내는 것에 대해서 소극적인 면이 있어요. 틀릴까 봐 의견을 쉽게 못 내죠. 그래서 주니어 개발자들끼리 모여서 얘기할 공간을 만들어 주는 것이 중요하다고 생각했어요. 서로 의견을 내고 토론하면서 개발에 대한 역량도 쌓고 의견을 내는 훈련도 할 수 있죠.그리고 DATA UNIT의 협조를 받아서 빅데이터 관련 스터디를 진행하고 있어요. 그래서 개발자들 중 관심 있는 사람이들 모여서 빅데이터 관련 LOGIC을 만들어보고, 아이디어를 실현시켜보는 작은 프로젝트를 그룹별로 진행하고 있어요.앞으로는 이런 세션들을 발전시켜 세미나를 열 예정이에요. 그래서 각 개발자들이 적어도 1년에 2번 이상은 주제 발표할 수 있도록 환경을 만들려고 합니다. 개발 업무는 집중도가 높아서 건조해질 위험이 있어요. 집중하다 보면 일에 치여서 자기계발이 어려워질 수 있기 때문에 계속 자기계발하는 분위기를 만들어가려고 합니다. 전사적으로도 그런 분위기가 계속 만들어지면 좋겠어요.Q. 건조하긴요! 제가 보기엔 개발팀들이 가장 활발하고 참여도도 높은 것 같은데요! 열려있는 분들도 많고요.A. 개발팀이 아닌 팀들이랑 많이 소통하라고 조언을 많이 해요. 미미투게더(2개 이상 팀이 함께 회식하면 회식비를 지원해주는 기업문화 제도)를 할 때도 개발팀 내부에서만 하지 말고 무조건 다른 팀들과 함께하라고 하고 있어요. 새로운 아이디어를 나눌 수 있고 인간관계가 힘이 될 때가 많기 때문에 다른 팀들이랑 얘기를 많이 나누는 게 필요하죠. UNIT2. TECHNOLOGY UNIT을 소개해주세요.Q. TECHNOLOGY UNIT을 소개해주세요.A. TECHNOLOGY UNIT에서는 지금 미미박스에서 서비스하는 모든 PRODUCT, 플랫폼, 모바일 앱, PC 웹, 내부 직원들이 쓰는 모든 것들을 개발하고 있습니다. 대부분의 기업에서는 계약직이나 파견직의 고용형태로 진행하는 경우도 있는데, 저희는 모든 구성원이 정직원으로 개발 업무를 하고 있습니다.Q. TECHNOLOGY UNIT의 분위기는 어떤가요?A. 개발자라는 직무를 하는 사람들은 생각 자체가 자유로워야 합니다. 경직되어있으면 좋은 아이디어가 떠오르지 않죠. 그래서 TECHNOLOGY UNIT은 최소한의 규제나 룰을 두고 자유롭게 활동하게 하고 있어요. 특별한 일이 아니면 회의 소집도 지양하고 있어요.다양하게 상상하려면 경직되지 않고, 룰에 집착하지 않는 문화를 만들어야 하기 때문이에요. 그래야 본인의 의견도 편하게 이야기할 수 있죠. 구성원들을 보면 시니어 개발자들은 적응을 잘해요. 주니어 개발자들이 아직 조금 경직되어있긴 해요.지금 신입 공채 2기를 뽑고 있는데요. 보통은 스타트업에서 입사 후 바로 투입될 수 있는 사람을 뽑아요. 하지만 저는 확신이 있어서 저희 미미박스의 DNA를 가지고 처음부터 함께할 수 있는 신입을 뽑고 싶어요. 미미박스의 DNA를 가지고 더 성장하게 되면 저희 개발 조직에 기둥이 될 수 있을 거라고 생각합니다. <채용공고 보러 가기 클릭>Q. KAY와 함께 하는 구성원들이 점점 부러워지네요. 정말 구성원들의 성장에 많은 비중을 두고 여러 계획을 실천하는 것 같아요. 미미박스에는 여성 개발자도 점점 많아지는 것 같은데 재미있는 에피소드 있나요?A. 먼저 여성 개발자들의 비중이 점점 늘어나고 있어요. 우리가 여성 고객을 위한 서비스를 많이 하고 있잖아요. 그 감성을 같이 공유할 수 있는 사람이 많아지면 기술적인 부분뿐 아니라 감성적인 부분에서도 큰 시너지가 나죠. 실제로 웹페이지에 제품 가격이 잘못 올라간 적이 있어요. 저희 남성 개발자들이 그 데이터를 먼저 보는데 '이게 맞는 가격인가' 의심하는 사람이 아무도 없었어요. 그때 여성 개발자분이 '이 제품이 이 가격이 아닐 텐데? 문제를 제기했고 다행히 수정할 수 있었죠. Q. 그래도 남성 개발자들의 화장품 가격에 대한 감이 점점 정확해질 것 같아요. 호호KAY 님이 UNIT을 운영하시면서 가장 보람을 느끼신 적은 언제인가요?A. 고객들이 많이 와서 저희 서비스를 이용해 주실 때 보람을 느낍니다. 저희 UNIT 자체에서도 무언가를 만들어가고 있다는 것을 느끼고, 실제로 좋은 반응을 얻었을 때 기분이 정말 좋아요. Q. 점점 더 많은 분들이 미미박스를 찾아주신다는 게 느껴져요! 앞으로의 목표는 무엇인가요?A. 첫 번째는 글로벌로 플랫폼을 옮기는 것입니다. 저희 내부에서 개발한 플랫폼과 서비스가 점점 확대돼서 미미박스가 해외에 진출할 때마다 플랫폼을 그대로 이동시켜 글로벌화하는 것이 첫 번째 목표고요. 두 번째는 앞으로 온라인을 넘어 오프라인에 대한 서비스도 진행할 예정이에요. 현재 미미박스 플랫폼과 오프라인 요소의 연계성을 찾고 최고의 고객 경험을 만드는 것이죠. 일반적인 O2O 서비스를 넘어 대부분의 고객이 여성이기 때문에 IT 기술 자체가 숨어있고, 알아서 돌아가게 만드는 서비스를 만들 것입니다.미미박스는 뷰티에 대해서 많은 강점과 다양성을 가지고 있기 때문에 이런 것들을 통해 저희만 할 수 있는 서비스를 만들고 싶어요. 마지막은 Data-driven 방식을 더욱 견고히 가져가는 것이에요. 축적되어있는 경험과 데이터를 통해서 고객 맞춤형 서비스에 대한 역량을 강화하는 것이죠. Q. 글로벌 플랫폼, O2O 서비스, Data-driven 앞으로의 TECHNOLOGY UNIT이 만들어낼 것들이 기대돼요. 두근두근. 마지막으로 KAY가 TECHNOLOGY UNIT을 리드하면서 가장 집중하는 3가지가 무엇인지 궁금합니다. A. 가장 중요한 것은 우리 개발자들의 커리어를 관리해주는 것이에요. 이분들이 미미박스에 와서 자기의 역량이 발전하지 않고 정체되다면 제가 역할을 제대로 못했다는 뜻이거든요.그래서 구성원들이 고생을 하든 뭘 하든 해가 갈수록 성장할 수 있도록 관리하는 것에 집중하고 있어요. 두 번째는 우리가 TECH 조직이기 때문에 서비스가 아주 정상적으로 운영되는 것이 목표에요. 단순한 장애를 없애는 것뿐만 아니라 계속 플랫폼이 발전하면서 문제가 없게 만들어야 하죠. 매출, 데이터가 계속 쌓이면서 안정적인 서비스를 만드는 것, 기본적인 것 같지만 가장 중요한 것 같아요. 마지막으로는 Align이에요. 개발팀이 성장할 수 있는 서비스, 개발 역량을 강화시키다며 보면 회사의 목표에 Align 되는 것을 놓칠 수 있어요. 그렇기 때문에 개발자들이 관심 있는 것들과 회사의 목표를 Align시켜서 시너지 효과를 낼 수 있도록 집중하고 있습니다.UNIT2. TECHNOLOGY UNIT으로서 어떤 사람과 일하고 싶나요?Q. TECHNOLOGY UNIT에서 일하기 위하여 갖추어야 할 역량은 어떤 것이 있나요?A. 첫 번째로 성장 가능성을 봅니다. 성장 가능성에는 여러 가지 의미가 있지만 적극적이고, 새로운 지식에 대한 욕구가 항상 강한 사람이어야 합니다. 배우고 싶은 열망, 해보고 싶다는 열망을 가지고 실제 구체적으로 실행해본 경험이 있고, 뭔가를 해본 사람이 성장 가능성이 있는 사람이라고 생각합니다. 제가 면접을 볼 때마다 항상 물어보는 것이 '5년 후 계획, 5년 후 모습은 어떨 것 같아요?'에요. 면접자가 적극적으로 대답하면 '그것을 위해 어떤 실행계획이 있는지' 물어보죠.두 번째로는 스타트업 마인드 FIT이 맞는 것이에요. 저도 미미박스에 처음 왔을 때 힘들었어요. 갖춰져 있는 게 없었거든요. 하나부터 열까지 하려면 뭔가 어디서 걸리는 거예요. 큰 회사는 세팅이 다 되어있는데 말이죠. 그래서 뭔가를 하려면 그 업무뿐 아니라 처음부터 다 찾고 만들어야 해요. 이렇게 만들어가는 걸 좋아하는 사람이 있어요. 준비가 안되어있다고 불평하는 것이 아니라 부족한 환경에서 할 거리가 많은 것을 반기는 사람들. 이런 사람들은 '이것저것 해봐야지~' 신나있어요. 이런 마인드 FIT을 많이 봅니다.Q. 스타트업 마인드 FIT 정말 공간되는 말인 것 같아요. 저도 갖춰져있는 틀에서 무언가를 하는 것보다 이것저것 찾아서 만드는 걸 좋아하거든요! 그런 분들이 많이 오시면 재밌는 일이 많이 벌어질 것 같아요. 우리 미미박스의 비전은 'Beautify the people'인데요. 혹시 취업이나 이직을 준비하는 분들께 이것만은 아름답게 관리하라고 조언하고 싶은 게 있나요?A. 이력서와 경력기술서를 아름답게 해야 해요. 개발자들 중에 '내 역량만 좋으면 되지'라고 생각하시는 분들이 있는데 자신의 커리어 패스를 만드는 것도 중요하거든요. 회사에서 처음에 서류전형을 진행하는 게 많은 내용을 내포하고 있어요. 경력기술서의 내용이 부실하면 회사도 본인도 FIT이 맞는 곳을 찾기가 어려워지죠. 어디서든 인정받는 사람이 되려면 자신의 업무와 역할을 충실하게 표현한 경력기술서를 작성하라고 말씀드리고 싶네요.Q. 정말 실질적인 조언이네요. 누구보다 깊게 고민하고 집중한 일일수록 경력기술서와 이력서를 잘 쓸 수 있고 자신의 경력도 잘 전달할 수 있을 것 같아요.마지막으로 함께 일하고 있는 미미박서분들께도 한마디 해주세요!A. 제가 여기 처음 와서 한 이야기가 있어요. "여기가 제 마지막 회사입니다."그렇게 이야기한 이유는 미미박스의 성장 가능성, 발전 가능성을 보았고 믿음이 있기 때문이죠. 모두가 같이 노력한다면 원하는 것을 이룰 수 있을 거라 생각해요. 다 같이 파이팅!
조회수 710

당신의 마케팅에는 고객경험을 고려한 시나리오가 있는가

작은 부탁의 힘가끔 마트의 장난감 진열대 앞에서 아이와 곤란한 줄다리기를 하고 있는 젊은 부부들을 볼 때가 있다. 평소 사고 싶던 장난감 앞에서 한 꼬마는 엄마에게 이렇게 물어본다.  “엄마, 저게 뭐예요?” (가끔, 저렇게 놀랍도록 뻔뻔한 질문을 하는 아이들을 보면 역시, 아이들에게 배울 것이 많다는 생각을 한다. )  그럼, 엄마는 이렇게 이야기 한다.  “아빠가 빨리 오래”  상황 파악이 된 아이는 그 자리에 풀썩 주저 앉더니 보채기 시작한다. 그리고 마법의 주문을 외우기 시작한다.  “엄마! 이번 한 번 만요!” 늘 이런 패턴을 알고 있는 부모지만 이 ‘한번만’이라는 마법같은 단어에 못 이긴 듯 결국, 장난감을 사주고 만다.  그런데 이런 대화는 비단, 아이와 부모 사이에서만 일어나는 것이 아니다. 영업이나 설득의 기술에 탁월한 이들을 보면, 애초에 부탁하고자 하는 것보다 더 어렵거나 들어주기 힘든 부탁을 전략적으로 건네곤 한다. 그리고 상대가 거절하게 되면 기다렸다는 듯이 부탁의 수준을 낮춰 작은 부탁을 제안한다. 그럼, 절반 이상은 거절할 수 없게 되는 것이다. 사실, 그 부탁이 원래 목적의 부탁인지도 모른 채 말이다.  그런데 더 놀라운 것은 이렇게 작은 부탁을 들어준 친구는 어느샌가 처음에 제시했던 큰 부탁도 크게 어렵지 않게 들어 줄 가능성이 크다는 것이다.  맥락에서 오는 실행력과 설득력마치 저것이 거절의 미안함을 스스로 없애기 위한 자기만족의 선택이라고 느껴지는가? 그렇지 않다. 고전에서도 많이 다뤄지고 있는 설득 법칙 중의 하나다. 바로, 자신이 한 행동의 방향성을 그대로 유지 시키고 싶은 관성의 법칙이기도 하다.  즉, 원인과 결과, 그리고 그 결과는 다른 행동의 원인이라는 이 맥락의 흐름을 파악하게 되면 어떻게 우리가 얻고자 하는 결과의 앞 단에 어떤 원인이 있어야 하는 지 알게 될 것이다. 더 나아가 원하는 결과를 얻기 위해 필요한 원인을 디자인하고 적절한 곳에 배치 시킬 수도 있을 것이다.  이런 모든 흐름들을 원인과 결과라는 맥락의 단위로 쪼개다 보면, 각 단계로의 진전에 자연스럽게 실행력과 설득력이 생기게 된다. 정말 쉬운 예를 들어보면 어떨까? 일찍 일어나고 싶다. > 일찍 잔다. 운동을 하고 싶다. > 운동을 하러 간다.  혹시 피식 웃는 이가 있을 지 모르겠다. 누가 이것을 모르나라고 할 수 있을 것이다. 혹시 알면서도 못 하는 것이라고 이야기 한다면, 한 번 더 원인을 만들어 보자. 그럼, 자연스럽게 ‘실행력’까지 생기게 될 것이다.  일찍 일어나고 싶다. > 일찍 잔다. > 무조건 7시 전에는 업무를 마치고 8시까지는 식사와 샤워를 마치고 9시 전에는 침대에 눕는다.  운동을 하고 싶다. > 운동을 하러 간다. > 정해진 시간에 친구와 헬스장에서 만나기로 한다.  물론, 원하는 결과를 얻을 수 없을 때도 있다. 운동을 하기로 한 친구의 연락을 차단하면 모든 것은 수포로 돌아간다. 다만, 저 원인들이 있다면, 운동을 할 가능성은 커진다.  고객이 행동을 맥락으로 바라보는 관점이런 맥락의 흐름을 마케팅의 관점으로 바라보면 어떨까? 쇼핑몰의 한 예를 들어보자. 구매를 하기 직전, 원하는 제품에 찜을 해두거나 장바구니에 담아두는 행동을 유도해보는 것은 어떨까. 그런 이전의 행동들을 해 본 유저는 구매까지 가는 과정이 어렵게 느껴지지 않을 것이다.  어느 오프라인 교육프로그램을 예를 들어보자. 오프라인 마케팅 과정이 있다면, 그 전에 pre-seminar를 진행하기도 하고 프로그램을 안내하는 웹사이트 페이지에 교육의 일부를 촬영하여 미리 보여줄 수도 있을 것이다. 해당 프로그램에 흥미를 느끼는 이들은 pre-semina에 참여하거나 영상을 보게 되며, 이런 행동은 본 프로그램 참여까지 관성 작용을 일으키게 될 가능성이 커진다.  이렇게 관성을 이용한 설득의 법칙을 페이스북과 같이 full-funnel 마케팅이 가능한 매체를 활용하면 그 효과가 더욱 커질 수 있다. 10초 정도의 짧은 영상으로 관심을 유발하고, 이에 반응했던 유저를 대상으로 캠페인의 full 영상을 보여준다. 긴 영상에도 일정 시간 시청하며 반응한 유저에게는 세일즈 전환 메시지를 다시 보여줌으로써 전환을 유도하게 된다. 아마 당신도 이런 full-funnel 마케팅에 반응한 경험이 꽤 많을 것이다.  고객은 어떠한 경험을 하는가 이런 맥락을 더 잘 활용하려면 어떻게 해야 할까? 당신의 고객이 특정 니즈를 가진 순간부터 최종 구매 완료를 하는 순간까지 어떤 경험을 하게 되는 지를 모두 관찰 할 필요가 있다. 그리고 그 과정을 작은 단위로 쪼개어 정의 할 필요가 있다. 작은 단위로 고객의 경험을 쪼개어 보면 어느 부분의 고객 경험을 향상 시켜야 할 지, 그 솔루션이 보이게 된다. 즉, 이런 과정의 연속이 마케팅 실행력을 성장 시키게 된다.  가령, 쇼핑몰의 메인 페이지에서 제품의 상세 페이지를 경험하는 과정에 고객이 있다고 하자. 마케터 입장으로는 메인 페이지에만 고객이 머물다가 사이트를 나가면 무의미하다. 단 한명이라도 더 제품, 서비스의 상세 페이지를 보게 만들어야 한다. 이 때, 상세페이지 확인이 가능한 썸네일 이미지 클릭이나, 배너 클릭이 이루어져야만 다음 단계로 갈 수 있다. 이 때, 해당 이미지나 배너는 고객이 클릭할 수 있는 요소들을 갖추고 있어야 한다. 단순 제품 이미지를 싣는 방법도 있을 테고, 직접 해당 제품을 사용하는 모습의 이미지가 들어갈 수도 있다. 사실, 어떤 이미지가 고객의 클릭율을 높일 수 있을지는 모른다. 다만, 해당 이미지나 배너는 클릭하고 싶게끔 만들어야 상세 페이지뷰가 많아진다는 것은 누구나 안다.  이런 생각의 흐름으로 쪼개진 고객 경험의 모든 구간에서 전환율 상승에 도움되는 모든 전략을 구성해 볼 수 있다.  고객의 경험에 따라 우린 어떤 메시지를 적절하게 줄 수 있는가 만약, 제품의 상세페이지에 유입된 고객이 후기 텝을 눌러 후기를 3가지 정도 읽어보고 구매 없이 나간 데이터가 많다고 생각해보자. 이들은 구매에 대한 의사결정으로 무엇을 주로 본다고 할 수 있는가. 두말 할 나위 없이 바로 후기다. 구매를 실패한 유저 외에 구매를 한 유저도 사전에 후기 콘텐츠 소비가 많다고 판단되면 고객에게 구매 전, 후기 확인이 매우 중요한 구매결정우선순위라고 이야기 할 수 있다.  그럼, 이 데이터를 기반으로 무엇을 해야만 하는가. 바로 구매는 실패했지만 유의미한 행동(후기 소비)을 했던 유저를 다시 사이트에 불러 올 필요가 있다. 바로, 리타겟팅이다. 바로, 이때 우린 어떤 메시지로 이들을 데려와야 할까? 바로, 후기다. 그들의 구매결정우선순위에 맞는 후기 콘텐츠를 통해 그들의 흥미를 다시 끌어야 하는 것이다.  고객을 다시 데리고 올 때, 혹은 신규 고객을 더 많이 유입 시키고자 할 때, 적절한 메시지는 바로 웹사이트에서 목표 전환 전, 유저가 가장 많이 해본 행동이나 소비한 콘텐츠의 내용이 된다. 흥미를 유발하는 콘텐츠는 이미 사이트 유입 전, 한 참 전에 사용되었어야 한다.  우리가 처음에 이야기했던 작은 행동으로부터의 힘은 바로 이렇게 연결된다. 작은 부탁이라도, 작은 행동이라도 그것을 실행하게 되면 관성의 법칙이 생긴다. 즉, 그 다음 요구되는 액션을 할 가능성이 높아지는 것이다. 마트의 시식코너나 화장품의 테스터는 이런 전략의 아주 기초적인 사례라 할 수 있다. 웹사이트에서 찜 버튼을 누른 이는 장바구니 버튼의 클릭을 더 잘 할 것이며, 장바구니 버튼 클릭 유저는 구매를 더 잘 할 것이다. 그래서, 더 작은 것부터 우린 제안해야 한다. 그리고 그 제안을 받아 들인 유저가 물 흐르 듯 흘러 갈 수 있게 그 다음 단계가 잘 준비되어 있어야 한다.  즉, 구매고객들의 구매결정우선순위에 맞춰, 작은 행동부터 요구하라. 이 작은 행동이나 부탁을 들어 줄 가능성은 당신의 본 제품이나 서비스를 구매 할 가능성보다 크다. 이렇게 처음부터 끝까지 고객 행동경험을 디자인하고 이 경험을 웹사이트 내부, 외부에서 모두 디자인하는 것을 시나리오 마케팅이라고 부른다. 자, 당신의 마케팅에는 시나리오가 있는가. 지금부터 한 번 고객의 경험을 A to Z, 모두 설계 해 볼 수 있길 바란다.  
조회수 79

지적인 삶을 위한 바로고의 문화생활 즐겨찾기, 영화<발레리안>

barogo바로고 복지문화출근이 즐거워지는바로고의 복지문화안녕하세요.바로고입니다.지난 포스팅에서바로고의 다양한 13가지의복지문화를 소개하였습니다.그중에 두 번째지적인 삶을 위한문화생활 즐겨찾기매월 마지막 주 수요일!영화, 전시, 공연, 스포츠 등다양한 문화생활을 즐기는 바로고8월의 마지막 주 수요일에는어떤 문화를 함께 했을까요?<출처-네이버 영화> <발레리안 : 천 개 행성의 도시>프랑스 영화감독이자영화계의 거장뤽 배송 감독이 40년간 구상한 일생의 프로젝트라서더욱 기대를 모으고 있습니다.영화 발레리안은 28세기 미래의 우주 평화를 지키기 위해시공간을 이동하며 임무를 수행하는특수 에이전트의 이야기를 다룬 영화입니다.<출처-네이버 영화>발레리안: 천 개 행성의 도시감독뤽 베송출연데인 드한카라 델레바인클라이브 오웬리아나에단 호크허비 행콕등등스포일러는 없으나영화에 대한 기대감이 높으시다면슝슝~ 바로고의 소식만 만나보세요^.^<출처-네이버 영화>데인 드한발레리안 역<크로니클> <킬유어달링> <어메이징 스파이더맨2>그동안 다양한 장르의 영화에서 필모를 쌓아온 데인 드한<발레리안>에서는 우주 최강 악동 에이전트 '발레리안' 역을 맡았습니다.촬영 7개월 전부터 몸을 만들고거의 매일 스턴트처럼 연습했다고 하네요.<출처-네이버 영화>카라 델레바인로렐린 역최고의 탑모델 출신으로영화 <수어사이드 스쿼드>에서 매력적인 악녀 '인챈트리스'를 완벽하게 연기한카라 델레바인이번 영화에서 그녀의 업그레이드된 연기를 보실 수 있다고 합니다.<출처-네이버 영화>리아나버블 역글로벌 팝스타 리아나를발레리안에서 만나보실 수 있습니다.지금까지보다 더욱 화려한퍼포먼스를 선보일 예정이라고 하니기대해주세요^^<출처-네이버 영화>두 남녀 주인공의 케미를 보는 재미도 쏠쏠~대배우로 성장하고 있는데인 드한과 카라 델레바인의 연기변신을기대해주세요!<출처-네이버 영화>영화 <발레리안>의 원작 <발레리안과 로렐린><스타워즈> <스타트렉> <아바타> 등SF 역사에 한 획을 그은명작들의 탄생에 영향을 준 작품이라고 합니다.영화 <아바타>의 배경이 되는 판도라 행성과 나비족<발레리안>의 뮐 행성과 진주족의 놀라운 싱크로율이것만으로 원작 <밸레리안과 로렐린>에얼마나 큰 영향을 받았는지 짐작할 수 있습니다.<출처-네이버 영화>초현실 세계를 만난 듯한우주의 모습영화에서 보시면상상의 세계를 완벽하게 구현한뤽 베송 감독의 유니크한 연출력을 보실 수 있습니다.압도적인 스케일과 잠시도 눈을 뗄 수 없는 영상미바로고에서 추천하는 영화입니다~!<출처-네이버 영화>현장에서의 뤽 베송 감독의 모습40년간 구상한 영화라고 하니정말 거장은 다르다는 생각이 듭니다.스토리보드 작업만 1년 6개월프로덕션 디자인 작업 3년특수효과 2,734개제작비는 2억 9백만 달러기록이 증명하는 이 영화, 꼭 봐야 하지 않을까요?<출처-JTBC 비정상회담 방송>영화 <발레리안> 개봉에 맞추어한국을 찾은 뤽 베송 감독JTBC <비정상회담>에 출연하였습니다.털털하고 유머러스한 그의 모습이그의 영화를 기다려온 한국 팬들의 마음을 사로잡았어요~<출처-JTBC 비정상회담 방송>바로고복지문화지적인 삶을 위한문화생활 즐겨찾기영화관에 도착한 바로고 직원들지적인 삶을 위한 문화생활너무 기쁜 나머지 눈물이 살짝"울지마세요~ㅠㅠ"영화 관람을 위한 필수!지금부터는 분주하게팝콘 및 콜라 구매가 시작됩니다.즐겁게 이야기도 나누고바쁜 일상에서 잠시 머리 식혀가는 시간영화 관람을 할 수 있어서 좋아요!영화가 시작되기 전기념샷을 샤샤샥!지금부터는 즐겁게 영화 감상을 시작하겠습니다.출근이 즐거워지는바로고의 복지문화오로지 바로고에만 있는문화생활 즐겨찾기8월의 문화의 날에는영화 <발레리안 : 천 개 행성의 도시>를 감상하였습니다.다음 문화의 날도 기대합니다![바로고 공식 홈페이지]
조회수 721

마케팅 부서에서 대행사와 협력을 잘 할 수 있는 방법 5가지

혹시 대행사와 함께 일하고 계시나요? 아마 대행사 없이 일하는 마케팅 부서는 없지 않을까 생각됩니다. 저희 마케팅 부서에서도 캠페인별로 여러 대행사와 협력하고 있는데요. 대행사는 회사 내부의 부족한 일손을 돕기 위해, 잘 모르는 분야의 전문가 의견을 듣기 위해, 함께 일하는 협력 업체를 말합니다. 오늘은 많은 대행사와 함께 일하면서 얻게 된, 협업하는 노하우에 대해 소개해드리려 합니다. 이 콘텐츠를 통해 대행사와의 시너지 효과를 톡톡히 내실 수 있기를 기대합니다!대행사와 하나가 되었을 때 사랑이 피어납니다.이런 분들에게 추천합니다. 1.  대행사와 함께 일하면서 어딘가 모를 불편함을 느낀 마케터 2.  관리하고 있는 대행사가 많아 일일이 관리하기 힘든 팀장님 3.  대행사에게 외주를 주려고 고민 중인 대표님 4.  여러 광고주의 업무 요청에 지친 AE1. 커뮤니케이션은 비동기식으로 하세요.비동기식 커뮤니케이션이라는 말을 들어보셨나요? 즉시 답장이 오지 않을 것이 전재된 상태에서 메시지를 주고받는 커뮤니케이션 방식을 뜻합니다. 상대방이 언제 확인할지 모르는 '이메일'이 대표적인 예가 되겠습니다. 하지만 많은 기업 담당자들이 대행사와 협업을 진행할 때 동기식으로 업무를 진행합니다. 이메일로 업무를 주고받기 보다, 개인용 카카오톡으로 업무 대화를 나누게 되죠.대행사는 카톡방 업무 지옥을 경험하고 있을지 모릅니다.대행사가 우리 회사의 업무만 맡아주면 좋겠지만, 단독 대행사가 아닌 이상 대부분 동시에 여러 회사의 대행을 맡이 처리합니다. 잠시 대행사의 업무 루틴을 상상해볼까요? 출근하자마자 광고주의 전화가 울리고, 경쟁 입찰을 하기 위해 회의에 참가합니다. 그 와중에 광고주는 카톡으로 업무 재촉을 하고…. 이런 상황에 동기식 커뮤니케이션은 일하는데 방해 요소가 됩니다. 특히 채팅으로 업무 관련 피드백이나 내용을 주고받게 되면, 누락될 가능성이 높아지게 되죠.2. 업무에 관련된 내용은 모두 기록하세요.분명 어딘가 저장했다고 생각했는데, 몇 달이 지나고 나서 파일이 없다는 사실을 알게 된 적이 있으신가요? 저도 웬만하면 바로 저장을 하지만 가끔 놓치는 경우가 발생합니다. 이메일로 전송된 대용량의 파일, 카카오톡으로 주고받은 파일은 다운로드 기간이 있는데요. 이때 다운로드하지 못하면 영영 날아가는 상황이 발생됩니다. 파일뿐만 아니라 주고받은 계약사항, 피드백도 한순간에 날아갈 위험이 있죠.그래서 파일은 물론이고 업무 히스토리도 모두 기록에 남아야 합니다. 대행사 직원이 바뀌거나 내부 직원이 바뀌더라도, 기록이 남아있다면 별도의 인수인계 없이 모든 히스토리 파악이 가능하겠죠!3. 업무 데드라인을 명확하게 정하세요.마케팅 부서에서 가장 중요한 것이 스케줄 관리인데요. 제품 출시나 이벤트는 기간에 맞춰야 하는 경우가 많습니다. 그래서 더더욱  업무 데드라인을 확실하게 정해야 하는데요. 대행사는 얼굴을 마주 보며 함께 일하는 형태가 아니다 보니, 데드라인이 명확하지 않으면 업무가 지연되는 경우가 있습니다. 4. 피드백은 댓글로 남기세요.사람이 한 번에 기억하는 정보는 한계가 있습니다. 채팅이나 전화로만 의견을 전달한다면 누락될 가능성이 높죠. 먼저 댓글로 피드백을 명확하게 남겨주세요. 그 후 자세한 설명을 위해 통화나 화상회의를 진행하세요. 서로 간의 오해를 줄일 수 있을 뿐만 아니라, 빠르게 업무를 진행할 수 있습니다. 가끔은 응원의 메시지도 댓글로 남겨주세요. :)5. 협력 관계임을 잊지 마세요.대행사는 우리의 일을 도와주는 고마운 곳입니다. 갑과 을의 구도로 보면 안되는 이유죠. 협업툴 플로우는 마케팅 조직에서 사용하면 좋은 업무툴 중 하나 입니다. 대행사의 입장에서도, 인하우스 마케팅 부서에서도 사용하기 좋죠. 성공적인 협업을 통해 매출 달성과 KPI 달성이라는 두 마리 토끼를 잡으셨으면 좋겠습니다.협업툴 플로우 바로가기
조회수 4248

Flask로 만들어 보는 WSGI 어플리케이션

안녕하세요. 스포카 크리에이터팀 문성원입니다. 오늘은 WSGI(Web Server Gateway Interface)어플리케이션을 직접 작성해보고, 또 이런 작성을 보다 쉽게 도와주는 프레임워크 중 하나인 Flask에 대해서 알아보겠습니다.WSGIWSGI에 대해 기억이 가물하신 분들을 위해 지난 글의 일부를 잠깐 다시 살펴보죠.이 경우 uwsgi는 일종의 어플리케이션 컨테이너(Application Container)로 동작하게 됩니다. 적재한 어플리케이션을 실행만 시켜주는 역할이죠. 이러한 uwsgi에 적재할 어플리케이션(스포카 서버)에는 일종의 규격이 존재하는데, 이걸 WSGI라고 합니다.(정확히는 WSGI에 의해 정의된 어플리케이션을 돌릴 수 있게 설계된 컨테이너가 uwsgi라고 봐야겠지만요.) WSGI는 Python 표준(PEP-333)으로 HTTP를 통해 요청을 받아 응답하는 어플리케이션에 대한 명세로 이러한 명세를 만족시키는 클래스나 함수, (__call__을 통해 부를 수 있는)객체를 WSGI 어플리케이션이라고 합니다.글로는 감이 잘 안오신다구요? 그럼 코드를 보면서 같이 살펴봅시다. (모든 코드는 Python 2.7에서 테스트 되었습니다.)Hello World!def app(environ, start_response):    response_body = 'Hello World!'    status = '200 OK'    response_headers = [('Content-Type', 'text/plain'),                         ('Content-Length', str(len(response_body)))]    start_response(status, response_headers)        return [response_body]view rawgistfile1.py hosted with ❤ by GitHubapp은 일반적인 Python 함수지만, 동시에 WSGI 어플리케이션이기도 합니다. environ과 start_response를 받는 함수기 때문이죠.(PEP-333) 사실은 꼭 함수일 필요도 없습니다. 다음은 위의 app과 동일한 동작을 하는 WSGI 어플리케이션입니다.class App(object):    def __init__(self, environ, start_response):        self.environ = environ        self.start_response = start_response    def __iter__(self):        status = '200 OK'        response_body = "Hello World!"        response_headers = [('Content-Type', 'text/plain'),                            ('Content-Length', str(len(response_body)))]        self.start_response(status, response_headers)        yield response_bodyview rawgistfile1.py hosted with ❤ by GitHubApp는 Python 클래스(Class)로 environ과 start_response를 멤버 변수로 가지는데, 여기에는 약간의 트릭이 있습니다. 생성자(Constructor)인 App를 함수처럼 사용하게 하여 리턴되는 결과(실제로는 생성자를 통해 생성된 객체겠죠.)가 \_\_iter\_\_를 구현한 순회 가능한(Iterable) 값이 되게 하는 것이죠. (덤으로 이 객체는 발생자(Generator)를 돌려주게 됩니다.)그럼 이제 이 코드들을 실행하려면 어떻게 해야할까요? 그러려면 먼저 WSGI 규격에 맞게 어플리케이션을 실행시켜 줄 서버를 작성해야합니다. 하지만 다행히도 Python 2.5부터 제공되는 wsgiref.simple_server를 이용하면 간단히 테스트 해 볼 수 있습니다.(서버를 직접 작성하는 부분에 대해선 나중에 다루도록 하겠습니다.)from wsgiref.simple_server import make_serverhttpd = make_server('', 8000, app)httpd.serve_forever()view rawgistfile1.py hosted with ❤ by GitHub위 코드를 실행시킨 후에(당연히 app이나 App도 만들어져 있어야겠죠?) 웹 브라우져를 통해 localhost:8000으로 접속하면 작성한 어플리케이션의 동작을 확인할 수 있습니다.environ과 start_response테스트도 해봤으니 코드를 조금만 더 자세히 살펴봅시다. 함수 버젼의 app이나 클래스 버젼의 App모두 공통적으로 environ과 start\_response를 인자로 받아 요청을 처리하는 것을 확인할 수 있습니다. (당연한 이야기겠지만, 반드시 이름이 environ이나 start\_response일 필요는 없습니다만 편의상 이후 계속 environ과 start_response로 표기하겠습니다.)하나씩 살펴보자면, environ은 Python 딕셔너리(dictionary)로 HTTP 요청을 처리하는데 필요한 정보가 저장되어있습니다. HTTP 요청에 대한 정보는 물론, 운영체제(OS)나 WSGI 서버의 설정 등도 정의되어있지요. 다음 코드는 이러한 environ의 내용을 응답으로 주게끔 수정한 WSGI어플리케이션입니다.def dump_environ_app(environ, start_response):    response_body = "\n".join(["{0}: {1}".format(k, environ[k]) for k in environ.keys()])    status = '200 OK'    response_headers = [('Content-Type', 'text/plain'),                         ('Content-Length', str(len(response_body)))]    start_response(status, response_headers)        return [response_body]view rawgistfile1.py hosted with ❤ by GitHublocalhost:8000에 각종 쿼리 스트링(Query String)을 붙이거나, 브라우져를 바꿔가면서 확인해보면 출력되는 값이 바뀌는 것을 확인하실 수 있습니다.그럼 이제 start\_response를 한번 볼까요. start\_response는 일종의 콜백(Callback)으로 인터페이스는 다음과 같습니다. start_response(status, response_headers, exc_info=None) 실제 서버에서 어플리케이션으로부터 응답(Response)의 상태(Status)와 헤더(Header), 그리고 예외(Exception)의 유무를 확인받아 실행하게 되는데, status와 response_headers는 HTTP 응답 명세에 근거하여 작성하게 됩니다.Middleware지금까지 우리는 어떻게 WSGI 어플리케이션을 작성하는지에 대해 살펴봤습니다. 요청을 받아 처리하는 HTTP의 기본 기능에 충실한 어플리케이션이었죠. 그런데 일반적으로 우리가 작성하는 웹 어플리케이션에서 주로 다루게 되는 쿠키(Cookie), 세션(Session)에 대해서는 어떻게 처리해야 좋을까요? WSGI 명세에는 이러한 내용을 직접적으로 다루고 있지 않습니다. WSGI 자체는 서버나 프레임워크 자체가 아니라 서버가 어플리케이션과 통신하는 명세를 다루고 있기 때문이죠. 따라서 이러한 기능은 작성자가 직접 이를 구현해야 합니다. 그런데 이런 구현을 어플리케이션을 작성할때마다 하는건 너무 번거로운 일입니다. 그것보다는 이미 작성한 어플리케이션을 확장하는 것이 간단하겠지요. 이러한 확장을 위해 필요한 것이 WSGI 미들웨어(Middleware)입니다.미들웨어는 어플리케이션을 처리하기 전후의 처리나 environ의 추가등을 통해 작성된 어플리케이션을 확장할 수 있습니다. 다음은 쿼리 스트링의 \_\_method\_\_에 따라 HTTP 메소드(Method)를 임의로 변경하는 처리를 도와주는 간단한 미들웨어입니다.from werkzeug import url_decodeclass MethodRewriteMiddleware(object):    """        app = MethodRewriteMiddleware(app)    """    def __init__(self, app, input_name = '__method__'):        self.app = app        self.input_name = input_name    def __call__(self, environ, start_response):        if self.input_name in environ.get('QUERY_STRING', ''):            args = url_decode(environ['QUERY_STRING'])            method = args.get(self.input_name)            if method:                method = method.encode('ascii', 'replace')                environ['REQUEST_METHOD'] = method        return self.app(environ, start_response)view rawgistfile1.py hosted with ❤ by GitHubMethodRewriteMiddleware는 \_\_call\_\_를 통해 app을 대체하게 됩니다. (데코레이터(Decorator)가 생각나셨다면 정확한 이해십니다.)Flask미들웨어를 통해 어플리케이션을 확장하는 방법까지 알아봤습니다. 그러나 이것만 가지고 웹 어플리케이션을 만들기에는 아직 귀찮은 부분이 많이 남아있습니다. 각종 파라미터를 처리하기 위해서는 environ를 일일히 뒤져야하며, 요청에 대한 응답으로 전달할 HTML도 일일히 문자열로 적어야하죠. 이런 여러가지 불편함을 해결하기 위해 알아볼 것이 WSGI 마이크로프레임워크를 자처하는 Flask입니다. Flask는 WSGI 라이브러리인 Werkzeug를 만들기도 한 Armin Ronacher가 만든 프레임워크로 “마이크로”라는 수식어에 어울리게 아주 핵심적인 부분만을 구현하고 있지만, 유연하게 확장이 가능하게 설계된 것이 특징입니다.다시 한번 Hello World!우선 Flask를 시스템에 설치해야하는데, pip가 설치되어있다면 pip install flask로 설치 가능합니다.(환경에 따라 루트(root)권한이 필요할 수도 있습니다.) easy_install의 경우도 마찬가지로 easy\_install flask로 설치 가능합니다.설치가 완료되었으면 다음과 같이 아주 간단한 어플리케이션을 작성해봅시다.from flask import Flaskapp = Flask(__name__)@app.route("/")def hello():    return "Hello World!"if __name__ == "__main__":    app.run()view rawgistfile1.py hosted with ❤ by GitHubFlask(정확히는 Werkzeug)는 테스트를 위해 간단한 WSGI 서버를 자체 내장하고 있기 때문에 app.run을 통해 어플리케이션을 직접 실행할 수 있습니다.Route이번에 작성한 Flask 어플리케이션에는 이전까지 보지 못하던 개념이 들어 있습니다. app.route가 바로 그것인데요. 이 메서드는 URL 규칙을 받아 해당하는 규칙의 URL로 요청이 들어온 경우 등록한 함수를 실행하게끔 설정합니다. 위의 Hello World! 예제 같은 경우엔 “/”가 해당되겠지요. 또한 이런 규칙을 URL로 부터 변수도 넘겨 받을 수 있습니다.# http://flask.pocoo.org/docs/api/#[email protected]('/')def index():    [email protected]('/')def show_user(username):    [email protected]('/post/')def show_post(post_id):    passview rawgistfile1.py hosted with ❤ by GitHub이렇게 URL을 통해 처리할 핸들러를 찾는 것을 일반적으로 URL 라우팅(Routing)이라고 합니다. 이런 URL 라우팅에서 중요한 기능 중 하나가 핸들러에서 해당하는 URL을 생성하는 기능인데, Flask는 이를 url_for 메서드를 통해 지원합니다[email protected]('/')def index():    return ""@app.route('/')def show_user(username):    return [email protected]('/post/')def show_post(post_id):    return str(post_id)from flask import [email protected]("/routes")def routes():    return "".join([            url_for("index"),            url_for("show_user", username="longfin"),            url_for("show_post", post_id=3)            ])view rawgistfile1.py hosted with ❤ by GitHub보다 자세한 사항은 API 문서를 참고하실 수 있습니다.Template여태까지 우리는 요청에 대한 응답으로 단순한 문자열을 사용했습니다. 하지만 일반적인 웹 어플리케이션의 응답은 대부분이 그것보다 훨씬 복잡하지요. 이를 보다 쉽게 작성할 수 있게끔 도와주는 것이 바로 Flask의 템플릿(Template)입니다. Flask는 기본 템플릿 엔진으로 (역시 Armin Ronacher가 작성한)Jinja2를 사용합니다.기본적으로 템플릿엔진은 별도의 규칙(여기서는 Jinja2)에 맞게 작성된 템플릿 파일을 읽어 환경(Context)에 맞게 적용한 결과물을 돌려주는데 이 과정을 Flask에서는 render_template()가 담당하고 있습니다. 다음 코드는 hello.html이라는 템플릿 파일을 읽어서 이름을 적용한 뒤에 돌려주는 코드입니다.# from http://flask.pocoo.org/docs/quickstart/#rendering-templatesfrom flask import [email protected]('/hello/')@app.route('/hello/')def hello(name=None):    return render_template('hello.html', name=name)view rawgistfile1.py hosted with ❤ by GitHub쉽게 작성할 수 있게 도와준다고 해도, 템플릿 역시 나름의 학습을 필요로 합니다. 자세한 사항은 Jinja2의 API 문서를 참고하시기 바랍니다.RequestHTTP 요청을 다루기 위해서 때로는 environ의 내용은 너무 원시적일때가 있습니다. HTML 폼(Form)으로부터 입력받는 값이 좋은 예인데요. Flask에서는 request라는 객체(역시 Werkzeug에서 가져다가쓰는 거지만요)를 통해 이를 보다 다루기 쉽게 해줍니다. 다음은 HTML 폼으로부터 입력받은 message라는 값을 뒤집어서 출력하는 코드입니다.from flask import [email protected]("/reverse")def reverse():    message = request.values["message"]    return "".join(reversed(message))view rawgistfile1.py hosted with ❤ by GitHubSession로그인등으로 대표되는 요청간의 상태를 유지해야하는 처리에 흔히 세션(Session)을 사용하실 겁니다. Flask에서는 session객체를 지원합니다.# from http://flask.pocoo.org/docs/quickstart/#sessionsfrom flask import Flask, session, redirect, url_for, escape, requestapp = Flask(__name__)@app.route('/')def index():    if 'username' in session:        return 'Logged in as %s' % escape(session['username'])    return 'You are not logged in'@app.route('/login', methods=['GET', 'POST'])def login():    if request.method == 'POST':        session['username'] = request.form['username']        return redirect(url_for('index'))    return '''        <form action="" method="post">           <input type=text name=username>           <input type=submit value=Login>        </form>    '''@app.route('/logout')def logout():    # remove the username from the session if its there    session.pop('username', None)    return redirect(url_for('index'))# set the secret key.  keep this really secret:app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'view rawgistfile1.py hosted with ❤ by GitHubFlask는 기본적으로 시큐어 쿠키(Secure Cookie)를 통해 세션을 구현하므로 길이에 제한이 있습니다. 때문에 파일이나 DB기반의 세션을 구현하려면 Beaker와 같은 프레임워크를 통한 확장이 필요합니다.(하지만 이 또한 매우 쉽습니다.)#스포카 #개발 #개발자 #개발팀 #인사이트 #기술스택 #꿀팁 #Flask
조회수 1126

투데잇메이커, ‘투데잇당’을 소개합니다!

투데잇‘당’은 어떤 정당의 개념이 아닙니다. 화려한 캐미가 돋보여서 ‘화학물질’에 속하는 그들은, 서로에게 에너지원이 되자는 의미의 ‘당’(sugar) 입니다.두 번의 스타트업 실패 경험으로, 다신 못하겠다 싶었던 절망의 나날이 있었지만 현재는, 언젠가 ‘아 이거 나한테 필요한데..’ 하고 만들었던 서비스, 투데잇의 CEO이다. 학교 다닐 때에도 읽지도 않았던 논문 섭렵에 푹 빠져있다. (역시 인생이란 아이러니!)그렇게 ‘공부 잘 하는 법’ 에 대해 오늘도 내일도 공부 중인 그는그 누구보다도 더욱 더 '효과적인 학습법' 에 대해 심/층/탐/구 중이다.“오늘 해야 될 일을 오늘 하는 사람이, 지금 이 순간에 집중하는 사람이 ‘진짜’ 잘하는 사람”이라고 생각한다.소프트웨어 개발은 항상 마법이라고 여기는 그는, SCV한테 코딩 못한다고 가루가루 분말가루가 되도록 까이면서도(!!) 절대 코딩을 놓지 않는다.(!!!)아무도 본적이 없지만, 한때는 체지방 5% 미만의 복근남이었었었다고.‘태초에 나모웹에디터를 접하사, 눈떠보니 CTO의자에 앉아있더라’는 그는, 올 해로 안드로이드며 서버며 iOS며 두루두루 섭렵중인 전설적인 남자다.소유와 나눔의 미덕을 아는 그는 Open Source Contributor로도 활동 중이다. 역시 이 시대의 잔트가르!최근엔 Java, Ruby, Kotlin, Swift를 넘어 Go, Rust, Clojure, Scala까지 넘보고 있다고 한다. (당신은 욕씸쟁이! 우후훗!)본인이 진정 뭘 원하는지 아는 그는, 대입 수시를 버리고 정시를 택할 만큼 모험에 대한 도전 의식이 매우 강하다.주업(晝業)은 CTO, 야업(夜業)은 SCV.. 꿈은 세상사를 담는 다큐사진작가 라고. 그래서일까, 그가 입을 열면 왠지 슬픈 브금이 깔린다는 전설이..투데잇의 학습 효과를 극대화할 교육학 이론 융합 전문가이다.영어교육 전공이라 투데잇의 글로벌 진출을 이끄는데 한 몫 두몫… 하는 그의 하루는 이렇게 시작한다. “(뚜르르)안녕하세요! 투데잇 이기홉니다! 하하항” 못 해본 일은 있어도, 안 해본 일은 없다는 그는 운영과 영업 특화형 인재다.그의 업무는 한 글자로 정리하자면 "다".그가 유일하게 못하는건 개발. 이었는데 요샌 개발개그도 듣고 폭소할 정도로 발전 중이다. 과거 창업했다가 권리금 받고 팔아먹은 경력도 있음.(엑☆싯!)캐면 캘 수록 무궁무진한 그 남자의 과거 이력! 투데잇에 합류 3개월 차에 첫 투자 유치, 4개월 차에 투자유치 또 성공! 그의 손에 닿는 즉시, 모든 것은 ★이루어진다! 취미는 브금따라 흥얼거리기.푸우처럼 푸근한 인상으로 한 때 안드로이드 해킹과 보안이 주특기이자 필살기였던 그는, 투데잇과 함께 하면서 부터는 안드로이드 앱 개발을 전담하고 있다. (끼이익)(새로운 차원의 문 열리는 소리)박사님 비주얼값처럼 실제 국내 논문은 물론, 해외 저널과 논문 출판까지 한 어마어마한 사람!투데잇팀 모두가 탐내는 ‘드립 아카이브’를 가지고 있는 그는, 투데잇의 잠금기능과 통계 기능의 아버지로 ‘잠달’·’통달’ 로 통한다. 그의 특기인 회고를 한번이라도 들어본 사람은 헤어나올 수가 없다고.취미는 시도 때도 없이 드립 투척해서 투데잇당원들 홀리기 와 콩 굴리기.만성편두통er인 그녀에게 믹스커피는 거의 만병통치약 수준으로 ‘믹스커피 신봉자’ 이다.관광 전공자로 대외활동도 관광 범벅이었지만, “현재 그녀의 종착지는 IT” 라는 매우 과감한 선택을 했다. 하루의 시작과 끝을 신세계의 용어를 접하며 보내는 그녀는, 대학생활을 PPT 그 자체로 지낸 덕분에 웬만한 작업들은 웬만큼 헤쳐나가고 있다.(업무 중에도 쏠쏠하게 쓸모빛을 발하고 있는 것 같아 기쁘다고.)커뮤니케이션매니저로 시작해, 투데잇 유저를 ‘투데잇러버’라고 여긴다. 그들에겐 끊임없이 ‘페이지터너’ 가 되고 싶다는 그녀는 투데잇팀 중 유일하게 팬아트도 수두룩하게 받은 궁극의 커뮤니케이션의 달인이다. 인생 모토는 원래 “잔잔하게 그러나 열정적으로”였지만, 사회에 뛰어들면서 인생모토는 “과감하게 그리고 열정적으로” 이라고 한다.이 곳의 無경지를 맡고 있다. 어떠한 상황에도 개의치 않고 무무(굳셀 무, 없을 무)력을 뽐내는 그는,“예술가는 사람들이 가질 필요가 없는 물건을 만들어내는 사람(앤디워홀), 디자이너는 사람들이 가질 필요가 있는 물건을 만들어내는 사람!” 이란 생각으로 “예술”보단 진정한 “디자인”의 본질을 투데잇에 녹여내는 중이다.실은 유저들에게 관심을 받기 위해 디자인적으로 집착 중이라는 소문이..! 이런 고민과 질문의 과정을 계속 하는게 그의 바람이라고. 사랑하는 유저들에게 웃음이 되고자 하는 그는 디자인의 경계가 ‘없다!’ 인테리어면 인테리어, 제품이면 제품, 앱이면 앱! 디자인계의 풀스택인 그는 하늘 아래 같은 색조가 없듯, 오늘도 색감과 영감의 늪에서 고군분투 중!#투데잇 #팀소개 #투데잇당 #팀원 #조직문화 #기업문화 #사내문화 #팀원소개

기업문화 엿볼 때, 더팀스

로그인

/