스토리 홈

인터뷰

피드

뉴스

조회수 979

[직무] 미미박스에 올라오는 제품은 누가 선택하는 걸까? 화장품 MD 직무 소개

안녕하세요. 미미박스의 소식을 여러분께 전달드리는 Ava입니다.미미박스(www.memebox.com)에 들어가면 수많은 제품들이 있습니다.근데 궁금하신 적 없으셨나요? 이 수많은 제품들이 누구 손을 거쳐서 미미박스에 들어오게 되었는지!바로 MD(Merchandiser) 분들이 미미박스에 들어오는 수많은뷰티 아이템들을 직접 고르는데요. 오늘은 미미박스의 MD 직무를 소개 드릴게요!그럼 다 같이 팔로 팔로 미 ~ Q. MD는 어떤 일을 하나요?A. MD는 미미박스 플랫폼에 올라오는 브랜드, 업체, 상품에 대해 처음부터 끝까지 총괄 책임을 맡고 있어요. 그만큼 유관 부서도 많죠. 예를 들면 어떤 상품이 미미박스의 타겟과 맞으면 업체 영업이 시작돼요. 영업이 성사되면 법무팀과 함께 계약을 진행합니다. 고객들이 직접 보고, 테스트할 수 없고 제품의 상세페이지로만 어필해야 하기 때문에 이 상세 페이지는 정말 중요해요. 에디터 팀, 디자인 팀과 함께 셀링 포인트를 정하고, 워딩과 디자인을 기획하죠. 이 과정에서 좋은 것 중 하나는 미미박스의 명확한 UI/UX 가이드에요. 덕분에 '왠지 모를 촌스러움'은 거의 없어요.판매가 시작되면 마케팅 팀과 함께 판매를 촉진해요.배송과 관련해서는 물류팀과 소통하고, 고객이 상품을 받고 난 후의 CS 팀으로 들어오는 고객의 소리 관리까지... MD는 상품을 처음부터 끝까지 관리합니다.또 MD는 시장조사를 통해 트렌디한 제품을 빠르게 파악해야 해요. 미미박스는 다른 플랫폼과 다르게 방향을 알 수 없이 인기 제품이 통통 튀기 때문에 고객과 시장에 대한 빠른 이해가 중요해요.Q. 미미박스의 MD 팀은 어떤 전략을 가지고 있나요?A. 미미박스는 명확한 고객타겟을 가지고 있어요. 뷰티에 대한 관여도가 높고, 가격에 대한 민감도가 낮고, 내 수입(용돈, 월급)의 일정 부분 이상을 주기적으로 뷰티에 투자하는 사람들이에요. 그렇기 때문에 다른 플랫폼과 달리 신상품을 빠르게 소싱(sourcing) 하는 전략을 가지고 있어요. 신상품이라 하면 일반적인 화장품 브랜드의 신상품뿐만 아니라 SNS/뷰티 커뮤니티에서 핫하게 화두 되는 상품들, 텍스처나 패키지가 신박한 상품이에요다른 플랫폼과의 차이점을 설명해드리면 이해가 더 쉬울 것 같아요. 타 플랫폼의 경우 대중적인 브랜드에서 출시한 제품이 매출 상위 TOP10을 차지하고 있어요. 미미박스의 경우에는 새로운 브랜드나 신박한 제품들이 매출 상위를 차지하고 있죠. 또한 리뷰 역시 타 플랫폼은 배송이나 상품문의가 많다면 미미박스의 고객들은 제품에 대한 퀄리티 있는 리뷰를 많이 써요.Q. MD의 구체적인 하루 일과가 궁금해요.A. 오전에는 공통적으로 MD는 매출과 재고관리로 하루를 시작해요. 전일 보고가 있는데, 이 보고를 통해 전일에 대한 매출 달성률을 보고, TOP5 매출 상품을 체크하고, 재고관리를 하죠. 오후에는 각 업체와 영업활동을 진행합니다. 입점한 업체와 함께 상품기획, 구성 기획, 론칭 일정, 프로모션, 특가 영업 등을 논의하죠. 이를 통해 미미박스 플랫폼 내 한정 특가, 배너, 페이스북 콘텐츠, '이건 꼭 사야 돼' 등의 각 구좌를 매일 기획합니다. 그 외 입점이 안된 상품에 대해서는 직접 입점 영업을 합니다.Q. 말씀하신 전략을 바탕으로 진행한 제품이나 사례를 설명해주실 수 있나요?A. 리즐리라는 브랜드는 저희 MD가 업체랑 직접 기획했어요. 미미박스 플랫폼에서 고객에게 좋은 반응을 보이는 섀도 컬러에 대한 데이터와 MD의 촉을 바탕으로 데일리 컬러를 선택했죠. 또 해외 브랜드 중 6구짜리 투명 케이스 섀도 팔레트가 있는데 많은 고객들이 직구를 하는 것을 보고 국내에서 처음으로 투명 패키지를 만들었어요. 미미박스 고객 특성이 유명하진 않더라도 여러 브랜드를 도전해보는 분이 많기 때문에 충분히 어필할 수 있을 거라고 생각했죠. 이 과정에서 가능성을 본 제조업체들이 직접 투자를 하기도 했고요. 결과적으로 제품이 출시 후 계속 매출 상위를 달렸죠. 덕분에 시즌 3까지 제품이 나오고 틴트도 출시하게 되었어요. 무엇보다 고객들이 원하는 제품을 딱 기획해낸 것이 가장 뿌듯했어요.또 다른 사례로는 눈썹 도장이 있어요. 저희가 이 제품을 처음 소싱한 건 아니에요. 이미 다른 큰 플랫폼에 입점해있었죠. 하지만 크게 주목받지 못했어요. 그다음에 미미박스에 입점했는데 저희가 제품의 특성을 살려 콘텐츠를 만들었죠. 그러자 제품이 온라인에서 팍 튀었어요.Q. MD가 되기 위해서 갖춰야 할 자질은 무엇인가요?A. 가장 중요한 것은 코덕마인드에요. 면접 시 트랜디한 제품에 대해 물어보면 보통 대중적인 제품을 많이 이야기해요. 하지만 MD는 트렌드를 더 앞서야 하죠. 뷰티 유튜브도 많이 보고, 작지만 마니아 층이 있는 브랜드도 알고 있고... 이런 뷰티에 대한 배경지식이 필요해요. 또 회사 분위기가 도전을 장려하다 보니 눈치 보지 않고 적극적으로 목소리를 내고 표현할 수 있어야 해요. 매출 관리, 딜 관리, 디자인 하나하나가 고객과의 접점이기 때문에 꼼꼼하게 관리하는 능력이 필요하고요.많은 사람들과 협업하는 직무이기 때문에 다른 팀, 업체, 타 몰 MD와 좋은 관계를 유지할 수 있는 능력도 필요합니다.Q. 고객이 앞으로 미미박스를 어떻게 바라보길 원하시나요?A. 고객이 '가장 빠르고, 가장 트렌디한 플랫폼이 어디지?'라고 생각했을 때 가장 빠르게 떠오르는 플랫폼이 미미박스가 되었으면 좋겠어요. 2014년 5월까지만 해도 '미미박스'라고 이야기하면 사람들이 잘 몰랐어요. 월 매출도 엄청 적었어요. 하지만 지금은 메이저 브랜드들이 거의 다 입점했고, 럭셔리 브랜드의 입점이 막 시작되었죠.앞으로는 뷰티에 관한 가장 많은 제품을 만날 수 있고, 굳이 블로그를 안 찾아도 미미박스 리뷰를 통해 뷰티 정보를 얻을 수 있고, 바로 쉽게 구매까지 할 수 있는 뷰티 플랫폼이 되게 만들고 싶어요. 고객이 미미박스를 뷰티에 관한 것이면 원스톱으로 모든 게 되는 플랫폼으로 인지했으면 좋겠어요.  Q. 미래의 뷰티 MD들에게 한마디 남겨주세요.A. 남들과 똑같은 취업 준비 보다 나만의 구체화된 뷰티 스토리를 만든다면 그게 큰 강점이 될 것 같아요. 예를 들면 자기만의 피부 고민 해결 방법을 다양하게 도전해보는 방법도 있을 것이고, 해외 직구 템을 많이 구매해서 뷰티에 대한 시야를 넓힐 수도 있을 것 같고요. 뷰티의 세계는 들어갈수록 끝이 없는 것 같아요. 뷰티에 대한 시야를 넓히고 자신만의 뷰티 스토리를 꼭 만들어보세요!MD 직무에 대한 궁금증이 조금 풀리셨나요?미미박스에서 궁금한 직무가 있다면, 댓글로 많이 물어봐 주세요! (힘닿는 데까지 여러분을 위해 조사해드리겠습니다!)
조회수 76113

잘 쓴 자기소개서의 다섯 가지 특징

