스토리 홈

인터뷰

피드

뉴스

조회수 987

매일의 습관

나의 습관들저는 14년 차 개발자이자 스타트업 전문 개발사인 인썸니아를 7년째 운영 중인 사업가입니다. 삶에 있어 좋은 것을 꾸준하게 하는 것이 중요하고 무언가를 꾸준하게 하려면 습관으로 만들어야 한다고 믿기 때문에 매일 실천하고 있는 습관들이 있습니다. 이 습관들은 제가 사업을 키울 수 있게 도와주면서도 여가도 즐기고 건강도 챙길 수 있도록 만들어주고 있습니다.저는 간헐적 단식을 해서 하루 두 끼만 먹으며 그중 한 끼는 샐러드식, 나머지 한 끼는 가급적 저탄수화물식을 합니다. 냉장고에는 언제든지 먹을 수 있도록 계란, 치즈, 토마토, 야채, 과일, 아보카도, 요구르트, 냉동 과일을 채워 넣고 자주 만들어 먹으며 과당이나 시럽이 들어간 음료를 먹지 않습니다. 이 식단을 시작한 시점부터 사업이 빠르게 성장했다고 볼 수 있을 정도로 제 삶과 일에 많은 영향을 주었습니다.매일 아침 7분 정도 타바타 운동을 하고 3일에 한 권 정도의 책을 읽는데 이동 중에는 전자책의 음성 기능(TTS)을 이용해 4배속으로 책을 듣습니다. 넷플릭스, 다큐, 애니메이션, 영화, 드라마, 예능, 유튜브, 온라인 강의 등 영상을 꽤 많이 집중해서 보는 편인데 속도를 2~5배속으로 보고 자막이 있는 경우 3초 간격으로 자막을 속독하면서 보기 때문에 1시간짜리 프로를 10분~20분 정도면 끝낼 수 있습니다. 간헐적 단식약속이 있을 때를 제외하곤 매일 16시간 간헐적 단식을 합니다. 저녁 9시 이후에는 먹지 않고 다음날 아침을 굶고 첫 끼니를 오후 1시에 먹으면 16시간 단식이 됩니다. 간헐적 단식의 장점은 여러 책이나 다큐, 그리고 성공했거나 생산적으로 사는 사람들의 습관을 살펴보면 많이 언급되는데, 생존 호르몬이나 장내 세균의 긍정적인 작용, 혈액 순환, 두뇌 활성화 등이 있습니다. 아침 식사를 의무감에 억지로 먹는 것보단 먹지 않는 것이 건강에 도움이 된다는 믿음과 지식만 있으면, 오전 시간을 더 맑은 정신으로 더 길게 활용할 수 있고 점심시간까지 오히려 배가 덜 고프며 몸이 더 가벼워질 수 있습니다. 선식이나 과일로 아침을 가볍게 때우는 것을 말하는 것이 아니라 물이나 아메리카노 외에 칼로리가 들어간 것은 아예 안 먹는 것이 간헐적 단식입니다. 올 초부터 해오고 있는데 몸에 이상이 생기지 않는 한 지속할 예정입니다. 샐러드, 저탄수화물하루 한 끼는 샐러드나 집에서 만든 저탄수화물 식단으로 먹습니다. 프래시코드에서 주문해먹거나 피그인더가든, 헬로그린, 알로하포케, 던킨도너츠, 파리크라상에 파는 샐러드를 먹습니다. 집에서 만들어 먹을 때도 요리를 하기보다는 계란과 토마토, 양상추, 오이 고추, 당근, 오이, 치즈, 아보카도, 요구르트 등을 조합해서 계란만 조리하고 나머지는 조리하지 않고 그대로 먹습니다. 샐러드를 먹는 이유는 탄수화물이 적고 단백질/지방 비중이 높으면서 야채/과일 같은 섬유질이 충분히 들어 있는 식단으로써 샐러드가 괜찮아서입니다. 저탄수화물 식단을 하다 보니 자연스럽게 하루 한 끼는 샐러드를 먹게 되었습니다. 샐러드와 저탄수화물 식단을 한 지는 3년이 되어가는데 라멘, 빵, 케이크 등은 맛집에 갈 경우에만 가끔 먹고 한식을 먹더라도 밥은 거의 손에 대지 않습니다. 하루치 탄수화물 양을 정해놓고 그 안에서 먹으려고 노력합니다. 저탄수화물식은 간헐적 단식과 비슷한 장점이 있는데 혈액순환이 좋아지고 머리도 잘 돌아가며 적정 체중이 유지되고 혈중 콜레스테롤이나 혈당 등의 혈액 수치들도 기본적으로 좋은 상태로 유지됩니다. 건강검진받을 때마다 실제 나이보다 6~7세 정도 혈관 건강이 좋게 나옵니다. 탄수화물을 적게 먹으면 입맛이 바뀌어 단 것이 덜 당기고 예전에 먹던 수준의 단 음식들은 너무 달게 느껴져서 피하게 됩니다. 신선한 야채가 적당히 달게 느껴지는 선순환이 일어나 억지로 먹지 않아도 끼니에 야채를 섞어서 먹게 되는데, 식단을 유지한 3년 동안 감기에도 안 걸렸고 몸이 아픈 적이 없으며 평소에도 기운이 나고 기분이 좋습니다. 제 사업이 잘 되기 시작한 시점과 저탄수화물 식단을 시작한 시점이 일치할 정도로 이 식단은 저의 삶에 커다란 전환점이 되었습니다. 식단이 이렇게 바뀌면 몸이 적응해서 신진대사과정이 포도당 대사가 아니라 지방 대사로 바뀌는데 이때 과당이나 시럽이 들어간 음료, 밀가루 예전처럼 많이 먹으면 정신이 몽롱하고 잠이 쏟아집니다. 탄수화물, 과당을 적게 먹으려고도 노력하지만 먹었을 때 졸리고 기분이 나쁘며 그날의 시간을 망치게 되기 때문에 점점 피하게 됩니다. 좋은 것은 습관으로 만들고 나쁜 것은 습관에서 사리질 때까지 피하는 것이 중요한 것 같습니다.타바타 운동원래는 올해 초 까지도 헬스장을 꾸준히 다녔고, 십몇 년 동안 매주 2~3일은 헬스장에 가서 한두 시간씩은 꼭 운동을 했었는데 지금은 매일 아침 일어나서 6분에서 7분 정도의 타바타 운동을 하고 샤워하고 출근합니다. 퇴근 후에 한두 시간 운동을 하려면 저녁 일정도 비워놔야 하고 운동복으로 갈아입었다가 씻고 머리 만지고 또 출근복으로 갈아입어야 하는 등 참 번거롭죠. 굉장한 마음가짐이 필요합니다. 근육을 키우려는 목적이 아니라 적당한 활력과 혈액순환, 그리고 잔근육 정도가 목표라서 기구 운동보다는 점프 스쿼트, 점프 런지, 버피, 푸셥, 복근 운동을 번갈아 12세트 정도 하면 6분 만에 충분히 근육이 당기고 숨이 차는 정도로 운동 효과가 있고 알몸으로 운동하고 바로 씻으면 되니 15분 정도면 운동, 샤워, 출근 준비까지 끝낼 수 있습니다. 아침에 눈을 떠서 타바타 앱을 켜기만 하면 카운트다운이 시작되니 흘러가듯 움직이면 기운차게 출근할 수 있습니다.발목 보호 겸 발소리를 낮춰주는 두꺼운 요가 매트와 백 익스텐션 기구, 풀업용 문틀 철봉, 캐틀밸, 폼롤러 등을 갖춰놔서 중량 운동만 아니면 집에서 운동할 수 있고 그것으로 충분히 건강과 근력을 유지할 수 있습니다. 그리고 운동시간이 워낙 짧아 시간 없다고 도망칠 핑계를 대기가 어렵습니다. 20초 운동, 10초 휴식을 할 수 있는 한 반복하는 것인데 처음에는 4분도 하기 어렵다가 점점 늘려 저는 8분 정도를 합니다. 가수 비는 20분 정도 한다고 하네요.독서책과 구독형 콘텐츠를 많이 봅니다. 읽는 콘텐츠로는 리디 셀렉트, 밀리의 서재, 아웃스탠딩, 퇴사 준비생의 여행 등을 구독하고 있고 브런치를 탐험할 때도 많고 관심 가는 주제이면 폴인, 퍼블리 콘텐츠를 결제해 읽기도 합니다. 회사와 오피스텔이 강남역이기 때문에 근처에 있는 Yes24 중고서점, 알라딘 중고서점, 교보문고, 영풍문고는 일주일에 몇 번씩 들러서 책을 읽거나 사 옵니다. 리디북스는 리디 셀렉트 구독 전에도 책을 2천 권 정도 사뒀는데 리디 셀렉트 출시 이후에 책값이 절약되기도 하고 더 많이 읽게 되기도 합니다. 개발, 경제, 경영, 생산성, 자기 계발, 에세이 서적을 많이 보는데 동기부여가 필요할 때는 생산성/자기 계발, 지식이 필요할 때는 개발/경제/경영, 공감이 필요할 때는 에세이를 봅니다.누적 독서량이 많아지다 보면 새로운 책을 봐도 내가 새로 습득해야 하는 지식이 점점 줄어들기 때문에 더 빠르게 볼 수 있습니다. 그리고 지식은 어차피 쏟아지는데 나에게 지금 더 필요한 지식을 좀 더 선별적으로 쌓고자 하기 때문에 당장 중요하지 않게 느껴지는 단락들은 정독하지 않고 속독을 합니다. 또 잘 읽히지 않는 책은 이해하려고 애쓰기보다는 같은 분야의 더 잘 읽히는 책을 기대하며 덮어두거나 훑고 지나가서 미완의 독서로 스트레스받지 않습니다.이동 중에는 TTS는 4배속으로 해서 듣는데 집중하지 않으면 놓치기 쉽기 때문에 익숙한 길을 걸을 때나 지하철처럼 가만히 있을 때, 산책할 때나 집안일을 할 때 듣습니다. 습득할 내용이 많은 책은 TTS로 빠르게 들으면 남는 것이 별로 없어서 스타트업 창업기나 경영자들의 자전적인 이야기 등 스토리 위주의 책을 볼 때 TTS가 적합한 것 같습니다. 최근에는 테라노스의 사기극을 다룬 배드블러드를 TTS로 듣고 있고 그전에는 우버 인사이드, 손정의 300년 왕국의 야망, 업스타트(에어비엔비와 우버 창업기) 등을 들었습니다. 읽고 싶은 책이 있으면 '언젠가 읽어야지' 생각하기보다는 바로 결제해서 바로 다운로드하고 바로 책을 펴서 읽어보기 시작합니다. 이미 구독 중인 리디 셀렉트나 밀리의 서재에 있는 책이라면 추가 비용도 안 들기 때문에 이 책이 계속 읽을 만한 가치가 있는지 아예 읽어보고 판단할 수 있습니다. 온라인 서재 상에서 꽂혀있는 많은 책 중에 가장 읽고 싶은 책, 현재의 나에게 가장 중요한 책을 먼저 보면 되기 때문에 책을 많이 구매/다운로드하였다고 죄책감을 갖지 않습니다. 동영상미드는 1년 이상 구독 중인 넷플릭스, 아마존 프라임 비디오를 구독하기도 하고 애니메이션은 라프텔에서, 공중파 방송은 푹으로 보고 유튜브도 레드 시절부터 프리미엄을 구독하고 있습니다. 2~5배속으로 보면 좋은 점이 미드는 앉은자리에서 몇 시즌을 끝낼 수 있고, 책과 비슷하게 '언젠가 봐야지'라고 생각할 필요 없이 바로 재생해서 재미없으면 보다가 말아도 되고 내용은 궁금한데 진행이 지루하다면 몇 초 간격으로 스킵해서 훑고 지나갈 수도 있습니다.제가 그동안 본 콘텐츠 리스트와 분량을 나열해보면 콘텐츠 중독자 수준인데, 절대적인 시간으로 계산해보면 퇴근 후나 주말의 일부를 할애한 것이라서 꽤 짧은 시간 동안 꽤 밀도 있는 콘텐츠 소비로 가성비 좋은 여가 활동을 했다고 생각합니다. 특히 사회/건강 다큐는 책을 읽은 것보다 더 강한 정보력을 가지고 있다고 생각하고 여행/동물 예능은 힐링이 됩니다. 공중파 3사와 EBS 다큐멘터리 중 관심 가는 주제의 회차는 거의 3년 전 것 까지 찾아보았습니다. 책을 TTS 듣는 것과 영상을 보는 것 모두 빠르게 듣게 듣는 것에 익숙해지면 사고 능력과 학습 능력도 같이 향상된다고 생각하기도 하고 정배속으로 보면 지루하기도 하고 쏟아지는 많은 콘텐츠를 놓치기에 아깝기도 하고 그렇다고 다 챙겨 보기에는 시간이 부족합니다. 영상 속도 조절을 할 수 있는 다양한 툴과 단축키를 익혀두고 영상이 나오면 습관적으로 재생 속도를 내가 이해할 수 있는 최대치까지 올립니다.저는 매일 실행하고 있는 습관이지만 어떤 분들에게는 생소하거나 익숙하지 않을 수 있는 습관들을 정리해봤습니다. 이 중 특히 저탄수화물식은 건강을 생각하는 모두에게 추천합니다. #생활습관 #스타트업 #식단 #간헐적단식 #저탄수화물 #타바타운동 #독서 #동영상 #여가
조회수 3191

성장하는 스타트업은 어떻게 일하고 있을까?