채용 서비스를 하고 있는 스타트업의 마케터이다 보니 하루에도 수십 개의 합격 자기소개서를 보게 됩니다. 물론 이 자기소개서들이 100% 합격 자소서가 맞는지, 그리고 그 이후에 어떻게 되었는지에 대해 알 순 없습니다만, 어찌 됐든 '합격 자소서'라고 올라온 글들을 수 없이 많이 보고 있습니다.그렇게 수많은 합격 자소서를 보면서 느꼈던 '잘 쓴 자기소개서의 특징'을 다섯 가지 정리해보도록 하겠습니다. 앞서 이야기해둘 것은 저는 어느 대기업의 인사 담당자도 아니고, 인사팀의 입장에서 자기소개서를 본 것도 아니라는 점입니다. 제 3자의 입장에서, 그리고 글 쓰는 것과 읽는 것을 좋아하는 사람의 입장으로서 느꼈던 것들입니다.첫째, 글빨보다는 '컨텐츠' 많은 합격 자기소개서를 보면서 가장 놀랍고 크게 와 닿았던 것은 자기소개서를 쓸 때 생각보다 글을 화려하게 잘 쓸 필요가 없다는 것이었습니다. 초등학교 때로 돌아가, 집에서 미술 숙제를 해야 하는데 엄마가 조금이라도 도와주면 티가 팍 나는 것처럼, 너-무 잘 쓴 자기소개서는 오히려 더 튀는 느낌이 들었습니다. (이 '너-무 잘 쓴 자기소개서'라는 것은 평균 이상의 글쓰기 실력이라기보다는, 실무나 회사 생활을 좀 해본 사람들의 향기가 좀 나는 자기소개서를 말합니다.) 오히려 덤덤하게 자신이 가진 컨텐츠를 풀어내는 것이 조금 서툴어 보이더라도 읽는 사람을 편안하게 만들어 주었습니다. 억지로 미사여구를 붙인다거나 한자성어나 전문용어를 가져다 쓰는 것보다는 지원 회사/직무에 맞는 관련된 경험을 잘 인용하여 쓰는 것이 합격에는 중요한 요소로 보입니다. 전공 수업에서의 팀플을 쓰건, 아르바이트했던 경험을 쓰건 대단한 실무 경험을 쓰지 않아도 괜찮았습니다. 입사에 대한 열의를 보여줄 수 있는 컨텐츠인지, 그 직무를 지원하고 싶어서 그동안 해왔던 노력들인지가 중요합니다. 하지만 생각보다 많은 지원자들이 자신이 가진 컨텐츠, 본질, 핵심보다는 보여지는 겉모습, 표현에 신경 쓰는 것 같습니다. 자기소개서라는 것은 나를 어필하고 함께 일하고 싶은 인재임을 표현하는 수단인 건데, 그렇다면 진짜 중요한 것이 무엇인지 생각해 볼 필요가 있겠습니다. 둘째, 컨텐츠에는 '진정성' 앞의 이야기와 이어질 수 있겠지만, 특정 기업과 직무에 지원하는 '자기소개서'를 씀에 있어서 가장 중요한 것은 '경험'입니다. 여러 자기소개서 문항들이 구체적인 사례를 디테일하게 물어보는 이유는 '진정성'에 있습니다. "얼마나 우리 회사에 오고 싶었니? 얼마나 지원 직무를 준비해왔니?" 가, 그 경험에 담기기 마련입니다. 즉, 꾸준하고 일관되게 그 회사, 직무를 지원하기 위해 준비해왔던 경험들에는 '진정성'이 느껴집니다.인상 깊은 합격 자기소개서 사례를 들어 이야기하자면 이렇습니다. 교육 관련 전공을 한 사람이 인사팀에 지원을 한 케이스였습니다. 그 사람이 우연히 조직/인사와 관련된 경영학과 수업을 듣게 되었는데 그때 학생을 가르치는 것만큼이나 성인들의 잠재력을 키워주는 일도 재밌다는 것을 느꼈고, 그래서 MBTI 강사 과정을 수료, 이후에 MBTI를 활용한 기업 인사 프로그램에도 참여하게 되었다고 합니다. 그때 모 기업의 인사 담당자를 만나게 되었고, 그와 이야기를 나누면서 모 기업의 철학, 인사팀이 하는 어떠어떠한 일이 자신이 꿈꿔왔던 커리어와 잘 맞는다고 생각이 들어 지원하게 되었다, 는 골자였습니다. 어떻게 보면 "경영학 전공자도 아니고 교육 전공한 사람이 왜 인사팀을 지원했어요?"라고 생각이 들 수 있는 조건이지만, 어떤 계기로 '인사 직무'에 관심을 가지게 되었는지, 인사 직무를 하기 위해서 어떤 노력을 해왔는지가 잘 담겨있는 내용이었습니다. 자신의 경험들을 잘 이어서 직무와 연결시켜보면 이렇게 진정성이 느껴지는 자기소개서를 작성할 수도 있는 것입니다.  셋째, 진정성에는 '철학' 그런데 이 '진정성'에서 또 중요한 것이 단순히 '경험 나열'만 해서는 안 된다는 것입니다. 그 회사/직무에 지원하기 위해서 어떤 준비를 해왔는지 경험들을 이야기했지만, 그 과정에서 어떤 교훈을 얻었는지 '느끼는 바'가 없으면 껍데기만 있을 뿐입니다. 위의 인사팀 지원자 사례로 계속 이야기하자면, 학생들 가르치는 것뿐만 아니라 성인, 조직을 교육하는 것의 '어떤 점'이 재미있었는지,에 대해서 이야기했기 때문에 신뢰감 있게 들렸습니다. 예컨대 "어느 정도 인격과 자아가 형성되어 정말 다양한 성향을 가진 성인들이 모여있는 회사라는 조직에서 MBTI로 구성원들의 성향을 파악하고 소통을 도와주는 것이 재미가 있었고, 이 과정에서 서로를 이해하고 더 높은 목표를 이루기 위해서 나아가는 모습을 볼 때 보람찼다"와 같은 포인트입니다. 요약하자면 회사/직무에 지원하기 위해서 어떤 경험들을 쌓아왔는지 그 경험들을 하면서 무엇을 느꼈고, 어떤 점에서 그 회사/직무에 지원을 해야겠다는 확신을 가지게 되었는지 철학이 담기면 80% 이상은 쓴 것이라 볼 수 있습니다. 그리고 이러한 철학은 다른 지원자들과 나의 자기소개서를 차별화시켜주는 포인트가 되기도 합니다. 지원자 입장에서 이렇게까지 생각하는 것이 조금 귀찮을 수도 있지만, 그래도 자기소개서 작성 전에 꼭 생각해보면 좋습니다.  넷째, 하고 싶은 말을 하기보다는 묻는 말에 '충실히' 대답하기많은 합격 자기소개서를 읽다 보니 공통점이 있었습니다. 바로 질문의 의도에 맞게 핵심 위주로 대답했다는 것입니다. 특히 요새는 지원자들에게 혼란을 덜 주기 위하여 자기소개서 문항도 예전보다 더 자세해지고 있습니다. 자기소개서를 쓰려고 하는데 문항이 길다면 어려워하지 말고 오히려 감사하게 생각해도 좋습니다. 제시된 질문을 '잘' 파악하여 대답만 잘 해도 상당 분량이 채워질 수 있기 때문입니다. 예를 들면 자기소개서 문항이 자세하기로 정평이 난 SK 그룹의 경우, 이러한 문항이 있습니다. 자신에게 요구된 것보다 더 높은 목표를 스스로 세워 시도했던 경험 중 가장 기억에 남는 것은 무엇입니까? 목표 달성 과정에서 아쉬웠던 점이나 그때 느꼈던 자신의 한계는 무엇이고, 이를 극복하기 위해 했던 행동과 생각, 결과에 대해 최대한 구체적으로 작성해 주십시오.'도전이나 한계 극복 경험'을 물어보는 문항은 다른 회사에서도 많이 제시됩니다. 하지만 이렇게 자세하게 물어봤을 경우에는 질문을 쪼개서 질문 안의 내용들에 충실하게 답변하도록 내용을 구성하면 됩니다. 위 문항의 경우, (1) 도전 경험이 무엇인지 (2) 그 과정이 어땠는지 (3) 특별히 아쉬웠던 점은 무엇인지 (3) 그때 느낀 나의 한계와 (4) 극복하기 위해서 어떤 행동을 했는지 (5) 왜 그런 생각을 했는지 (6) 그에 따른 결과는 어땠는지를 쓰면 됩니다. 합격 자기소개서들은 이렇게 물어보는 질문들에 대한 대답을 충실히 하는 경향이 있습니다. 여기에 자신이 추가하고 싶거나 강조하고 싶은 부분을 더했으면 더했지 이것들을 대충 언급하지 않았습니다. 일단 긴 문항이 나온다면 그것을 쪼갠 뒤, 핵심 내용만 채워도 글자 수를 채우기가 훨씬 쉬워질 것입니다. 마지막, 화룡점정은 역시 '글빨' 그렇다면 정말 '글빨'이 안 중요한가? 사실 그렇지 않습니다. 하지만 글빨도 앞서 말했던 것처럼 내용이 좋다면 어느 정도 커버가 되는 요소입니다. 즉, 최소한의 '글빨'만 갖춘다면 합/불을 뒤집을 만큼의 중대한 사항은 아니라는 것입니다. 그럼에도 불구하고 마지막으로 '글빨'에 대해서 이야기하는 이유는, 자기소개서처럼 목적이 있는 글을 쓰는 것이라면 최소한의 글쓰기 능력이 필요하기 때문입니다. 맞춤법이나 문장의 주/술어, 번역투, 반복되는 표현, 시제나 어미의 일치 등 몇 가지 기준을 두고 퇴고하면 피할 수 있는 실수들을 안 할 수 있습니다. 이를 위해서 "나를 잘 모르는, 혹은 자기소개서라는 것을 잘 모르는 사람들에게 내 글을 읽어달라고 했을 때 '이게 무슨 말이야?'라는 말이 나오지 않는다!"라는 기준을 세워보는 것은 어떨까요? 저의 글도 과연 명확하고 진정성이 담겼는가, 다시 한 번 읽어보게 되면서... 이 글을 읽는 분들께 조금이라도 도움이 되길 바래봅니다! 2월의 시작 힘차게 하시길 바랍니다! 우리 존재 화이팅! #앵커리어 #자기소개서 #꿀팁 #인사이트 #조언 #경험공유
조회수 964

(연말특집 소환글) 안녕하세요 블랭크 최진영입니다.

블랭크의 소소한 이야기를 구독하시는 분들과 공유하고 싶은 글이렇게 링크로 소환합니다. 바쁜 송년의 시간을 보내고 계실 독자 여러분들이 꼭 하루 정도는 한 해를 뒤돌아보면서 정리하셨으면 좋겠습니다! 내가 얼마나 성장했는지내가 무엇을 했고, 어떤 배움이 있었는지내가 어떤 실패를 했는지 그래서! 내가 어떻게 나아갈지!  블랭크코퍼레이션 최진영 프로/ 마케팅유닛 리더블랭크코퍼레이션 마케팅유닛의 2018년 핵심 히스토리안녕하세요, 블랭크 최진영입니다블랭크에서의 마케팅, 지난 1년을 돌아보며 | "안녕하세요, 블랭크 최진영입니다" 올해 이메일에서 가장 많이 사용한 말이다. 대학졸업 직후 입사해 7년을 다닌 첫 직장을 과감히 박차고 나와 블랭크에 온 지 1년하고도 3개월이 지났다. 이젠 정말 비로소 내 회사답다. 고운 정 미운 정 다 들어 어떻게든 끝을 보지 않으면 안 될 지경에 이른 것 같다. 내 지난 1년은 자신있게 말하건데 너무 치열했기brunch.co.kr/@posselavaboy/10 1월 디스플레이 배너광고 테스트 2월~3월 웹로그 수집 시작4월 네이버 타임보드의 재발견6월 트위터 광고 집행시작7월~9월 본격적인 팀 빌딩과 슬럼프 10월 블랭크 대시보드 프로토타입 완성11월~12월 시퀀스 있는 마케팅, 브랜딩의 시작 Jason KH커뮤니케이션    기획자
조회수 772

160310_페이스북 포스팅 복기

목적페이스북을 "오래된 여자친구처럼 대한다"라는 충격적인 피드백을 받았다(페이스북 사랑해). 다시 예전처럼 스위처 페이스북 페이지를 관계를 좋게 하기 위해(페이지 활성화하기 위해) "내가 무엇을 잘못하는지", "앞으로는 어떻게 해야 하는지" 등을 파악하려고 한다. 나아가 이를 원칙을 만들어 앞으로 함께 할 마케터가 배움에 있어 조금이나마 도움이 되면 좋겠다.상황 설명3월 28일 스위처 발매 한다는 내용을 포스팅한 상황나는 3월 28일 정식 판매를 앞두고 매주 2회씩 포스팅을 약속했고, 약속을 지키기 위해 1주 첫 번째 포스팅할 콘텐츠를 기획/제작하려고 했다.  결과포스팅 된 컨텐츠(포스팅 URL : https://www.facebook.com/switcher.io/posts/923636374421388)그 결과물로 위 사진의 콘텐츠를 포스팅하였다. 다음 포스팅 때는 더 효율적이고 효과적인 콘텐츠 생산을 위해 위 콘텐츠 작성 과정을 돌이켜보려 한다.단계 1. 독자 파악독자 파악 단계에서 다음과 같은 질문을 받았다.1. 현재 스위처 페이지 문맥상 어떤 포스팅부터 올려야 하는가?2. Audience는 누구인가?3. Audience의 TPO는 어떠한가?4. 콘텐츠의 목표(결괏값)는 무엇인가?5. 콘텐츠의 목표를 이루기 위해 설계는 타당한가?이에 나는 다음과 같은 답을 냈다.1. 스위처 외관2. 지난번 연락을 보냈던 구매 희망자 + 페이스북 포스팅을 보고 댓글을 남겨준 사람들.3. T : 포스팅 후 개별 연락받고 핸드폰을 확인한 순간.(20:00 이후)P : 메시지(문자/카톡) 받아 보고 링크를 눌러 열린 사이트O : 자신의 할 일을 마치고 숨을 고르는 상황.4. 포스팅 좋아요/댓글/도달 범위5. 네 과거 비슷한 내용의 콘텐츠를 작성했던 방식과 유사하게 설계하였습니다.여기서 문제는 구체적으로 Audience와 그들의 TPO를 말하지 못했다는 점이다. 현재 페이스북 페이지를 '좋아요' 누른 사람은 4000명 정도가 된다. 무의식 중에 이들"도" 위 콘텐츠의 독자(Audience)라고 생각했던 것 같다. 그래서 TPO가 저렇게 엉망진창 (그냥 일반 직장인 정도?)로 나온 것 같다.작살같이 날카로운 타깃팅이 안되니깐 정확히 뭘 말해줘야 할지도 모르니깐 기획단계에서 더 우왕좌왕했던 것 같다. 이 문제를 해결하기 위해 난 2가지 행동을 하였다.a. 페이스북 지난 포스팅 '좋아요' 눌러준 사람 파악지난 포스팅은 누가누가 좋아하셨나독자는 이미 정해져 있습니다. 제가 할 일은 이분들이 누구인지 확인하고 어떤 내용을 궁금해하실지 생각하고 글을 쓰는 것이겠지?한분 한분 살펴보니 대부분 스위처를 기존부터 알고 계셨던 분이셨다. 그렇다면 기존 스위처와 비교했을 때 개선된 부분을 보여주면 좋지 않을까? 생각했다. (우린 고객의 목소리를 중요시하니깐.)b. 고객 문의 파악하기고객 문의그래서 그동안 고객이 겪었던 문제를 다시 읽어보았다. 많은 문제 중 빈도수가 가장 높은 5가지를 선정하여 고객 의견이 반영된 모습을 보여주면 좋을 것 같았다.1. 1구 스위처 -> 2구 스위처2. 전원 on/off 버튼 추가  3. 새로운 부착방식4. 스위처 두께가 얇아짐5. 충전 단자 개선위 5가지 주제를 어떤 식으로 표현하면 좋을까? 생각을 하여 미디엄이 아닌 '카드 뉴스' 형식을 사용하는 것이 좋다고 생각하여 다음과 같은 초안을 준비해보았다.단계 2. 콘텐츠 기획하기손으로 그린 컨텐츠 초안5가지 주제를 포함한 콘텐츠를 만들기 위해 어떤 내용을 만들어야 할 요소를 그려보았다."어떤 내용을 담을 것인가?"에 대한 질문에는 타당한 기획이었지만 "어떻게 표현할 것인가?"에 대한 질문에는 타당하지 못했다.카드 뉴스는 이미지 내에 텍스트를 넣기 때문에 사진의 구도가 중요할 수 있다. 가령 1번 이미지에선 스위처가 가운데에 위치했고 2번 이미지에는 오른쪽, 3번 이미지에선 왼쪽에 위치하여 모든 이미지마다 텍스트 위치가 다 달라져 불필요한 편집이 필요하다. 이로 불필요한 작업시간이 추가되었기 때문이다.다음 포스팅 기획에는 어떤 방식으로 포스팅을 해야 하는가? 질문했을 때, 방식만 생각하는 것이 아니라 선정된 방식을 또 어떻게 표현할 것인가(말이 모호하군) 역시 생각해 보아야 한다고 생각했다.단계 3. 촬영촬영에서의 문제는 혼자 세팅&모델&촬영을 한다는 것이 어려웠다. 그리고 더 나은 사진을 원하다 보니 시간적인 배분에 문제가 있었던 것 같다.앞으로는 촬영 전 도움이 필요한 장면은 팀원에게 미리 양해를 구하고 도움을 요청하고한 컸다(이미지의 경우) 5분의 촬영 시간을 넘기지 않도록 해야겠다. (영상은 촬영하지 않아 모르겠군.)단계 4. 콘텐츠 제작http://tyle.io 라는 좋은 카드 뉴스 제작 사이트가 있다. 근데 글씨 크기 변경이나 이미지가 보이는 방식에는 아직 불편함이 있어, PPT로 제작하는 것이 더 나은 것 같다. '타일'에서 좋은 Form을 확인한 후 PPT에 해당 Form을 미리 제작해두고 이미지에 덮어 씌우는 방식으로 만들면 더 좋을 것 같다.단계 5. 포스팅 하기저걸 왜 못봤지.."publish 버튼"을 누르기 전에 3분간 바람을 쐬고 와서 다시 봐야 할 것 같다.2.8cm.. 왜 못 봤을까.. 왜..틀린 그림 찾기 하듯 Fresh 한 머리로 콘텐츠를 봐야 할 것 같다..단계 6. 결과 분석지난 주 2건의 포스팅 결과값 비교지난주 포스팅한 2개의 포스팅 결괏값을 비교해보았다.LPR은 그냥 만든 용어에요.. 헤헿..제품 디자인 콘텐츠를 올릴 때 '좋아요'를 100개 넘게 받는 것이 목표였는데, 91개밖에 받지 못했다."어떤 콘텐츠가 공유될까?", "콘텐츠의 어떤 요소가 공유를 자극할까?"라는 남규의 질문에 아직 답을 하진 못하겠다. 하지만 '공유'전에 '댓글'을 많이 달 수 있는 콘텐츠가 더 높은 도달률과 많은 좋아요를 달성한다는 것은 알고 있다. (이건 나중에 얘기하는 걸로.)그래서 다음 포스팅에는 '댓글'이 많이 달릴 수 있는 요소를 고민하고 추가해야겠다.-끝-#스위쳐 #Switcher #SNS마케팅 #SNS마케터 #마케터 #마케팅 #페이스북 #페이스북마케팅 #경험공유 #조언 #꿀팁 #고생담
조회수 1156

[피플] 더부스 화제의 동영상 제작자, 아프리카 BJ 출신의 엘리트 인턴 인터뷰~

[ 더부스팀 인터뷰 특별기획 3탄 ]국제 수학 올림피아드에서금메달을 거머쥔,유난히 수학을 잘하던한 고등학생은 커서더부스에서맥주를 팔게 된다.완벽한 엘리트 코스를 따라살아오던 어느날문득,  '완벽해지려 발버둥' 치는게지겨워졌다.그래서 이제 "대충 즐겁게"내가 하고 싶은 것 들을하나씩 해보기로 결심했다.'인턴'으로 더부스에 합류한 이후단 몇시간 만에 뚝딱 뚝딱 만든더부스 광고 영상은 페이스북에서약 6만뷰의 조회수를 기록했고그는 전설이 되었다."대충 막 즐겁게 사세요"WH과학고 조기 졸업S대학교 수학과 졸업웃긴대학 드립학과 수석 졸업前 아프리카 TV BJ 활동前 금융업계 종사現 더부스 인턴Q1. 자기소개를 해주세요! 으음...! 저는 소위 말하는 엘리트 교육을 받고, 엘리트 코스를 밟고 자랐어요(수줍). 대학교 졸업 직전까지 마냥 그렇게 살아왔죠. 그러다 대학교 졸업 직전에 해외 유학을 준비하면서 지난 시간들을 되돌아 봤어요. 근데 생각하면 할 수록 뭔가 너무 아쉬웠어요. 완벽해지려고 발버둥치는 동안, 못 해본게 너무 많다는 생각에 안타까웠죠. 그래서 유학을 준비를 그만두고, 대학교를 졸업한 이후부터는 대충 막 즐겁게 살고 있습니다.Q2. 대학교 졸업하고 처음엔 뭐하셨어요? 일단 내가 뭘 좋아하나?를 고민하면서 인터넷 방송인 아프** tv를 하루종일 봤어요. 그러다 어느날 문득 나도 인터넷 방송을 해보고 싶다!는 생각이 들었죠. "레알 꿀잼이겠다" 싶었어요. 그래서 혼자 인터넷 방송을 시작 했죠. 하하하. 방안에서 혼자 말하고 있으면 부모님이 저 정신병 걸린줄 알까봐, 밖에 조그만 사무실 같은걸 몰래 구했어요. 그게 2014년이었는데, 2월에 대학교 졸업하고 방송을 3월에 시작했죠. 그리고 방송을 한 3개월 한 시점에 월드컵 시즌이 시작됐어요! 월드컵 경기를 직접 보려고 브라질에 갔죠. 근데 뭐.. 우리나라가 하도 못해서 핵노잼이었지만... 그런데 문제는 브라질을 3주 정도 다녀온 후에 방송을 다시 시작하니 아무도 안 듣더라고요. 그래서 방송을 그만뒀죠 ㅠㅠ. Q3. 인터넷 방송하는 것에 대해 부모님이 뭐라고 안하시던가요?!처음엔 제가 숨겨서 부모님은 모르셨어요. 근데 친형이 제 방송에 한번 들어온 이후로 부모님도 제가 방송을 한다는 걸 알게 되셨어요. (웃음) 처음엔 뭐라고 하셨지만.. 자식 이기는 부모가 어딨습니까? 제가 모르쇠로 일관하니까 나중에는 적응 하셨어요. 26년을 열심히 공부만 했는데,  이제 저도 좀 놀아야죠.#더부스브루잉컴퍼니 #인턴 #인턴생활 #인턴일지 #기업문화 #조직문화 #사내문화
조회수 561

기획자, 당신은 무엇을 하는 사람인가?

가장 애매한 전문가 : 기획자나는 기획자다.아마도 다양한 타이틀을 달고 있는, 나 같은 기획자들을 주변에 많이 볼 수 있을 것이다.특히, 대기업으로 갈 수록 업무가 세분화되어 있다보니, 상품기획, 서비스기획, 개발기획, 디자인기획, 광고기획, 사업기획 등등 왠만한 기능들의 뒤에 '기획'이라는 접미어를 붙여 마치 각 기능들을 앞에서 이끌 것 같거나, 아니면 각 기능들의 뒤치닥거리를 할 것 같은 그때 그때 다른(조직마다, 업종마다, 기능마다)느낌의 Job이다.사실, 가장 가까이에 있는 xx 기획자에게 한 번 물어보아라. "당신의 역할은 무엇인가요?" 한 마디로 쉽게 설명할 수 있다면, 그 사람은 꽤 유능한 기획자일 것이다.기획자의 역할 정의실제로 기획자의 역할은 대단히 폭넓고 다양하다. 당연히 어떤 산업에 종사하느냐, 어떤 부서에 누구와 일하느냐에 따라서 달라진다.어떤 곳에서는 핵심 '전략'을 담당하기도 하고, 어떤 회사에서는 '운영'을 담당하기도 하고, 어디에선 '리더'의 역할을, 다른 곳에선 '시다바리'의 역할을 맡기도 한다.어떻게 보면, 특정 기능(예를 들어 개발자, 디자이너, 영업, 재무 등 전문영역)을 전문적으로 수행하는 업무를 제외한 나머지 업무 모든것을 커버하는 Generalist 를 총칭한다고 볼 수도 있다.나는 디자인 기획자이다.대기업에서 상품을 구상할 때 필요한 신제품의 컨셉을 발굴하고, 디자인의 방향을 설정하고 사용자에게 유용한 기능들이 조화를 이루는지 꼼꼼히 확인하여, 디자인 목업과 프로토타입을 일정 내에 나올 수 있도록 매니징 하는 일을 하고 있다. (음... 뭔가 복잡하고 딱히 뭘 하는지 잘 이해가 안간다면...그게 바로 기획자의 실제 업무 들인 것이다 -_-)좀더 일반화해서 기획자의 업무를 크게 5가지로 구분해보겠다.정보 파악 기능 (searching): 팩트를 파악하고, 현황을 분석하여 올바른 판단을 할 수 있는 근거를 마련하는 업무문제 정의 기능 (defining) : 현황에 근거하여, 현재의 문제를 정확하게 파악하고 정의하는 업무자원 할당 계획 기능 (planning) : 과제를 언제, 얼마의 비용으로, 누구와 어떻게 하겠다는 계획을 수립하는 업무방향 설정 기능 (directing) : 목표를 명확히 정의하고, 집중 해야 할 방향을 선택하고 제안하는 업무운영/매니징 기능 (managing) : 설정된 계획에 차질없도록 관리 및 운영하고 커뮤니케이션 하는 업무기획자의 핵심은 '컨셉' 이다위에 나열된 업무들을 보면, 대게 경험이 쌓이면 조금씩 숙련도가 올라갈 법한 일들처럼 보인다. 자료를 조사하거나, 현황을 분석하거나, 자원을 할당하여 스케쥴과 예산을 산정하고, 무엇을 포기하고 어디에 집중할 것인지에 대해 제안하고, 차질없이 목표를 수행하는 기능들은 마치 직장인들이라면 마땅히 누구나 해야 하는 당연한 일쯤으로 보인다.하지만, 기획의 성공과 실패는 어디에서 나뉘어지는지 생각해보면, 위의 5가지 영역을 무리없이 처리한다고 하더라도 업무를 성공적으로 이끌긴 어렵다.창의력이 발휘되어야 하는 업무이기 때문이다.문제를 정의하고, 자원을 할당하고, 방향을 설정하는 단계가 창의적이거나 혁신적이지 않다면, 아마도 뻔~한 결과물로 일을 마칠 가능성이 높다. (그 일을 수행하는 전문가의 역량을 동일하다고 본다면...말이다)다시 말하면, 문제를 남다른 관점에서 정의하고, 전혀 다른 방식으로 방향을 이끌어 갈 수 있을 때, 새로운 해결책과 'wow' 요소가 나올 수 있다.하지만, 다시 현실로 돌아와보자.나와 한팀으로 같이 일하는 개발자, 마케터, 디자이너에게 우리가 상식적으로 알고 있는 상황을 전혀 새롭게 인식시키고, 전혀 다른 관점으로 문제를 풀어가자고 설득하는 일은 (게다가, 그들이 내 선배 또는 전문성과 경험으로 무장한 사람들이라고 한다면...-_-) 결코 만만치 않을 뿐만 아니라, 자칫 '그건 네 생각이고~', '난 아닌 것 같은데...' 몇 마디면, 보통 기획자들은 찌그러지게 되어 있다.기획자가 조직에서 '맨날 자기 세계에 빠져있는 자', 또는 '회의 소집하고, 회의록 정리하고 문서 작성하는 staff' 정도로 치부되는 경우가 적지 않은 이유이다.이 때 필요한 것이, 전체를 엮어나갈 '컨셉' 이다.현상을 다르게 바라보고, 문제를 새롭게 보고, 전혀 새로운 방식으로 해결책을 이끌어낼 수 있도록 하는 힘은 이것을 해야하는 '본질적인 이유'에 대한 질문과 그 답을 표현하는 '컨셉'에 달려있는 것이다.스티브잡스는 가장 위대한 기획자가만 보면, 주변에 꽤 뛰어난 개발자, 감각적인 디자이너, 열정적인 마케터, 지치지 않는 영업맨 들이 많다. 각 기능별로 뛰어난 훌륭한 전문가들은 마음 먹으면(비용은 좀 들겠지만...) 찾을 수 있다.만일 그런 전문가들로 구성된 드림팀을 만들면, 과연 세상을 깜짝 놀라게 하는 무언가가 자연스럽게 나올 수 있을까?그렇지 않다는 것을 직, 간접적으로 우리는 많이 보아왔을 것이다. 그런 논리라면 미국의 뉴욕 양키스 팀이나 스페인의 레알 마드리드 팀은 항상 우승을 해야하겠지만, 사실 어떤 감독과 어떤 작전을 펼치냐에 따라서 전혀 다른 결과물이 나온다.핵심은 전체를 한 방향으로 엮을 수 있는 리더쉽과 문제의 '본질'을 꿰뚫어 볼 수 있는 '컨셉'을 만들 수 있는 능력이다. 이 '컨셉'이라는 것은 총체적인 경험의 총합이어야 하며, 같은 팀원들에게 공유될 수 있도록 표현될 수 있는 무엇이어야 한다.그것이 기획자의 핵심 역량이어야 한다.Parameter Optimizer오케스트라의 다양한 악기들을 (각자 내로라하는 음악의 명장들이 포함된) 지휘자가 위대한 하모니를 만들 듯이, 각 기능의 전문가들이 때로는 양보하고 절제하고, 때로는 선두에서 힘을 발휘할 수 있도록 최적화 하는 일은 지휘지나 감독, 그리고 기획자들이 갖춰야 할 능력이다.단순히 보고서를 잘 정리하고, 꼼꼼하게 프로젝트의 일정을 챙기고, 문제가 발생하면 상부에 보고하고 프로세스를 잘 지키는 것이 중요한 것이 아니라, 이 프로젝트가 어떤 의미가 있고, 왜 이 문제를 해결해야 하는지에 대한 총체적인 질문에 답할 수 있고, 공감시킬 수 있어야 한다는 것이다.때로는 강력한 카리스마가 필요할 수도 있으며, 때로는 감성적인 부분으로 공감을 이끌어낼 수도 있어야 하며, 치밀한 숫자와 논리, 또는 은유와 비유로 총체적인 경험을 표현하는 '컨셉'을 공유할 수 있어야 한다.그런 측면에서 스티브잡스는 누구도 이루지 못했던 혁신적인 제품을 경영자이면서 동시에 '창의적 기획자'로서 세상에 선보일 수 있었다고 생각한다.쓸만한 기획자, 전략가가 없다요즘 linkedIn에 올라온 구직, 구인 정보들을 보면, 구체적인 직능을 수행하는 Expert들을 찾거나 또는 그런 Job을 찾는 내용들을 많이 볼 수 있다.특정 SW를 다룰 수 있는 소프트웨어 엔지니어를 찾거나, 5년 이상 IT 분야에서 종사한 UX 디자이너 또는 편집쪽 업무 경험이 있는 그래픽디자이너 등등 특정 기능을 수행하는 인력을 찾는 내용들은 많지만, 창의적인 사고와 남들과 다른 관점을 가진 '기획자'를 찾는 구인정보는 사실 흔치 않다.문제는 창의적인 사고를 평가할 수 있는 기준도 모호할 뿐만 아니라, 기획자의 입장에서도 자신의 '똘끼'나 창의력을 보여줄 수 있는 '포트폴리오'가 상당히 제한될 수밖에 없기 때문이다. 실제 직접 일을 하면서 과정을 같이 하지 않는 한, 훌륭한 기획자나 창의적인 사고를 구인/구직 시장에서 제대로 판별하기란 여간 쉬운 일이 아니다.설사 자신이 정말 창의적이고, 본질을 꿰뚫는 촌철살인의 혜안을 가지고 있다고 주장하더라도, 그것을 단시간 내에 입증하기도 사실 매우 어려운 것이 사실이다.물론, 이미 각 분야에서 성공적인 사례를 남긴 훌륭한 혁신가, 리더들이라면 이미 그 생각이 미디어를 통해 공유되고 성공사례를 통해 입증될 수 있다고 볼 수 있지만, 그런 인물은 소수일 수 밖에 없고, 이미 몸 값이 감당할 수준이 아닐 가능성이 높다.아마 회사의 터닝포인트를 가지고 싶거나, 혁신의 jump up을 모색하고자 한다면, 좋은 기획자를 다방면에 물색하여 찾으려는 노력이 반드시 따라야 할 것이며, 그 가치를 인정할 수 있는 내부의 안목 역시 뒷받침 되어야 할 것이다.기획자는 표현할 수 있어야 한다기획자는 오케스트라의 지휘자이어야 한다.바이올린과 첼로의 소리를 구분하고 조율할 수 있어야 하지만, 그렇게 만들어지는 소리가 전체적으로 어떤 '음악'이 되어야 하는지에 대한 Big Picture가 머리에 있어야 한다. 그래야, 그 큰그림을 나침반 삼아서 다양한 악기를 조율할 수 있는 것이다.다만, Big Picture가 자신의 머릿속에만 존재한다면, 같이 일하는 파트너들은 큰 그림을 볼 수 없는 상태에서 작은 지시와 조율된 내용만으로 전체 하모니를 만들어 낼 수 없다. 따라서, Big Picture, 즉 전체 스토리 '컨셉'을 파트너들에게 소개하고 공유하고 공감을 이끌 수 있도록 표현하고 설명할 수 있어야 한다.그것이 설득력 있는 보고서이건, 뛰어난 화술이건, 직관적인 비유이던 자신의 생각을 공유하고 소통할 수 없다면, 훌륭한 기획자를 기대하긴 어려울 뿐만 아니라, 하루라도 빨리 자신이 sales 할 수 있는 특정 기술(기능)을 배우는 것이 도움이 될 것이라고 생각한다.기획자는 그리 만만한 Job이 아니다.
조회수 2079

(개발자)가 !(개발자)와 일하는 방법

 이 포스트는 제가 개발팀에게 했던 세미나를 정리한 것입니다. 개발자와 기획자, 개발자와 디자이너 사이에 의사소통에 대해서 얘기하는 글이 너무나 많습니다. 디자이너(기획자)가 개발자와 일하기 위해 알아야하는 최소한의 개발 용어, 기획자와 개발자가 절대 하지 말아야 할 말들 등등 재밌는 포스트들이 인터넷에 떠돌고 여러 담당자들의 공감과 비판을 사고 있지요. 언제 이야기해도 농담을 주고 받으며 할 수 있는 좋은 주제인 것 같습니다. 그러나 그런 글들은 해당 개발자 또는 기획자가 쓴 글이기 때문에 바이어스가 걸리기 마련이지요. 우스갯소리로 넘기기에는 껄끄럽고 진지하게 받아들이기에도 껄끄럽죠. 왜 이런 말들이 이렇게 많이 나올까요? 왜냐하면 실제로 그들이 대화하는 방식이 너무나 다르고 서로가 하는 일을 이해하기 힘들기 때문입니다. 서로간에 말이 정말 잘 통했다면 그럴 일이 없겠지요. 심지어 화성에서 온 개발자 금성에서 온 기획자라는 말이 한 때 많이 나돌아 다녔지요.UI/UX도 모르면서...결국 게시판 만들라는 거잖아요이런걸 기획서라고 써오다니...아니 그걸 다 된다고 하면 어떡해요이거 하나 바꾸는게 그렇게 어려운가요?언제까지 가능한지만 얘기해주세요여기서는 되는데 우리는 왜 안되나요?개발 공부 할거에요! 공감 하시나요? 저는 개발자이지만 한번 기획자의 입장에서 왜 그렇게 할 수 밖에 없었는지 핑계를 대보겠습니다. 도대체 기획자는 저딴 방구인지 말인지 모를 말들을 할까요? 와이컴비네이터의 폴 그래햄의 유명한 에세에인 Do things that don’t scale의 한국어 요약본입니다. 영어가 싫고 1분1초가 아까운 여러분을 위해서 준비했습니다 :) 읽어보시면 스타트업에서 처음부터 규모가 큰 작업을 하거나 그것을 자동화하는 일이 얼마나 위험한 일인지 간접적으로 느끼실 수 있을것 같아요. 그 중에 일부만 발췌하여 말씀드리면1. 모집 : 사람들은 많은 선택권을 가지고 있기 때문에 우리 제품을 써야할 필요가 없음그들을 선택하려면 빠른 프로토타입이 필요하고 요구사항에 맞춰 변화할 필요가 있음2. 황홀감 : 모든 유저들에게 황홀한 수준의 경험을 제공해야하는데 엔지니어 교육과정중에 유저 만족에 기울어야한다는 내용이 없어서 생각하기 힘듬3. Meraki : 하드웨어 벤처의 경우 수동으로 기계를 생산/조립하면서 기존에는 알지못했던 핵심 요인들을 발견할 수 있음4. 수동 : 초기에는 소프트웨어가 할일을 사람이 직접하는게 좋을 수도 있음.수동으로 해결하다가 해결책을 자동화하는 것은 확실한 고객을 확보할 수 있지만, 처음부터 자동화된 해결책으로 아무런 문제도 해결하지 못한다면 확실한 실패로 이어짐5. 대형 : 처음부터 큰 스케일로 일을 벌인다고해서 성공으로 이어지는 건 아님. 수동을 싫어하기 때문에 크게 일을 벌리는 것은 큰 실패로 이어짐.큰 버그가 아니고 시장 진입 타이밍이 중요하다면 바로 출시할 수도 있다 이 중에서도 저는 4번의 수동이라는 덕목을 가장 중요하게 생각합니다. 개발자라는 족속들이 수동을 굉장히 싫어하는 경우가 많습니다. 수동은 쿨하지 않거든요. 그래서 모든 것을 자동화시키려고 하죠. 자동은 쿨하니까요. 어떤 포털사이트의 랜딩 페이지를 개발해야하는 프로젝트가 생겼다고 예를 들어봅시다. 개발자는 생각합니다.매일매일 갱신되는 랜딩페이지를 만들자. 좋아요와 댓글이 많은 글들을 최신순으로 정렬하여 보여주는데 매일 자정에 랜딩 페이지가 새로운 내용으로 갱신되는게 좋겠다. 이미 한번 게시되었던 글은 다시는 게시되지 않도록 구성해야겠군. 좋아요와 댓글의 가중치는 1:2 정도가 좋겠지? 이렇게 랜딩 페이지를 하나 구성하는데 엄청난 노력과 시간을 투자합니다. 기획자 또는 마케터는 왜 이렇게 일이 오래걸리는지 답답해하죠. 빨리 출시해서 고객들의 반응을 보고 싶은데 개발이 늦어지니까요. 사실 고객들은 포털 사이트의 메인 컨텐츠가 자동으로 구성되던 수동으로 구성되던 관심이 없어요. 그건 기획자 또한 마찬가지지요. 그들에게 어떤 컨텐츠를 보여줘야 좋아할까 고민하지요. 심지어 그전에 랜딩 페이지라는 기능이 유효한지 증명되지도 않았지요. 실제로 이전에 제가 만들었던 시크릿차트라는 서비스에서 병원의 랭킹을 계산하여 유저들에게 보여주는 기능을 만들 때도 비슷한 일이 있었습니다. 병원 랭킹 기능이란 각 병원이 언급된 블로그와 카페 글을 스크레이핑하여 몇 개인지 세고 데이터베이스를 쌓고 블로그와 카페 글이 많은 순서대로 정렬하여 보여주는 기능입니다. 처음에 저도 욕심이 생기는 겁니다. 검색 포털의 API를 이용하여 스크레이핑 봇을 만들고 데이터베이스를 구축해주는 프로그램을 만들고 싶었습니다. 그 프로그램을 만드는데는 테스팅까지 약 1주일이라는 시간이 꼬박 들겠지요. 그래도 굉장히 쿨하고 재밌어 보였습니다. 그러나 그 욕망을 꾹 참고 수동으로 세서 데이터베이스를 구축하기로 결심합니다. 검색 포털에서 검색하여 나온 숫자를 눈으로 직접 보고 데이터베이스에 직접 접근하여 수동으로 입력하는 방식입니다. 저는 기획자와 다른 개발자에게도 입력하는 것을 도와달라고 협조를 요청했습니다. 그렇게 2일만에 우리는 데이터베이스를 구축했고 빠르게 배포하여 고객의 반응을 살폈습니다. 고객의 반응을 살펴보던 기획자들은 그 기능이 정말 잘 작동하고 고객들이 좋아한다는 것을 증명해냈고 저는 그제서야 API를 이용하여 모든 것을 자동화했지요. 우리는 자동화의 욕심을 버려야합니다. 물론 시간과 비용, 효율을 따져서 해야겠지요. 효율을 따지는 것은 여러분이 더욱 능숙하실거라고 생각합니다. 우선은 간단한 예로 비개발자들이 왜 요상한 말과 행동을 하는지 알아보았습니다. 그러면 개발자인 우리는 그들에게 어떻게 이야기해야할까요? 어떻게 해야 싸우지 않고 일할 수 있을까요? 애자일 개발방법론 중에 하나인 익스트림 프로그래밍에서도 이야기하듯이 지식 섬 현상(Islands of Knowledge)은 굉장히 위험한 요소입니다. 서로가 이해하는 것이 다르기때문에 계속적인 커뮤니케이션을 통해 지식 섬을 없애야합니다. 저는 그 지식섬을 없애기 위한 실질적인 방법을 소개하려고 해요.조카에게 설명하듯이1. 훈민정음 아시겠지만 개발 용어는 절대 금지입니다. 정말로 필요한 경우가 아니면 절대 개발 용어를 쓰지마세요.2. ABC 제목만 보면 훈민정음 룰과 반대되는 내용인 것 같죠? 예를 들어서 설명할게요. 태그 기능을 만든다고 합시다. 그런데 거기서 기획서에 나오지 않은 허점을 우리는 발견했습니다. 손가락을 이리저리써가며 태그가 여러개가 되었을 때 꼬이는 현상을 설명하려 하지마세요. 태그A, 태그B, 태그C 이렇게 설명하세요, 또는 "가나다"도 좋겠군요.3. 연필 & 종이 미팅을 할때 무조건 연필과 종이를 챙겨가세요. 그리고 말보다는 그림을 그려가며 설명하세요. 종이를 아끼지 말고 최대한 자세하게요. 또는 미리 정리한 문서를 준비해가세요. 문서를 보면서 설명하면 빼먹지않고 더 잘 설명할 수 있지요.4. 메타포를 사용하라 익스트림 프로그래밍에도 나오듯이 시스템 전체 또는 기능 전체를 하나의 메타포로 정의하여 설명하는 방법입니다. 현재 제가 만들고있는 IoT 관제 솔루션의 뒷면에는 기획자 또는 디자이너가 절대 이해하지 못할 프로토콜이라고 불리는 부분이 있습니다. 우리는 프로토콜을 어떻게 개발자가 아닌 사람에게 설명해야 할까요? 저는 커피머신을 메타포로 사용하여 설명하겠습니다. 우리는 제품으로부터 raw data라는 가공되지 않은 커피빈을 받습니다. 그냥 겉으로만 보면 어떤 유용한 데이터를 가지고 있는지 전혀 모르죠. 커피빈을 볶고 갈아서 사람이 마실만한 에스프레소를 만듭니다. 거기에 우유, 크림, 초콜릿 등을 더해서 다른 사용자가 좋아할 만한 또다른 커피도 만들 수 있겠죠. 데이터베이스를 모르는 사람들이 보는 깔끔한 그래프가 나오는 화면은 아메리카노, 라떼 등으로 비유할 수 있겠군요. 정말 조카에게 설명하듯이 쉽게 친절하게 설명하시면 됩니다. 그럼 다음으로 여기서 한발짝 더 나아가서 심화학습을 해보죠. 우리는 개발자로서 비개발자인 그들에게 어떻게 해주면 더 좋을까요?1. 기획의도를 이해하기 왜 이렇게 기획했는지 이해하면 좋습니다. 유저의 요구사항이 무엇이고 왜 그런 요구를 했는지 Back-log를 알면 개발이 더 쉬울 뿐만 아니라 빠르게 배포할 수 있을지도 모릅니다. 예를 들어 배포 30분전에 버그가 발견되었습니다. 개발자는 "헉, 버그다."이러면서 열심히 고치겠지요. 그러면서 기획자에게 배포를 내일해도 되냐고 물어봅니다. 기획자는 안된다고 하고 또 싸우겠죠. 만약 기획의도를 이해한다면 이 싸움이 필요하지 않을지도 모릅니다. 해당 기능을 작동시키는데 있어서 크리티컬한 것이 아니면 서비스를 우선 배포하고 이 후에 고쳐도 되겠지요. 또는, 마케팅이나 시장은 타이밍이 중요하기 때문에 기능 구현의 우선순위를 기획자가 잡아줄 수도 있습니다.2. 프로토타입을 빠르게 개발자는 코드로 이야기합니다. 그러나 비개발자는 이해 못합니다. 움직이는 프로토타입은 고객뿐만 아니라 동료의 이해도를 드라마틱하게 높일 수 있지요.3. 계속해서 점검받기 점검받는다고 그들의 아래에 있는 것이 아닙니다. 우리는 프로젝트를 완수하기 위해 각자 다른 역할을 수행하고 있는 동등한 존재임을 잊지맙시다. 개발자는 비개발자에게 계속해서 움직이는 프로토타입을 보여주고 피드백 받으면서 지식의 섬을 없애나가야 합니다. 고객들이 원하는대로, 기획자들이 기획한대로, 디자이너 디자인한대로 구현하는 것이 프로젝트에서는 무엇보다도 중요하니까요.4. 데드라인은 꼭 지키기 데드라인을 지키는 것은 개발자와 비개발자간에 신뢰관계를 높이는 방법 중에 개발자가 할 수 있는 가장 효과적인 방법입니다. 또한 고객과도 마찬가지죠. 약속을 지키지 못하는 회사의 제품을 사가는 사람은 없습니다.  우리는 서로에 대해 너무 조금만을 알고 있습니다. 그래서 서로의 입장을 모르고 문제가 생기기 마련이지요. 당연히 서로에 대해 자세히 알 필요는 없지요. 우리팀에서 프로젝트를 망치고 싶어하는 사람은 없습니다. 그러나 상황이, 그리고 오해가 프로젝트를 망치게 하지요. 그리고 누구나 똥을 쌉니다. 서로 부족한 점이 있으니 부족한 점을 욕하기보다는 부족한 부분을 채우기위해 영역을 넓혀가는 건 어떨까요? 저건 내 일이 아니니 알아서 되겠지라는 태도보다는 다 같이 고민하며 빈 공간을 채우는 편이 좋다고 생각합니다. 서로를 비난하면서 프로젝트를 할 것인가, 서로를 이해하는 마음가짐으로 즐겁게 프로젝트를 할 것인가... 선택은 당신의 손에 달렸지요.#비주얼캠프 #인사이트 #경험공유 #조언 #개발자 #개발팀 #협업 #팀워크