어니스트펀드 제품개발팀은 P2P금융을 고객이 직접 경험해볼 수 있도록 서비스를 만들고 꾸준히 발전시켜 나가는 일을 합니다. 제품개발팀은 고객의 니즈를 파악해 전체적인 서비스 구조와 화면을 설계하는 기획자, 고객과의 접점이 되는 화면과 인터랙션을 디자인하는 디자이너, 기획/디자인된 결과물이 실제로 동작할 수 있도록  제품에 생명력을 불어넣는 프런트/서버 엔지니어, 그리고 다양한 데이터를 수집하고 분석함으로써 더 나은 서비스를 가능케 하는 데이터 엔지니어까지 다양한 직군의 전문가들로 이루어져 있습니다.이들이 어떤 프로세스 체계를 갖추고 어떻게 커뮤니케이션하며 업무를 진행하느냐에 따라 서비스 품질뿐만 아니라 업무 효율성에도 많은 차이가 나게 되는데, 어니스트펀드 제품개발팀이 일하는 방법을 소개함으로써 도움이 될만한 부분을 공유하고자 합니다.매일 오전 스크럼 미팅으로 하루를 시작합니다.agora에서 매일 오전 스크럼 미팅제품개발팀은 매일 오전 agora에서 스크럼 미팅을 진행합니다. 스크럼 미팅은 팀 멤버별로 어제 있었던 이슈와 오늘의 할 일을 간단히 공유하고, 새로 추가되거나 변경된 업무와 관련된 맥락을 공유하는 시간입니다. 이 시간을 통하여 멤버 모두 팀 내의 최신 상황을 업데이트하고 서로의 업무에 자유롭게 의견을 교환함으로써, 업무적으로 혹시나 놓칠 수 있는 부분을 최소화하고 각자의 일정을 다시 한번 체크합니다. 짧게는 15분에서 논의가 길어질 때는 1시간 넘게까지 진행되는 등 특별한 제약 없이 얘기 나누는 이 시간은 하루 업무를 시작하는 일상처럼 되었습니다.커뮤니케이션을 효율적으로 합니다.사내 협업도구로 무엇을 사용하고 있나요? 조직이 성장하고 인원이 많아지게 되면 작은 조직일 때와는 다르게 커뮤니케이션이 원활히 되지 않을 수 있습니다. 따라서 적절한 협업도구의 도입과 멤버 모두의 적극적인 사용은 매우 중요합니다.'슬랙'에서 점심 메뉴를 재빠르게 취합하고 있는 팀원들어니스트펀드에서는 여러 도구를 같이 사용하면서 커뮤니케이션을 효율화하고 있습니다. 어떤 주제든 쉽게 얘기할 수 있는 슬랙(Slack)을 기본으로, 업무를 정리해 공유하는 컨플루언스(Confluence), 이슈의 진행 단계를 추적하고 이슈별 논의를 하는 지라(Jira), 소스 관리를 위한 용도로 GIT을 기본적으로 사용 중입니다. 한편으로는 더 나은 도구의 도입을 위한 시도를 계속하고 있고 최근에는 아지트(Agit), 트렐로(Trello) 등도 부분적으로 도입해보고 있습니다.척추를 곧게 유지합니다."척추 펴기는 잘 되어가고 있나요?", "네 열심히 펴고 있습니다." 혹은 "다른 일정으로 조금 지체되고 있어요." 제품개발팀 미팅에서 이런 대화가 오가면, 갓 합류한 직원들은 "척추 펴기가 뭐예요?"라는 질문을 합니다.소프트웨어를 개발하는 회사라면 정도의 차이는 있지만 대부분 기술부채를 가지고 있습니다. 기술 부채란 기술적 이슈 해결을 나중으로 미루고 당장 필요한 시간을 버는 대신, 추후에 시간과 노력을 이자로 지불하는 것을 의미합니다. 당장 필요한 시간을 버는 대신 이 부채가 점점 쌓이게 되면 장기적으로 작업 효율이 떨어지며, 서비스 품질에도 영향을 미칠 수 있어 꾸준한 관리와 청산이 중요한데, 어니스트펀드에서는 보통 기술부채라 불리는 이것들을 척추에 비유합니다. 사람이 바로 서는데 척추가 제일 중요한 것처럼, 중요도를 높여 기술부채를 관리함으로써 개발의 효율을 높이고 시스템을 최적화시켜 나갑니다.물론 척추 펴는 기간을 별도로 할당하고 집중해서 펴는것도 가능하지만, 보통 현실에서는 이런 상황을 기대하기는 힘들고 다른 업무와 병행해서 틈틈히 진행해야 하는 경우가 대부분입니다. 이때 전략을 잘 세우는 것이 중요한데, 척추를 완전히 편 후 한꺼번에 서비스에 적용하는 것보다는 일단 척추를 펼 자리를 잘 마련해놓은 후에(즉, 전체적인 틀을 먼저 잡아 놓은 후에), 한 부분을 작업한 후 서비스에 적용하고 또 다른 부분을 작업한 후 서비스에 적용하고 하는 사이클을 반복해 나가는 것이 좋습니다.척추펴는 작업은 언제든 다른 일정으로 인해 중단될 수 있는데, 서비스 적용까지의 사이클을 최대한 짧게 가져감으로써 일부분씩 펴나가는 것이 중요합니다. 어니스트펀드 제품개발팀에서는 이렇게 꾸준히 척추펴는 작업을 진행함으로써 점진적으로 시스템을 개선해 나가고 있습니다. 앞으로도 P2P금융업계는 빠르게 성장하는 만큼 많은 변화가 예상되는데, 시간이 지나면서 펴진 척추가 언제든 다시 굽어질 수 있습니다. 따라서 상황에 따라 굽어지는 것을 받아들이되 이것을 자각하고, 꾸준히 펴 나가려는 계획과 행동이 매우 중요합니다.정기적으로 깊이 있는 업무/기술 공유의 시간을 갖습니다.제품개발팀에서는 정기적으로 각자 주제를 정해 깊이 있게 공유하는 세션을 가집니다. 현재 시스템의 구조에 대한 것부터, 담당하고 있는 모듈의 앞으로의 개선방향, 또는 그동안 개선한 부분, 공유하고 싶은 기술 등 업무와 관련된 부분이 주가 됩니다. 한 주제에 대해 깊이 있게 공유하면서, 팀원 모두 시스템 전반에 대한 이해를 높일 수 있고, 기술적으로도 발전할 수 있는 좋은 기회가 됩니다.첫 세션을 진행한 후 한번 듣고 버리기엔 아까운 내용이라는 생각에, 두 번째 세션부터는 간단히 스마트폰으로 녹화를 진행하고 파일을 위키에 정리해 왔는데, 최근에 새로 합류한 팀원이 이 녹화된 파일을 인터넷 강의 시청하듯 참고하여 많은 도움이 되었다는 얘기를 들었습니다. 글로 정리하는 것과는 분명 다른 현장의 분위기나 디테일을 그대로 느낄 수 있었을 것입니다. 발표자가 부담을 느끼지 않는 범위에서, 사내 세션도 이렇게 녹화해 언제든 꺼내 볼 수 있게 하는 것도 좋은 방법인 것 같아 고려해보면 좋은 방법 같습니다.페어프로그래밍으로 대화를 많이 하고, 품질을 향상시킵니다.제품개발팀의 서버파트는 두 명씩 페어를 구성하고 있습니다. 페어는 각자 업무를 진행하면서 의논할 일이 있으면 첫 번째로 대화할 상대이며, 위에서 언급한 주번 활동을 같이 하기도 합니다. 또한 자율적으로 페어프로그래밍을 진행하기도 합니다. 페어프로그래밍이란 말 그대로 두 명이 짝을 지어 코딩과 리뷰를 동시에 진행하는 것으로, 하나의 모니터를 같이 보며 한 명은 코드를 작성하고 한 명은 작성 중인 코드를 리뷰하는 방식입니다. 이 방식의 장점은 둘이 머리를 맞댐으로써 더 좋은 품질을 기대할 수 있고, 리뷰를 동시에 진행함으로 버그가 감소하며, 지식 공유를 더 활발하게 할 수 있습니다. 최근에 한 페어가 적극적으로 페어프로그래밍을 진행하고 있고, 매일 결과를 위키에 업데이트하고 있는데, 재미있는 부분이 많아서 일부 화면을 캡처해봅니다. 두 분 응원합니다.페어프로그래밍을 진행하고 있는 제품개발팀 druwa와 sinclair테스트 케이스가 없다면 아직 완료가 아닙니다.테스트는 아무리 강조해도 지나치지 않습니다. 여기서 테스트는 QA조직이 진행하는 테스트가 아닌, 개발팀 내에서의 테스트 케이스 작성이며, 유닛 테스트부터 통합 테스트까지 모두 포함합니다.견고한 테스트 케이스 작성은 신규 서비스를 개발할 때뿐만 아니라, 척추 펴기나 구조개선을 할 때 변경된 로직을 검증하는 데 있어 반드시 필요합니다. 또한, 다양한 시나리오를 상상하며 테스트 케이스를 작성하게 되는데 기능을 구현할 때와는 또 다른 방향에서 접근하게 되면서, 업무 로직에 대한 이해를 더욱 높일 수도 있습니다. 그리고, 어니스트펀드는 서비스의 특성상 외부 서비스(신용평가업체, 벤더업체 등)와 연동하는 부분이 많습니다. 따라서, 완전한 테스트를 위해서는 이를 위한 mock 서버 구현과, 테스트를 용이하게 하기 위한 패턴 적용 등도 개발 시 꼭 고려해야 합니다. 번갈아가며 주번 활동을 합니다.운영팀(allen)의 요청에 따른 제품개발팀(money, turbo)의 대응서비스를 운영하다 보면 일상적이지만, 사람 손을 꼭 필요로 하는 부분이 있습니다. 예를 들면, 운영팀으로 인입된 고객 문의 중 제품개발팀의 확인이 필요한 것에 대한 지원, 다른 팀으로부터의 단발성 요청에 대한 처리, 또는 일상적인 서버 배포 등의 업무가 있습니다. 담당자가 명확하지 않은 상태에서는 자칫하면 이런 업무가 특정 팀원에게 집중되거나, 책임이 불명확해 처리가 지연될 수도 있습니다. 제품개발팀에서는 주번 제도를 도입해서 이런 이슈를 처리하고 있습니다. 주번 제도는 개발팀 멤버 두 명씩 페어가 되어 2주 간격으로 로테이션하면서 진행됩니다. 다른 팀에서 위와 같은 이슈로 개발팀의 손길이 필요한 경우에는 언제든지 슬랙에서 주번을 소환하면 주번은 책임지고 업무를 처리합니다.주번 활동이 중요도가 떨어지는 귀찮은 작업처럼 보일 수 있지만, 운영 전반에 대한 이슈를 개발팀 모두 경험하면서 개선할 부분에 대한 공감대를 형성하기도 하고, 자기가 담당한 모듈이 아닌 다른 부분을 처리함으로써 전체적인 이해도를 높이는데 많은 도움이 됩니다. 또한, 주번이 아닌 동안에는 부가적인 업무 요청 없이 자기 업무에 집중할 수 있어 방해받지 않고 업무에 집중할 수 있습니다.누구보다 먼저 예외/장애 상황을 인지합니다. 혹시나 발생할지 모르는 서비스의 예외/장애 상황을 즉각적으로 인지할 수 있는 수단이 있나요? 고객에게 서비스를 제공하고 운영하는 팀이라면 누구보다 먼저 장애나 예외 상황을 인지할 수 있어야 합니다.어니스트펀드에서는 문제 상황이 발생할 경우 슬랙이나 SMS를 통해 실시간으로 정보를 받을 수 있게끔 구성되어 있고, 문제의 경중에 따라 천천히 처리하기도 하고 즉각적으로 해결하기도 합니다. 완성도 있는 서비스 제공을 위해서 이런 알림 채널을 갖추는 것과 적절한 알림을 보내기 위한 고도화는 꼭 필요한 부분입니다. 마치며.개개인이 아무리 뛰어나더라도 팀으로써 유기적으로 일하지 못한다면 좋은 결과물을 기대하기는 힘듭니다. 유기적으로 일을 하기 위해서는 체계적인 업무 프로세스와 효율적인 커뮤니케이션의 중요성은 두말할 나위가 없습니다. 특히 P2P금융업계처럼 급격히 성장하고, 서비스 모델이 빠르게 변화하는 시장에서는 더더욱 중요할 것이며, 이를 위한 어니스트펀드 제품개발팀의 노력은 계속될 것입니다. #어니스트펀드 #스타트업 #개발자 #CTO #스타트업일상 #인사이트
조회수 4315

RESTful API를 설계하기 위한 디자인 팁