조회수 1499

연애의 과학의 미션

연애의 과학의 미션"우리는 사람들이 더 나은 연애를 하도록 돕는다"#1 연애: 왜 연애인가?연애는 정말 중요하니까요! 연인은 우리에게 가장 가까운 존재이자 내 행동과 감정을 결정하고, 나의 성장의 기폭제가 되기도 해요. 그래서 우리는 연애에 많은 시간과 관심을 들이고, 그만큼 연애가 우리 삶에서 물리적으로나 심리적으로나 큰 비중을 차지하게 되죠.무엇보다 '사랑하는 사람과의 관계'는 우리의 행복에 큰 영향을 미쳐요. 심지어 우리의 건강과도 관련이 있죠. 하버드 대학에서 75년에 걸쳐 사람들의 일생을 추적한 결과, 행복은 부나 명예, 혹은 열심히 노력하는 것에 달려있지 않았다고 해요. 우리를 건강하고 행복하게 만드는 것은 다름 아닌 '좋은 관계를 맺고 있는지' 여부였죠. 주변 사람들과 건강한 관계를 맺고 있는 사람들은 행복지수가 높았을 뿐 아니라, 노년기에 훨씬 더 건강했다고 합니다.“Good relationships keep us happier and healthier.” - Robert Waldinger#2 돕는다: 왜 도움이 필요한가?연애는 정말 복잡하고 어렵거든요! 하지만 대부분의 사람들은 그렇게 생각하지 않아요. 아래의 세 가지 사례들은, 연애를 너무 쉽고 단순하게 생각해서 발생하는 대표적인 문제들이에요.문제 사례 1: Naive RomanticismNaive Romanticism이란, 괜찮은 사람을 만나 사랑하기만 하면 관계에 아무 문제가 생기지 않을 거라는 믿음이에요. 그래서 관계에 문제가 생기는 원인은 그 사람이 이상해서, 아니면 그 사람은 괜찮지만 그 사람이 날 사랑하지 않아서, 혹은 둘 다라고 생각하곤 하죠. 혹시 연인하고 싸웠을 때 주변에서 이런 말 들어본 적, 많지 않나요?“그 사람 좀 이상한 사람이네!”“그 사람은 너를 별로 안 사랑하는 것 같은데?”그러나 아무리 괜찮은 사람을 만나도, 아무리 서로 사랑해도 연인 관계에서 문제는 생기기 마련이에요. 연애는 생각보다 훨씬 복잡하고 문제의 원인도 그리 단순하지 않은 경우가 많거든요. 한번도 싸우지 않아야만 좋은 관계인 것이 아니라, 싸웠을 때 그 상황을 현명하게 극복할 수 있는 것이 중요한 거죠!문제 사례 2: Naive RationalismNaive Rationalism이란, 친밀한 관계는 늘 합리적으로 작동한다는 믿음이에요. 예를 들어 누군가를 사랑하는 이유는 반드시 명확해야 한다거나, 연인 관계에서 누군가 손해를 보는 건 잘못됐다는 류의 생각들이죠. 즉 연인과 같은 친밀한 사이를 마치 합리적이고 공평한 거래 관계처럼 생각해서 발생하는 잘못된 믿음인 거예요.“내가 연애를 못하는 이유는 외모 때문이야.”“왜 내가 더 희생해야 돼?”하지만 사람과 사람의 관계는 항상 합리적으로 작동하지 않아요! 특히 친밀한 관계일수록 말이죠. 누군가와 사랑에 빠지고 그 관계를 이어나가는 과정은 매우 비합리적이기 쉬워요. 예컨대 외모가 별로거나 내 이상형과 어긋나는 사람인데도, 아주 사소한 순간을 계기로 호감을 느끼기도 하죠. 또 내가 연인에게 좀 져주거나 손해를 봤다고 해서 상대방도 날 위해 똑같이 희생해줘야 하는 것도 아니고요. 그렇게 계산적이고 합리적으로 작동하는 건 연인이 아니라 거래 관계일 뿐이에요.문제 사례 3: Naive Confidence마지막으로 Naive Confidence란 연애는 '하다보면 그냥 저절로 잘 되는 것'이라는 믿음이에요. 굳이 연애를 위해 뭔가를 배우거나 노력하지 않아도, 운명처럼 나와 정말 잘 맞는 사람이 나타난다면, 내가 진심으로 사랑하기만 하면 저절로 행복한 연애를 하게 될 거라고 믿는 거죠. 그래서 내 연애에 도움을 받을 수 있는 글 같은 건 따로 없다고 생각해요.“그냥 진심으로 대하면 되는 거지.”“언젠가 나랑 진짜 잘 맞는 좋은 사람이 나타날 거야!”“연애를 글로 배운다고?”그렇지만, 정말 중요하고 어려운 문제가 저절로 풀리는 걸 본 적 있나요? 끊임없이 고민하고 좋은 해결책을 찾기 위해 노력해야 될까 말까 하죠. 그 과정에서 당연히 조언이나 도움이 필요하구요. 그래서 우리는 연애의 과학을 통해 많은 사람들이 행복한 연애를 오래오래 할 수 있도록 돕고 싶고, 무엇보다 그게 정말 가치 있는 일이라고 생각해요!#3 우리: 왜 우리인가?정리하자면 연애는 정말 중요하고, 또 복잡하고 어렵기 때문에 도움이 필요해요. 그래서 연애의 과학 컨텐츠팀은 어떻게 하면 사람들의 연애를 더 잘 도와줄 수 있을지 고민 또 고민했어요. 그 결과 우리는 다음 세 가지 요소를 모두 갖춰야 한다는 것을 깨달았어요. 우리는 사람들의 행복한 연애를 돕기 위해, 신뢰와 인사이트, 그리고 실용성을 갖춘 컨텐츠를 만들고 그에 대한 탄탄한 지식과 노하우를 가지고 있죠!💪신뢰 : 글의 내용을 믿을 수 있는 컨텐츠아무리 인사이트가 깊고, 아무리 실용적인 내용이라도 신뢰할 수 없다면 결국 쓸모가 없겠죠. 우리의 미션은 사람들의 연애를 돕는 것인데, 만약 우리의 컨텐츠가 아무런 근거가 없는 내용이라면 과연 도움이 된다고 할 수 있을까요? 그러므로 ‘신뢰’는 연애의 과학 컨텐츠의 기본적인 조건이에요. 우리는 컨텐츠의 신뢰성을 확보하기 위해 심리학 논문을 바탕으로 최대한 객관적이고 논리적인, 그리고 충분한 근거가 있는 내용을 전달하려 노력하고 있어요.💡인사이트 : 연애와 관계에 대한 깊은 깨달음을 주며, 근본적인 관점을 변화시키는 컨텐츠생각이나 관점을 바꾼다는 건 단순히 새로운 정보를 하나 전달하는 걸로는 부족해요. 현상의 근본적인 원리와 매커니즘을 건드려야 하죠. 인사이트가 없는 컨텐츠는 그냥 사실을 전달하는 뉴스일 뿐이에요. 당연하고 뻔한 말이라고 느껴질 수 있고, “나는 아닌데?”라는 반응이 나오기 쉽죠. 그래서 우리는 누구나 말할 수 있는 당연한 이야기를 하고 싶지 않아요. 쉽진 않지만 피상적인 현상이 아닌 근본 원인을 알아내서, 사람들이 연애를 새로운 관점으로 바라볼 수 있게끔 하는 컨텐츠를 만들려고 하죠!👍실용성 : 내가 무엇을 해야할 지 명확히 알려주고, 관계에 실질적인 변화를 일으키는 컨텐츠신뢰와 인사이트가 좋은 글을 위한 기본 요소라면, 실용성은 그 좋은 내용을 내 삶에 실제로 적용할 수 있게 만드는 요소에요. 실용성이 없다면 “내용은 좋은데, 그래서 난 이제 어떻게 해야 하지? 뭘 하면 되지?”라는 생각이 들고 마치 딴 세상 얘기처럼 느껴질 수 있거든요. 그래서 우리는 논문에서 발견한 유용한 인사이트를 전달하는 것을 넘어서, 독자들이 직접 실천할 수 있는 구체적인 조언이나 팁도 함께 제시하고자 해요.그래서 연애의 과학 팀의 미션은"우리는 사람들이 더 나은 연애를 하도록 돕는다"에요.사람들이 연애의 과학을 통해 자신의 매력을 잘 발견하고 이해한다면, 두려움을 떨치고 솔직한 마음을 고백할 수 있게 된다면, 연애 초반의 롤러코스터를 잘 극복한다면, 서로가 어떤 사람인지 충분히 이해하고 결혼하게 된다면, 만족스러운 섹스를 오래오래 즐기게 된다면, 자기 자신을 더 깊게 이해할 수 있다면... 정말 의미있고 가치 있는 일 아닐까요?
조회수 2518

Radix? Redis!

얼마전부터 antirez twitter에서 radix tree 관련 트윗이 올라왔습니다. 얼마 지나지 않아 antirez가 radix tree를 구현한 rax 프로젝트를 공개하고 redis의 cluster hash_slot의 저장구조를 radix tree로 수정 되는것을 보았습니다.그동안 antirez의 코드 읽으면서 배우는 게 많았고, 자료구조에 관심이 많아서 살펴보기 시작했습니다. radix tree를 왜 구현 했는지, 어떻게 구현쟀는지 알아보고 radix tree를 redis에 어떻게 적용하였는지도 알아보겠습니다.antirez는 redis의 hash-slot -> key 구조에서 중복으로 인한 메모리 사용을 줄이기 위해 radix tree 를 만들었다고 합니다. 이 포스트에선 rax를 적용시킨 redis cluster로 이야기를 진행 하겠습니다.“현재는 hash-slot -> key에만 사용되지만 추후에는 다양한 곳에 사용 예정”이라는 트윗redis cluster?redis에는 cluster 기능이 있습니다.6대 이상의 redis 노드를 cluster 구성하면(최소 leader 3대, follower 3대 구성해야 cluster 가능) 16384개의 hash_slot이 노드 갯수에 맞게 분배가 됩니다. 즉 3대의 leader로 cluster 구성하면 각각의 leader는 0 ~ 5460, 5461 ~ 10922, 10923 ~ 16383 hash_slot을 나눠 가집니다.cluster 구성 후 client가 데이터 저장/삭제/조회 명령어를 redis server에 전송할 때 마다 key의 hash값을 구하고 어떤 leader hash_slot에 포함되는지 찾습니다.# example 127.0.0.1:7000> set hello world # hash_slot = crc16("hello") & 0x3FFF 계산된 값이 현재 접속한 leader의 hash_slot 범위에 있다면 그대로 실행 되지만 다른 leader의 hash_slot 이라면 에러를 발생하고 다른 leader로 이동하라고 힌트를 줍니다.cluster 구성 후에 노드를 추가 하거나 제거 할 경우 각 leader의 hash_slot을 재분배 하고, hash_slot에 맞게 key도 재분배 되어야 합니다. 단순하게 생각하면 leader의 hash_slot 재분배한 후 모든 key를 재계산하고 hash_slot에 맞는 leader에 할당 하는 겁니다.[현재까지 저장된 keys].forEach(v => { hash_slot = crc16(v) & 0x3FFF // leader에 할당된 hash_slot에 맞게 분배 }) 하지만 antirez는 redis Sorted set 데이터 타입의 구현체인 skiplist 을 이용하여 문제를 풀었습니다. skiplist는 member와 score를 저장하고, score를 기준으로 정렬합니다. skiplist의 member에는 key를 저장하고 score에는 key의 hash_slot을 저장합니다.(변수명 slots_to_keys)slots_to_keys 정보는 cluster 구성된 모든 노드가 저장합니다. 이후 재분배가 필요해지면 16384개 hash_slot을 leader 갯수에 맞게 재분배 하고 slots_to_keys에 저장된 “key:hash_slot” 정보를 가지고 해당 hash_slot의 key를 조회 및 재분배 합니다. 즉 slots_to_keys에 이용하여 재분배시 발생하는 계산을 없앤것입니다.잘 했구만 뭐가 문제냐?redis에 key가 추가/삭제 될때마다 slots_to_keys에 데이터가 저장되고 지워집니다. redis에 저장되는 key 갯수가 증가 할수록 slots_to_keys의 크기도 커짐을 의미 합니다.(※ 메모리 사용량)또한 leader 갯수에 맞게 16384개 hash_slot을 leader에 재분배하고, 각 hash_slot에 맞는 key를 찾고 할당 합니다. 예를들어 slots_to_keys에서 score 0인(hash_slot 0을 의미) member를 조회해서 0번 hash_slot에 할당, score 1인 member를 조회해서 1번 hash_slot에 할당 하는 방식으로 0 ~ 16383 hash_slot을 진행합니다.앞에서 말한 hash_slot에 속한 key를 조회 하는 GETKEYSINSLOT 명령어가 있는데 여기에 이슈가 있습니다.cluster GETKEYSINSLOT slot count # slot: hash_slot 번호 # count: 특정 hash_slot에서 조회할 key 갯수 # example 127.0.0.1:7000> cluster GETKEYSINSLOT 0 3 # 0번 hash_slot의 key를 3개 조회한다. "47344|273766|70329104160040|key_39015" "47344|273766|70329104160040|key_89793" "47344|273766|70329104160040|key_92937" 사용자가 특정 hash_slot에 몇개의 key가 저장 되었는지 모르기때문에 count에 Integer.MAX 를 대입하는데, redis는 hash_slot에 실제로 저장된 key 갯수와는 상관없이 client가 전달한 count만큼의 메모리를 할당합니다.} else if (!strcasecmp(c->argv[1]->ptr,"getkeysinslot") && c->argc == 4) { /* cluster GETKEYSINSLOT */ long long maxkeys, slot; unsigned int numkeys, j; robj **keys; // ... 명령어의 4번째 인자를 maxkeys에 할당, 즉 사용자가 입력한 count if (getLongLongFromObjectOrReply(c,c->argv[3],&maxkeys,NULL) != C_OK) return; // ... keys = zmalloc(sizeof(robj*)*maxkeys); numkeys = getKeysInSlot(slot, keys, maxkeys); addReplyMultiBulkLen(c,numkeys); for (j = 0; j < numkeys>zmalloc maxkeyscluster GETKEYSINSLOT unnecessarily allocates memory그래서 메모리도 적게 차지하면서(압축 가능) key와 key의 hashslot을 효율적으로 저장 및 조회가 가능한 자료구조가 필요했고 antirez는 radix tree를 선택합니다.※ 뜬금 없는데 2012년, redis 자료형에 Trie를 추가한 P/R이 생각났습니다.radix tree 구현한 rax 알아보기시작하기전 radix tree (Wikipedia) 위키 페이지의 그림을 보고 감을 잡은 후에 아래를 보시면 잘 읽힙니다.자! 이제부터 rax의 주석과 코드를 보면서 어떻게 구현됐는지 알아보겠습니다.Noderax의 노드 구성은 다음과 같습니다.typedef struct raxNode { uint32_t iskey:1; /* Does this node contain a key? */ uint32_t isnull:1; /* Associated value is NULL (don't store it). */ uint32_t iscompr:1; /* Node is compressed. */ uint32_t size:29; /* Number of children, or compressed string len. */ unsigned char data[]; } raxNode; 노드의 정보를 담고있는 32 bit(iskey, isnull, iscompr, size)와 key/value 그리고 자식 노드의 포인터를 저장하는 unsigned char data[]가 있습니다. 특이한 점은 key/value를 동일한 노드에 저장 하지 않고 key가 저장된 노드의 자식 노드에 value를 저장합니다.※ 사진 출처위 그림을 예로 32 bit 정보가 어떤걸 의미하는지 알아보겠습니다.iskey는 노드가 key의 종착역(iskey:1)인지 중간역(iskey:0)인지 나타내는 flag입니다. 1, 3 노드는 iskey:0 이고 2, 4, 5, 6, 7 노드는 iskey:1이 됩니다.isnull은 value의 null 여부를 표시합니다. unsigned char data[]에 key/value 그리고 자식 노드의 포인터를 저장하므로 value를 찾으려면 계산이 들어갑니다. 불필요한 연산을 줄이기 위해 만든 필드 같습니다.Trie는 각 노드에 한글자씩 표현 하지만 Radix는 압축을 통해 한 노드에 여러 글자 표현이 가능합니다. 이를 나태내는 플래그 iscompr 입니다. 노드가 압축된 노드(iscompr:1)인지 아닌지(iscompr:0)를 나타냅니다.size는 iscompr 값에 따라 의미가 다릅니다. iscompr이 1이면 저장된 key의 길이를 의미하고 iscompr이 0이면 자식노드의 갯수(저장된 key의 갯수)를 의미합니다.위 4개 정보를 이용해서 한 노드의 크기를 구하는 코드는 아래와 같습니다.#define raxNodeCurrentLength(n) ( \ sizeof(raxNode)+(n)->size+ \ ((n)->iscompr ? sizeof(raxNode*) : sizeof(raxNode*)*(n)->size)+ \ (((n)->iskey && !(n)->isnull)*sizeof(void*)) \ ) ※ 노드에 value 주소를 저장하거나, 마지막 자식 노드 포인터를 알고 싶을때 사용합니다.FindraxLowWalk 함수를 이용해 key가 존재 하는지 판단합니다.size_t raxLowWalk(rax *rax, unsigned char *s, size_t len, raxNode **stopnode, raxNode ***plink, int *splitpos, raxStack *ts) rax에 “ANNIBALE” -> “SCO” -> [] 로 저장 되어있을때 어떤 값을 리턴하는지 알아보겠습니다.*s 가 “ANNIBALESCO”이고 len이 11 인 경우# splitpos: 0, return value: 11 "ANNIBALE" -> "SCO" -> [] ^ | *stopnode *s가 “ANNIBALETCO”이고 len이 11인 경우# splitpos: 0, return value: 9 "ANNIBALE" -> "SCO" -> [] ^ | *stopnode *s의 길이 len과 return value가 같다면 rax에 key가 존재하는 것입니다. *s의 길이 len과 return value가 다른 경우 어디까지 매칭됐는지 보여주는 return value와 어떤 노드에 어디까지 일치했는지 표현하는 *stopnode, splitpos를 통해 추가 정보를 얻을수 있습니다.InsertraxLowWalk 함수를 이용해서 저장할 위치를 찾습니다. (*stopnode, splitpos, return value)1번에서 구해진 데이터를 이용해서 새로운 노드 생성 및 링크를 연결합니다.rax에 “ANNIBALE” -> “SCO” -> [] 상태에서 “ANNIENTARE”를 저장하는 과정입니다.1. raxLowWalk 함수를 이용하여 저장할 위치 탐색 splitpos: 4, return value: 4 "ANNIBALE" -> "SCO" -> [] ^ | *stopnode 2. *stopnode, splitpos 데이터를 이용하여 노드 분리 "ANNI" -> "B" -> "ALE" -> [] 3. iscompr: 0인 노드 "B"를 기준으로 새로운 key 저장 ("B"와 "E"는 같은 노드) |B| -> "ALE" -> [] "ANNI" -> |-| |E| -> "NTARE" -> [] RemoveraxLowWalk 함수를 이용해서 저장할 위치를 찾습니다. (*stopnode, splitpos, return value)1번에서 구해진 데이터를 이용해서 노드 제거 및 compress가 가능다면2가지 경우가 있습니다.마지막 노드만 iskey: 1이고, 연속으로 iscompr:1인 노드가 된 경우마지막 노드만 iskey: 1이고, iscompr:1 -> iscomplr:0 -> iscomplr:1 노드 구조가 된 경우입니다.첫번째 경우를 알아 보겠습니다. rax에 “FOO” -> “BAR” -> [] 상태에서 “FOO”를 지우는 과정입니다.1. raxLowWalk 함수를 이용하여 저장할 위치 탐색 splitpos: 3, return value: 3 "FOO" -> "BAR" -> [] ^ | *stopnode 2. 해당 key 삭제, 여기서는 자식노드가 있으므로 노드 삭제는 하지 않고 노드의 iskey: 0으로 세팅 "FOO" -> "BAR" -> [] 3. compress가 가능한 경우 진행 "FOOBAR" -> [] 두번째 경우를 알아 보겠습니다.0. "FOOBAR"와 "FOOTER"가 저장된 상황입니다. FOOTER를 지우는 경우입니다. |B| -> "AR" -> [] "FOO" -> |-| |T| -> "ER" -> [] 1. raxLowWalk 함수를 이용하여 저장할 위치 탐색 splitpos: 0, return value: 6 |B| -> "AR" -> [] "FOO" -> |-| |T| -> "ER" -> [] ^ | *stopnode 2. 해당 key 삭제 "FOO" -> "B" -> "AR" -> [] 3. compress가 가능한 경우 진행 "FOOBAR" -> [] cluster 정보는 어떻게 저장되나?기존 skiplist 자료구조를 이용했던게 어떻게 변경 되었는지 알아보겠습니다.server.cluster->slots_keys_count[hashslot] += add ? 1 : -1; if (keylen+2 > 64) indexed = zmalloc(keylen+2); indexed[0] = (hashslot >> 8) & 0xff; indexed[1] = hashslot & 0xff; memcpy(indexed+2,key->ptr,keylen); if (add) { raxInsert(server.cluster->slots_to_keys,indexed,keylen+2,NULL,NULL); } else { raxRemove(server.cluster->slots_to_keys,indexed,keylen+2,NULL); } 먼저 slots_keys_count 변수를 이용하여 각 hash_slot의 key 갯수를 저장합니다.그리고 key는 hash_slot(2 byte) + key, value는 NULL로 rax에 저장하여 특정 hash_slot에 속한 key 조회를 쉽게 만들었습니다.마치며rax 구현과 rax가 어떻게 redis에 적용됐는지 보면서 오랜만에 재밌게 코드를 읽은것 같습니다. 개인적으로 데이터 관련 유용한 무언가를 만드는게 목표인데, 이런 좋은 코드들을 하나 둘씩 제것으로 만드는것도 과정이라 생각하며 진행했습니다.앞으로 rax가 redis에서 어떻게 쓰일지 흥미롭고, Redis를 Saas 형태로 제공하는 업체들이 언제 적용할지도 궁금합니다.긴 글 읽어주셔서 감사합니다.cluster, rax 관련 antirez twitterRedis cluster Insertion cluster Issuesame amount data hash table vs radix treehashset + ziplist -> radix tree + listpack 1/5replace Hashset with Radix treeraxNode에서 사용한 flexible memberflexible memberrax 를 이용한 Redis Streams(2017.12.17일 업데이트)Redis Stream#잔디 #토스랩 #JANDI #기술스택 #도입후기 #Redis #인사이트
조회수 2027