올라왔었던 REST 아키텍처를 훌륭하게 적용하기 위한 몇 가지 디자인 팁의 글에서 언급되지 않았던 추가적인 내용에 대해서 좀 더 얘기해보고자 합니다. 혹시 이전 포스팅을 읽지 않으셨다면 이전 포스팅을 먼저 읽으신 후 이 포스팅을 읽어주시기 바랍니다.Document?컬렉션에 관해서는 앞서 소개한 이전 글에서 자세히 설명해놓았으니 읽어보시기 바랍니다. 지금 제가 언급할 것을 도큐먼트인데요. 도큐먼트는 컬렉션과는 달리 단수명사나 명사의 조합으로 표현되어 URI에 나타납니다.http://api.soccer.restapi.org/leagues/seattle/teams/trebuchet/players/claudio 위의 예제에서 leauges라는 컬렉션 리소스가 있는 것을 알 수 있습니다. 그 컬렉션의 자식 리소스 중 하나가 seattle이라는 리소스인데요, 바로 이 리소스가 도큐먼트입니다. 도큐먼트는 하위 계층으로 또 컬렉션을 가질 수 있습니다. 이 예제에서의 teams가 seattle의 자식 컬렉션 리소스가 되겠지요. 즉, 단수 리소스는 도큐먼트라 칭하고 복수 리소스는 컬렉션으로 칭한다고 알아두시면 됩니다.이 URI는 또한 문서의 계층 구조를 표현하고 있습니다. 즉 슬래시 기호(/) 다음으로 나타내는 명사가 그 앞에 나오는 명사의 자식 계층이 되는 것이지요. 이러한 도큐먼트의 응답으로써, 요청에서 명시된 Content-Type 헤더에 1:1대응하는 응답을 주는 것이 의미 있을 때가 있습니다. 가령,URI : dogs/1 1) Content-Type: application/json 2) Content-Type: application/xml 3) Content-Type: application/png 이와 같은 URI에 3개의 요청이 주어졌고, 각각 Content-Type이 다음과 같을 때 어떤 응답이 보내져야 할까요? 물론, 그것은 응답을 설계한 사람의 맘이지만 일반적인 기준을 적용해본다면 1번과 2번 요청에는 각각 json, xml 형식으로 구조화된 데이터가 그리고 3번 요청에 대해서는 해당 강아지의 사진이 담긴 png 파일을 보낼 수 있을 것입니다. 또한, Content-Type에 대해서 명시하여 원하는 리소스를 선택할 수 있으므로 URI 내에는 파일 확장자를 포함하지 않는 것이 좋습니다.dogs/1.xml 위와 같은 URI를 만드는 것보다, dogs/1 위의 URI에 Content-Type: application/xml헤더를 포함하여 요청을 보내는 것이 더 적절한 선택입니다. 어째서 파일에 확장자를 붙이지 않는 것이 더 나은 선택일까요? URI는 고유한 리소스를 나타내는 데 쓰여야 합니다. 그런데 URI에 확장자를 붙이는 순간 마치 다른 리소스인 것처럼 느껴집니다. 확장자를 달리하여 같은 리소스에 대한 다른 표현 양식을 주문하는 것이지 해당 리소스가 달라지는 것은 아닙니다. 또한, URI에 직접 확장자가 붙게 되면 해당 리소스 URI가 응답으로 지원하는 확장자만큼 새로운 URI들이 생기게 되겠지요. 결코, 이것은 좋은 디자인이 아닙니다.Controller?기본으로 GET, PUT, POST, DELETE 요청에 1:1매치 되는 개념인 CRUD가 있습니다. CRUD의 앞글자들을 풀어보면 Create, Read, Update, Delete가 될 텐데, 각각 POST, GET, PUT, DELETE에 대응되는 개념입니다. 그런데 사실 URI를 디자인 하다 보면 이러한 방식으로 나타내기 참 어려운 경우를 많이 만나게 됩니다. 그 중 가장 많은 경우가 어떤 특정한 행위를 요청하는 경우입니다. 많은 분이 이럴 때 동사를 쓰는데, 앞선 포스팅에서 밝혔듯이 동사를 써서 URI를 디자인하는 것은 대체로 옳지 않은 방식으로 여겨집니다.이럴 때 컨트롤러 리소스를 정의하여 이 문제를 해결할 수 있습니다. 컨트롤러 리소스는 URI 경로의 제일 마지막 부분에 동사의 형태로 표시되어 해당 URI를 통해 접근했을 때 일어날 행위를 생성합니다. (개념적으로는 이렇게 받아들이시면 됩니다.) 생성과 관련된 요청이 POST이기 때문에 컨트롤러 리소스에 접근하려면 POST 요청을 보내야 합니다. 예제를 살펴보시면 이해하기 빠르실 겁니다.http://api.college.restapi.org/students/morgan/register 리소스 morgan을 등록 http://api.ognom.restapi.org/dbs/reindex 리소스 dbs를 재색인 http://api.build.restapi.org/qa/nightly/runTestSuite 리소스 nightly에 테스트를 수행 그리고 마치 프로그램의 함수처럼 컨트롤러 리소스에는 입력값을 전달할 수 있습니다. 그것은 POST 요청의 엔티티 바디에 포함되어야 합니다. 그리고 역시 함수에서 반환값을 돌려주듯이 컨트롤러 리소스에서는 해당 입력 값에 대한 응답 값을 돌려주면 되겠습니다.URI 뒤에 붙는 쿼리의 용도흔히 GET 요청을 보낼 때 뒤에 추가로 쿼리 스트링(?,=,& 기호를 이용하여)을 전달하곤 합니다. 여기서는 그 쿼리 스트링을 어떻게 디자인 하는 게 좋은지에 대한 논의와 함께 실제 서비스에서 사용되는 사례를 살펴봅니다.가령 특정 컬렉션 리소스에 대하여 질의를 보낼 때 그 컬렉션의 집합이 너무 거대할 수 있으므로 필요한 정도의 정보만을 요구하기 위해서 페이징 값 혹은 구분 값을 쿼리 스트링에 포함할 수 있습니다. 예를 들어 보면/resources?pageSize=10&pageStartIndex=0 페이징을 위한 정보 전달 /dogs?color=red&state=running&location=park 구체적인 검색 제약사항 전달 이런 식으로 써서 페이징을 한다든가 혹은 다른 파라메터(color=red)따위를 던져서 검색 범위를 제한할 수 있습니다. 흔히 쿼리 스트링을 저런 용도로 많이 사용하기 때문에 아마 관찰력이 좋으신 분들은 저런 종류의 쿼리 파라메터를 네이버, 구글 같은 포털사이트의 검색 서비스를 이용하시면서 본 적이 있으실 것입니다.이와는 약간 다르게 실제 DB에서 사용하는 SQL의 select 문과 같은 결과를 낼 수 있도록 돕는 쿼리 스트링을 URI에 나타내려는 시도도 많은 편인데요. 물론 SQL에서 제공하는 구문의 모든 의미를 다 제공할 필요는 없겠지만, 기본적으로 서비스에서 필요한 정도의 인터페이스를 적절히 제공한다면 사용자가 선택할 수 있는 옵션이 많아진다는 측면에서 좋은 방법이겠죠. 이와 관련된 예제를 몇 개 소개하겠습니다. 이것은 실제 서비스에서 API로 제공되었던 URI들입니다. 구조나 의미가 SQL 문과 상당히 유사합니다.LinkedIn /people:(id,first-name,last-name,industry) 이 경우 people 리소스를 요청하되 마치 SQL 쿼리에서 가져올 필드를 제한하는 것처럼 필요한 필드에 대해서만 괄호로 묶어서 지정한 것을 볼 수 있습니다. Facebook /joe.smith/friends?fields=id,name,picture 이 경우 이름(혹은 계정이름)이 joe.smith인 사람의 정보를 가져오되 LinkedIn의 예와 같이 필드를 제한(id,name,picture)해서 가져오도록 한 예입니다. Google ?fields=title,media:group(media:thumbnail) 구글도 마찬가지네요. 이쯤 오면 대략 저 URI가 무엇을 의미하는지 알아채셨으리라 생각합니다. URI 설계시에 주의해야 할 점URI에는 소문자를 사용해야 합니다. 왜냐하면, RFC 3986은 URI 스키마와 호스트를 제외하고는 대소문자를 구별하도록 규정하기 때문이지요.http://api.example.restapi.org/my-folder/my-doc HTTP://API.EXAMPLE.RESTAPI.ORG/my-folder/my-doc 위의 두 URI는 같은 URI입니다. 호스트에서는 대소문자를 구별하지 않기 때문이지요. http://api.example.restapi.org/my-folder/my-doc http://api.example.restapi.org/My-Folder/my-doc 하지만 위의 두 URI는 다른 URI입니다. 뒤에 붙는 path가 대소문자로 구분되기 때문입니다. 물론 소문자가 아닌, 대소문자를 섞어 쓰거나 혹은 대문자만 쓰는 것도 가능하지 않으냐는 반론이 나올 수 있습니다. 하지만 대소문자를 섞어 쓰면 URI를 기억하기 어려울 뿐만 아니라 실제 사용 시 실수하기 쉽다는 단점이 있습니다. 만약 대문자만 쓴다면 상관은 없겠으나 일반적으로는 URI에 대문자를 잘 쓰지 않기 때문에 소문자로 쓰는 것을 권장합니다.HTTP HEADERHTTP 요청과 응답을 보낼 때 특정 헤더를 포함해 요청, 응답 그리고 리소스에 대한 메타 정보를 전달할 수 있습니다. 요청 헤더와 응답 헤더에 포함되면 좋을 만한 헤더 정보들에 대하여 알아보겠습니다.요청 헤더Accept응답으로 받고 싶은 미디어 타입을 명시하기 위하여 사용됩니다. 예제를 들어 설명하겠습니다.GET /magna-opus HTTP/1.1 Host: example.org Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 이 요청은 mangna-opus 리소스에 대해서 기본적으로는 html이나 xhtml의 형식으로 응답을 받고 싶되, 만약 상황이 여의치 않으면 xml을 만약 그것도 여의치 않다면 모든 응답(*/*)을 받아들이겠다는 것을 말합니다. 옆에 붙은 q가 선호도를 나타내게 되지요. (q 생략 시 1값을 가짐) 만약 앞의 예에서 모든 응답에 대한 표시가 없다고 가정하고 서버에서 앞의 세 가지 미디어 타입을 모두 지원할 수 없는 상황이라면 응답으로 406 상태코드를 내보내야 합니다.Accept-Charset응답으로 받고 싶은 캐릭터셋에 대하여 명시하는 헤더입니다.Accept-Charset: iso-8859-5, unicode-1-1;q=0.8 가령 위의 예제는 일단 iso-8859-5를 선호하지만 unicode-1-1도 괜찮다는 메시지를 전달합니다.User-Agent현재 요청을 보낸 Agent의 정보를 표시하기 위해 사용됩니다.User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0 파이어폭스 버전 21.0의 UA스트링, OS에 대한 정보도 담겨져있다. Referer해당 요청을 보내기 바로 직전에 참조하던 리소스 혹은 주소에 대한 정보를 나타내기 위해 사용합니다.Referer: http://en.wikipedia.org/wiki/Main_Page 응답 헤더Content-Length요청과 응답 메시지의 엔티티 바디가 얼마나 큰지에 대한 정보를 나타내기 위해 사용합니다. 단위는 바이트입니다.Content-Length: 348 Last-Modified해당 리소스가 마지막으로 갱신된 시간을 나타내기 위하여 사용됩니다. 캐싱 정책과 관련되어 중요한 헤더중 하나입니다.Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT 캐시나 쿠키정책과 관련된 헤더 정보는 글의 분량을 고려하여 생략하였지만, 매우 중요한 헤더 중 하나이므로 다른 관련 문서들을 검색하여 일독을 권합니다.HTTP 상태 코드의미에 잘 맞는 URI를 설계하는 것도 중요한 일이지만 그 리소스에 대한 응답을 잘 내어주는 것 또한 중요한 일입니다. 그런데 혹시 HTTP의 상태코드 중 200이나 404코드 정도만 알고 계시지 않으신가요? 그 코드의 정확한 의미를 얘기하실 수 있으신가요? 사실 저도 흔하게 볼 수 있는 상태코드 몇 개 정도만 알고 있고 나머지 상태코드의 정확한 의미라든지 쓰임새에는 관심이 별로 없었던 것이 사실이었습니다. 하지만 전문적으로 웹 개발의 길을 걸어갈 사람이라면 그보다는 좀 더 자세히, 많이 알고 있을 필요가 있겠지요. 사실 우리가 생각하는 것보다 훨씬 많은 상태코드가 존재하고 각각 그 쓰임이 다 다릅니다. 그 중 몇 개를 살펴보겠습니다.200 : OK일반적인 요청 성공을 나타내는 데 사용합니다. 단, 주의해야 할 점이 있다면 200코드를 에러 응답에 사용하면 안 된다는 것입니다. 가령 코드는 200인데 에러메시지를 포함한다든가 하면 의미에 맞지 않은 응답코드를 보낸 것이겠지요. 이런 적절치 못한 상황을 처리하는 경우에는 4XX대 코드를 사용하여야 합니다.201 : Created리소스 생성 성공에 대한 응답 코드입니다. CRUD 요청에서 Create 요청에 대한(즉, 컬렉션에 도큐먼트 추가 같은) 응답으로 내보낼 수 있는 응답코드입니다. 응답 헤더의 Location 필드에 생성된 리소스에 접근할 수 있는 URI를 포함할 수 있다면 브라우저에서 그 값을 참조하여 적절히 대응할 수 있겠습니다.202 : Accepted대체로 처리 시간이 오래 걸리는 비동기 요청에 대한 응답으로 사용됩니다. 즉, 이 요청에 대한 응답이 결과를 포함하지 않을 수 있다는 것이죠. 하지만 최소한 응답 헤더나 응답데이터에 해당 처리를 모니터링할 수 있는 리소스 페이지를 안내하거나 혹은 해당 리소스가 처리되기까지의 예상 경과 시간 따위를 안내하는 것이 더 좋은 설계라고 할 수 있겠습니다.301 : Moved Permanently리소스가 이동되었을 경우의 응답코드입니다. 새로 리소스가 이동된 URI를 응답 Location 헤더에 명시해야 합니다. 이 응답을 받은 클라이언트는 새 URI로 이동하든지 아니면 URI를 갱신하고 캐싱을 한다든지 하는 행위를 해야 되겠지요.400 : Bad Request일반적인 요청실패에 사용합니다. 대체로 서버가 이해할 수 없는 형식의 요청이 왔을 때 응답하기 위해 사용됩니다. 무턱대고 400에러를 응답으로 주지 말고, 다른 4XX대의 코드가 더 의미를 잘 설명할 수 있는지에 대하여 고민해야 합니다.401 : Unauthorized말 그대로 리소스 접근 권한을 가지고 있지 않다는 것을 의미하기 위한 응답코드입니다. 리소스를 획득하기 위하여 요청자는 인증에 필요한 헤더(가령 Authorization 헤더 같은)나 데이터를 첨부해야 할 것입니다. 필요한 헤더나 데이터는 서버 쪽에서 요구하는 스펙을 충실히 따라야겠지요.403 : Forbidden감춰진 리소스에 접근하려 할 때의 응답코드입니다. 401과 달리 인증의 여부와 관계없이 리소스를 보여주지 않습니다. 기본적으로 클라이언트 쪽에 정보를 공개하고 싶지 않은 리소스임을 나타내기 위해 사용합니다.404 : Not Found해당 URI와 매치되는 리소스가 없다는 의미를 전달합니다. 어지간한 사람들은 다 한 번씩(?) 마주치게 되는 응답코드이지요.405 : Method Not Allowed지원하지 않는 요청(예를 들어 POST 요청을 받는 컨트롤러 리소스에 GET 요청을 보낸다든가)을 하였을 때 사용합니다. 가능하다면 응답 메시지에 Allow 헤더를 추가하고 그곳에 지원하는 메서드를 명시하여 클라이언트 측에서 정확한 요청을 보낼 수 있도록 유도합니다.Allow: GET, POST 406 : Not Acceptable해당 미디어 타입(MIME 타입)에 대해서 지원하지 않을 때 사용합니다. 요청 Accept 헤더에 명기된 타입(가령 Application/xml)에 대해서 지원이 불가능할 경우에 돌려주면 되는 코드입니다.409 : Conflict요청의 형식에는 문제가 없지만 리소스 상태에 의하여 해당 요청 자체를 수행할 수 없는 경우의 응답코드입니다. 즉, 이미 삭제된 리소스를 또 삭제한다든가 비어있는 리스트에서 무언가를 요청한다든가 하는 모순된 상황을 생각해보면 되겠습니다. 응답으로는 그 방법을 어떻게 해결할 수 있을지에(혹은 문제가 무엇인지) 대한 힌트가 포함되면 좋을 것입니다.500 : Internal Server Error일반적인 서버 에러에 대한 응답코드입니다. 4XX대의 에러코드가 클라이언트 측 에러를 나타내기 위해 사용된다면, 5XX대의 에러코드는 서버 측 에러를 나타내기 위해 사용됩니다.503 : Service Unavailable가장 두려운(?) 응답코드 중 하나일 503입니다. 현재 서버에 과부하가 걸려있거나 유지보수를 위하여 잠시 접근이 거부될 때 필요한 응답코드입니다.그냥 맨 앞의 숫자별로 퉁쳐서 상태코드를 내보내지 않고, 이렇게 디테일한 의미까지 따져가면서 상태코드를 내보내는 것에 대해서 그 효용성에 의문을 제기하시는 분들이 있을 것 같습니다. 하지만 브라우저에서 혹은 서버 단에서 특정 상태코드에 대해서 내부 구현을 달리하거나 최적화를 통해 더 쾌적한 환경을 제공할 가능성이 있으므로 되도록 의미에 걸맞은 상태코드를 사용하는 것을 생활화하는 것이 중요합니다. 또한, 이렇게 디테일한 상황을 가정하고 만든 URI들이 다음에 서비스를 확장할 때 큰 도움이 될 것임은 의심할 여지가 없겠지요.위에서 소개한 응답 코드 말고 또 다른 응답 코드들에 대해서도 전부 소개해 놓은 링크를 밑에 달아두었으니 참고하시기 바랍니다.정리지금까지 소개한 내용이 조금은 두서없게 느껴졌을 수도 있겠다는 생각이 들어 한 번 전체 내용 정리를 해보려 합니다.컨트롤러의 정확한 쓰임을 알고 적절한 컨트롤러 URI를 구현하자.URI에 추가로 붙게 되는 쿼리 스트링의 형식을 잘 디자인하여 사용자로 하여금 적재적소에 쓸 수 있도록 하자.가능하다면 이용 가능한 HTTP 헤더를 적절하게 첨가하자.HTTP 상태코드의 의미에 대해서 생각해보고 상황에 맞는 적절한 상태 코드를 응답으로 보내줄 수 있도록 하자.이 글을 쓰면서 한빛 미디어의 일관성 있는 웹 서비스 인터페이스 설계를 위한 REST API 디자인 규칙과 apigee사의 web API design eBook을 참고하였습니다. 둘 다 내용이 좋은 서적이고 이 글에서 다루지 않은 심층 내용을 다루니 기회가 되시면 읽어보세요.referencesUniform resource identifierapigee api design best practicesrestful uri designHTTP status codesList of HTTP status codesURI schemeMIME typesMIMEfun and unusual http response headers#스포카 #디자인 #디자이너 #디자인팀 #개발 #개발자 #개발팀 #협업 #코워킹 #Co-working #업무프로세스 #꿀팁 #인사이트
조회수 4798