프로세스 마이닝과 AI를 통한 프로세스 혁신

지난해 이세돌과 알파고의 대결 이후에 인공 지능 (AI)과 기계 학습은 국내에서 많은 대중들의 관심을 얻어 중요한 추진력을 얻었으며, 모든 산업 분야의 기업들이 해당 기술을 빠른 속도로 계속 적용하여 사용하는 비중이 더욱 높아졌습니다. 실제로 Gartner는 2022년까지 스마트 머신과 로봇이 고학년 전문직 분야를 대체할 수 있을 것으로 내다봤으며, 심지어는 인공지능이 경영자 CEO도 대체 가능할 것인지에 대한 논의도 일어나고 있습니다. 이것은 사람이 과거 경험에 의해서 의사 결정을 내리 듯이 인공 지능도 확보한 데이터를 기반으로 의사 결정 모델을 만들 수 있다는 유사성에 기반합니다.  인공 지능에 의한 의사 결정은 사람한테 종종 있을 수 있는 감정이나 개인적 이해관계 및 관례에 의해 불합리한 판단에서 벗어나 데이터의 의한 객관적 판단을 할 수 있다는 장점이 있습니다.여기서 중요한 것은 인공지능이 학습하기 위한 “데이터”입니다.  지금까지 머신러닝이 막대한 이미지, 음성, 영상 데이터를 축적한 후 해당 데이터의 특징을 추출하여 패턴을 학습하여 자연어 처리 등을 통해 사람처럼 인식하여 분류하거나 상황을 판단하였듯이 기업 내 여러 가지 업무 활동에 머신 러닝을 적용하기 위해서는 이와 마찬가지로 관련 데이터가 필요합니다.제조 분야의 공정 관리, 공공 서비스, 물류 공급망 관리 등 전통적인 기업 내 업무 프로세스는 인공 지능에 의한 자동화과 효율화를 통해 혁신이 필요한 분야입니다. 기존에 외부 협력 업체로부터의 납기 예측, 소요되는 자재 인력 등 리소스 산정, 생산 스케줄, 장비 파라미터 입력값 등은 사람에 의해 수작업으로 진행 시 몇 주에서 수개월 소요되었지만, 인공 지능과 기계 학습 기반의 솔루션 도움으로 정확하게 지속적인 추세를 인식하고 인간의 개입 없이 데이터 중심의 결정이 가능해집니다.지금까지 기업 내 축적된 엄청난 양의 데이터를 활용하여 여러 산업 분야에서 숨겨진 패턴과 상관관계, 이상 징후 및 불량 탐지, 고객 수요 예측 등이 시도되었습니다. 하지만 이러한 시도들은 기업 내 문제 요인을 파악하여 우선적으로 어떤 부분에 초점을 맞추어 개선을 해야 하는지 알아야 하므로, 기업 경영 활동 전반에 걸쳐 돌아가는 판세를 읽는 노력이 필요합니다. 하지만, 기업 내에서 이뤄지고 있는 프로세스는 충분히 복잡하여, 개별 단위 작업의 전문가들은 존재하겠지만, 각 개별 부서, 구성원, 시스템 간에서 발생하는 다양한 상호작용과 이에 따른 예외 상황이 존재하여 이를 파악하기가 쉽지 않습니다.프로세스 마이닝은 데이터 기반의 프로세스 분석을 통해 문제 부분을 파악하여, 실제 인공 지능이나 머신 러닝을 적용하여 개선할 부분을 찾을 수 있도록 도와줍니다. 그리고, 프로세스 개선을 위해 머신러닝을 적용하기 위해서는 앞서 말한 것처럼 “데이터”가 학습될 수 있는 형태의 기반을 제공합니다.아래 그림과 같이 이벤트 로그를 기반으로 프로세스 모델을 생성하고, 수집된 패턴들과 각 분기 단계에서의 주요 성과 지표들을 디지털화하여 인공지능이 이해할 수 있는 형태로 축적합니다 이렇게 축적된 프로세스 패턴 데이터를 가지고 알파고가 최적화된 다음의 한 수를 예측하듯이 프로세스 마이닝은 인공 지능 기술과 결합하여 과거 프로세스에 대한 이해뿐만 아니라, 현재 시점에서 앞으로의 프로세스를 예측하여 합리적인 의사 결정을 도와줄 것입니다.#퍼즐데이터 #개발팀 #개발자 #개발후기 #인사이트
조회수 1403