직접 당하고 뼈저리게 배운 스타트업 투자사기

2016년 1월 12일 한 통의 전화가 왔었다. 전화 내용은 EBS 티비 뉴스/인터넷에서 우리 회사인 ‘유니브북’이 나오는 것을 보았고 사업적으로 흥미가 있다는 내용이었다. 자신들은 강력한 대학교 네트워크를 가지고 사업을 하는 대학교기술지주 자회사인 ‘대학XXXXXXX’ 김XX 대표인데 동업을 하고 싶다고 자신의 사무실로 와서 미팅을 하자는 것이었다.김XX 대표는 자신의 기업에 대한 어필을 거의 두 시간동안 했다. 대학교 네트워크를 훌륭하게 가지고 있어서 대학 확장을 쉽게 할 수 있다는 내용이었다.우리는 그당시 대학교를 확장하는 것에 있어 굉장히 힘들어하고 있었던 상태였기때문에 꽤 매력적으로 느꼈었다.김XX 대표는 자신의 기업과 우리기업인 ‘유니브북’, 각 기업이 가진 장점을 살리고 힘을 합쳐 함께 새로운 법인을 만들고 조인트벤처인 신설 법인을 새롭게 만들어 투자받자고 말하였다.신설 법인의 Post-value는 10억(Pre-value 7억)으로 하고 3억을 투자받아 30%를 투자자에게 주자고 말하였다. 그래서 새롭게 만드는 법인의 지분은 투자자의 지분(30%)을 제외하고 반반(35%[나],35%[김XX대표])으로 나누어서 새롭게 유니브북이라는 이름과 아주 유사한 법인명을 만들어서 법인을 만들자고 하였다. 나는 김XX 대표에게 왜 기존 유니브북으로 투자를 진행하지 않고 신설법인에 투자받아야 하냐고 물어보니 기존 유니브북 법인은 자본금이 50만원밖에 되지 않기에 3억이라는 투자금을 담는 것이 힘들다고 하였다.그렇게 말하며 김XX대표는 “태준아 너는 현재 대학원생이고 경제적인 여유가 충분하지 않으니 내가 사비 1000만원을 들여 신설법인을 만들고 그 신설 법인에 투자를 받은 후 나중에 지분을 분배하는 방향으로 가자”고 말했다.김XX 대표는 예전 VC에서 일했던 경력이 있어 어려운 용어를 써가며 설득했다. 그 당시 나는 순진하게 대표이사는 보장해준다는 말을 믿고 자신이 1천만원을 써서 회사를 만들겠다는 말을 별 의심없이 진행하기로 했다.그 후 신규법인은 투자유치에 성공했다.그 당시 학생들에게 구매한 도서 매입비용을 지급해야 했었는데 3억 원의 투자금이 들어왔으니 기존 유니브북이 가지고 있던 자금으로는 사업에 필요한 ‘도서 매입함’을 600만 원 정도 구입하고, 학생들에게 책을 구매한 비용은 신설 법인의 투자금으로 600만 원정도 지급했다.하지만 투자가 유치된 후 김XX 대표는 말이 달라졌다. 1,000만원을 들여서 자신의 명의로 신설법인을 만들었고 그에 투자까지 들어온 상황에서 대학 확장을 원활하게 하기 위해서는 대학 교직원(자신의 이해관계자들)에게 지분을 나눠주어야 하기 때문에 교직원 이해관계자 지분을 30% 더 떼어놓고(그렇게 되면 남는 지분은 투자자 지분을 제외하고 총 40%)이를 자신이 차명으로 가지고 있겠다고 말했다. 애초에 동업조건이 그쪽에서는 대학 네트워크를 지원하는 조건이었기 때문에 동업을 한 것인데 네트워크를 활용하는데 차명으로 지분을 보유한다는 것이 말이 안된다고 생각하였다.또한 신규 법인의 이사회도 자신의 애인 및 지인으로 구성하였고 그 당시 나에게는 지분을 20%밖에 줄 수 없다고 말했다. 내 입장에서는 내 아이템으로 투자받은 건데 최종 지분이 20%인말도 안되는 조건이었다.그리고 가장 중요한 것이 그 20%를 주는 조건으로 내가 가지고 있었던 기존 회사인 ‘유니브북’을 넘기는데 신설법인의 명의도 아닌 자신 개인의 명의로 기존 ‘유니브북’의 지분 100%를 넘기라고 말했다.[위 그림파일] 김 XX 대표가 제시했던 계약서 파일이 계약서는 기존 회사를 신규법인에 합병하는 것이 아니라 김XX대표 개인 명의로 넘기는 것 자체가 말이 안되었다.신규법인의 이사회는 김XX 대표 애인, 지인으로 되어있는데 아래 대표이사 선임을 이사회에서 결정한다면 김XX 대표의 의지에 따라 모든 것이 결정되는 것이었다.주주또한 김XX대표 및 그의 우호지분이 절대 다수이기에 주주총회, 이사회에서 아무런 힘도 못쓰는 완전한 바지사장 대표이사가 되는 조건이었다.당연히 이 계약서에는 동의할 수 없었고 메일로 힘들 것 같다고 보내니 “계약을 못한다고?”라고 말하며 그쪽에서 계약파기에 대한 모든 책임을 나에게 덮어씌우고 어차피 지분은 주지도 않은 상황이고 니꺼인거 하나도 없으니 나가라는 식의 입장을 보였다.동시에 도서 매입금으로 사용했던 600만 원을 당장 달라고 이야기했다. 카이스트 SE MBA에 연결된 SK 사회적기업가센터를 통해 법률회사를 찾아갔지만 대처할 수 있는 방안이 마땅히 없었고 기존 유니브북의 현금이 전혀 없는 상황이었기에 내명의로 신한은행에서 카드론을 500만원 받고, 한국장학재단에서 대출 100만원을 받아 거기에 돈을 지급했다.조금씩 갚으며 이번 달을 마지막으로 대출금은 다 갚았다. 지나간 일이지만 엄청 힘들었었다. 금전적인 것 뿐만 아니라 한 순간에 내 사업을 전부 빼앗겼다는 점, 조금이나마 믿었던 사람에게 배신 당했다는 점, 바보같이 당하기만 했다는 점 등 자책하고 반성하는 시간을 가졌다.하지만 이 사건을 통해 비싼 수업비로 많은 것을 배웠다고 생각한다. 나는 처음 동업에 대한 이야기가 나왔을 때부터 아래와 같은 일을 했어야했다.1)동업자간 계약서를 체결해야했으며2)동업, 투자이야기가 나왔을 때 변호사 or 법률회사의 자문을 받으며 모든 사항들을 진행해야 했다.3) 좋게좋게 하자는 형태가 아닌 모든 내용을 문서로 남겼어야했다.그리고 투자는 좋은 곳으로부터 받아야한다는 것도 아주 크게 느꼈다. 밸류에이션, 투자금보다 좋은 투자사가 가장 중요하다는 점을 느꼈다. 그리고 사건을 처리하고 마무리하며 카이스트창투사 정재호 이사님 및 여러분들로부터도 아주 큰 도움을 받아 진짜 도움을 줄 수 있는 사람이 누구인지도 알게 되었다.이후 다시 일어서서 힘든 점들은 모두 잊어버리고 16년 7월부터 기존에 기획하고 있었던 온라인 서비스 신사업을 새롭게 개발하여 아이템을 조금 피벗하였고 성공적으로 런칭할 수 있었다. 그렇게 개발한 새로운 서비스가 현재는 MAU기준 약 12.5만 명이 나오며 월매출도 매월 30%씩 성장하고 있다.또한 지금은 ‘프라이머’라는 좋은 투자자, 좋은 멘토님들을 얻게 되었고 이전보다 훨씬 성숙한 기업가가 된 것 같다.이 세상엔 나쁜 사람들, 이상한 사람들이 정말정말 많으니 스타트업 하시는 대표님들 모두 나의 케이스를 보며 이와 같은 실수를 하지 않기를 바란다.#모두의캠퍼스 #스타트업창업 #창업가 #창업자 #CEO #조언 #경험공유 #인사이트 #대표
조회수 2424

꼰대질은 정말 나쁜가?

젊은 꼰대가 더 노답인 이유'꼰대는 나이의 문제가 아니라 공감능력의 문제다.' 「무례한 사람에게 웃으며 대처하는 법」의 저자인 정문정 작가의 말이다. 몇번을 곱씹어 봐도 맞는 말이다. 적어도 내가 살아온 시간을 더듬어 보면 나이든 꼰대도 많았지만 또래인 꼰대도 적지 않았다. 특유의 허세와 과시가 불편했고 그들을 이해하기 위한 노력은 몇 배 더 힘들었다. 꼰대는 어디서든 환영받지 못한brunch.co.kr/@moonkka/30 새벽에 이 글을 읽었다.많은 호응과 인기가 있는 것을 보고 조금 안타까운 마음이 들었다. 언젠가부터 우리 사회의 추가 한 쪽으로 기울어져 있는 것은 아닌가하는 생각이 든다.공감과 부정. 따뜻함과 냉철함.안정과 성장.이 모든 것들은 서로 무엇이 더 중요하다고 말할 것도 없이 중요한 부분이며 균형을 이뤄야 한다고 생각한다. 그리고 사람 개개인의 가치관에 따라 그것이 조금 기울어질 수 있을지언정, 사회 전체의 기류에 있어 균형이 깨질 경우엔, 그것은 문제가 될 수 있다.내가 처음 창업했을 때 내 주변에는 나보다 어린 사람이 없었다. 주변의 형들, 형님들, 사장님들의 98%는 나를 동생처럼 여겼다. 그들은 나를 거리낌 없이 혼내고 조언해줬다. 물론 누가 싫은 소리를 하면 기분이 좋지는 않다. 당시엔 나도 크게 저항했고 지금도 그렇다. 그러나 늘, 돌이켜 생각하면 큰 천운이며, 인복인 것 같다.순간적인 감정을 조절하지 못하고 대들어서 감정적으로 상대방의 지혜를 막아서버린 자신에 대한 후회만 들 뿐이다.위 글에서 저자는 남의 일에 간섭하는 사람을 꼰대라고 표현했는데, 자신에게 공감만 할 줄 아는 사람만 내 측근으로 두게되면 지금의 내가 갖고 있는 시야 밖을 잘 보지 못한다. 누군가 내 일에 간섭하고 비판해주는 것은 무료 컨설팅과 똑같다. 글쓴이가 표현하는 ‘꼰대질’은 생각보다 큰 에너지를 필요로 한다. 숨가쁘게 남에 대해 조언해주다 보면 힘이 빠진다. 그 정도로 그 사람의 입장에서 내 시각을, 조언을 전달해줘야하는 매우 고차원적인 작업이다. 그 에너지를 누군가 나에게 주는 것 만으로 돌이켜보면 감사할 뿐이다.나이가 들면서 옛날만큼 날 혼내는 사람은 점점 줄어드는 것 같다. 그리고 언젠가는 나도 이런 기회를 더 많이 잃어버릴 것이다. 누군가로부터 훈계를 받고, 지혜를 얻고 성장하는데도 시기가 있는 것이다.언젠가부터 우리 사회는 ‘공감’을 최우선의 가치로 여기고 나머지는 모두 ‘꼰대질, 간섭’으로 묶어 평가절하 하는 것 같다.지식은 누구의 기분도 상하게 하지 않으나, 지혜는 때로는 우리의 심리적 안락에 위해를 가한다.지식은 난무하되 지혜는 없는 세상으로 가고자 하는 것이 맞는 것일까? 왜 성공한 사람들은 지금의 고통받는 사람들에게 공감을 해주고 거기서 멈추는 것일까. 왜 사람들이 원하는 이야기들만 해주고, 절대 다수로부터 사랑받고 싶은걸까.그들은 무엇으로 성공의 가도에 올랐을까. 무슨 지혜를, 무슨 이야기를 듣고 남들에게 자신의 의견을 말할 수 있는 위치까지 올라갔을까.왜 그 이야기는 하지 않는 것일까.나름대로의 성공을 하여 세상이 아름답게 보이면, 그 아름다운 세상을 보지못하는 사람들에 대한 연민이 생기는 걸까?꼰대소리를 듣기 싫어 조언을 잘 안하는 사람들도 이제 아주 많아졌다. 균형은 깨져가고 세대간 갈등은 심화되고 있다. 나와 같은 젊은층의 심리적 안락도 중요하지만, 선대의 지혜를 흡수하고 전수받는 것도 중요하다. 균형은 깨져선 안된다.나는 원래 꼰대라는 말을 싫어한다.그리고 정말 아쉽게도, 나는 이 분이 말하는 젊은 꼰대의 부류다.
조회수 1664