스타트업 청년채용 페스티벌

와~ 안녕하세요!스타트업 청년채용 페스티벌이라고 들어보셨나요?15일에 열린 페스티벌에, 미드레이트도 참여해서 직접 뜨거운 분위기를 느끼고 왔습니다~!!이번 스타트업 청년채용 페스티벌에는유망 스타트업 35개 업체와 청년 구직자 300여 명이 참여하는 등뜨거운 관심 속에서 무사히 치러졌다고 합니다.스타트업 청년채용 페스티벌이 무엇인가 하면......!아래에 자세히 설명되어 있습니다^^그렇다고 합니다.아직 와 닿지 않으시죠~?자 이제 현장 분위기를 느껴보러 가보자고요~~!!!우선, 다들 어떤 업체들이 참가했는지 궁금하실 것 같아요!특히, 스타트업 입사를 꿈꾸는 취업 준비생 여러분이요 ^^그래서 각 업체별로 1분씩 소개하는 시간이 있었답니다~!미드레이트 블로그인만큼!가장 중요한!미드레이트 소개 시간!미드레이트의 CFO를 담당하고 계신 잘생긴 신규식 이사님께서 발표를 앞두고 대기 중이십니다^^저기서 가장 잘생긴 분을 찾아보세요~~~~~하핫뭐라고요~~?? 잘 안 보인다고요~~??다시 눈을 크게 뜨고 봐보아요!착한 사람들은 보인대요~~그래도 잘 안 보인다면ㅠㅠ괜찮아요 마음이 나쁜 건 아닐 거예요~!게다가 아래에 큰 사진이 준비되어 있습니다!!돌아온미드레이트 1분 소개 시간!제가 간단히 이사님의 말씀 몇 마디만 적어보겠습니다.안녕하세요. 저희는 대출형 크라우드 펀딩을 운영하고 있는 미드레이트라고 합니다.저희는 자금이 필요한 다수의 개인과 다수의 투자자를 중금리로 연결해주고 있습니다.서민금융이라던지 대부업을 쓰시는 분들에게 도움이 되고자 서비스를 운영하고 있습니다.대출형 크라우드 펀딩이나 크라우드 펀딩에 관심 있으신 분들은 저희 부스에 오셔서 말씀하세요. 언제든 문이 열려있습니다!그렇습니다~미드레이트는 학력 등에 상관없이크라우드 펀딩에 관심이 있는 누구에게나 문이 열려있습니다!!!!!짧아서 아쉬운 1분 소개가 끝났지만걱정 마세요그 이후로 약 3시간가량의 스타트업 상담회 및 면접이 이어졌으니까요^-^처음 찾아간 곳은 Small Talk!4개 공간으로 운영되며 1:多 상담을 할 수 있었는데요미드레이트 시간에 방문해 보았습니다~!미드레이트의 간판! 우리의 멋진 이승행 대표님께서 채용 설명을 진행하고 계십니다.미드레이트는 핀테크 업체인 만큼 핀테크에 대해서도 열띤 설명을 ^0^많은 분들이 참여해서 집~중~!! 하고 있는 모습이 예사롭지 않습니다!핀테크, 그리고 미드레이트에 대해 많은 것 알아 가셨길 바랍니다^^아무리 미드레이트 블로그라지만미드레이트 이야기만 하니스타트업 청년채용 페스티벌에 참가한 다른 업체들도 살짝 궁금하신가요~?그렇다면!이제!몇 개의 다른 업체들 부스 구경을 한 뒤에 미드레이트 부스를 방문하도록 하겠습니다!아래의 아주 샛노란 삐약이가 안내해줄 거예요.(타업체나 방문객 얼굴은 초상권을 위해 스마일 스티커로 처리하였습니다!)처음 방문한 곳은 인크! 영어로는 YINC!투자형 크라우드 펀딩 플랫폼으로 벤처기업이나 프로젝트성 사업의 자금을 모아 투자하는 업체입니다.크라우드 펀딩 플랫폼이라는 점에서는 미드레이트와 비슷하죠.타깃이 약간 다를 뿐~?관심 있는 구직자와 열심히 상담을 진행하고 계십니다.다음으로~쿠팡! coupang! 입니다.쿠팡은 다들 아시죠?소셜커머스 업체로 우리의 온라인 쇼핑을 보다 풍요롭게 만들어주고 있는 곳입니다~!저렴하게 상품을 구매할 수 있게 해주는 고마운 업체입니다! 요이~NEXT!이번 업체는 직방!와우 정말 많은 분들이 설명을 듣고 계시네요.주거문제는 인간의 기본적인 욕구인 만큼 청년 구직자에게도 가장 관심이 높은 것 같아요!집 구할 때, 방 구할 때 쉽게 여러 가지 매물을 찾아볼 수 있게 도와주는, 안전 거래도 도와주는 직방!집 구할 일이 있을 때 찾아보시면 유용하겠어요~사람이 많으니 후다닥 다음 차례로!이번엔 롤리캠입니다.요즈음 셀기꾼이라는 말이 신조어로 생겨났죠.( 셀기꾼 : 셀프카메라로 사기 같은 마법의 사진을 만들어 내는 사람을 일컫는 말 )그만큼 예쁘게 보이고 싶은 욕망은~ 예나 지금이나 변함없는 것 같아요^^셀기꾼이 되기 위한 필수조건은 역시 보정! 롤리캠을 사용하면 인생 사진을 만들어준다고 하네요~_~어머 한 번 써봐야 하겠는걸~?마지막우아한 형제들입니다.배달의 민족이라는 앱을 개발해 운영 중인 업체죠.배달음식을 자주 먹는 사람들에게 특히 딱이라지요. 식당과 메뉴, 결제까지 한방에! 원스톱으로!후기도 남길 수 있어서 그 가게에 대한 평도 살펴볼 수 있다고 합니다.ㅎㅎㅎ 배달 음식 먹을 때 이용해봐야겠어요.와 먼 길 오느라 고생하셨습니다!!!!이 외에도 엄청나게 많은 업체들이 참여했었답니다!스타트업 업체들 답게 톡톡튀고 자유로운 느낌을 팍팍 받을 수 있었습니다~!그리고드디어 드디어 드디어많이 기다리셨나요~? 오늘의 주인공미 - 드 - 레 - 이 - 트등장이오~~~어머!아까 그 잘생긴 신규식 이사님이 또 등장하셨어요!또 보니 넘넘 반갑네요~~~보시는 바와 같이 정말 천사같고 상냥 그 자체의 인물!!!!설명 듣다가 미드레이트에서(아니아니 이사님으로부터) 헤어나오지 못하실 거에요하하핫 겪어보시면 압니다!!!미드레이트는 대출형 크라우드펀딩 기반의 P2P금융 업체인데요!문구가 눈에 띄지 않나요?미드레이트는 서민을, 대출이 필요한 여러분을 응원합니다!이세상 모든 사람들이 신용 걱정 없이 대출 할 수 있는 날에 영광스럽게 망하겠습니다이번에 미드레이트는 UI/UX디자이너, 개발자, PR담당자를 모집했는데요.좋은 분들이 많이 오셨으면 좋겠습니다!미드레이트 문 많이 두드려 주세요^0^이번 스타트업 청년채용 페스티벌에 못 오신 분들은 아쉽겠지만언제든 미드레이트에는 기회가 열려있으니 항상 관심 가져주시고 저는 이만 물러가겠습니다!!!다음에 또 만나요~!미드레이트에 대해 더 알고 싶은 분들은 아래의 링크 참고해 주세요!미드레이트 홈페이지 : http://www.midrate.co.kr미드레이트 페이스북 : https://www.facebook.com/Midrate.co.kr미드레이트 카카오톡 플러스 친구 : http://plus.kakao.com/home/@midrate미드레이트 화이팅!#미드레이트 #이벤트참여 #이벤트후기 #후기 #청년채용 #페스티벌
조회수 1223