Infrastructure dashboard

와탭랩스는 IT 서비스를 운영하는 개발팀과 운영팀에 도움이 되는 솔루션과 서비스를 만드는 스타트업입니다. IT 서비스를 잘 운영하게 위해서는 Infrastructure의 전반적인 상황을 항시 체크할 수 있어야 하는데요. 이런 기능을 하는 대표적인 화면이 대시보드 입니다. 최근 와탭랩스는 Infrastructure 모니터링 서비스에 대시보드를 넣는 작업을 진행하고 있는데요. 와탭랩스는 대시보드를 통해 Infrastructure를 운영하는 개발팀과 운영팀에 어떻게 도움을 줄 수 있도록 할 것인지 소개하겠습니다. 1. IT 서비스 운영에 사용된 인프라 자산 현황을 알아보자지금 회사에서 사용하는 서버의 대수를 알고 계신가요? 현재 동작하는 서버는 몇대인지 혹시 죽어있는 서버가 있는지 등에 대한 정보는 운영팀에서 항상 체크하는 정보입니다. 하지만 개발팀에서는 잘 모르는 정보이기도 하죠. 이런 기본적인 정보가 대시보드에 나온다면 평소 서비스를 운영하는 감을 잡는데 도움이 됩니다. 이런 정보들은 간략한 수치로도 표현할 수 있는데요. 우리는 아래와 같은 데이터를 수집할 수 있습니다. 서버 기본 정보 (inactive servers / all servers)우리가 사용하는 총 서버의 수자와 비활성화된 서버의 숫자는 우리가 항상 알고 있어야 하는 정보입니다.운영체계별 서버 정보 (Linux / Windows / Unix)운영체계를 섞어 사용하는 경우에는 운영체계에 따라프로젝트가 나눠지기도 합니다. 그렇기 때문에 운영체계별로 서버의 총량과 비활성화된 서버 정보를 알면 도움이 됩니다. 프로세스 수프로젝트의 프로세스 수는 일정한 경우가 많습니다. 전체 프로세스의 숫자가 변경된다면 서비스의 운영 상황에 대해 의문을 가져야 합니다. 이벤트 개수24시간동안 발생한 전체 이벤트의 개수와 아직 해결하지 못한 이벤트의 개수를 보여줍니다. 하루동안 얼마나 많은 이벤트가 발생하는지 그리고 아직 해결하지 못한 이벤트가 있는지 알수 있습니다. 디스크 사용량/전체 용량디스크 사용량은 일반적으로 큰 변화를 가지지 않습니다. 디스크 사용량이 평소와 다르다면 서비스의 장애가 발생했거나 발생할 가능성이 높습니다. 메모리 사용량 / 전체 용량메모리 사용량은 일반적으로 큰 변화를 가지지 않습니다. 메모리 사용량이 평소와 다르다면 서비스의 장애가 발생했거나 발생할 가능성이 높습니다. 수치 데이터의 예 2. 서비스를 구성하는 인프라의 CPU 흐름 전체를 알아보자 CPU 사용량은 변화량이 많은 지표입니다. 변화량을 비교하는 챠트로는 라인 차트가 가장 많이 쓰이지만 라인 차트는 개수가 많아지면 전체 상황이 보이지 않는 문제점을 가지고 있습니다. 또한 실시간으로 추가되거나 삭제되는 인프라가 생기는 클라우드 인프라 상황에서 라인챠트는 표현의 한계를 가지고 있기도 합니다. 이런 문제를 해결하기 위한 방법으로 아래와 같은 온도 차트를 사용할 수 있습니다. 온도 차트는 단위 영역에 밀도에 따라 색상으로 깊이를 표현하는 방식입니다. 최근 많은 양의 데이터를 표현하는 방식으로 많이 사용되고 있습니다. 온도 차트의 예3. 경고가 발생했는지 또는 해결 되었는지 알고 싶다.  CPU 사용량이 설정치 이상으로 높아지거나 디스크 사용량이 높아지거나 프로세스가 사라지는 등 다양한 상황에 대한 이벤트가 발생할 수 있습니다 이런 상황을 쉽게 확인할 수 있다면 서비스 운영 상황에 도움이 됩니다. 이벤트 관리의 예이런 스토리를 기반으로 와탭랩스에서 대시보드를 기획하고 있습니다. 개발자와 디자이너가 함께 토론하고 논의하면서 화면과 스토리를 더 다듬게 되면 첫번째 화면이 나올 예정입니다. 아래는 기획과정에서 나온 화면 리소스 입니다. 아직 기획 단계이기는 하나 첫번째 대시보드가 완성되면 이 페이지가 메인으로 올라갈 예정입니다. 대시보드는 데이타의 종류와 위치등을 수정할 수 있으면 좋지만 우선은 고정형으로 개발하여 제공할 예정입니다. 이번 대시보드는 서비스 첫번째 의미가 강한 메인 화면의 성격에 더 초점을 맞추고 있습니다. 아직 몇몇 논의되는 사항이 많은 화면이지만 빠르게 개발하여 가능한 이른 시일에 소개드리도록 하겠습니다. #와탭랩스 #개발자 #개발팀 #인사이트 #경험공유 #일지
조회수 8921

왜 SQLite 에서 Realm 으로 옮겼는가?

SQLite 와 Realm잔디 앱은 2015년 중반부터 앱 내에 Offline Caching 기능이 포함되면서 본격적으로 Local-Databae 를 사용하기 시작했습니다.당시에 Realm 과 SQLite 를 검토하는 과정에서 다음과 같은 사유로 Realm 을 포기하였습니다.1.0 이 아직 되지 않은 미성숙된 상태의 라이브러리사용 사례에서 리포팅되는 버그들 (CPU 지원 등)Data 의 상속을 지원하지 않는 문제Robolectric 미지원 (안드로이드 팀 당시 테스트 프레임웍은 Robolectric 이었으며 현재 Android Test Support Library 입니다.)위의 문제로 인해 SQLite 를 선택하였고 여러 SQLite-ORM Library 를 검토한 후 ORMLite 를 선택하였습니다.누구보다 가볍고 빠르게2016년 6월경 앱의 핵심 데이터에 대해 개선작업이 되면서 그에 따라 기존의 Cache Data 로직도 많은 부분이 변경되었습니다. 그에 따라 실시간성으로 DB 를 대상으로 Read-Write 동작이 발생하게 되었습니다. Locking 등에 대한 처리가 되면서 성능에 대한 이슈가 계속적으로 발생할 수 밖에 없었습니다.간헐적인 성능 이슈는 사용자에게 나쁜 UX 로 다가갈 수 있기 때문에 다음과 같은 병목지점들에 대해 성능 향상을 꾀하였습니다.서버와의 통신 향상비지니스 로직 개선내부 DB 로직 향상서버와의 통신 향상병목 지점이 되는 것으로 판단되는 API 를 찾아 원인을 분석하여 개선요청을 서버팀에서 개선할 수 있도록 하였습니다.비지니스 로직 개선불필요한 객체 생성, 비동기로 처리해도 되는 동작들에 대해서는 로직 수정, 최소한의 검증 후에만 앱 실행, 네트워크 동작 최소화, 캐싱 활용 등 다양한 전략을 시도하였습니다.내부 DB 로직 향상SQLite 를 대상으로 빈번한 쿼리 작업을 최소한으로 하기 위해 2~3개의 쿼리로 이루어진 부분에 대해서 최소한의 쿼리만으로 동작하도록 여러 시도를 하였습니다.ORMLite 의 한계점ORMLite 를 대상으로 여러가지 시도를 하였습니다. 쿼리를 최소한으로 하고 1:N, N:M 동작에 대해서 로직 중간에 Query 가 발생하지 않도록 애초에 Join Query 를 하도록 하는 등 여러가지 전략을 시도하였으나 궁극적으로 ORMLite 자체에 대한 성능을 개선하는 것은 불가능하다는 결론이 도출하였습니다.여러 시도를 하였으나 고작 10~20% 정도의 성능향상밖에 없었으며 이는 사용자 관점에서 여전히 느릴 수 있다고 느끼기 충분한 수준이었습니다. 기존에 목표했던 100ms 이하의 쿼리를 기대하기엔 어려운 상황이었습니다.그래서 GreenDAO, Requery 라이브러리를 검토하였습니다.GreenDAO 의 문제점GreenDAO 를 검토하는 과정에서 겪은 가장 큰 문제점은 실제 Object 코드에 GreendDAO 코드가 생성이 붙으면서 유지보수에 큰 걸림돌이 될 수 있다는 것이 예상되었습니다.Requery 의 문제점성능면에서 ORMLite 에 비해서 큰 개선을 가져오지 못했습니다. Requery 는 JPA 를 가장 잘 채용한 것으로 알려져 있지만 그렇다고 SQLite 자체의 성능을 극적으로 개선했다고 보기엔 어려운 부분들이 있었습니다.SQLite vs RealmSQLite 가 가진 자체적인 성능 이슈를 SQLite 기반 라이브러리 범위안에서는 개선할 수 없다는 결론에 도달하였습니다.검토 방법 : 기존의 Object 를 대상으로 ORMLite 와 Realm 을 대상으로 성능을 검토합니다.데이터는 1:N / 1:1 관계가 되어 있는 여러 Object 의 집합으로 구성되어 있다.Database 에서 데이터를 가져올 때는 Eager Loading 방식으로 택한다.Write : 20회, Read : 20회 를 수행했고 그에 대한 평균 성능을 비교한다. SQLiteRealm성능 향상Write4039ms1142ms3.5xRead6010ms2450ms2.5x(Realm 의 벤치마크 정보와 너무 상이하여 재테스트한 결과 수정하였습니다.)위의 비교차트에서 봤듯이 Realm 은 무시무시한 성능이 입증되었습니다.도입 검토시에 Realm 버전은 2.0 이었기 때문에 충분히 신뢰할 수 있을 만큼 성숙되었다고 판단하고 최종적으로 도입을 결정하였습니다.Realm 도입 과정에서 문제점Realm 을 도입한다고 해서 여전히 잠재적인 문제가 해결된 것은 아니었습니다.파악된 다음 문제를 해결 해야 했습니다.Primitive 타입에 대해 Collection 저장을 지원하지 않는다.RealmObject 에 대한 호출 Thread 를 유지해야 한다.상속을 지원하지 않는다.Primitive 타입에 대한 Collection 관리를 해결하기이 문제는 ORMLite 에서 이미 겪었기 때문에 의외로 쉽게 구할 수 있었습니다. long, int 등에 대한 Wrapper 를 만들고 Json Convert 등의 과정에서 Post Processing 과정에서 Wrapper 로 데이터를 이관하도록 처리하였습니다.// example class Data extends RealmObject { private transient List refs; private List refIds; } class RealmLong extends RealmObject { private long value; } RealmObject 에 대한 호출 Thread 분리Realm 은 Object 에 대해 query 후 객체를 받는다 하더라도 실제로 객체 내 데이터르 접근할 때는 다시 Query 로 접근하기 때문에 실제로 Object 전체에 대해서 Eager Loading 방식으로 접근해야 합니다.Jandi 는 싱글톤 객체를 통해 데이터베이스에 접근하며, Background Thread 에서 진행하고 UI Thread 에서 객체 내 변수에 접근해서 UI 에 그리는 작업이 빈번하기 때문에 Thread 독립을 반드시 해야했습니다.Realm 에서는 Eager-Loading 을 지원하고 있습니다. Realm.copyFromObject() 를 사용하면 Return 값이 Eager-Loading 된 Object 가 반환됩니다.단, Realm 의 가장 큰 특징이로 보는 ZeroCopy 를 포기하는 것이기 때문에 신중하게 생각해야 합니다.// example public Chat getChat(long chatId) { return execute((realm) -> { Chat it = realm.where(Chat.class) .equalTo("id", chatId) .findFirst(); if (it != null) { return realm.copyFromRealm(it); } else { return null; } }); } 상속을 지원하지 않는다.가장 큰 문제였는데 해결방법을 찾을 수 없어 결국 상속을 포기하고 모든 Data 를 1개의 Object 에 표현하기로 하였습니다.위의 3가지 문제를 이렇게 해결해서 안드로이드팀에서는 1차적으로 도입을 완료하였습니다.결론현재까지 Realm 전환에 있어서 성공적인 도입으로 판단되어 차후에 다른 데이터에 대해서도 하나씩 DB 이전을 할 예정입니다.Realm 은 이제 충분히 신뢰할 수 있을만큼 성숙되었다고 생각이며 Realm 에서 처음부터 강조하던 성능또한 믿기 어려울 정도로 빨라졌습니다. 더 빠른 Mobile Database 를 원하신다면 Realm 을 적극 추천합니다.#토스랩 #잔디 #JANDI #개발 #개발환경 #업무환경
조회수 3446

우리 팀의 네오를 찾다

<출처: 영화 매트릭스>이 파란 약을 먹으면, 이야기는 끝나고빨간약을 먹으면, 이상한 나라에 남는다.나는 토끼 굴이 얼마나 깊은지 보여주겠지...명심하게나는 자네에게 진실만을 제안한다는 것을우리가 모두 알고 있는 매트릭스의 명대사.스타트업이라는 세계가 이미 일하고 있는 사람으로서 낭만과는 거리가 멀다는 것을 잘 안다. 그래서 누군가를 이 세계로 끌어들이는 것만큼 조심스럽고 어려운 게 없다. 단순히 보수를 줄 수 있다고, 성공을 보장할 수 있다고 같이 하자고 할만큼 단순한 문제가 아니다. 하지만 계속 찾아야 했다. 새로운 세계를 만드는 일은 절대 혼자서 해낼 수 있는 게 아니다. 나는 그렇게 끊임없이 우리 팀의 “네오”를 찾았다. 그렇다면 우리는 어디에서 최고의 파트너를 찾아야 할까? 스타트업에 뛰어 드는 많은 이들이 스스로를 주인공이라고 생각한다. 물론 우리 자신이 인생의 주인공은 맞지만, 내가 하는 사업의 주인공이 될 필요는 없다. 주체적인 삶을 살고 싶어서 시작했는데 내가 주인공이 되지 말라고?아마 스타트업에 관심 있는 사람이라면 넷플릭스에서 공유한 기업 문화 문서를 보았을 것 이다. (못 봤다면 여기에서: https://www.slideshare.net/watchncompass/freedom-responsibility-culture) 스타트업은 스포츠 팀이다. 스포츠에서 팀이 이기기 위해서는 모든 멤버가 스타 플레이어일 필요가 없다. 오히려 숨은 조력자가 팀이 이기기 위해서 얼마나 필요한지 잘 알고 있다. 우리가 박지성 선수의 위대함을 잘 알고 있듯이 말이다.20대 중반만 하더라도 나는 창업을 시작하며 내가 주인공이 되고 싶었다. 무엇이든 혼자 결정하고 밀어 붙이는 게 편할 때도 있었다. 그러나 거기서 끝이었다. 혼자서는 돈을 벌 수 있지만 세상을 바꾸는 일은 할 수 없었다. 그때부터 내 목표는 바뀌었다. 위대한 팀을 만들고 싶다는 생각으로. 내가 주인공이 되겠다는 생각을 버렸을 때야말로 팀에 필요한 최고의 파트너들을 만날 수 있었다.<출처: 슬램덩크>더팀스를 시작한 계기가 채용 문화를 바꿔보자는 거창한 생각보다 대단한 잠재력을 사람을 찾고 싶었을 뿐이다. 대부분의 채용공고를 보면 경력 혹은 스킬을 최우선으로 요구한다. 물론 회사에 당장 필요한 사람을 찾기 위한 하나의 방침일 수 있다. 하지만 잠재력은 어떻게 찾을 것인가? 나는 항상 상상했다. 만약 한국에 저커버그, 스티브잡스가 있다고 한다면 그들을 어떻게 나와 같이 일하게 할 수 있을지.요새 가장 핫이슈인 추천 채용. 처음엔 나도 이용해 보고 싶었다. 그만큼 명료한 인재 매칭 방식도 드물기 때문에. 그런데 정말 내 주변에 최고의 인재가 있다고 한다면 그 사람을 굳이 다른 회사에게 소개시켜 줄까? 그냥 내가 같이 일하면 되는거 아닌가? 뛰어난 인재가 단지 소개로 회사를 결정할까? 이미 세상에 존재하는 방식으로는 내가 원하는 팀을 만들 수 없다는 것을 알았다. 가슴 뛰게 만드는 회사, 자부심을 느낄 수 있는 회사로 느껴져야만 최고의 인재들이 움직인다는 것을 깨달았다.물론 모든 회사들이 내 생각대로 인재를 뽑을 필요는 없다. 대기업, 중견기업 같이 회사의 구조가 이미 잡혀져 있는 곳은 해당사항이 없다. 하지만 스타트업처럼 한 명 한 명이 매우 중요한 곳에서 단순히 경력, 스킬, 추천으로 사람을 뽑는 게 맞을까? 우리 팀에 필요한 인재는 나이, 성별, 경력을 보고 싶지 않았다. 기업가 정신을 가진 사람이란 걸 인생에서 간접적으로라도 보여준 사람이라면 무조건 찾고 싶었다.그런 목적으로 더팀스는 만들어졌다.2017년 1월, 오랜 시간 동안 공들여 만들어지고 있는 인재 검색 서비스를 테스트 겸 내가 먼저 이용해 보고 있었다. 일반적인 학력과 경력을 제외하고 독특한 경험을 토대로 검색을 하였다. 쇼핑몰 창업, 노점 장사 등등 다양한 경험을 발견했지만, 눈에 띄는 걸 발견하지 못 했던 찰나였다. 졸업도 안했는데 창업을 했네? 거기다가 목표 자체가 신기한데?고등학생 대상 자소서 컨설팅 사업을 대학을 다니면서 진행을 했고, 더 나은 세계를 만드는데 관심을 가진 사람을 발견했다. 묻지도 따지지도 않고 캐쥬얼 미팅을 요청하였다. 역시나 칼답장이 왔다. 아직도 기억이 생생하다. 망원역 앞의 카페에서 만났다. 에너지가 넘쳐보였고, 두 눈에는 호기심이 가득했다. <대략 이런 모습이었음>나: "이렇게 다짜고짜 만나자고 했는데도 와주셔서 감사합니다."rosa: "뭔가 다른 곳 하고 달라서 미팅 요청에도 응하게 되었습니다. 기존의 채용 시스템에 답답함을 많이 가지고 있었거든요."나: "네, 새로운 방향으로 진심을 담아 만들어 가고 있는데 쉽지는 않네요. 기존에 멘토링이나 컨설팅 사업을 해보셔서 무언가 이야기를 나누면 서로가 필요한 부분을 찾지 않을까 싶어 연락 드렸습니다."rosa: "네, 저도 곧 졸업인지라, 제 미래를 어떤 가치에 두고 살아야 하는지 고민하던 차였습니다."이렇게 우리의 이야기는 시작되었다. 첫 만남에 2시간 가까이 대화를 나누었던 거 같다. 시스템의 부조리함과 미래에 가야될 방향 등 사업가 대 사업가로 대화를 나누었다. 그녀는 우리 팀에 대해서 더 궁금해진다 했다. 이렇게 특유의 색깔과 브랜드를 만들어 나가는 팀을 본 적이 없다고. 본인도 사업을 해봤던 사람으로 최고의 팀을 만들고 유지시키는 게 얼마나 어려운지 잘 알고 있기에 관심이 간다고 했다.그렇게 우리의 첫 미팅은 마무리 했다. 편하게 다음 미팅을 기약했다. 지금 와서 솔직히 이야기 하자면 우리는 새로운 사람을 들일 여력도 상황도 아니었다. 시스템 구축에 바빴고, 현금 잔고는 점점 떨어지고 있었다.나: “이 사람을 영입 해야겠어요”팀원 전체: “??????????”나: “저한테는 확신이 있습니다. 이 사람이 우리의 미래를 더 멋지게 만들어 줄 사람이라는”나는 사람을 바라볼 때 두 가지 시점으로 본다. 하나는 이미 우리가 하고 있는 일을 더 잘 할 사람, 둘째는 우리가 못했던 일을 새롭게 개척해가는 사람. 내가 만나본 그녀는 후자에 해당하는 사람이었고, 그녀가 우리 팀에게 새로운 기회를 창출시켜 줄 것이라는 확신이 있었다.내가 이렇게 바라봤다고 무작정 영입을 할 수 있는 게 아니다. 우리 팀에는 하나의 관습이 있다. 팀에 합류하기 위해서는 모든 팀원을 만나야 한다. 나의 급작스런 영입 선언에 진은 “우선 다들 만나보죠” 라고 관심을 보였다. 어지간해선 강경한 태도를 취하지 않는 내가 워낙 강력하게 주장하니 무언가를 느꼈던 거 같다. 그때 마침 우리 회사에 구직자 대상 행사를 기획하고 있었다. 그 행사에 패널로 초청하면 어떠냐 라는 의견이 나왔고, 우리가 일하는 모습도 보여주고 자연스럽게 팀 전체와 대화도 나눠볼 수 있는 자리라고 생각했다. 급작스러운 부탁 이었기에 일정을 만드는 게 어려울 수 있었으나 흔쾌히 수락해주었다. “자소서 쓰는 법”으로 주제를 요청 드렸고, 그 짧은 시간에 철저히 준비하셨다. 이렇게 일을 하는 사람만 주변에 있었으면 좋겠다!행사는 잘 마무리 되었고, 뒤풀이 중 나는 조심스럽게 이야기를 꺼냈다.나: “저는 제가 뛰어나다고 생각하지 않습니다. 하지만 뛰어난 사람을 발견하는 재주를 가지고 있죠. 소라님은 무슨 일을 하든 10년내에 그 분야의 최고가 될 겁니다. 장담할 수 있어요. 하지만 저는 그 최고를 우리 팀에서 이루셨으면 좋겠습니다.”rosa: “이미 마음속으로 이 팀에서 일해보고 싶다는 마음을 가지고 있었어요. 제가 찾고 있던 팀이 이미 현실에 존재하는 느낌을 받았습니다. 아…………그런데 제가 원래 계획 해놓은 산티아고 순례길을 곧 떠나야 합니다”그렇다. 그녀는 졸업 기념으로 산티아고 순례길을 준비하고 있었다. 약 1달 반 정도의 일정이었다. “오히려 잘 되었습니다. 지금은 일에 대한 욕심이 높아질 때라 저희와 같이 일하고 싶다는 감정이 즉흥적일 수 있습니다. 산티아고 순례길 가셔서 인생의 미래에 대해 진지하게 생각해보시면 정말 자신이 가고 싶은 길을 발견하실 수도 있어요. 돌아오셔도 지금 느낌이 그대로시면 그때는 머나먼 여정을 같이 떠나보시죠!”그녀는 밝은 웃음으로 대답을 대신하고 산티아고 순례길로 떠났다. <진짜 본인임...>그렇게 정신없이 몇 주가 지났다. 알만 한 사람은 다 알듯이 나는 거의 새벽 3-4시에 잔다. 새벽에 집중이 참 잘된다…(좋은 습관은 아닌듯) 그때 갑자기 날아온 소라님의 인스타그램 메시지.우리 팀이 가지고 있는 의지와 믿음을 알아주는 사람만큼 최고의 인재는 없다. 결과는 모두가 다 알지만, 그녀는 산티아고 순례길을 마무리하고 돌아왔고, 1주일도 쉬지 않고 우리 팀에 합류하였다. 그리고 그녀의 길을 더팀스 안에서 만들어 나가고 있다.<본인의 꿈을 실현시킬 수 있는 공간이 되길>#더팀스 #THETEAMS #팀빌딩 #팀원소개 #팀자랑 #팀원자랑 #초기멤버 #최고의인재
조회수 867

블루오션 시프트

내가 놀담을 창업했을 당시에는 '대학생 놀이시터'라는 개념이 없었다.창업교육을 이수중이었던 우리는 대학생이 아이들을 재밌게 놀아주는 모델로 사업을 하고 싶었다. 때마침 맘카페, 구인구직카페에선 '우리 아이와 그냥 재밌게 놀아주실 분을 구한다. 대학생도 상관 없다.'는 글이 간헐적으로 등장했다. 그렇게 데모데이를 하루 앞두고 우리의 사업 모델을 '대학생 놀이시터 매칭 서비스'라 정의했었다. 그렇게 2년이 지난 지금, '대학생 놀이시터'는 아이를 키우는 엄마 아빠 사이에서 매우 핫하다.모든 시터는 에너지가 넘치고 밝은 대학생들이며 심사와 교육까지 이수하여 믿을 수 있다. 어플리케이션으로 간단하게 신청할 수 있고 내가 원하는 시간에 원하는 곳으로 시터를 부를 수 있다.급한 일이 있을 때, 우리 아이가 재밌게 뛰어놀았으면 할 때, 아이가 심심해하거나 혼자 놀게 하기 미안할 때, 놀이 시터는 아이에게는 즐거움을 보호자에게는 휴식을 선사한다.놀담은 베타테스트부터 뜨거운 관심을 받았고 점점 '대학생이 아이를 놀아준다'는 개념이 시장에 녹아들어가면서 사업도 순항을 맞은 듯 했다. 맘카페에서 '놀이시터 후기'는 하루에도 십수개씩 쏟아졌다.매력있는 아이템임은 분명했다. 당연한 이치로 머지않아 경쟁자가 나타났다. 저마다의 이야기와 매력으로 무장한 그리고 굳고 곧은 미션을 가진 기업들이 등장했다. 지금 이 시장은 5~6개의 스타트업이 경쟁하는 우리만의 레드오션이다. 서로는 각자가 가진 경쟁력을 스스로 잘 알고 있다. 나또한 수 많은 사업계획서에서 장표 하나를 할애해가며 경쟁사를 사분면위에 올려두고 우리의 차별화 전략을 목놓아 외치며 우측 상단 사분면에 놀담을 올려두었다. 하지만 고객의 관점에서는 비슷비슷한 '놀이시터 업체'일 것이다.  많은 스타트업이 이와같은 고민을 할 것이라 생각한다. 촤란~ 내 사업을 설명했을때, '그게 ㅇㅇㅇ이랑 뭐가 다른데?' 란 대답을 듣게되는 씁쓸함. 밤을 새워가며 끙끙대며 만든 내 자식과도 같은 아이템을 슥- 비슷하게 뚝딱! 만들어 선보이는 신기업이 나탔을때의 허탈함. 이런 감정을 느껴본 모두에게 이 책을 추천한다. [블루오션 시프트]레드오션의 경쟁에서 빠져나와 블루오션의 시장을 창출하는 법※주의블루오션 시프트는 '익숙해진 신개념'에 속한다. 이 개념의 첫 등장은 무릎을 탁 치게할 정도로 너무나 놀라웠지만 우린 이미 블루오션 시프트와 유사한 "제로투원" 또는 "블루오션 전략"에서 비슷한 개념을 많이 접해보았다. 이 글은 비슷한 부류 가운데 가장 최근에 나온 책에서 (잉? 블루오션 시프트가 비슷하다는 평가를 받는다니 모순적이다ㅜㅜ!) 적용하기 좋은 몇 개의 개념을 요약한 것이라고 생각하면 되겠다.1. 차별화와 저비용을 동시에 이뤄라.레드오션의 시장 경쟁에서 승리하고자 하는 자라면 모두 응당 두 가지 전략을 생갹할 것이다. 더 질 좋은 서비스 또는 상품을 만든다. "또는" 비용을 낮춰 더 값싼 서비스 또는 상품을 만든다.이 두가지를 동시에 이루는 것이 블루오션 시프트이다. 가치를 혁신하면 훨씬 저비용으로 완전히 차별화된 사업모델을 차줄 수 있다는 것. 가치 혁신이란 기회가 어디에 있는지에 대한 이해를 바꾸는 것이다.저자 르네 마보안은 튀김기의 레드오션에서 기름 없이 튀겨버리는 액티프라이 (우리에겐 에어프라이가 더 익숙한 모델명이지만)을 만든 세브그룹의 케이스를 예로 들었다. 블루오션 시프트의 목적은 가치와 비용의 상충관계(저비용을 추구하면 퀄리티가 낮아지고 압도적 퀄리티를 추구하면 비용이 높아진다)를 꺠버리는 혁신을 이뤄내는 것이다.2. 비슷비슷한 서비스를 제공하는 레드오션을 빠져나와라.블루오션 시프트를 이루는 기업가는 업계의 조건을 주어진 것으로 생각하지 않고 오히려 이러한 조건을 자신에게 유리하도록 재구성한다. 이 대목을 읽고 함께 퇴근학교에서 공부하는 학생독립만세가 생각났다. 자타 공인 과외고수 공대생 두 명은 2년간 유료과외업체 '어몽'을 성공적으로 운영 중이었다. 시장엔 이미 너무 많은 과외 업체가 자신들만의 매력을 뽐내고 있었다. 어몽은 6개월 전 사업을 피봇했다. 과외 시장 안에서 '과외를 받을 수 없는 환경에 있는 학생'에게 집중하는 모델이다. 학독만은 일단 무료로 과외를 제공하고 학생은 스스로의 힘으로 얻어낸 사교육을 누리며 대입에 매진할 수 있다. 대입 후 과외비를 갚는 조건으로. 사업을 시작함과 동시에 우리가 다른 과외 업체와 뭐가 다른지, 얼마나 좋은 지 홍보할 새도 없이 학생들이 모여들었다. 현재는 100분의 1의 비용으로 고객을 유치하고 있고 유료과외를 할때보다 수익 구조도 훨씬 탄탄하다. 학생독립만세는 과외를 대출해주는 모델로 경쟁 자체를 의미없게 만들었다. 3. 모든 프로젝트는 인간적이여야한다.저자는 프로젝트 진행에 있어서의 인간다움에 대해서 계속해서 언급했다. 전 과정이 리더의 결정과 지시로 이루어지는 것이 아니다. 레드오션 시프트의 필요성을 듣는 것이 아니라 팀원 전체가 스스로 발견하게 하는 과정이 중요하다. 그러면서 프로젝트에 대한 주인의식과 창의력이 높아진다는 것이다. 4. 방법론방법론까지 하나하나 거론하지는 않겠다. (솔직히 그저 그랬다... 익숙해진 신개념...흑흑)자세한 방법론과 템플릿은 블루오션 시프트 공식 홈페이지에 자세히 나와있다.간단히 요약하자면 PMS지도, 전략 캠퍼스, 구매자 효용성 지도, 비고객 세계층 정의, 여섯가지 경로 프레임워크 등 인데 우리가 익히 알고있는 디자인씽킹 전략과 너무나 유사하다. 가치혁신에 대한 새로운 방법론을 모색하고 있다면 한 번쯤 살펴보는 것도 나쁘지 않을 것 같다.결론올림픽이 한창이다. 스피드 스케이팅의 경기를 보고 있자면 경쟁자를 잘 만나야 한다는 생각을 하게 된다. 누가 옆에서 뛰느냐에 따라 전략과 페이스가 달라지고 결국 기록이 달라진다. 압도적으로 뛰어난 선수에게는 예외이다. 그에겐 수 많은 시간으로 단련한 자신만의 페이스가 있다. 경기에선 언제나 그랬듯이 나를 이기면 되는 것이다. 우리의 사업을 요리조리 살펴보자. 우리가 진짜 하고 싶은 게 뭔지, 진짜 이뤄내야하는 게 뭔지, 세상이 진짜 필요로 하는 게 뭔지. 그리고 그 미션으로부터 혁신을 시작하자. 경쟁이 의미없도록. 나만 나를 이기면 되는 운동장에서 뛰자.
조회수 1927

[과거 스타트업 경험]2016년 상반기 실적 발표

저는 2013년 하반기부터 "사람은 곧 기업과 같은 유기체이다." 그리하여 "한 개인이 나 자신과 나 주위 생태계를 두고 기업처럼 생각하고 기업처럼 움직이면 위대한 기업을 일굴 수 있는 연습을 미리 할 수 있다."라고 생각을 하였습니다.그 당시 저의 롤모델 기업은 '구글'이였고 , 일단 구글이 하는 걸 사람이 하는 것처럼 따라해보자라고 생각을 하였습니다. 그래서 구글이 하는 사업과 프로젝트들을 CASE STUDY하고 그들이 관리하는 전사적 지표 OKR을 스스로한테 적용해보면서 정량적 분석을 시작했습니다. 그걸 -2013 하반기 부터 시작을 해서-2014 상반기-2014 하반기-2014(상반기+하반기)-2015 (상반기+하반기)기록하였습니다.그래서 2016년 또한 상반기 실적을 한번 분석해보고 전년도 대비 어떤 것들을 잘했고 못했는지를 판단해볼 생각입니다. 이를 통해 2016년 하반기는 더욱 전략적 한 분기를 보내어 더욱 성장할 수 있는 16년을 만들어보려고 합니다. 2x가 아닌 10x 을 목표로.[About startup]16년 1월에는 동동이라는 스타트업에서 마케팅부터 영업,기획 다양한 포지션에서 짧게 인턴을 생활을 하였습니다.이때 배웠던 것들, 업무를 했던 것들을 기록해놓았습니다.하나의 포지션에서 깊게 파고든 것이 아니기 때문에 업무에 대한 인사이트는 크지 않았습니다. 짧은 인턴동안 저는 보다 culture에 대해서 많이 배웠고, 여기에 대해 고민했던 시간이였던 것 같습니다. "어떻게 사람들을 회사의 문화로 동료들을사내 기업가가 되게할까?"16년 2월부터는 브리치라는 스타트업에 합류하게 됩니다. 2월 중순부터 ~ 3월까지는 패션 MD를 하면서 상품 등록 / 기획전들을 오픈하였습니다.사이트에 메인을 보면 맨 위에서 롤링되어 돌아가는 구좌들이 있는데, 여기를 메인 구좌라고 합니다.92volt 기획전,콘텐츠 포커싱소재/디테일 포커싱 여기에 들어갈 브랜드/샵을 정하고 상품을 정한 뒤 액셀에 콘텐츠를 기획하고 이것을 디자인쪽에 넘겨 커뮤니케이션 하면서 기획과 디자인의 fit을 맞춥니다.다 만들면 마케팅 쪽과 얘기해서 노출 스케줄을 잡습니다.스케줄 마감 기한은 협업을 하는데 있어서 매너라는 점,디자인은 예쁘게 보이게 시각화 하는 것이 아니라 사람들에게 직관적으로 메세지를 줄 수 있도록 로직을 시각화하는 것이라고 깨달았습니다.4월때부터는 조직 개편이 있으면서, 저는 상품쪽에서 -> 영업쪽으로 넘어왔습니다.(저는 영업이 천직인 것 같습니다.ㅋㅋㅋ) 이때부터 큰 퍼포먼스들을 내기 시작했습니다.제가 4월에 영업 78개, 5월에 6개, 6월은 45개,7월은 48개를 해서 4개월동안 177개를 했습니다.(5월에 급격히 갯수가 떨어진 것은 지마켓,11번가와 딜을 진행할 때 CS에 2주 투입이 되어서 영업을 거의 진행 못하였고 4월대비 6,7월달 영업 갯수가 떨어지는 것은 4월은 디자이너 온라인 영업을 진행했고 6,7월은 오프라인 매장 영업을 진행했기 때문입니다.5월에도 영업을 진행했으면 4개월 동안 한 200개는 만들었겠네요.제가 브리치 입사하기 전에 샵 DB가 150~200개정도 됬던 것 같습니다.)제가 브리치에 합류하게 되면서 영업의 속도와 양이 급격하게 변화했습니다. 그 이유는 '영업 채널'을 좀 더 효율적인 것에 투자를 했던 건데요.영업을 하기 위해 인스타 다이렉트 메세지를 활용했습니다.이를테면, 영업이라는 것도 PR하기 위해 기자들한테 메일 뿌리는 것과 흡사하다고 생각하는데요.업체 메일 주소를 리스트업 하고 한번에 제안서를 보내고 피드백이 오면 전화를 하고 미팅을 잡고 계약으로까지 이어지죠.이 방법을 중심으로 무언가 다른 영업 전략이 필요하다고 생각이 들었습니다.이렇게만 해서는 답장 올 때까지 기다려야되는 것도 있고, 움직이는 자투리 시간(출퇴근시간)에도 메일링은 하기 힘들죠. 이때 생각한 것은 "메세지 영업을 하자"가 된 것입니다.그래서 온라인쪽 디자이너 브랜드를 영업할 때에는 '인스타'채널을 활용하여 다이렉트로 영업을 했고 계약 전환율도 좋았고 모바일로 소싱하는 느낌이 꽤나 재밌었습니다. 그리고 인스타 오피셜에 보면 카톡 계정이 있는데, 카톡으로도 영업을 진행하였습니다. 좀 더 즉각적이고,실시간의 성격을 가진 채널을 활용해서 영업을 전개하니 속도가 굉장히 빨라졌습니다.인스타 다이렉트 영업 사진그리고 오프라인쪽 매장을 영업할 때에는 직접 로드에 가서 대표를 만나고, 혹은 위탁 판매 관련된 담당자를 만나서 얘기를 하는 식으로 진행되죠. 그래서 굉장히 영업 속도가 더딥니다.디자이너 브랜드에 비해 (오프라인으로 직접 가야되니깐요.) 더 빨리 소싱하기 위해선, 인스타처럼 소싱할 수 있는 채널이 필요한데, 그래서 네이버 '톡톡'을 활용하였습니다. 네이버도 저희와 비슷한 서비스인 스타일 윈도우를 운영하고 있습니다. 스타일윈도우는 오프라인 DB를 상당히 많이 보유하고 있고 저는 스타일 윈도우가 모아놓은 back data를 활용해서 효율적으로 영업을 전개합니다. 이때 스타일윈도우 혹은 스토어팜에서 고객과 샵이 소통하는 채널인 톡톡이 있는데요.저는 이것을 영업채널로 활용하였습니다. 즉 , 고객 채널을 영업 채널로 활용했던 것이죠.그래서 비약적인 갯수를 소싱할 수 있게 되었습니다.근데 제가 영업한 이 갯수들이 실질적으로 다 계약으로 전환된 건 아닙니다. 이 중에 몇 업체는 관리가 안되어 거래 진행이 안되고 있고(상품 등록), 몇 업체는 도중에 조건이 안맞아서 빠진다고 하고, 몇 업체는 입점시에 필요한 정보들의 준비가 안되고 있죠. 아마 이것들을 빼고나면 30~40개업체 정도가 빠질지 않을까 생각됩니다.그리고 제가 또 바꾼 변화로서는, 회사의 계약 문화를 아주 간편한 온라인 과정으로 바꿨는데요.이전에는 계약서 두 부를 뽑고 양쪽의 도장을 다 찍고, 두 부를 파트너사한테 보낸 다음, 파트너사가 한 부에 자기 도장을 찍고 그것을 다시 저희한테 보내는 복잡한 과정을 거쳤다면... (양쪽에서 우체국 등기로 일어나는 총 금전적 비용이 한 계약에 약 4~5천원 정도, 그러면 저는 약 140개정도 했다고 하면 140x5 = 70만원정도 절약) 현재는 모두싸인이라는 온라인 계약 서비스를 통해 간단한 회원가입을 하고, pdf 파일 계약서로 사이트에서 (모두싸인에서 1초만에 만든)도장을 찍고 메일로 주고 받는 걸로 진행하고 있습니다. 굉장히 많은 시간적 비용과 금전적 비용을 줄였고 영업 속도에도 굉장히 도움이 되었습니다.앞으로 남은 분기동안에는 영업 이외에 회사 문화가 어떻게 조직원들을 더 챌린지시키고, 동기부여시킬 수 있는 것들을 고민해보고 실제 도입해서 유의미한 결과를 가져올 수 있게 변화를 만들어낼 생각입니다.[About self-developement]블로그 글을 90개 포스팅을 하였습니다. 제 글중 현장에서 경험한 인사이트를 기록하는 공간인 '경험노트'에는 23개의 포스팅을 했습니다.전년도 대비 수치는 좀 떨어진 정도인데요.(작년도 하분기 포스팅이 약 150개) 경험의 질로 따졌을 때는 훨씬 수준이 올라와있는 정도입니다. 그리고 올해부터는 브런치 글쓰기를 조금씩 시작하기 시작했습니다. 이름하여.. O2O글쓰기인데, 글쓰는 형식은 크게 두 가지로 나눠서 쓰고 있습니다.제가 현장에서 경험하고 느낀 것들 + 제 생각을 더해 주제에 대해 좀 더 deep하게 들어가는 형식과 세미나 혹은 포럼에 참가하여 그 생생한 현장을 그대로 담는 글의 형식이죠.(여기도 조금 제 생각은 개입되구요.)에서 가장 공유가 많이 일어났던 글은 CS에 대한 글로 151개 공유수를 기록했고 에서 가장 공유가 많이 일어났던 글은 글로벌 패션 포럼에 대한 글로 182개를 기록하였습니다.글의 공유수가 획기적으로 늘어날 때는 아무래도 '인플루언서'가 제 글을 공유할 때 그렇다는 것을 확인하였습니다. 에서는 강하영님이 공유를 에서는 하정훈 이사님이 공유를 해주셨죠.제 브런치에 총 4개의 글이 실려있는데 총 공유수는 372입니다. 올해 목표는 한 포스팅이 500개 공유수를 넘길 수 있는 인사이트있는 글을 쓰는 것입니다.스타트업학회 CEO 페이스북 그룹그룹주소2016년 3월에는, 학교 과 선배와 학교 교육에 대한 문제점을 얘기나누고, 학생들의 잠재력이 발휘되지 못하는 점들을 얘기나누다가 , 이런 것들을 해결해줄 수 있는 학회가 있어야된다는 것에 목소리를 모았고, 그렇게 해서 스타트업을 연구하고 지식을 공유하고 실질적 경험을 해보는 CEO학회가 창립,첫 운영되었습니다.명지대에서는 스타트업(스타트업 바람을 넣는..ㅎㅎ?)이라는 조직을 만들고 활동을 하는 건 최초였습니다.저희는 매주 화요일 8시에 강의실에 모여 연구를 진행하였습니다.운영의 과정 속에서 느낀점은 1.사람이 살면서 혼자서 할 수 있는 위대한 일은 상당부분 제한된다는 점, 그래서 팀을 이뤄야한다는 것 2.조직을 하나의 통일된 비전 아래 모이게 하고 모두가 같은 방향을 바라보고 움직이게 하는 건 상당히 어렵다는 점 정도가 될 것 같습니다. 그리고 굉장히 뿌듯한 순간도 있었는데, 학회 인원 중 많은 도움을 받고 있다고 고맙다고 4명이 얘기해주었고 그 중 한명은 브리치에 파트타임으로 일하며 CS를 배우고 있고 그 중 한명은 WEPET에서 인턴을 하게 됩니다. 그리고 학회 친구들이 학교 '밖'으로 나가 스타트업 행사를 다니며 진짜 세계와 마주하고 있다는 사실입니다.저는 회사 다니면서 학회도 운영도 하고 커리큘럼도 기획하고, 정신이 없고 운영에 많이 미흡했지만 그 중 소수는 도움 받았고, 좋은 인사이트를 만들어가고 있다는 점이 기쁩니다.저는 이들이 더욱 성장해서 더 좋은 세상을 만들어가는데 일조할 것이라는 확실한 믿음이 있습니다.크게 스타트업,자기계발,학교를 주제로 상반기를 돌아보았습니다.제가 전년도에 부족했던 점은 (15년 글에 써놓았기를) 좀 더 빨리 실험해보고 실패하지 못했고,NO를 잘 못했고, 진짜 실력만 키우는데에 잘 집중못했다는 점입니다. 근데 이번해에는 사실 상당 부분 작년도 부족했던 부분들을 개선시켰습니다.그렇지만 빠른 실험과 빠른 실패에 대한 문제는 좀 더 잘해나가야 될 듯 합니다.이번 상반기에 가장 잘하지 못했고, 그리고 가장 중요하게 생각했던 것은 '지속성'에 대한 주제인데요. 뭔가 일을 하는데 있어서, (다짐을 했고,무엇인가 결과를 내야한다면) 지속하지 않으면 '가치'로 인정받을 수 없다는 점입니다. 아주 단순한 저의 삶 예시로는 운동이나 영어같은 것들을 들 수가 있겠네요.2016년의 하반기 목표는 운동과 영어는 정말 꾸준히 해나가고, 영업 이외에 마케팅 쪽에서 좀 더 퍼포먼스&실력을 기르면서 인재들이 최고의 역량을 뽐낼 수 있는 회사 문화를 만들어 가는 것에 집중할 생각입니다.그리고 아버지가 전기자재 도매쪽에서 사업을 오랫동안 해오셨는데, 현재는 디지털 변화에 대응하지 못하여 위기에 처해있습니다.그래서 이 부분에 대해서도 계속 고민해나가는 6개월을 보낼 것입니다.어떻게 보면 이것이 저의 인생의 최고의 기회일지도 모른다는 생각에..남은 하반기도 모두들 화이팅 하세요..!고객 만족을 위해 매일 매일 노력하는 대한민국 스타트업들 화이팅!#페오펫 #peopet #CEO #마인드셋 #경험공유 #인사이트
조회수 1182

아토큐브 is Real Startup!

권한과 책임“책임과 자유, 상호 존중이 중요한 기업입니다. 호칭부터 영어 이름이나 –님이라고 서로를 부릅니다. 수평적 호칭으로 바꾸니 수직적인 관계에서 발생할 수 있는 문제가 사라져 건설적인 토론을 할 수 있더라고요. 아토큐브는 휴가나 반차도 결제받지 않고 본인 업무에 책임만 질 수 있다면 자유롭게 쉴 수 있어요. 출퇴근은 오전 10시부터 오후 5시까지예요. 솔직히 5시에 퇴근하는 분은 없어요. 다들 일이 남으면 집을 안 가세요. 팀원들은 보통 10시, 공동창업자들은 새벽 1시까지 일을 하세요.”자유로운 기업 문화팀원들에게 대표의 눈치를 정말 보지 않느냐고 물으니 약속한 듯이 “전혀 안 본다”고 이구동성으로 답했습니다. (팀원들끼리 자유롭게 말하라며 한 대표는 사무실로 복귀해 팀원 인터뷰는 대표 없이 진행됐습니다.) 안사대부 개발자는 “몇 개월을 팀원들과 함께 제품 개발에 빠져 있다 보면 어느 새 제 사업처럼 느껴진다”고 했습니다.팀원들의 인터뷰에 비춰 볼 때 그는 팀원들에게 업무를 ‘강요’하기보다 ‘주체적’으로 일할 수 있는 환경을 마련하는 것 같았습니다. 실제로 한 대표의 최근 고민은 팀원들이 업무시간에 최대한 집중할 수 있는 환경을 마련해 제 시간에 기꺼이 퇴근할 수 있는 시스템을 만드는 거랍니다.팀 빌딩의 기본“저희 팀원 모두가 각자 전문 역량을 갖추면서도 영업도 언제든 할 수 있을 만큼 외향적이고 회사 제품에 대한 열정이 가득합니다. 함께 할 팀원을 찾을 때 능력도 중요하지만, 기본적이지만 아무나 지닐 수 없는 인성, 매너, 상호존중을 많이 봤어요.”누군가에게는 뜬구름 잡는 이야기인 것 같지만 실제로 그런 조건의 인재를 찾기 위해 저는 장시간 인터뷰를 통해 팀원을 뽑았습니다.문제해결능력“단순한 스킬보다는 문제 해결 능력을 지닌 분을 원합니다. 스타트업에는 하루에도 수십 번씩 다양한 이슈들이 발생하는데, 이런 문제들을 다 해결해야 하잖아요. 벽에 막혔을 때 포기하거나 방법을 못 찾으시는 분이 있지만 적극적으로 문제를 해결하는 분이 있습니다. 그런 분들을 원합니다. 스타트업은 끊임없이 문제를 찾아 해결하는 과정이라고 생각합니다. 이런 역량을 지닌 분인지 알기 위해서는 오랜 시간 인터뷰가 필요해요. 서윤호 pm을 뽑을 때도 네 시간씩 세 번 만났습니다. 저는 상호면접이라고 표현합니다. 상대방도 저나 회사에 대한 궁금한 점을 물어보고 저도 그분에 대해 물어보고요.”#아토큐브 #기업문화 #조직문화 #사내문화 #팀워크 #스타트업 #필요능력 #자유 #팀빌딩 #자율 #문제해결 #권한 #책임
조회수 2328

같은 크기가 달라보이는 이유, 시각적 보정 이해하기

여기 크기를 맞춘 도형 조합 A, B가 있습니다. A, B 중 사각형과 원의 크기 비율이 같아 보이는 조합은 무엇인가요?  저는 B조합이 훨씬 더 자연스럽게 보입니다. A는 가로 세로 크기를 똑같이 맞췄으며, B는 상대적으로 면적을 고려해 원형의 크기를 사각형보다 조금 더 크게 그렸습니다. 이처럼 사람의 눈에 자연스럽게 보이도록 조정하는 작업을 ‘시각적 보정’이라고 합니다. 디자이너, 혹은 디자이너가 아닌 사람들도 다양한 프로그램을 통해 미세한 크기를 똑같이 맞출 수 있습니다. 하지만 프로그램이 오브젝트를 인식하는 것과 사람이 보는 것은 다르기 때문에, 때론 아주 정확한 것이 부자연스럽게 보일 수 있습니다. 서로 다른 형태 사이의 차이점을 보완해주는 작업이 필요합니다.  최근 저는 이러한 시각적 보정에 대해 요목조목 잘 정리된 루크 존스(Luke Jones)의 “Optical Adjustment”를 읽었습니다. 여기에 몇 가지 추가 사례를 덧붙여 함께 소개합니다. (“Optical Adjustment”의 원문 번역글은 강수영님의 “시각적인 보정”에서 확인할 수 있습니다.)1. 도형에 따른 크기 조정하기앞서 살펴본 원과 사각형의 크기 조절부터 다시 볼까요? 사방 80pixel의 영역 안에서 사각형은 원보다 넓은 면적을 차지합니다. 우리 눈은 사방 길이를 통해 크기를 인식하기 보다는, 면적을 보고 어림잡아 비슷한 크기를 가늠합니다. 사각형보다 원의 크기를 조금 더 크게 그려주면 비교적 두 도형의 크기가 동일해 보입니다.2. 시각적 무게 중심 고려하기시각적 무게 중심에 따른 정렬은 플레이 버튼 아이콘을 통해서 해볼 수 있습니다. 원형과 삼각형을 중앙 정렬하면 A 아이콘처럼 됩니다. 중앙에서 빗겨나 있는 것처럼 보이는데요, 이는 삼각형의 무게 중심이 원형의 중심과 맞지 않아서 그렇습니다. 이렇게 서로 다른 형태의 오브젝트를 정렬할 때는 무게 중심을 고려하여 B 아이콘처럼 수정해주는 것이 좋습니다.3. 면적 대비 색상 조정하기면적에 따라서 색상의 무게감이 달라집니다. A는 파란 아이콘에 비해 텍스트 컬러가 살짝 연해 보입니다. 이렇게 넓은 면적과 비교적 좁은 면적(텍스트/라인)에 같은 색상이 쓰이는 경우가 많습니다. 이럴 때 좁은 면적의 컬러를 조금 더 짙게 수정해주면 면적의 넓이와 상관없이 (비교적) 동일한 색상으로 인지됩니다.3. 형태를 고려해 오브젝트 정렬하기이번에는 슬로워크에서 디자인한 DMZ국제다큐영화제 시그니처를 예시로 정렬을 살펴보겠습니다. 자세히 보면 시그니처의 우측 가장자리에 ‘~제' 로 끝나는 첫줄과 ‘-29.’로 끝나는 마지막줄이 있습니다. 온점은 한글보다 공백을 많이 포함하고 있습니다. 그래서 A처럼 정직하게 정렬하면 마지막줄만 움푹 들어간 것 처럼 보입니다. 이를 B처럼 튀어나오게 수정해주는 것이 보기에 자연스럽습니다.  4. 명도에 따라 굵기 조정하기4번의 컬러 조정과 같은 맥락으로, 오브젝트의 명도에 따라 굵기가 달리 보일 수 있습니다. 좌측의 흰색 텍스트와 우측 상단 검은색 텍스트(굵기 조정 전)는 같은 굵기의 폰트입니다. 검은색 텍스트가 상대적으로 가늘어 보여서 조금 더 굵게 수정했습니다. 네거티브, 포지티브 적용을 동시에 할 때 이런 점을 고려하곤 합니다.5. 영문폰트와 한글폰트 조합시 조정하기한글폰트와 영문폰트를 조합해서 디자인하는 경우가 많습니다. 편집디자인 툴인 인디자인 프로그램에는 ‘합성글꼴’이라는 기능이 있어 숫자, 영문, 국문, 기호 등을 각각 다른 폰트로 지정하고 세세하게 크기도 다르게 할 수 있습니다. 서로 다른 폰트를 억지로 이어붙이는 것이기 때문에, 크기값이 같아도 한글폰트가 더 커보입니다.(좌측 텍스트) 이때 크기와 높낮이를 직접 조정해주는 것이 좋습니다.(우측 텍스트)6. 커닝(글자 간격 조정)하기왼쪽 텍스트를 자세히 들여다보면 글자의 각기 다른 모양 때문에 배열이 균등하지 않아 보입니다. 이때 글자의 형태를 고려해 적당한 간격으로 보이도록 수정하는 것을 커닝(kerning)이라고 합니다. 커닝은 상대적으로 공백을 많이 가진 글자(숫자 1, 알파벳 A, W, V)일수록 조정을 필요로 합니다. 디자인을 전공하면 가장 기초적으로 배우는 부분임에도, 저는 커닝을 완벽히 하는 것이 제일 어렵습니다.커닝을 연습할 수 있는 사이트도 있습니다. 완성도에 따라 점수도 매겨줍니다. 간단하게 여러분의 눈썰미가 얼마나 날카로운지 확인해보세요. -> 커닝 해보기참고: Luke Jones - Optical Adjustment#슬로워크 #스티비 #디자인팀 #디자이너 #꿀팁

기업문화 엿볼 때, 더팀스

로그인

/