A씨의 일주일

스포카 개발팀 문성원입니다. 오늘은 스포카 개발팀의 가공의 개발자 A씨의 일주일을 통해, 스포카 개발팀에서는 일주일간의 개발 일정을 어떻게 진행하는지 살펴보겠습니다. 평소 스타트업(Startup) 개발팀의 문화에 관심이 있으셨던 분들에게 도움이 되길 바랍니다.월요일오전 10시, A씨는 평소보다 조금 일찍 사무실에 도착했습니다. 매주 월요일은 스포카 전체 미팅이 있는 날이기 때문이죠. 한 주간 각자 진행한 것을 토대로 이번 주에 진행할 일을 대외적으로 공표하는 이 회의에 앞서, 스포카 개발팀은 따로 미팅을 잠깐 가집니다. 그동안 지난 주 개발 사항, 이번 주 구현 목록 등을 트렐로(Trello)를 통해 정리한 뒤, 이를 전체 미팅에서 공유합니다. A씨는 지난 주에 미쳐 다 구현하지 못했던 서버의 몇 가지 기능과 클라이언트 신버전 배포 준비를 하게 되었습니다.정신없이 회의 하고 났더니 벌써 점심시간입니다. 늘 가던 근처 식당에서 즐겁게 점심을 먹고 사무실로 올라온 A씨는 막간을 이용해 간밤에 올라온 스포카 개발 블로그의 원고를 검토합니다. 몇 가지 오탈자와 맞춤법을 지적한 뒤 모두가 지루해할 월요일 오후 1~2시경에 공개하는 것이 목표입니다.올라간 블로그 글을 확인한 뒤에, A씨는 구현해야 할 서버 기능을 살펴보기로 했습니다. 생각보단 많긴 하지만 일주일 안에는 어떻게든 끝낼 수도 있을 것 같은 분량이네요. 우선 트렐로에 올라온 카드의 명세를 토대로 작업해야 할 내용을 체크리스트(Check List)로 정리합니다. 그다음은 모두가 짐작하시듯이 열심히 일합니다. A씨는 프로니까요.어느덧 저녁 시간이 다 되었습니다. 특별히 일이 없는 이상 야근은 하지 않는 주의인 A씨지만, 오늘만큼은 저녁을 먹고 조금 더 남아있기로 합니다. 팀 내에서 진행하고 있는 스터디 때문이죠. 혼자서 읽기는 까다로웠던 책을 다 같이 읽어보니 조금은 이해가 더 되는 느낌이 드네요.화요일A씨는 오전에 작업하던 중 이상한 점을 발견합니다. 구현하기로 한 기능이 기존 기능과 모순이 되기 때문이죠. 이걸 어떻게 해결할까 고민하던 A씨는 다행히 사무실에 남아있던 엔에이블러(Enabler)팀원들과 간단하게 미팅을 합니다. 문제를 설명하고 명세를 다시 확인한 A씨는 작성한 회의록과 함께 배포합니다. 트렐로의 해당 카드에도 첨부하여 나중에 다시 볼 수 있게 하는 것은 기본입니다.뜻하지 않은 문제 때문에 오전을 날려서 기분이 나빠진 A씨지만, 다행히 좋아하는 스파게티를 먹고 기운을 내기로 했습니다. 사무실에 올라와 인터넷 뉴스와 페이스북을 잠시 보던 A씨는 암묵적으로만 정해진 점심시간이 끝나자 바로 작업을 시작합니다. A씨는 프로니까요.그런데 문제가 있습니다. 오전에 배포한 회의록을 읽어 본 다른 팀원들이 이건 다른 문제의 원인이 될 수 있다고 합니다. A씨는 새 기능 추가가 단순히 로직이 아니라 클라이언트 UI를 포함한 대규모 변경이 필요하다는 것을 깨닫습니다. A씨는 새 기능에 대한 대략적인 스케치를 발사믹 목업(Balsamiq Mockup)으로 마친 뒤 이를 다시 배포합니다. 또한, 관련된 카드에 설명도 잊지 않습니다.수요일매주 수요일 오전에 스포카 개발팀은 짧은 미팅을 합니다. 금주의 진행사항 중 변경사항이나 도움이 필요한 내용을 공유하는 자리인데요. 여기서 A씨는 어제 일을 다시 정리해서 이야기하고, 일정이 지연될 수 있음을 전달합니다. A씨에게 할당된 카드 일부를 다음 주로 미루거나, 좀 한가한 사람에게 나눠주는 형식으로 짐을 던 A씨였지만, 여전히 큰일이 되어버린 기능 변경은 무거운 짐입니다.이런 대량의 작업 때문에 고민하던 A씨에게 같은 팀 B씨가 어떤 라이브러리를 소개해줍니다. A씨는 처음 보는 라이브러리인지라 B씨가 전담해서 가르쳐주는 모양이 되었지만, 생각보다 문제 해결에 큰 도움이 될 것 같습니다. 마침 다음 주에 개발 블로그에 글을 써야 할 당번이 된 A씨는 그 라이브러리에 대해 좀 더 공부해서 쓰기로 정합니다.B씨의 도움 덕에 진행 속도가 붙은 A씨는, 금주 업무 중 하나였던 클라이언트 새 버전의 테스트를 내일부터 진행하기 위해 페이스북이나 인터넷 뉴스도 보지 않은 채 열심히 일합니다. 이런 A씨의 프로다운 모습에 하늘도 감탄했는지, 퇴근 시간인 7시 전에 작업을 끝낸 A씨는 구현된 기능들을 테스트 해 보고 팀의 다른 개발자와 공유하기 위해 github에 만들어진 스포카 서버 코드 저장소에 푸시(Push)합니다.목요일구글 플레이(Google Play)는 하루 정도면 배포가 되니 다행이지만 애플 앱스토어(Apple App Store)는 일주일 정도의 심사기간이 있기 때문에 거절(Reject)당하지 않게 철저히 준비해야 합니다. 그래서 어느 때보다 A씨는 날카로운 눈매로 클라이언트를 점검합니다. 아니나 다를까 메뉴를 이동하다 보니 화면 구성이 흐트러지는 버그가 발견되었습니다. 하지만 프로답게 A씨는 당황하지 않고 재현 조건을 확인한 뒤, 클라이언트 담당자인 C씨에게 알려줍니다. “클라이언트 관련한 버그를 찾았는데, 트렐로를 확인해보세요.”라구요. QA(Quality Assurance) 업무 역시 스포카 개발팀은 직접 처리합니다.밖에 비가 오는지라 피자를 시켜먹은 뒤, 자리에 앉아 잠깐 쉬고 있던 A씨에게 D씨가 다가와서는, “어제 푸시한 소스를 내려받다(Pull)가 충돌(Conflict)이 났는데, 어떻게 병합(Merge)해야 할지 모르겠네요.” 라며 묻습니다. A씨는 D씨와 충돌이 난 소스를 함께 검토하고 문제가 발생하지 않게끔 조정한 뒤 이를 다시 푸시해서 상황을 종료합니다.이러는 사이 C씨가 A씨가 말한 버그를 고쳤다며 다시 확인해보라고 트렐로의 관련 카드를 “테스트” 리스트로 옮깁니다. A씨는 재현된 상황에서 문제 없이 동작하는 것을 확인하고 카드를 “완료” 리스트로 다시 옮깁니다. 이제 클라이언트 앱을 심의 신청하고 어제 구현한 서버 쪽 코드의 개선사항이 있는지 살펴봅니다. 서버는 클라이언트가 앱스토어나 플레이에 준비되는 것을 확인한 뒤, DotCloud에서 제공하는 배포 스크립트를 통해 손쉽게 버전업할 수 있기 때문에 시간이 좀 남아 있습니다. 현재로선 특별히 더 손댈 부분이 없다는 걸 확인한 A씨는 오늘도 즐겁게 퇴근합니다.금요일월요일과 마찬가지로 오늘도 A씨는 평소보다 조금 서둘러서 사무실에 도착했습니다. 오늘은 사내 전체적으로 한 주간 있었던 업무 내용을 간략하게 보고하는 자리가 있습니다. A씨는 이번 주에 맡은 서버 개발이 이러저러해서 이렇고 저렇게 바뀌었다고 설명한 뒤, 앱스토어에 신청되었다는 사실을 공지합니다. 전체 보고가 끝난 뒤엔 개발팀은 따로 남아서 약간 자세하게 금주 작업을 공유하면서 트렐로의 “완료” 상태에 있는 카드들을 정리하는 시간을 갖습니다.점심을 먹고 나서, 이번 주에 더는 급한 일정이 없다는 것을 확인한 A씨는 개발 블로그에 쓸 글을 정리하기 시작합니다. 수요일에 B씨가 알려 준 라이브러리의 사용 방법은 대강 배웠지만, 그것을 남에게 설명할 수 있을 만큼 자세히 알지는 못했기 때문에 A씨는 한동안 공식 문서와 예제 코드들과 씨름합니다. 그래도 어느새 옆에서 거들기 시작한 B씨 덕에 글은 생각보다 순조롭게 마무리되었습니다. 이제 다음 주 월요일까지 퇴고해서 블로그에 공개하기만 하면 되죠.생각보다 오늘 업무를 끝낸 A씨는 친구들과 약속이 있는 홍대로 가기 위해, 7시 정시에 사무실을 떠납니다.#스포카 #개발 #개발자 #개발팀 #개발자의일주일 #개발자의일상 #인사이트 #경험공유

기업문화 엿볼 때, 더팀스

로그인

/