스토리 홈

인터뷰

피드

뉴스

조회수 2529

코드 커버리지 80% 넘긴 썰

첫번재 코드를 짜기까지2015년 1월이었던 것으로 기억해. 당시 전 회사에서 테스트를 정착시키기 위해서 노력을 하고 있었는데, 사실 잘 되지 않았어. 그래서 혼자 ‘Testing Goat’를 따르며 공부를 하고 있었어. 그때 8퍼센트 이효진 대표와 연락이 닿았고, 초기 개발을 좀 도와 달라는 요청을 받았어. 옳다구나! 실전에 적용해 볼 수 있겠다 생각이 들어서 도와주기로 했지이것이 8퍼센트의 첫번째 commit간단한 기능을 가지고 있어서, TDD를 하면서 unit test와 functional test를 붙여서 전달해줬지. 책에 있는 내용을 열심히 활용해서 코드를 짜긴 했지만, 테스트 코드와 함께 결과물을 전달해서 스스로 뿌듯해했어. 물론 그때까지만 해도 내가 8퍼센트 들어갈 거라고는 생각도 하지 못했지. (사람의 인생이란 참)2015년 PyCon에서 발표테스트 없이 코드를 짜다가, 테스트와 함께 개발을 하다 보니 이게 너무 좋은 거야. 그래서 발표를 해야겠다는 생각을 했어. 그래서 아래 꼭지들을 내용으로 발표를 했어. ㅇ 테스트가 왜 필요할까요? 어떤 테스트가 필요할까요?ㅇ 좋은 테스트란 무엇인가요?ㅇ unittest 소개 및 활용ㅇ 테스트 관련 툴 소개ㅇ 내가 하고 있는 테스팅 과정 소개발표를 준비하면서 팀 단위에서 이런 것들을 제대로 한번 해보면 좋겠다는 생각을 했어. 내가 돌아왔다2015년 11월에 8퍼센트에 CTO로 조인을 하게 되었어. 처음으로 CTO로 일을 하게 된 것이었으니까, 이런저런 꿈에 부풀었지. 그중 하나가 ‘테스팅을 제대로 한번 해보자’라는 생각이었어. 코드를 살펴보니까 뭔가 내가 처음에 작성해서 넘긴 후에도 테스트 코드가 추가된 흔적은 있는데 제대로 동작하고 있는 것 같진 않더라고. 일단 기존에 있던 테스트들을 정리했어. 동작해야 하는 것 들을 정리하고, 필요 없는 것들을 지웠지. 그리고는 git push hook 에 테스팅을 추가했어. unittest가 돌지 않으면 push를 하지 못하도록 해버렸어.당시에는 bitbucket을 쓰고 있기도 했고 특별히 CI툴을 붙이지 않은 상태였어서,  기록이 남아 있지 않더라. 하지만 당시의 코드 커버리지가 한 20% 정도였을 것 같아. 그 뒤로 PR을 통해 코드 리뷰를 할 때에는 테스트가 짜여 있지 않은 경우에는 관련된 테스트를 추가해 달라고 요청을 했어. 하지만 구성원들이 테스트를 편하게 짜게 될 때까지는 꽤 시간이 걸렸어. 특히 unittest.mock, freezegun , fixture 등을 사용해서 테스트 상황을 잘 구성하는 것에 익숙해지는 것에 시간이 걸렸던 것 같아. Travis 의 도입 2016년 1월에 github으로 갈아타면서 travis를 도입했어. 기존에는 push을 할 때마다 전체 테스트를 돌리도록 했었는데, 테스트의 양이 늘어나면서 push의 시간이 오래 걸리는 문제가 있었어. 그래서 travis에서 테스트를 돌리도록 했어. 이제는 테스트가 안 돌아도 push 까지는 할 수 있는데 PR merge는 할 수 없는 상태가 된 거지. 그 이후에는 flake8을 돌려서 스타일 체크를 시작했어. 그래 생각난다. 개발팀에서 하루 날 잡아서 PEP8에 맞춰서 코드들을 수정했어. 그렇게 한 이후에도 수정할 것들이 많이 남아 있어서 모듈 단위로 수정을 하면서 해당 모듈을 추가로 검사할 수 있도록 travis와 commit hook에 추가해 나갔어. 결국 다 정리되긴 하더라. 그리고는 주요 브랜치에 대한 빌드를 깨뜨린 사람이 음료수를 쏘는 규칙을 만들었어. (주요 브랜치가 깨진다는 것은 로컬 환경과 travis 모두에서 테스트를 생략했다는 이야기거든)지금은 github flow  라서 develop branch 는 없어FactoryBoy의 사용테스트가 점점 늘어나서 한 1500개 정도가 되었어. 점점 모델도 많아지게 되면서 fixture로 테스트 데이터를 관리하는데 한계가 왔어. 예를 들면 신용평가를 한번 하면 데이터가 200여개가 쌓이는데, 신용평가 모델에 대한 테스트를 하려면 그것들을 다 fixture로 만들어야 했어. 그래서 개발팀의 한 분(누군지 기억은 안나는데 고마워요)이 FactoryBoy를 추천해 주셨고, 쓰기로 했지. 지금까지 만들어졌던 fixture 들을 모두 factory 기반으로 옮기는 것도 간단하지는 않았어. 하지만 새롭게 만드는 것부터 적용하고 과거 테스트들을 고칠 때마다 조금씩 조금씩 수정을 했더니, 다 고쳐지긴 하더라고. 그 이후로는 새롭게 모델을 만들 때에는 항상 관련된 TestFactory를 함께 만들어 주게 되었어.테스트 커버리지 측정도구 도입이걸 처음에 왜 붙였는지는 잘 모르겠어. 사실 그전까지는 테스트 커버리지를 재미로 측정해 본 적은 있었지만 꾸준히 측정을 해야겠다는 생각을 해보진 못했었거든. 그런데 이 수치가 측정이 되기 시작되면서부터는 많은 것들이 바뀌었어. 처음 측정 했을 때가 63.59%바뀐 게 무엇이냐고 하면, PR에서 '공식적인 잔소리'가 가능해졌어. 이게 테스트를 작성하다 보면 자괴감이 들 때가 있거든. 내가 봤을 때 너무나 자명한 것에 대한 테스트를 작성할 때야. 그런데 이 테스트라는 것이 지금의 내 기준으로 보면 안 되고, 다른 누군가 그리고 혹은 미래의 나를 기준으로 바라봐야 하거든. 그래서 자괴감을 느낄 시간에 그냥 짜야해. 근데 우리가 사람인지라 가끔 나태해 지거든. 나태해 지면...뭐. 나라고 예외는 없지UI 테스트에 대한 좌절처음에 테스트를 시작했을 때에는 selenium을 이용해서 UI에 대한 functional test가 있었어. 그리고 꽤 오랫동안 유지가 되었었지. 그 이후에는 멀티플랫폼에 대한 테스트를 하기 위해서 sauce labs를 통해서 firefox, IE, mobile browser 에 대한 테스트도 자동으로 진행했었어. 그런데 이 테스트는 한번 동작시키는데 시간이 너무 오래 걸리다 보니 로컬 환경에서 테스트가 쉽지 않더라. 그래서 CI환경에서만 테스트를 돌리게 했어. 그랬더니 수정하고 다시 CI에서의 테스트를 위해 push 해야 하고 또 기다리게 되더라고. 이런 어려움 때문에 중단했다, 재개했다, 중단했다, 재개했다를 몇 번 반복한 이후에 지금은 작성하고 있지 않아. 우리 팀의 프런트엔드를 이전 작업이 어느정도 되고 나면, UI 테스트를 꼭 다시 시도해 볼 생각이야.80%의 공약70%가 넘고 나니까 전체 테스트 커버리지를 올리는 것이 쉽지 않았어. 그래서 개발팀에 공약을 하나 걸었지.그날이 금방 올것 같지는 않았어그랬더니 사람들이 코드를 지우기 시작하더라고... 물론 사용되지 않는 코드를 말이야. 그리고 아예 브랜치 이름을 "80percent"라고 만들더니 예전에 테스트 코드를 작성하지 않던 시절의 코드까지 테스트를 붙이기 시작했어. 보이니? 그래프 마지막, 사람들의 욕망이?사실 80%가 특별한 의미가 있는 숫자는 아니야. 그냥 100줄의 코드에서 80줄의 코드가 테스트가 되고 있다는 것이지. 그래도 우리가 2년 동안 테스트를 중요하게 생각하고, 열심히 노력해 온 결과라고 생각하면 좀 뿌듯해. 달성흠. 나는 약속을 중요하게 생각하는 사람이야. 그리고 우리 팀원들은 나보다 더 약속을 중요하게 생각한다는 것을 알게 되었어.  아. 그리고 위 사진에 디자이너 두 분이 있어. 디자이너 분들도 commit 한 코드가 있으니 점심을 먹을 자격이 충분하지. 암암. 그렇지.이렇게 해서 80%를 달성하기까지의 과정을 적어 봤어. 짧은 글에 적혔지만 사실 2년의 시간이 걸렸고 아마 팀원들의 몇천 시간이 들어간 일일 거야. 모두들 고마워~끝!사람들을 낚아 보기 위해서 글 제목을 "~썰"로 지었다가, 평소에 잘 쓰지 않는 스타일의 쓰기 글이 되어 버렸다. 글의 남은 부분에서는 80%를 달성하고 나니 어떤 점이 좋은지 앞으로는 어떤 부분을 잘 하고 싶은지를 추가로 적어 보겠다.테스트를 작성하니까 무엇이 좋은가?테스트를 작성하게 되면 코드리뷰가 더 쉬워진다. 코드를 읽다가 잘 이해가 되지 않으면 테스트 코드를 살펴본다. 작성된 코드는 어떻게 사용되는가? 작성된 코드는 어떤 기능인가? 작성된 코드에서 주의해야 하는 점은 무엇인가? 를 효과적으로 알 수 있다.코드 수정에 자신감이 생긴다. 내가 오래전에 짠 코드, 다른 팀원들이 짠 코드는 수정하기가 무섭다. 특히 우리 회사와 같이 대부분의 코드 수정이 실제 돈의 흐름에 영향을 주는 경우는 더욱 무섭다. 하지만 테스트가 있으면 자신감이 생긴다. (그렇다고 안 무서운 것은 아니다.) 특히 시스템이 복잡해질수록 정적 분석 혹은 QA로 특정 코드에 대한 수정의 영향을 파악하기가 어렵다. 자동화된 테스트 외의 답은 없다고 생각한다. 11월에는 작성한 코드 보다 삭제한 코드가 더 많다. 이렇게 리팩토링이 가능하다.이제 수정하지 못하는 코드는 오래된 코드, 작성자가 퇴사한 코드가 아니라 테스트가 없는 코드가 되었다.테스트가 정착되기까지 키가 된 것은 무엇이었나?자동화를 통한 강제였다고 생각한다. 첫 번째 시점은 git hook을 사용한 시점이었다. commit을 할 때 flake8 체크를 하고 push를 할 때 테스트를 돌려주었다. 사람들은 스타일을 맞추지 않으면 commit을 할 수 없게 되었고, 기존의 테스트를 깨뜨리게 되면 코드를 push 할 수 없게 되었다. 두 번째 시점은 CI툴의 도입이었다. 내가 작성한 코드는 테스트를 통과했지만 maste에 있는 코드와 merge가 된 것을 기준으로 테스팅을 할 수 있게 되었다. 세 번째 시점은 테스트 커버리지 측정이었다. 신규로 작성되는 코드들이 우리가 원하는 수준의 테스트 커버리지를 만족시키는지 확인할 수 있었다. 자동화되지 않은 상태에서 매번 개발자에게 "테스트가 깨졌어요", "테스트를 추가해 주세요.", "여기는 코딩 스타일이 맞지 않아요."라고 말하는 것은 피곤한 일이기도 하고, 장기적으로 보면 동작하지 않는다. 자동화 외의 방법은 없고, 이 자동화된 방법은 새롭게 입사한 사람들이 테스팅에 손쉽게 적응하도록 한다. 앞으로의 테스팅에 대해사실 커버리지가 테스팅의 전부는 아니다. 커버리지만 올리는 의미 없는 테스트도 작성할 수 있다. 하지만 기본적으로는 python이 런타임 시에 다양한 에러를 발생시키기 때문에 어느 정도 이상의 커버리지 테스트는 필수라고 생각한다. 앞으로 주요한 모듈에서는 커버리지를 90% 이상을 맞추고 나머지 영역에 대해서는 80% 이상을 유지할 생각이다. 그리고 테스트의 질은 코드 리뷰로 해결해야 하겠다. 지금 unittest 가 약 3500개 정도 작성되어 있는 상태이다. 이 테스트를 동작시키는데 로컬에서는 약 3분 정도 CI환경에서는 10분 정도가 걸린다. 이 테스트를 기다리는 시간 동안 생산적인 일을 크게 하지 못하는 경향이 있어서 이 시간을 줄이기 위한 노력을 해야 한다. 마지막으로는 프런트엔드에 대한 테스트를 추가해야겠다. 글을 마치며이 글은 나의 눈에서 바라본 것을 기준으로 적었기에 내가 다 한 것처럼 느껴진다. 하지만 전혀 그렇지 않다. 이 모든 작업은 나 혼자 한 것이 아니라 우리 팀이 한 것이다. 더 나은 개발을 목표로 함께 달리고 있는 팀원분들께 감사를 전한다. #8퍼센트 #에잇퍼센트 #개발 #개발팀 #삽질 #팀워크 #팀플레이 #성장 #성과
조회수 1068

진저티프로젝트 1년, 우리는 무엇을 위해 달려왔나?

벌써 1년이 지났습니다. 어느새 4월이 왔으니 말입니다...2014년 저희에게 지워지지 않는 두 기억을 남겼습니다. 한 가지는 우리가 '진저티프로젝트'라는 회사를 만든 것입니다. 법인 등록을 마친 4월 3일은 저희에게 또 하나의 생일이 되었습니다. 창업은 그저 회사를 하나 만드는 과정이 아니었기 때문입니다. 또 다른 우리가 태어나는 것 같은 일이었지요. 우리 안에 새로운 열정을 발견하고 또 새로운 헌신을 요구받는 일이었습니다. 새로운 변화가 버겁기도 하고 가끔씩 우리가 앞으로 잘 해 나갈 수 있을지 불안하기도 했지만, 가슴 뛰고 신나는 삶이 시작된 것 같았습니다.그런데 그때 그 사건이 벌어졌습니다. 너무나 화창했던 봄날, 거짓말처럼 어린 생명들이 깊고 푸른 바닷속으로 차갑게 꺼져 갔습니다. 뉴스를 보는 것이 무서웠고, 순간순간 무겁고 우울한 감정과 생각들이 머릿속을 떠돌아다녔습니다. 무엇이 잘못되었을까 자꾸 되뇌고 죄책감과 상실감에 젖어들곤 했습니다. 대부분의 사람들이 비슷한 감정이었겠지요. 세월호 사건은 그동안 깊게 인식하지 못한 사실을 깨닫게 해 주었습니다. 우리는 서로의 행복과 슬픔에 긴밀하게 연결되어 있다는 것을, 모든 사회의 문제들은 유기적으로 연관되어 있다는 것을 말입니다. 나는 이웃의 삶에 책임이 있는 사람이고 또한 이웃의 삶은 나에게 엄청난 영향을 미치고 있다는 인식이 선명해진 것입니다. 그 인식은 우리가 만들어 가고 있는 진저티프로젝트라는 조직이 어떡해야 하는지에 대해 더 크고 분명한 관점을 가지게 해 주었습니다, 사회를 구성하는 개인들과 조직들이 자신들이 지켜야 하는 올바른 기준과 규칙을 지키지 않았을 때 얼마나 큰 재앙이 일어날 수 있는지, 잘못된 이해관계가 얼마나 큰 희생을 강요하게 되는지, 크고 작은 잘못된 관생에 대해 용인하는 문화가 얼마나 치명적인지 분명히 알게 되었습니다. 무엇보다 권력을 부여받은 이들의 가치와 결정으로 얼마나 많은 이들의 삶이 달라지는지 생생하게 알게 되었지요. 함께 진저티프로젝트를 만들었던 세 사람에게도 깊은 공감대가 있었습니다. 비록 우리가 만드는 조직이 아주 작은 회사일 따름이고 우리의 길이 그리 순탄치 않을 수 있겠지만, 우리가 이 잔인하고 아름다운 4월의 절실한 깨달음을 잊지 말자고 다짐했습니다. 좀 더 많은 대가를 치루더라도 올바른 기준을 스스로 엄격히 지켜가고, 함께 일하는 동료와 파트너, 고개들에게 정직해야 하고 높은 수준의 책임을 가져야 한다는 마음을 새겼습니다. 진저티프로젝트의 사명은 '비영리 조직들이 더 건강하게 성장하고 더 탁월해지도록 돕는 것'입니다. 1년이 지난 지금, 이 사명은 더 무겁게 느껴집니다. 건강한 성장은 올바른 기준을 끊임없이 적용하는 수고를 할 때에만 가능한 길이고 탁월한 성과는 더 책임 있는 자에게만 주어지는 열매인 것을 알았기 때문입니다.진저티프로젝트의 1주년을 맞이하며, 4월의 아프고도 아름다운 두 가지 기억을 다시 한 번 마음에 새깁니다..그리고 저희를 돌아봅니다. 1년 동안 우리가 달려온 길이 첫 다짐에 부끄럽지 않았는지, 그리고 또 다른 1년을 달려갈 마음의 준비가 되었는지 말입니다. 좀 더 고민하고 좀 더 수고하고 좀 더 대가를 치루더라도 첫 마음을 기억하며 한 해를 달려가겠다는 작은 다짐을 해 봅니다.1년 동안 작지만 의미 있는 시도를 할 수 있도록 진저티프로젝트를 격려하고 함께 해 주신 모든 분들께 감사드립니다.#진저티프로젝트 #돌아보기 #창업1년차 #인사이트 #경험공유
조회수 1382

[인공지능 in IT] 서로 다른 우리, 대화할 수 있을까?

설연휴 동안 그간 못 봤던 밀린 TV 프로그램들을 맘껏 즐기며 여유로운 시간을 보냈다. 그 중에서도 여러 분야의 전문가를 초빙해 특강을 해주는 tvN의 '어쩌다 어른'을 보기 시작했다. 몇 년 전 언어인문학을 주제로 한 조승연 작가님편을 보니 새삼 현재 대한민국이 처한 현실을 피부로 느끼게 되더라.< tvN>강연에서 가장 심도있게 다룬 부분은 대한민국 영어교육의 현실이다. 초등학교부터 영어 수업을 듣고, 심지어 말도 제대로 떼기 전인 유아기부터 영어를 주입시키는 것이 어느새 자연스러운 일이 되어버렸다. 하지만, 10년, 20년 이상 영어 교육을 받았는데도 막상 영어로 문서 작업을 하거나, 외국인이 길을 물어보면 식은땀을 흘리는 이유는 무엇일까? 어째서 한국에서는 영어를 제대로 하려는 노력보다, 영어를 아는 노력을 하고 있는 것일까?재미있는 사실은 우리만 영어를 배우려고 애먹는 것이 아니다. 미국인이 한국어를 배울 때에도 비슷한 현상을 겪는다. 강연 중 'FSI(The Foreign Service Institute)'에서 미국인들이 다른 나라 언어를 얼마나 공부해야 소통할 수 있는지에 대한 연구 자료를 공개했다. 언어별 Level 1부터 Level 5까지 다섯 가지 난이도로 구분 되어있고, 이에 따른 총 필요시간으로 구성되어 있는 연구에서, 한국어는 일본어, 중국어와 함께 소통하기 까지 총 2,200시간을 공부해야 하는 Level 5군에 속해 있었다.즉, 전세계 7,000여 개가 넘는 언어 중 한국어는 영어와 문장구조가 완전히 다르기 때문에, 24시간 내내 공부해도 90일 넘게 공부해야 한다는 것. 이렇듯 모국어가 아닌 다른 언어를 배우기 위해서는 어마어마한 시간과 노력이 필요하다. 만약, 단순히 언어를 알기 위해 배우는 것보다, 소통하기 위해 배운다면 흔히들 말하는 'ROI(Return on Investment)'를 더 높일 수 있자 않을까.출처: 동아일보소통을 위한 언어 학습은 비단 사람에게만 해당되는 것이 아니다. 기계와 사람의 소통 역시 요즘과 같은 인공지능 시대에서는 빼놓을 수 없는 부분이다. 몇 년 전부터 업계에서는 '챗봇(Chatbot)' 열풍이 불고있다. 챗봇은 대화(Chat)와 로봇(Robot) 두 단어를 합친 신조어로서, 각종 앱이나 웹을 기반으로 문자를 통해 사용자의 의도를 파악해 대화할 수 있는 인공지능 기계다. 여기에는 '자연어 처리(Natural Language Processing, NLP)', '자연어 이해(Natural Language Understanding, NLU)', '머신러닝(Machine Learning)' 등 수많은 기술이 접목되어 발전 중이다. 현재 챗봇은 나날이 진화하며, 텍스트를 텍스트로만 처리하는 것을 넘어, '음성으로 변환(Text-To-Speech, TTS)'시키거나, '음성을 텍스트로 변환(Speech-To-Text)'시키는 등 다양성에 있어 점점 넓은 범위에 적용되고 있는 추세다.< 출처: Understanding Natural Language Understanding, Bill MacCartney >글로벌 챗봇 시장은 매년 큰 폭으로 성장하고 있는 추세이며, 여러 사업 분야에 걸쳐 사용되고 있다. 북미의 시장조사기관 'Credence Research' 조사에 따르면, 글로벌 챗봇 시장은 2015년부터 2023년까지 연평균 35% 성장할 것으로 예상된다. IT솔루션 기업 'MindBowser'가 조사한 결과, 95%의 기업이 챗봇 활용성에 대해 긍정적인 반응을 보였으며, 고객응대(93%)부터, 마케팅(61%), 상품 주문(47%), 소셜 미디어(32%) 등 사업 분야에서 활용되는 용도 역시 다양한 것으로 밝혀졌다.챗봇은 어떠한 프로세스를 통해 실제로 작동하는지 살펴보기 위해서 사내 엔지니어의 도움을 받았다. 스켈터랩스에서 대화형 인공지능 프로젝트팀에 있는 정태형 엔지니어가 메신저를 통한 간단한 시범 사례를 스크린샷으로 찍어 보여주었다.< 인공지능 메신저 사례, 출처: 스켈터랩스 >여행지를 자동으로 추천해주는 엡에 적용할 수 있는 챗봇과의 대화다. 사용자가 "여행을 가고 싶다"고 말하자 자동으로 '카이트봇'이 반응하고, 여행 기간과 테마를 물어본다. 여기서 사용자가 "여행 기간"을 말하자 챗봇은 자동으로 '3월'과 '7일'을 인식, 이전 질문에서 대답하지 않은 테마에 대해 질문한다. 이렇게 사용자와 챗봇 사이에서 대화를 자연스럽게 주고 받을 수 있는 것은 대화의 구성 요소 중 '의도(Intent)', '개체(Entity)', '맥락(Context)'이 중요한 역할을 한다. 이를 간단히 살펴보도록 하자.의도(Intent)는 사용자가 어떠한 의도로 대화를 하는지를 의미한다. 위 스크린샷의 경우, 여행을 가는 것'이 의도라 할 수 있다. 예를 들어, "여행 가고 싶어"가 아닌 "여행 가볼까?"로 입력하더라도 - 미리 여행을 가는 것에 대한 자연어 기반 패턴이 'Intent Classifier'에 입력되어 있는 상태라면 - 이를 '사용자가 여행을 가고 싶구나'라는 의도로 이해할 수 있는 것이다.개체(Entity)는 사용자의 의도 중에서 실체가 될 수 있는 변수를 말한다. 개체는 사용자가 입력한 문장에서 특정한 변수가 달라질 때 사용된다. 위 스크린샷의 경우, '3월 3일', '해변', '일주일' 등과 같이 주로 명사 형태로 구성된 문장에 들어가는 구성 요소를 말한다.문맥(Context)은 이전 대화를 자연스럽게 이어갈 수 있도록 처리할 수 있는 기능이다. 예를 들어, 사용자가 챗봇에게 "가수 빅뱅의 프로필을 검색해달라"고 요청했다. 그리고 빅뱅의 노래를 듣기 위해 "거짓말 틀어 줘"라고 명령하면, 기존에 빅뱅이라는 가수에 대해 대화하고 있던 문맥을 인식해 God의 거짓말이 아닌 빅뱅의 거짓말을 재생하는 것이다.이 외에도 챗봇에는 '말뭉치(Utterance)', '시나리오(Scenario)', '슬롯채우기(Slot Filling)' 등 다양한 구성요소를 통해 대화를 이어나갈 수 있다. 물론, 아직 100% 인간과 대화하는 기술까지 이르지는 못했다. 하지만, 우문현답하지 않고 사용자 의도를 정확하게 파악하는 수준에 이르러 생활에 편의성을 제공하고 있다.한국어의 경우 언어의 난이도 때문에 국내 기업은 물론 많은 글로벌 IT 기업도 아직 완벽한 수준에 도달하지 못했다. '잘 한다'라는 말만 하더라도 '훌륭하게 하다', '만족할 만하다', '자주 하다' 등의 긍정적인 표현이 있는가 하면, '잘 하는 짓이다' 등의 부정적인 표현인 경우도 흔하기 때문이다. 결국 챗봇도 기계이기 때문에, 여러가지 문장과 상황을 학습시켜 한국어 성능을 향상시켜야만 한다.다시 '어쩌다 어른'으로 돌아가보자. 강연을 마무리할 즈음 조승연 작가는 이렇게 말한다."영어도 결국 언어의 한 종류, 영어를 쓰는 사람들도 우리와 같은 사람, 우리처럼 희로애락을 느끼는 인간입니다. 기계와 얘기하기 위해 법칙에 맞춰 말해야 하는 것이 아니라 그 사람과 감정을 통하게 해주는 어떤 도구입니다."여전히 우리는 챗봇이라는 기계와 소통한다기 보다, 일방적으로 질문을 던지고, 챗봇은 미리 입력되어 있는 규칙 안에서만 답한다. 학습을 통해 수많은 데이터가 축적된다 하더라도, 아직까지 언어를 통해 전달되는 인간의 감정을 완벽히 이해하기에는 부족한 것이 사실이다. 과연 기계가 '법칙'에 맞춰서 말해야 하는 것 이상을 넘어서는 순간이 올까? 우리는 그 순간을 찾아 지금도 노력하고 있는지 모른다.이호진, 스켈터랩스 마케팅 매니저조원규 전 구글코리아 R&D총괄 사장을 주축으로 구글, 삼성, 카이스트 AI 랩 출신들로 구성된 인공지능 기술 기업 스켈터랩스에서 마케팅을 담당하고 있다#스켈터랩스 #기업문화 #인사이트 #경험공유 #조직문화 #인공지능기업 #기술기업
조회수 1319

샌프란시스코 테크 업계 인터뷰 2: Bleacher Report, Udemy, Intuit

이 포스팅은 2개의 글로 구성된 시리즈 중 2번째 글입니다. 이전 글을 읽으려면 “샌프란시스코 테크 업계 인터뷰 1: Facebook, Fivestars”로 이동하세요.  안녕하세요, 스포카 프로덕트 매니저 옥지혜입니다.  제품을 담당하는 팀이 일하는 방식은 제품 그 자체에 영향을 줍니다. 어떠한 기능을 어떤 주기로 사용자에 배포할 것이냐에 대한 결정을 하는 과정이기 때문입니다. 그뿐만 아니라 정성적인 차원에서 새로운 기능을 개발하거나 운영하는 일 등을 조직이 어떻게 평가하느냐에 따라 작업자의 업무 만족도와 작업물의 품질에도 영향을 미칩니다.  구태의연한 말이지만 테크 업계에서 일하는 방식에 있어 정답은 없습니다. 제품과 조직은 끊임없이 변화하고 이에 맞추어 일하는 방식도 바뀌어야 하므로 지난해에 불합리하다고 여기던 방식이 올해는 검토해 볼 만한 것이 될 수도 있습니다. 일하는 방식 그 자체도 협의를 거쳐 지속적으로 개선하는 과정이 필요합니다.  일하는 방식과 함께 제품과 조직마다 프로덕트 매니저의 역할과 권한도 바뀝니다. 비즈니스에 제품이 기여하는 정도에서부터 조직 내 이해관계자와의 관계까지 제품과 조직의 모든 요소가 프로덕트 매니저가 일하는 방식에 영향을 미칩니다. 스포카 프로덕트 매니저의 경우, 서비스 백로그 관리의 역할도 담당하기 때문에 유동적으로 일하는 방식에 따른 결과는 제품에 다시금 반영됩니다.  이번 샌프란시스코 테크 업계 인터뷰는 위와 같은 가정하에 ‘스포카는 앞으로 어떤 방식으로 일할 것인가’라는 질문에 대한 참고할 사례를 수집하기 위하여 진행하였습니다. 닭과 계란 문제일 수 있지만, 이것은 ‘스포카는 어떤 제품을 만들고자 하는가’하는 고민과 맞닿아 있습니다.  인터뷰는 총 5회에 걸쳐 아래의 PM 분들과 진행하었습니다. 흔쾌히 인터뷰에 응해 주신 모든 분께 감사드립니다. 각 인터뷰이와 나눈 이야기 중 인상적이었던 부분을 발췌하여 2개의 포스팅에 걸쳐 공유하겠습니다. Stephanie Shum(Director Product Management at Facebook)   David Park (Refereum COO)Michael Hsu (Product Manager at FiveStars)Chris Nguyen (VP Product at Bleacher Report)홍성철 (Product Manager at Udemy)정대영 (Product Manager at Intuit)    Chris Nguyen (VP Product at Bleacher Report)        현재 담당하고 있는 팀은 어떻게 구성되어 있나요?  C: 초기에는 직무 단위로 팀을 구성하였다. 현재는 전략에 맞도록 제품 단위의 스쿼드로 구성을 변경했다. 제품 팀은 전체적으로 디렉터 2명, 시니어 PM 2명, 주니어 PM 2명과 디자이너 7명으로 구성되어 있다. PM 1명 당 디자이너 1.5명의 비율을 유지하려고 한다. 보다 구체적인 수준으로 아이디어를 디벨롭하기 위해서이다. 엔지니어는 50명 규모로까지 충원하는 것을 목표로 하고 있다.  PM은 팀에서 어떤 역할을 하나요?  C: 스프린트를 안정적으로 운영하기 위해서 말 그대로 할 수 있는 일은 모두 도맡아서 했다. 점차로 팀이 커지면서 제품과 팀이 어떤 우선순위를 가지고 움직일지 트래킹하는 데에 집중하려고 노력했다. 우선순위를 지킬 수 있도록 스프린트를 계획하고 계획대로 일이 진행될 수 있도록 챙기는 역할에 집중했다. 실제 배포를 위한 역할이 이와 같다면, 서비스 전략 관점에서는 중요한 결정사항이 타당했는가에 대하여 결정 이후에도 자주 점검했다. 또 제품 팀의 KPI를 정확하게 측정하고 제품 팀에서 하는 모든 일이 KPI를 달성하였는지 검토했다.  PM으로서 제품 팀에 동기부여를 어떻게 하나요?  C: PM의 가장 중요한 역할 중 하나는 ‘왜 이 일을 해야 하는가’에 대하여 끊임없이 설명하는 것이다. 목표와 이를 달성하기 위해 해야 하는 일을 문서화하고 이것이 실제로 팀에서 할 수 있는 일이라는 것을 다양한 방식으로 팀에 전파한다. PM이 주로 조직과 제품에 대한 다양한 정보를 취득하게 되므로 팀 내에 이를 지속적으로 공유하는 것 역시 중요하다. (운영 업무에 대한 동기부여는 어떻게 하나요?) 서비스가 성장하고 시간이 흐를수록 기술 부채가 쌓이기 마련이다. 신규 기능에 대한 요구사항과 기술 부채 삭감을 위한 작업의 무게를 맞추는 역할도 PM의 몫이다. 팀에서 담당하는 가시화되지 않는 업무를 지적하여 마땅한 보상을 받게 하는 것이 좋은 방법이라고 생각한다.    홍성철 (Product Manager at Udemy)        PM의 역할 중 무엇이 가장 중요할까요?  홍: PM은 완성도 있는 제품을 제때 배포할 수 있는지가 가장 중요하다. Udemy의 경우, 서비스에 기술적인 오류가 있을 때 책임을 PM이 지게 하여 제품의 기술적인 영역에 집중하도록 유도한다. PM은 제품의 연 단위 목표를 수립하고 분기 단위로 쪼개진 목표를 실제로 달성할 수 있도록 2주 단위 스프린트를 운영하는 사람이다. (제품 팀이 목표지향적으로 일하기 위해 어떤 장치를 두나요?) 모든 기능의 제안은 원 페이지 기획서로 시작한다. 이 기획서에 해당 기능을 왜 지금 만들어야 하는지에 관해서 설명하게 한다. 이외에도 반드시 팀 비전과 목표에 각각의 기능이 어떻게 기여하는지도 적도록 요청한다. 기능을 제안하는 모든 팀은 이 문서를 작성하여 그것을 기반으로 백로그 조정을 진행한다.  유관부서 요구사항의 우선순위 조율과 디벨롭에 있어서 팁이 있나요?  홍: 기능을 제안한 배경이 되는 문제를 명확하게 정의해야 불필요한 커뮤니케이션을 줄일 수 있다. 아울러 특정 기능의 진행 우선순위를 높이면서 다른 기능의 우선순위가 내려간다는 점을 강조하여야 한다. 모든 커뮤니케이션의 기본은 그것이 협상의 성격을 띤다는 점이다. 개발 팀과의 커뮤니케이션도 협상이다. 이를테면 커뮤니케이션 스킬이 뛰어난 프로그래머와 협업하는 경우, 어떠한 예외 케이스가 있는지와 이에 대하여 대응할 때 검토할 수 있는 옵션을 제시할 수 있어 효과적으로 일할 수 있다. 개발 팀 외부 조직은 제품의 기술적인 영역에 직접 관여할 수 없다. 따라서 어떤 프로그래머가 개발 팀의 리더인지에 따라 협의 결과에 큰 차이를 가져올 수 있다.  컴퓨터 공학에 대한 사전 지식의 유무 또는 한국인이라는 점이 샌프란시스코에서 PM으로 일하는 데 영향을 미친다고 생각하나요?  홍: 재학 중에 시스템 디자인 엔지니어링을 배웠다. PM으로서의 업무 경험이 쌓이면서 테크니컬 배경 유무에 따른 차이가 갈수록 작아진다. 경력 초반에 개발 팀의 업무에 공감할 수 있는 범위와 정도의 차이에 영향을 주었고 시간이 갈수록 차이가 작아졌다. 모바일 앱 시장 초기 단계에는 빠른 출시가 중요하므로 공학 배경이 있는 사람을 업계에서 선호했다. 시장 성숙도가 올라가면서 현재는 트렌드가 바뀌었다. 샌프란시스코에 일하는 한국인 PM은 MBA 출신이 대다수이고 다양한 문화적 배경을 가진 사람이 업계에 많으므로 이 또한 크게 문제는 되지 않는다. 적극적인 태도와 뛰어난 업무 능력이 있다면 적응하는 데에 어려움은 없다고 생각한다.    정대영 (Product Manager at Intuit)        기능에 대한 요구사항은 어떻게 발굴하나요?  정: 발의하는 주체에 따라 크게 2가지 카테고리로 구분할 수 있다. 외부에서 발생하는 요구사항의 경우, 사용자의 제안 또는 리서치를 통해 발굴할 수 있다. 내부에서 발생하는 요구사항의 경우, 사용자 관점에서 서비스 개선사항을 직접 찾아낸다. 이후에 프로젝트를 만들고 프로토타이핑하여 A/B 테스트를 진행한다. 제품 팀 - PM, 디자이너, 엔지니어 - 모두 개선사항을 찾는 과정에 참여한다. 제품의 목표는 탑다운으로 제시될 수 있으나 실제 액션 아이템에 대한 결정은 실무 단에서 가장 비즈니스 임팩트를 줄 수 있는 기능을 정한다. 기존 백로그의 우선순위에 영향을 주는 기능 요구사항이 있을 경우, 명확한 기준을 근거로 투명한 의사결정을 거쳐 우선순위를 결정한다. 이는 모든 요구사항이 협상 과정이라는 것을 강조한다는 점에서 유의미하다.  사내에서 제품 팀 또는 제품에 대한 피드백은 어떻게 받나요?  정: 모든 임원진이 참석하여 제품에 대한 피드백을 주는 미팅이 있다. 서비스에 대한 내부 피드백을 정확하게 받을 수 있는 계기가 된다. 이 회의를 통해 전략 미팅이 시작되기도 하며 구체적인 프로젝트 협의를 진행하는 미팅이 이어지기도 한다. 각기 다른 제품을 담당하는 PM이 모두 모이는 미팅도 있다. 미팅 이전에 어떤 피드백을 받고 싶은지에 대해 사전 요청을 하기도 한다. 반드시 ‘애자일’ 하게 일하는 방식이 옳다고는 생각하지 않는다. 방법론보다는 데이터 기반의 피드백과, 일반적인 경험에 대한 언급보다는 명확하고 직관적으로 상대방에게 구체적인 피드백을 주는 것이 중요하다.  제품 팀이 목표에 집중할 수 있도록 PM으로서 어떤 역할을 하시나요?  정: 비즈니스 목표와 제품 팀의 목표가 서로 연관되어야 하는 것은 당연하다. 다만 기술 부채 문제처럼 비즈니스 목표에서 포함하지 않는 제품 팀의 목표가 있을 수 있고, 이 또한 협상의 대상이다. 기술 부채의 범위와 정도에 따라 서비스 자체에 영향을 미칠 수 있기 때문이다. 이러한 문제를 해결하기 위해서 Hack day를 운영한다. 제품 팀이 특정 문제를 해결하기 위해, 정해진 시간 동안 다른 업무를 진행하지 않고 그 문제에만 집중할 수 있도록 유도하는 방식이다. 또한 PM은 업무 우선순위를 정함에 있어 신규 기능과 기존 기능 버그 패치를 함께 조율한다. 제품의 퀄리티는 제품 팀 또는 개발 팀만의 책임이 아니고 전사의 책임이다. 테스트와 클린업의 중요성에 대해 전사적인 공감대 형성이 필요하다.    총 5회에 걸친 인터뷰를 통해 얻을 수 있는 인사이트를 요약 하자면 다음과 같습니다. 비즈니스 목표와 제품 팀 목표가 연관될 수 있도록 업무 방식을 관리해야 한다.   요구사항 간의 우선순위를 조율하는 것은 협상의 과정이다. 협상의 주된 기준은 비즈니스 임팩트에의 기여도이며 기술 부채와 같이 가시화되지 않는 기준도 PM이 검토하여 반영해야 한다.제품 팀 자체도 제품이다. 팀원의 피드백을 취합해서 효과적인 동시에 행복하게 일할 수 있도록 업무 방식을 개선해 나가야 한다.  스포카에서는 위와 같은 인사이트를 기반으로 스포카 크리에이터(스포카 제품 팀)의 업무 방식을 지속적으로 개선하고 있습니다. 스포카 크리에이터는 우선 서비스 품질 차원의 기술적인 목표를 관리합니다. 동시에 제품이 비즈니스에 어떻게 기여하는지를 확인하고 보다 큰 임팩트를 낼 수 있는 기능을 탐색합니다. 이 결과로 제품에서 발생하는 매출 지표 혹은 이에 기여하는 부가 지표를 관리합니다. 아울러 제품 팀 외 유관부서의 요구사항을 취합하는 채널을 일원화하고, 스프린트를 구성하는 회의에서 이를 발의받아 우선순위를 정합니다. 이러한 협의체는 스포카 크리에이터가 가장 효과적으로 비즈니스와 제품에 기여할 수 있도록 업무를 조율하는 역할을 합니다.  마지막으로 스포카 크리에이터는 분기 단위로 동료 간 리뷰 및 조직장과의 면담을 거쳐 팀의 컨디션을 체크합니다. 피드백을 통해 각 팀원은 보다 성장할 수 있는 기회를 확인할 수 있습니다. 조직 차원에서는 각 팀원이 비즈니스 또는 제품의 목표에 대해 얼마나 공감하는지를 확인하고 기여하고자 하는 업무를 파악하여 팀이 보다 효과적으로 일할 수 있도록 조직 구성을 변경하기도 합니다.  스포카 크리에이터는 개인의 성장이 팀의 성장으로 이어지고 이는 곧 제품의 경쟁력과 연결된다고 믿습니다. 스포카와 함께 성장하실 수 있는 분은 언제나 환영합니다.
조회수 847

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

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

Team FASTFIVE, 그리고 함께하는 사람들

패스트파이브는 2018년 20호점 오픈을 목표로 열심히 뛰어가고 있습니다. 지난 3년보다 더 빠르게 성장할 패스트파이브와 함께할 최고의 팀원들을 찾고 있는데요. 패스트파이브를 궁금해하실 많은 예비지원자 분들에게 더욱 생생한 패스트파이브의 모습들을 보여드리기 위해 앞으로 패스트파이브의 여러 팀원들을 소개하려고 합니다! 패파 인터뷰 가장 첫 번째 순서는 바로 패스트파이브의 김대일 대표님입니다.  여러 매체를 통해서 김대일 대표님의 인터뷰를 많이 진행했었지만, 오늘은 패스트파이브의 비즈니스에 대한 이야기보다 패스트파이브라는 ‘팀’ 그리고 그 팀을 만들어가는 우리 팀원들에 대한 대표님의 생각을 들어보겠습니다.우리가 하는 일,  Mission & Vision  Q. 대표님! 간단히 자기소개 부탁드려요! 안녕하세요. 패스트파이브 공동대표를 맡고 있는 김대일입니다.Q. 너무… 간단한데요… (웃음) 패스트파이브를 어떻게 시작하게 되셨나요? 예전부터 사업을 하고 싶다는 생각을 많이 했었어요. 취미가 메이저리그와 NBA를 보는 것인데 경기력이 좋은 훌륭한 팀이 우승을 하고 최고의 성과를 내는 걸 볼 때마다 ‘나도 좋은 사람들과 위대한 성과를 만들어 보고 싶다’는 생각을 많이 했어요. 그렇게 처음에는 막연했던 생각이 점차 내 비즈니스를 해보고 싶다는 생각으로 발전했던 것 같습니다. 그러던 와중에 여러 과정을 거쳐 공동창업자 4명이 모이게 되었어요. 어떤 아이템으로 사업을 하는 게 좋을지 서로 치열하게 고민했고 그 결과 아주 오랫동안 혁신이 없었던 시장에서 사고를 쳐보고 싶다는 생각을 하게 됐어요. 그냥 돈을 버는 것이 아니라 시장과 고객 모두에게 큰 변화를 줄 수 있는, 여러 가지 의미에서 큰 혁신을 만들어 낼 수 있는 일을 하고 싶었어요. 그렇게 여러 비즈니스 필드를 놓고 고민하다 부동산 시장 그중에서도 주거와 오피스 시장에 초점을 맞추게 됐어요.저는 VC 업무도 했었고 스타트업 투자 업무도 하면서 전통적인 형태의 업무 방식이 아니라 점점 변해가는 20~ 30대들의 업무 방식을 많이 경험했었어요. 그러면서 전통적인 ‘사무실’의 개념은 스타트업, 그리고 최근의 젊은 세대들이 일하는 방식이랑 맞지 않다는 생각을 많이 했어요. 패스트파이브 초기 창업자들도 주로 스타벅스에서 회의도 많이 하고 사업 초반에 업무도 많이 했거든요. 그러면서 이런 감각적인 공간에 열정적인 20~30대가 모여서 일하면 재미있는 것들을 많이 할 수 있겠다는 생각을 했죠. 그리고 다음 날부터 바로 부동산시장을 알아보기 시작했어요. 그리고 그게 패스트파이브의 시작이었죠.Q. 그렇게 패스트파이브를 시작하고 나서 지금까지 가장 중요하게 생각하는 것은 무엇인가요? 처음 서초점을 세팅할 때 책상부터 의자까지 손수 다 조립하고 인테리어도 저희가 소품 하나하나 다 사와서 외국 인테리어 사진이나 잡지를 보면서 만들었어요.      “소품 하나하나 구매하던 패스트파이브 초기 시절, 의자 하나, 책상 하나까지  저희가 직접 조립했었어요”패스트파이브 1호점을 세팅할 때 저희가 가장 중요하게 생각했던 것은 이곳에 오는 사람들이 자신들의 비즈니스에 가장 집중할 수 있게 만들자는 거였어요. 그리고 3년이 지난 지금 제가 팀원들에게 말하는 패스트파이브의 미션도 같아요. 표현만 다를 뿐이죠. “To simplify life and give people more creativity and inspiration. 고객이 본질에 집중하게 하고 창의성과 영감을 불러일으킬 수 있는 서비스를 제공하는 것. 이게 저희의 미션이에요. 저희의 고객들은 각자의 비즈니스를 성공시키고 싶어 하는 분들이에요.  고객이 업의 본질에 집중할 수 있도록 하고 패스트파이브 안에서 창의성과 영감을 불러일으킬 수 있는 서비스를 제공하는것. 그게 제가 생각하는 패스트파이브의 미션이자 비전이에요.  회사를 운영해 보신 분들은 아시겠지만 사무실을 구하고 업무환경을 만드는건 생각보다 많은 노력이 필요하고, 대게는… 특히 스타트업처럼 회사가 성장하는 초기 과정에서는 대표가 가장 많은 신경을 써야 해요.  비즈니스를 성장시키는 것에 집중해도 시간이 부족한데 업무공간을 세팅하는데도 많은 시간과 돈이 들어가죠. 패스트파이브는 노트북만 가져와도 바로 완벽하게 업무를 할 수 있도록 도와줍니다. 패스트파이브 멤버들을 위해 매월 준비되는 커뮤니티 & 네트워킹 행사최근에는 정해진 답이 없고, 더욱 새로운 시도를 하면서 정답을 만들어가는 과정이 더 중요해졌어요. 이때 가장 필요한 것이 창의성과 영감이라고 생각합니다. 업무에 필요한 인프라뿐만 아니라 점차 기존의 틀에서 벗어난 전혀 다른  새로운 시장과 서비스가 만들어지는 요즘 세대에게 맞는 창의성과 영감을 줄 수 있는 서비스를 제공하는 것이 목표예요. 저는 패스트파이브와 함께하는 다양한 사람들이 패스트파이브 안에서 만들어지는 네트워크를 통해 새로운 아이디어에 대한 영감을 얻고 저희 입주사들이 갖고 있는 영감을 떠올릴 수 있도록 만들고 싶어요. 정리하면 밀레니얼 세대들이 일하는 방식, 라이프스타일 그리고 변화하는 시장의 접점에 해당하는 모든 인프라와 서비스를 제공하는 것이 패스트파이브의 비전입니다. Team FASTFIVE, 그리고 함께하는 사람들 Q. 대표님이 생각하시는 패스트파이브의 팀원으로서 가장 중요한 역량은 무엇인가요? 제가 전체 팀원들에게 매번 공유하는 다섯 가지 기준이 있어요. Five – Value 라고 표현하는데, 이 다섯가지 기준이 제가 생각하는 우리 팀원으로서 가장 중요한 역량이에요.첫 번째로  유연한 사고(Flexible)를 하는 사람이요. 우리의 비즈니스는 기존의 시장에 없던 새로운 비즈니스예요. 정답이 없는 시장에서 매번 새로운 문제에 직면하고 이것을 해결하는 과정의 연속이죠.  때문에 자신의 과거 경험이나 지식을 바탕으로 경직된 사고를 하는 것을 가장 경계하고 있어요.그다음으로 스타트업의 핵심은 실행력(ASAP)이라고 생각합니다. 빠르게 문제를 해결하고, 결과에 따른 개선 작업도 빠르게 진행되어야 다른 경쟁자들보다 압도적인 성과를 낼 수 있으니까요. 우리 패스트파이브가 다른 회사들보다 빠르게 성장할 수 있었던 비결은 바로 이 실행력에 있었다고 생각합니다.세 번째는 스스로 동기부여(Self motivated)  할 수 있는 역량이에요. 저희가 하고 있는 비즈니스는 매일매일이 새로운 영역에 도전하는 과정이에요. 그 때문에 항상 예상치 못한 문제들이 발생하죠. 이 과정에서 장기적인 관점에서 자신이 하는 일의 의미를 찾아낼 수 있는 사람들이 좋은 성과를 내더라고요.네 번째로 ‘신뢰할 수 있는 사람인가’ 라는 점을 중요하게 봐요. 패스트파이브도 스타트업이에요. 한 사람 한 사람이 모두 중요한 역할들을 하고 있죠.  그래서 면접을 볼 때  믿을 수 있는 사람인지를 더 신중하게 생각하고 있어요. 제가 말하는 신뢰는 정직함의 개념뿐만 아니라,  그 사람의 결과물이 치열한 고민과 노력을 거친 최선의 결과물이라는 신뢰를 줄 수 있는 사람인가라는 점을 포함하고 있어요.  최고의 결과물을 내기 위해서 노력하는 사람들이 만들어 내는 결과물이 바로 회사를 성장시키는 원동력이라고 생각하거든요.  이런 치열함이 담긴 결과물들이 모여서 회사의 경쟁력을 만든다고 생각합니다.마지막으로 고객 중심적으로 생각하는(For Customer) 역량이 필요해요. 대부분의 고객이 저희에게 좋다, 싫다를 솔직하게 표현하지 않아요. 그렇기 때문에 더더욱 우리 서비스를 이용하는 고객들을 면밀하게 관찰하고 고객들에게 필요한 것이 무엇인지 고민하는 자세가 중요해요.  고객에게 더 좋은 서비스를 제공하고자 하는 진정성을 가진 사람이 혁신을 만들어 내는 것 같습니다.Q. 초기부터 지금까지 모든 면접에 직접 참여하고 계세요. 면접을 보실 때 가장 핵심적으로 파악하는 부분도 비슷한가요? 네. 면접을 위해 꾸며진 모습보다는 그 사람의 본래의 모습이 궁금해요. 회사는 어쩌면 가족만큼 많은 시간을 함께 보내는 공동체니까요.  그래서 뻔하지 않은 질문을 하기 위해서 항상 노력합니다. (웃음) 일반적인 회사 면접에서 하는 질문보다 여러 가지 질문을 하는 편인데 이 과정에서 정말 진정성 있는 답변을 들을 때 마음이 흔들리는 경우가 많았어요. 여러 가지 질문을 주고받으면서  Five Value의 자질을 얼마나 갖고 있는지 파악하려고 노력하고 있어요. 빠르게 확장 중인 패스트파이브 11, 12호점 라운지 모습Q. 올해 초에 세 번째 투자유치에 성공했고, 20호점까지 확장을 목표로 하고 있어요. 빠른 성장을 목표로 많은 팀원들을 찾고 있는데 앞으로의 패스트파이브에 필요한 동료는 어떤 사람이라고 생각하세요? 이상하게 들릴지 모르겠지만, 초기와 지금의 기준이 크게 다르지 않아요. 패스트파이브에 대해서 장기적인 관점을 가질 수 있는 사람을 채용하고자 해요. 당장의 급한 일을 처리하고 문제를 수습하는 것도 중요하지만, 수십만 명의 입주자를 확보하고 우리의 서비스를 이용하는 사람들의  ‘라이프스타일’을 혁신하기 위해서는 패스트파이브가 얼마나 큰 잠재력을 가지고 있는지 공감할 수 있어야 해요. 그래서 우리의 잠재력을 현실로 만들기 위해 진정성 있는 노력을 할 수 있는 사람을 찾아요.  이런 이유로, 저에게 지금 패스트파이브와 함께하고 있는 모든 직원들 한 명 한 명이 정말 소중합니다. 패스트파이브의 잠재력과 성장 가능성을 공감하고 함께 노력하는 사람들이니까요.Q. 대표님이 앞으로 만들고 싶은 패스트파이브는 어떤 팀인지 궁금합니다. 회사는 가족 다음으로  하루의 가장 많은 시간을 보내는 공동체입니다. 어떤 사람들과 어떻게 일하느냐는 삶의 질에 무엇보다도 큰 영향을 미친다고 생각합니다. 저는 회사가 팀으로서 멋진 성과를 만들어 내는 곳일 뿐만 아니라, 팀원 한 명 한 명에게도 의미 있는 목표를 달성하게 하는 곳으로 만들고 싶습니다.  패스트파이브가 성장하는 과정이 함께하는 팀원들에게도 의미 있는 성장이 될 수 있도록 하고 싶어요. 그리고 이 모든 과정이 우리 팀원들에게 행복하게 기억되는 팀이 되었으면 좋겠습니다. FASTFIVE가 당신에게 줄 수 있는 것. Q. 다른 회사, 특히 다른 스타트업들과 달리 패스트파이브만의 장점은 무엇이라고 생각하세요? 가장 자신 있게 대답할 수 있는 건  함께 일하는 동료들입니다. 여러 회사들을 경험했지만, 지금과 같은 에너지 수준을 가진 조직은 경험해 보지 못했습니다. 패스트파이브의 미래가 밝은 단 하나의 이유를 꼽으라면 바로 함께하는 사람들이고, 대표인 저도 지금의 팀원들 한 명 한 명이 향후에 어떤 성과를 낼지 기대됩니다. 두 번째는 다양한 기회입니다. 저희는 빠르게 성장하는 스타트업의 속성과, 안정적인 부동산의 속성을 모두 가지고 있어요. 그래서 다른 스타트업들보다 훨씬 탄탄한 실적을 바탕으로 새로운 시도를 할 수 있는 기회가 많이 열려있습니다. 앞으로 호점 확장뿐만 아니라 브랜딩 작업부터 주거사업과 같은 기타 신규 사업까지 다양한 프로젝트들을 진행할 예정입니다. 새로운 업무의 기회는 당연히 패스트파이브의 미션과 비전, 그리고 우리의 비즈니스와 고객을 잘 이해하는 팀원들이 맡아서 이끌어갈 예정이에요.  지금 저희와 함께 하게 된다면 부동산 시장에서의 새로운 혁신을 만들어내는 주인공이 되실 수 있다고 말씀드리고 싶습니다. Q. 많은 예비 지원자들이 앞으로의 패스트파이브가 어떻게 성장할지 궁금해할 것 같은데요, 대표님의 생각이 궁금합니다. 직원들과 티타임을 가질 때, ‘우리 회사의 전성기는 10년 뒤, 혹은 20년 뒤에 올 것이다’라는 이야기를 자주 합니다. 제가 말하는 ‘전성기’는 단순한 봄이 아니라 세대가 변화하고 경제, 사회적인 구조가 변화하면서 저희에게 더욱 많은 기회가 생길 것이라는 뜻인데요. 앞으로 10년 ~ 20년 동안은 저희에게 긍정적인 방향으로 시장이 움직일 거라고 생각합니다. 그래서 더욱 겸손해야 하고, 치열한 준비가 필요하죠.  아마도 10 ~ 20년 뒤에는 하루의 대부분을 오피스 공간뿐만 아니라, 패스트파이브가 제공하는 다양한 서비스를 누리는 것이 당연한 날이 올 거라고 기대하고 그렇게 만들기 위해 노력할 것입니다. 이 과정을 만들어갈 분들을 지금 찾고 있고요.Q. 마지막으로 예비 지원자들에게 한마디 부탁드립니다. 얼마 전, 한 매체의 기자분과 인터뷰를 하면서 ‘대표님은 성공하신 것 같나요?’라는 질문을 받았습니다. 절반은 맞고, 절반은 틀리다고 답변을 했어요. 개인적으로 저는 학교생활, 이전 직장생활을 하면서 공정하지 않거나, 의미 없어 보이는 경쟁과 평가로 인해서 너무 많은 시간을 낭비했다는 생각이 있었어요. 그런데 패스트파이브를 시작하면서 그런 의미 없는 경쟁에서 자유로워졌다는 점에서는 성공했다고 생각합니다. 한편으로는 패스트파이브가 가야 할 길이 아직 멀기 때문에 성공과는 거리가 멀었다고도 생각해요.저에게 패스트파이브는 제 인생에서 절반의 성공을 준 회사입니다.  그리고 남은 절반도 성공으로 만들어 갈 수 있다는 확신이 있어요. 패스트파이브에 지원을 고민하는 분들께 한마디를 한다면, ‘ 패스트파이브에 입사하는 것으로도 절반은 성공했다’라는 말씀드리고 싶습니다.
조회수 2877

KBS 분야별 업무소개 - 방송경영

한때 방송사에서 ′경영′이라는 단어가 생소했던 시절이 있었습니다. 몇 개의 방송사가 방송 시장을 과점하고 있었기 때문에 재원은 여유가 있었고, 방송사간의 경쟁은 큰 의미를 주지 못했습니다. 당시에는 프로그램을 ′제작′하고 뉴스를 ′보도′하는 것만이 방송사의 활동이었습니다. 그러나 방송 환경이 과거와는 비교되지 않을 정도로 변한 지금, ′경영′을 빼놓고는 방송을 말할 수 없습니다. 종합편성채널, CATV, 위성방송, 인터넷 등 지상파방송의 지위를 위협하는 많은 매체들이 방송시장에서 경쟁을 부추기고 있습니다.KBS 역시 이 경쟁에서 자유로울 수 없습니다.우수한 프로그램이라 하더라도 효율성과 경제성을 바탕으로 제작하지 않으면 누구도 방송사의 생존을 보장하지 않습니다. ′방송사를 경영하는 것′,  다시 말해 ′조직의 비전을 제시하고 자원을 효율적으로 집중하고 배분하는 역할을 하는 것′이 '기획행정'의 존재이유입니다. 우리는 가장 가까이에서 방송을 바라보고 있습니다.KBS는 한국을 대표하는 공영 방송이며 영국의 BBC, 일본의 NHK 등 세계 일류 공영 방송과 어깨를 나란히 할 수 있는 방송입니다. 세계 방송의 흐름을 읽고 국내 방송 환경을 개척하며 한국방송을 굳건히 세우는 일. 또 5년 후, 10년 후의 KBS를 조망하고 바람직한 방송 위상을 확립하는 일. 여러분이 정책을 기획하고 조직과 예산을 관리하는 기획예산국과 같은 곳에서 일하게 된다면 여러분은 KBS의 미래로 밤잠을 설칠 수도 있을 것입니다. ′기획행정′은 방송과 함께 합니다.뛰어난 방송 제작을 위해 재원을 마련하고 인력과 물자를 적절히 배분 하는 일이 그것입니다. 대시청자서비스를 담당하며 시청자 제일주의를 실현하는 시청자권익보호국, 공영방송의 소중한 재원인 수신료를 관리하는 수신료정책국, 업무처리의 타당성을 점검하는 감사실, 인력채용·운영과 제도 전반을 다루며 인재를 육성하는 인적자원실, KBS의 주요 정책을 개발하고 예산 및 계열사·지역국을 관리하는 기획예산국, 광고국, 자산을 관리하고 직원 급여 및 후생복지, 제작비, 결산·세무를 담당하는 총무국 등 한정된 자원으로 최적의 최선의 노력을 기울이고 있습니다. ′기획행정′은 방송 제작의 일선에서도 그 역할을 충실히 수행하고 있습니다.방송국은 물론 방송을 만드는 곳입니다. 하지만 방송의 이면에는 한 컷의 화면을 위해 온갖 정성을 아끼지 않는 엔지니어, 카메라맨, 디자이너, 작가, 세트제작요원, 분장사, 오디오맨, 효과맨 등 수많은 사람들이 함께 하고 있습니다.′기획행정′은 이러한 다양한 분야의 전문가들을 방송이라는 정점에서 어우르는 역할을 하고 있습니다. 편성운영부, 보도운영부, 콘텐츠운영부, 라디오운영부, 제작리소스운영부 등은 방송 현장에서 제작자들과 호흡을 같이 하고 있습니다.  KBS, 디지털 이성과 아날로그 감성이 맞물리는 곳사회는 생산성과 효율성에 입각한 정글의 법칙만이 존재하고 있습니다. 일상에 얽매여 자신보다는 조직의 논리에 갇히기 쉽습니다. 사회인이 된다는 것은 스스로의 생계를 유지하는 것 뿐만 아니라 사회 속에서 자신의 가치를 실현하고 존재의 의미를 확인하는 일입니다. KBS는 최소 투자, 최대 이익의 실현이라는 경영의 논리를 바탕으로 기업을 운영한다는 점에서는 사기업과 같지만 국가기간방송으로서 방송의 이념과 목표를 더욱 소중히 하는 곳입니다. 원리원칙을 지키는 디지털 경영이 KBS의 경영 목표지만, 구성원들이 아날로그의 개성과 장점을 마음껏 구현할 수 있도록 그 토대를 마련해 주는 곳이기도 합니다. KBS는 여러분을 향해 두 팔을 활짝 펼치고 있습니다!선택은 여러분의 몫입니다. #한국방송공사 #KBS #KBS공채 #직무정보 #직무소개
조회수 3637

jekyll을 이용한 Github 블로그 만들기

Overview“githubPage로 기술 블로그를 만들자!” “jekyll로 만들면 한두 시간이면 가능할 거야!” 지난 1월, 브랜디 기술 블로그 제작 작업을 시작했습니다. 다양한 삽질과 험난한 여정의 결과물인 기술 블로그의 제작 및 커스터마이징 과정을 소개하겠습니다.GithubPage는 Github에서 공식적으로 운영하는 블로그 서비스입니다. 이곳엔 개발자들의 경험이나, 코드가 업로드되어 있습니다. 저장 공간도 무료로 제공되고, 도메인 연결도 편리하게 할 수 있지만, 무엇보다 GithubPage 혹은 GithubIO라고 하면 개발자 스멜이 풀풀 나기 때문에 선택의 이유가 되는거 같습니다.GitgubPage 제작 프로그램은 jekyll, HEXO가 가장 많이 쓰입니다. 브랜디의 기술 블로그는 템플릿의 종류도 많고, 더 어울리는 jekyll을 선택했습니다. jekyll 공식 사이트는 여기를 클릭하세요. 한국어도 지원하니 아주 멋집니다. 변역된 문서가 2015년 11월 23일 문서인 게 함정이지만 기능의 거의 유사하기 때문에 문제될 것은 없습니다. 1. 준비물을 챙기자!$ gem install jekyll $ jekyll new my-awesome-site $ cd my-awesome-site /my-awesome-site $ jekyll serve ▲ jekyll 설치 스크립트이제 브라우저로 http://localhost:4000 에 접속합니다.메인에 내거는 것처럼 설치와 실행이 쉽지만 몇 초 만에 되진 않습니다. 설치가 몇 분 정도 걸리고 ruby나 bundler같은 선행 조건이 갖춰져야 하기 때문입니다.ruby는 있는데 bundler가 없다면 아래와 같이 설치하면 됩니다.gem install bundler 설치가 잘 되고, 사이트 생성 후 실행을 했다면 브라우저와 함께 기본 페이지가 뜹니다. 설치가 성공했다!2. 1차 멘붕, 이제 무엇을?설치는 제법 쉽게 했지만 ‘이제 무엇을 해야 하나’ 막막하기만 합니다. 블로그 작성에 대한 아무런 가이드도 없고, 페이지나 이미지 추가 확인 등의 작업을 커멘드로만 하려니 힘들고 아찔하기만 합니다.커멘드 지옥..jekyll admin을 검색했더니 이런저런 아이들이 나옵니다. 그중에 jekyll 공식 플로그인을 선택했습니다. jekyll-admin 공식 사이트 이미지그런데 사이트 메뉴얼만 보고 설치하기 쉽지 않습니다. 이제 막 jekyll 띄웠을 뿐인데 플로그인은 어떻게 추가하는지 알 길이 없습니다. 이런저런 삽질을 거듭하고 안 되는 영어를 해석하다 보니 얼떨결에 성공했습니다.추가한 프로젝트 root에 보시면 Gemfile이 존재합니다.아마도 사이트 제너레이트 시 실행되는 스크립트인 것 같습니다. 파일을 열고 아래와 같이 추가합니다.# 아래와 같이 한줄 추가해주세요 gem 'jekyll-admin', group: :jekyll_plugins 프로젝트 root로 이동해 설치를 요청합시다.bundle install 달라진 게 없어 보여도 http://localhost:4000/admin 으로 접속하니 아뉫! 관리자가 설치되었습니다. 이제 한시름 놓입니다.3. 마크다운, 넌 누구?마크다운을 잘 안다면 넘어가도 됩니다.관리자를 설치하고 나면 그나마 좀 할만하지만 막상 글을 쓰려고 보니 무언가 다릅니다. HTML이나 위지윅 에디터도 아니고 Textarea만 덩그러니 있기 때문입니다....마크다운은 위키나 Github페이지 설명 작성 등에 쓰이는 언어입니다.1) HTML을 어느정도 한다면 문법만 읽어도 금방 이해할 수 있습니다. 생각보다 어렵지 않아서 간단한 문서 작성은 수월하게 가능합니다. 무엇보다 코드를 붙여넣을 때 아주 좋습니다. ``` PHP 코드 내용 ```위의 그림처럼 작성하면 자동적으로 신텍스 하이트라이트가 적용되니 개발 코드를 전달하기 편리합니다.4. Posts? Pages? Static Files? Data Files?확실히 jekyll은 그동안 봤던 블로그나 워드프레스 등 유명한 블로그와는 많이 다릅니다. 일단 개념부터 짚어보겠습니다. PostsPost는 한 개의 글을 지칭합니다. 블로그의 글 하나입니다. 어느 정도 구축이 되면 Post에서 글만 작성해도 쉽게 운영할 수 있습니다.PagesPost처럼 계속 추가되는 형태가 아닌 고정 페이지를 작성할 때 씁니다. About이나, 채용, 회사소개 등 Post와 분리가 필요한 글을 작성할 때 유용합니다.Static Files정적 리소스를 올리는 기능입니다. 생각보다 버그가 많아서 사용하기 쉽지 않습니다. 저는 이 기능을 커스터마이징해서 약간 쓰기 쉽게 바꾸었지만 쉽지는 않았습니다. 자세한 관리자 커스터마이징은 나중에 다루겠습니다.Data Files정적 데이터를 다루는 기능입니다. 저자 관리나 공통 변수를 담아두면 편리하게 쓸 수 있는 기능입니다. 역시나 버그가 넘쳐납니다. 당분간은 그냥 파일을 직접 수정하는 게 나을 겁니다.5. 블로그 제목 등 설정을 바꾸고 싶다면관리자의 configuration 메뉴를 이용하거나, 프로젝트 루트에서 _config.yml 을 열고 수정해도 됩니다. 사이트에서 사용할 전역 변수나, 플로그인, 기본값 등을 관리해주기 때문에 자주 수정하는 파일입니다. 제목을 변경하려면 title을 찾아서 변경하면 됩니다. 그외의 하단 문구는 buttomtitle을 변경하면 됩니다. 아래 보이는 각종 정보들은 맞게 수정하면 되고, social: 밑에 있는 정보들은 나중에 페이스북 공유나, 트위터 공유 등으로 사용할 수 있습니다. 해당 정보가 없거나 공유를 원치 않는다면 share를 false로 변경합니다. _config.yml은 수정 후 재시작을 해야만 반영되므로 jekyll를 다시 실행하면 됩니다.6. 테마를 적용하자테마 기능은 jekyll를 선택한 가장 중요한 이유였습니다. 멋진 디자인과 추가로 구현된 특수한 기능들은 jekyll이 가지고 있는 큰 메리트입니다. 테마를 사용하려면 소스를 다운로드 받고 압축을 해제해 사용하거나 git checkout 하면 됩니다. 해당 폴더로 이동해 실행하면 테마를 쉽게 사용할 수 있습니다.jekyll serve jekyll은 테마가 완성된 프로젝트 개념이기 때문에 바로 사용이 가능하지만 마이그레이션 이슈가 있습니다. 마이그레이션은 _post의 있는 파일과 _page에 있는 파일을 그저 테마 프로젝트 폴더에 덮어쓰기하면 됩니다.아쉽게도 _config.yml파일은 다시 세팅하는 게 빠릅니다. 어드민 설정 부분도 다시 하면 됩니다. 테마마다 약간씩 기능이 달라 마이그레이션이 안 되는 경우도 있으니 테마는 초기에 선택하는 게 좋습니다. 브랜디 랩스는 Centrarium 테마를 적용했습니다.테마가 적용된 화면7. 글에 이미지를 어떻게 넣을까?글을 쓰면 참고자료로 쓸 이미지도 필요합니다. static file에 업로드 기능이 있지만 업로드를 하면 프로젝트 루트 폴더에 업로드되어 관리상 좋지 않습니다. 앞서 공유한 것처럼 해당 기능 개선에 대해서는 다루지 않을 것이기 때문에 수기로 이미지를 관리하는 방법을 소개하겠습니다.로컬 프로젝트 기준에서 _site는 제너레이트된 최종결과라고 할 수 있습니다. 그래서 _site 폴더에 assets와 같은 폴더가 있으나 그 폴더에 올리면 덮어쓰기와 동시에 초기화 되므로 반드시 프로젝트 루트의 assets에 파일을 올려주시면 됩니다. 폴더를 생성하는 것도 문제 없으므로 포스팅마다 이미지를 나누길 권장합니다. 이미지가 폴더에 복사가 되었다면 이제 글에 넣어봅시다.마크다운 위지윅을 이용해도 좋고 이미지 부분을 HTML코드롤 사용해도 좋습니다. 마크다운으로 이미지를 추가할려면 아래처럼 사용하면 됩니다. ![이내용은 alt속성으로 치환됨](/assest/20180118/test.jpg "이 내용은 타이틀로 치환 됨") assets/test.jpg적용된 이미지이미지의 사이즈나 정렬을 변경하는 건 다음에 다루겠습니다.8. Gnav 변경은 어떻게 할까?커스터마이징한 Gnav영역테마도 적용했고, 글도 쓸 수 있지만 안 쓰는 기능 삭제를 비롯해 손볼 곳은 아직 많습니다. (분명 한두 시간이면 된다고 했던 일이 2주째 수정 중입니다…) 화면 구성을 고치려면 프로젝트에 포함되어 있는 템플릿 파일을 고쳐야 합니다.템플릿은 Liquid 라는 언어로 구성되어 있으며, 문법이 좀 난해하지만 충분히 헤쳐 나갈 수 있습니다. 다만 어디서부터 어떻게 고쳐야 하는지를 파악하는 게 어렵죠. 문법은 공식 사이트를 참고하고, 사용 가능한 변수는 여기를 참고하면 됩니다.사용 가능한 변수는 site와 page로 나눌 수 있습니다. site는 _config.yml 설정한 내용과 jekyll이 지원하는 전역 변수들입니다. page는 해당 페이지에 지정된 세부 변수들입니다. 글의 제목이나 경로 내용들은 기본적으로 세팅되어 있습니다. 추가적인 값을 다루려면 post를 작성하면서 meta정보를 추가하면 됩니다.템플릿의 시작파일은 index.html이고, 페이지에 layout이 지정되었다면 _layouts 안에 있는 [layout].html이 됩니다. 기본적 틀은 _layout/default.html에서 파생됩니다. 그외 파츠로 사용되는 HTML파일은 _includes에 넣고 `{% include header.html %} 같은 방식으로 추가하면 됩니다. 우리 변경하려는 파츠는 header.html에 있습니다. site.pages에는 모든 페이지가 들어있기 때문에 그중에 gnav가 지정된 글만 상단에 노출되게 했습니다. 그리고 상단 글에 대한 정렬이 없기 때문에 좋은 방식은 아니지만 1~10까지 숫자를 기입하면 순서대로 나오게 코드를 구성했습니다. (site.pages에는 posts와 pages가 같이 나옵니다.){% for i in (1..10) %}   {% for page in site.pages %}     {% if page.title and page.gnav == i %}     {{ page.title }}     {% endif %}   {% endfor %}  {% endfor %} 글에 옵션을 지정한 화면이제 pages에서 상단에 노출하고 싶은 글만 gnav를 숫자로 부여해 노출할 수 있게 변경했습니다.9. 스타일 변경은 어떻게 할까?sass로 구성된 스타일의 변경은 심도있게 다루지 않으려고 합니다. sass를 처음 사용한 것도 있지만 내용이 너무 깊어지기 때문입니다. 스타일변경은 _sass 밑에있는 scss 파일을 변경하면 되고, 템플릿마다 구조가 다르기 때문에 열심히 찾는 수밖에 없습니다.10. 저자 기능을 추가해보자 (1)최고의 난이도를 자랑하는 신규 기능 추가입니다. 브랜디의 기술 블로그에서는 작성자를 클릭하면 작성자의 글만 따로 모아서 볼 수있습니다. 하지만 이 기능은 공식적으로 지원되는 것이 아니기 때문에 처음부터 만들어야 했습니다. 완성된 작성자 기능위의 이미지와 같은 기능을 구축하려고 collection을 사용했습니다. collection은 posts나 pages와 같이 그룹핑된 글 목록을 이야기 합니다. posts나 pages는 기본 세팅되어 있고, 약간(?)의 설정 변경으로 collection을 추가할 수 있습니다. 작성자의 메인 페이지가 필요하니 authors라는 collection을 추가해보겠습니다.# _config.yml collections:   authors:     title: Authors     output: true jekyll을 재시작하면 아래와 같이 Authors가 관리자에 추가된 것을 볼 수 있습니다.authors는 작성자 메인 페이지만 생성하면 되므로, 내용에는 작성자에 대한 소개글만 간략히 쓰면 됩니다. jekyll admin에 한글 버그가 있기 때문에 우선 영어로 작성하고, 제목을 다시 한글로 수정하면 됩니다.포스팅마다 저자의 정보가 공통적으로 나와야 하기 때문애 위의 전역변수에 authors를 추가해 따로 관리하게 했습니다.# data/authors.yml # authors 공용 변수   - name: chunbs     koname: 천보성 팀장     email: [email protected]     position: R&D 개발2팀     img: /assets/profile/chunbs.jpg   - name: kangww     koname: 강원우 과장     email: [email protected]     position: R&D 개발2팀     img: /assets/profile/kangww.jpg 그리고 작성자의 포스팅을 엮어주려고 작성자의 아이디가 같을 때, 포스팅으로 나오게 구성합니다.{% if post.author %} {% for author in site.data.authors %}   {% if post.author == author.name %}   {{author.koname}}   {% endif %}  {% endfor %}  {% endif %} 11. 저자 기능을 추가해보자 (2)데이터가 준비되었다면 저자 레이아웃을 추가해야 합니다.(이거 도대체 언제 끝날까요) 저자가 작성한 글만 노출되어야 하는 게 어려울 수도 있지만 jekyll의 구동 원리를 이해하면 손쉽게 할 수 있습니다.jekyll은 내용 수정이 발생되면 전체를 다시 컴파일하는 구조입니다. 다시 말해 일부 파일이 변경되면 노출되는 모든 html파일을 다시 랜더링해서 write하는 것입니다. author의 각 작성자 페이지는 컬렉션에 포함되어 있기 때문에 랜더링이 발생하고 site.posts엔 작성된 모든 페이지 정보가 있습니다. site.posts를 foreach를 돌리고, 저자가 일치하는 페이지만 리스트로 보여줍시다.{% for post in site.posts %} <!-- author 정보가 저자와 같은 경우만 리스트로 출력한다. --> {% if post.author == page.author %}       {{ post.title }}         {{ post.content | strip_html | truncatewords: 25 }}         {{ post.date | date: "%Y-%m-%d" }}           {% if post.author %}         {% for author in site.data.authors %}           {% if post.author == author.name %}           {{author.koname}}           {% endif %}         {% endfor %}       {% endif %}       {% if forloop.last == false %} {% endif %}   {% endif %} {% endfor %} Conclusionjekyll admin은 은근히 버그가 많습니다. 그래도 ‘md파일을 메모장으로 작성하세요’라고 하는 것보단 편하죠. 다양한 기술을 사용하기 때문에 어려울 수도 있겠습니다. 글에서 소개할 수 없거나, 너무 깊어지는 내용은 소개에서 제외했습니다. 양해를 부탁드립니다. 대신에 브랜디 랩스는 저의 피땀 눈물로 만들어졌다는 걸 기억해주세요… 기타jekyll의 기본값 설정을 이용하면 layout과 같은 공통적인 부분을 쉽게 설정할 수 있다.# _config.yml defaults:  - scope:     path: ''     type: posts   values:     #permalink: "/blog/:title/"     layout: post     cover: /assets/default.jpg     author:  - scope:     path: ''     type: authors   values:     layout: author     cover: /assets/author.jpg     subtitle: ~담당하고 있습니다.     author: 영문이름 jekyll admin이 버그가 많아서 업로드 기능은 커스터마이징 했다. 루비와 UI코드를 고쳐서 다시 빌드하는 어지러운 작업을 했다.만약 버그를 고치기 어렵다면 IDE로 파일을 직접 수정하는 게 안전하다. 참고 1)마크다운 작성법은 여기를 참고하세요.글천보성 팀장 | R&D 개발2팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발문화 #개발팀 #업무환경 #인사이트 #경험공유
조회수 1562

Y, ‘옐스데이’에 다녀오다

통통튀는 사내문화와 복지로 유명한 옐로스토리가 분기별로 ‘옐스데이’ 행사를 개최하고 있다는 사실, 알고 있었나요? 이번 옐스데이에는 특별한 공연이 있다는 소문을 듣고 저 Y가 옐로스토리를 다녀왔습니다! 옐스데이는 임직원간에 정보 갭을 줄이기 위한 공유의 장인데요, 이날 경영진은 지난 1분기의 성과 및 실적 등 직원들이 알기 쉽지 않은 정보를 공유했습니다! 공유의 시간이 끝나고 클럽으로 급변한 카페에서 치맥/피맥타임 시작!(갑자기 클럽으로 변한 옐로스토리 카페에 Y가 무척이나 당황했다는 소문이ㅋㅋㅋ)즐거운 먹방이 끝나고, 드디어 기다리고 기다리던 공연 시작! 특히 이번 옐스데이는 전설적인 록 그룹 너바나의 리더 커트 코베인 추모 공연이 진행됐는데요, YDM 임원 및 옐로스토리 임직원이 ‘락 스피릿’ 아래 하나돼 잠시 동안 업무스트레스를 잊고 흥겨운 시간을 보냈습니다. (함정은 금요일 퇴근 후!! 였다는 것…물론 행사 참석은 100% 자유) (소근소근)너바나의 대표곡이 울려 퍼지면서 본격적으로 행사가 시작됐는데요. 옐로스토리 임직원들이 자신의 순서에 맞춰 무대에 오르며 커트 코베인에 대한 순수한 존경심을 내비쳤습니다. (Y도 너바나의 팬이라 분위기에 홀딱 빠졌다는…)사실 옐스데이 공연은 벌써 네번째를 맞이했는데요, 이번 공연이 더 특별한 이유는! 바로바로 옐로스토리의 정연 대표가 처음으로 밴드에 조인했기 때문이라고 합니다! 무려 4개월 동안이나 기타 줄을 손에 붙이고 사셨다는 후문!이어서 YB밴드, 델리스파이스 등의 국내 인기 록밴드의 노래가 이어졌습니다!드디어 모두의 격렬한 환호를 받은 드림팀의 등장!!! 바로 그룹IDD의 이정찬, 백승록 대표, 이재용 국장, 그리고 옐로스토리의 장대규 대표, 이주리 매니저로 이뤄진 ‘주리밴드’의 스페셜 공연이었습니다:) 실제 음악 활동을 하셨던 분들로 구성되어 있어서 관객들의 호응을 이끄는 노련미와 무대매너로 옐스인들을 사로잡았는데요, 늘 임직원간 즐거운 소통의 장을 만들고자 노력하는 옐로스토리에 저 Y는 정말 홀딱 반하고 왔답니다:) 옐로스토리 파이팅! 
조회수 514

스케줄링과 출퇴근기록 앱 사용에 대하여

레스토랑, 바 또는 카페 운영은 어려운 일입니다. 고객 서비스부터 메뉴 개발, 소모품 주문, 재고 관리 및 광고에 이르기까지 수많은 작업들을 수행해야 매장이 원활하게 돌아갈 수 있습니다. 비록 관리자가 그 모든 것을 쉽게 처리할 수 있는 운영 노하우를 터득하였다고 해도 여전히 인력 관리 문제가 남아있습니다. 풀 타임 및 파트 타임 직원을 고용하고, 그들을 훈련시키고, 좋은 사내 문화를 형성해야 합니다. 직원을 관리하는 일은 사장과 관리자에게 매우 에너지 소모성이 높은 영역입니다.그동안 사장이나 점장으로부터 들었던 많은 문제 중 하나는 스케줄링, 작업 표 관리 및 급여처리 입니다. 근무일정 관리 및 급여 지급은 비즈니스를 운영하는데 있어 일상적인 업무이지만 동시에 시간이 많이 걸리고 지루한 업무입니다. 지루하고 재미없는 데다 불편한 업무를 매번 반복하다 보면 그 업무가 불편하다는 것조차도 느끼지 못하는 경우가 많습니다. 이 글을 읽어보며 이러한 업무가 얼마나 번거로운지 다시 한 번 생각해 보시기 바랍니다.일반적으로 직원들의 근무일정을 계획할 때 관리자가 고려해야 할 사항은 다음과 같습니다.각 직원의 근무 가능 시간대와 요일하루 중 바쁜 시간과 한가한 시간지역 행사 및 시즌별 성수기완벽한 스케줄링의 세계에서는 초과 근무, 과도한 인력, 혹은 인력 부족을 방지하고 일정간 충돌이 없는 근무표가 달성됩니다. 하지만, 현실 세계에서는 계획대로 일이 진행되기가 매우 어렵습니다.급여정산 업무를 하기 전에는 다음과 같은 항목들을 검토해야합니다.출퇴근기록들이 정확한가?대리나 지점외 출퇴근 등 부정한 방법으로 근태를 기록한 직원이 있는가?근태기록에 누락되거나 부정확한 출퇴근기록이 있는가?각 직원들의 최근 시급 정보를 가지고 있는가?연장근로수당, 야간근로수당, 휴일근로수당, 또는 주휴수당을 받아야 할 기준을 충족한 직원은 누구인가?직원 관리는 효율성을 높이고 관련된 모든 사용자들의 시간을 절약 할 수 있는 체계적인 도구로 시작됩니다. 이러한 도구를 사용하면 더 나은 협업과 직원 간의 의사소통을 촉진할 수 있습니다.1. 기존 Excel 에서 수동으로 수행하던 근무표/급여 업무를 클라우드로 전환많은 수의 직원 근무일정을 계획하기란 굉장히 어려운 일입니다. 스케줄링을 위한 소프트웨어가 아닌 Excel을 사용한다면 다음과 같이 오히려 일이 과중될 수도 있습니다:복사 및 붙여 넣기를 통해 직원에게 일정을 계획한다.각 직원들이 근무 가능한 시간대와 요일을 관리하는 엑셀이나 서류를 따로 열어 누가 근무할 수 있는지 매번 확인해야 한다.스크린 샷을 보내 공유한다.직원들에게 받은 일정 변경 요청을 처리하고 수정된 일정을 다시 공유해야 한다.비효율적인 데이터 / 파일 관리는 각 지점별로 다른 Excel 파일로 저장 및 보관합니다.이러한 방법을 통해 일정을 계획하고 엑셀로 각각의 관리자 컴퓨터에 저장이 된다면 형편없는 데이터 관리가 이루어지게 됩니다. 이전 달의 근무일정이나 근태기록 데이터를 확인하려 한다고 하면, 누군가의 하드 드라이브 어딘가에 저장된 파일을 십분 째 찾고 있는 자신을 발견하게 될 것입니다.클라우드형 스케줄링 툴을 사용하면 위에 언급한 모든 문제를 해결하여 능률을 향상시키고 직원들은 불필요한 일정관련 의사소통이 줄어들며 다른 중요한 업무에 집중할 수 있습니다.2. 직원이 정확한 출근 및 퇴근기록을 남길 수 있는 방식으로 전환직원의 출퇴근 시간을 추적하기 위해 종이나 Excel 근태표를 사용하고 있습니까? 인트라넷을 이용하여 동료들도 대신 넣어줄 수 있는 사원번호를 사용하시나요? 매일 이메일이나 종이로 된 근태 보고서를 서명하며 결재하셨나요? 이 모든 업무는 전산화된 시스템에서 손쉽게 할 수 있습니다.직원이 자신의 스마트폰으로 출퇴근을 기록할 수 있는 시스템을 갖추면 관리자는 언제, 어디서든 확인할 수 있어 기존 근태보고를 받던 절차와 시간을 절약할 수 있습니다. 종이 근태표 또는 엑셀에 기록하는 기존 방법은 부정확할 뿐만 아니라 직원 및 관리자의 많은 시간을 요구합니다. 직원들은 자신의 차례가 올때까지 기다렸다가 출퇴근을 기록해야 합니다. 또 관리자가 잘못된 기록을 수정하는 것은 항상 컴퓨터를 열거나 종이 근태표가 있어야 가능하여 번거로우며, 특히 ERP 또는 회계 시스템에 근태 데이터를 입력해야 하는 경우, 중복된 업무를 수행하게 됩니다. 또한 본사의 담당자는 해당 지점의 관리자가 Excel 파일을 보내거나 ERP 시스템에 입력하기를 기다려야 근태기록을 접근할 수 있습니다.인력 배치와 근태 업무에서 불필요한 단계와 절차를 모두 제거하고, 사용하기 쉽고 진정한 가치를 창출해낼 수 있는 도구로 전환해 보시기 바랍니다.3. 중요한 업무를 해야 하는 직원들에게 불필요한 업무를 과중하지 마세요. 직원들에게 가치를 전달하고 시간도 절약할 수 있습니다.직원과 관리자는 이미 자신의 고객 응대, 재고관리, 주문처리 등으로 바쁜 업무를 소화해내고 있습니다. 직장에서 이메일이나 문서를 통해 휴가/연차/월차 등의 휴무 요청 양식을 제출해야 하는 일에 시간을 낭비하고 있을 수는 없습니다. 다음 주 일정을 사진으로 찍어 가기 위해 사무실로 들어가 자기 차례가 오기를 기다리는 시간을 낭비 할 필요도 없습니다. 직원들이 자신의 업무에 집중할 수 있게 하고 모든 일정, 출석 및 휴가 관련 문제를 해결할 수 있는 도구를 도입해보세요.조직의 근무일정 스케줄러 및 출퇴근기록을 위한 훌륭한 도구는 불필요한 작업을 제거하고 사장, 점장, 매니저들의 시간을 절약하는 데에 도움이 됩니다. 시프티와 같은 솔루션이 당신의 비즈니스에 적합한지 따져 보시기 바랍니다.#시프티 #기업문화 #혁신 #조직문화 #기업소개 #시스템구축
조회수 1478

스타일쉐어 커머스 시스템 리빌딩 회고 1

스타일쉐어 스토어 소개스타일쉐어 스토어(이하 커머스)는 2016년 4월 출시되어 지금까지 나날이 성장하고 있습니다. 작년 초, 커머스 시스템을 리빌딩하기로 했고 현재까지 진행 중입니다. 어떤 이유로 리빌딩을 하는지, 어떤 고민을 했는지, 어떻게 진행하고 있는지 몇 자 적어보려 합니다. 이 글은 문제 인식, 목표, 계획에 대한 내용입니다.리빌딩을 결정한 이유커머스 프로젝트를 시작할 당시 커머스 시스템을 경험해본 개발자가 없었습니다. 이 상황에서 새로이 구현하기엔 위험 부담이 크다는 판단을 했습니다. 때문에 커머스 솔루션을 도입했고, 적은 비용으로 커머스 기능을 출시할 수 있었습니다. 거래량이 점점 늘어나면서 솔루션이 감당할 수 있는 한계치를 벗어나자, 예상치 못했던 기술적인 이슈가 발생했습니다. 사내 MD팀, CS팀은 물론, 입점사들과 유저들에게까지 불편한 경험을 주고 있었습니다. 개발팀은 솔루션 유지 보수와 운영 이슈에 집중했지만, 끝이 없는 문제들에 점점 지쳐갔습니다. 개발팀의 퍼포먼스는 저하되고 있었고, 새로운 기능 개발에 집중하지 못하는 상황까지 발생했습니다. 이 시점에서도 거래량과 매출은 꾸준히 늘어났으며, 더 늦기 전에 리빌딩을 진행해야겠다고 판단했습니다.리빌딩의 목표당장 눈앞에 생겨나는 문제들로, 서비스가 해결하고자 하는 본질적인 문제들에 집중하지 못하는 상황입니다. 궁극적으로 이 상황을 개선하고 싶었습니다. 그리고 선택의 기로에 섰을 때 좋은 기준을 제시하기 위해, 언제 끝날지 모르는 리빌딩이 산으로 가는 걸 막기 위해 목표를 몇 가지 세웠습니다.유지보수 및 운영 이슈에 소모되는 개발 리소스 최소화커머스 시스템과 연계되는 기능들을 공격적으로 개발할 수 있도록 함개발 리소스 대비 높은 퍼포먼스를 낼 수 있어야 함튼튼한 커머스 시스템목표 1. 유지보수 및 운영 이슈에 들이는 개발 리소스 최소화기존 솔루션의 큰 레거시는 소모될 개발 리소스의 양과 일정을 예측하기 어렵게 만들었고, 개발자에게도 큰 스트레스를 안겨줬습니다. 서비스의 성장을 방해하는 큰 걸림돌 중 하나이며, 개발팀의 움직임을 느리게 만드는 주된 원인이었습니다. 리빌딩을 완료하더라도 유지보수와 운영 이슈는 끝이 없을 테지만, 더 이상 같은 문제를 반복하고 싶지 않았습니다. 효율적인 개발 리소스 운용을 위해선 가장 신경 써야 하는 부분이라고 생각됩니다.목표 2. 커머스 시스템과 연계되는 기능들을 공격적으로 개발할 수 있도록 함기존 솔루션 레거시가 너무 복잡하여 기능을 추가하거나 개선하기 어려워 반려한 요구사항이 많았습니다. 매력적인 요구사항에도 조심스럽게 대응했습니다. 서비스 성장을 위해 다양한 시도를 해야 하는 상황인데, 기술적인 이유로 진행이 까다롭다고 말하는 게 항상 아쉬웠습니다. 개발팀에서도 좋은 기능을 공격적으로 구현하고 싶으나, 실제로도 작업하기 까다로워 항상 답답했습니다. 어떤 방법이던 괜찮으니 지금보다 훨씬 더 공격적인 기능 구현으로 서비스 성장에 좋은 영향을 주고 싶었습니다.목표 3. 개발 리소스 소모 대비 높은 퍼포먼스를 낼 수 있어야 함스타일쉐어 팀은 기존 서비스 운영과 동시에 항상 새로운 무언가를 찾으려 합니다. 개발팀은 이 움직임에 맞춰 개발 리소스를 효율적으로 운용해야 합니다. 하지만 개발 리소스는 한정적이며, 다양항 상황에 따라 유동적으로 변해 예측하기 어렵습니다. 이런 상황에서 커머스 관련 작업 시, 언제나 평균 이상의 높은 퍼포먼스를 내고 싶었습니다.목표 4. 튼튼한 커머스 시스템커머스 시스템의 장애는 매출에 직접적인 악영향을 줍니다. 어떤 작업을 하더라도 커머스 시스템은 잘 운영되어야 합니다. 높은 가용성은 개발팀의 숙명이며, 공격적인 기능 개발에도 높은 가용성을 유지하려면 더욱 신경 써야 합니다.모두 꿈에 가까운 목표들입니다. 이 목표들에 조금이라도 더 가까이 다가갈 수 있도록 노력한다면 보다 좋은 결과를 얻을 수 있을 거라 생각했습니다.현실 반영과 계획당연하게도 현실적인 부분을 생각해야 했습니다. 이미 예정된 작업들이 많아 리빌딩에 필요한 개발 리소스를 확보하기 어려웠고, 개발 성공 여부 또한 불확실해 팀원들을 설득하기 어려웠습니다. 유지보수와 운영 이슈는 끝이 없었고, 회사 방향에 따라 추가 기능 개발과 개선 작업을 진행해야 했습니다. 이 상황을 고려해 리빌딩을 성공적으로 진행할 수 있도록 계획을 세워나갔습니다.개발 리소스에 여유가 생길 때까지 서브 프로젝트로 진행기존 커머스 시스템과 리빌딩된 시스템을 동시에 운영할 수 있어야 함적절한 단위로 서비스를 나눠 안전하고 효율적으로 개발 진행계획 1. 개발 리소스에 여유가 생길 때까지 서브 프로젝트로 진행다들 리빌딩이 필요하다고 느꼈지만, 선뜻 진행하기엔 큰 부담이었습니다. 시간이 흘러 여유가 생길 때 리빌딩을 진행해도 되지만, 그땐 너무 늦을 것 같았습니다. 최대한 빨리 작업을 시작하고 싶었고, 그러기 위해선 서브 프로젝트 수준으로 진행하는 게 제일 빠른 방법이라 생각했습니다.계획 2. 기존 커머스 시스템과 연동되어 동시에 운영할 수 있도록 함리빌딩의 완료 시점을 예측하기 어려웠습니다. 때문에 기존 커머스 시스템을 운영하며 리빌딩을 진행해야만 했습니다. 그리고 리빌딩된 시스템은 점진적으로 기존 커머스 시스템을 교체해 나가야 하므로, 두 시스템이 서로 연동되어야 했습니다. 또한 리빌딩된 시스템이 잘 동작할지에 대한 확신이 없어, 언제나 후퇴 계획을 세워야 했습니다. 이런 이유로 기존 커머스 시스템의 DB와 스키마를 그대로 사용하고, 두 시스템의 로직이 서로에게 문제가 되지 않도록 조심스럽게 개발하기로 했습니다.계획 3. 적절한 단위로 서비스를 나눠 안전하고 효율적으로 개발 진행커져가는 개발팀과 복잡해져 가는 커머스 시스템을 생각하면 요즘 자주 들리는 마이크로 서비스 구조(이하 MSA)를 도입해도 되지 않을까 싶었습니다. 솔직히 이런저런 이유보다, 재미 때문에 도입해보고 싶었습니다. 처음 도입하는 구조라 조심스러웠지만, 적절한 단위로 서비스를 나눈다면 충분히 좋은 효율을 낼 수 있을 것이라 생각되었습니다. 재미와 만족은 덤이고요. 서비스를 나누는 기준은 2가지로 잡았습니다.개발 안정성/개발 속도 둘 중 어느 것에 집중해야 하는가?서비스를 사용하는 주체는 누구인가?—개발 안정성/개발 속도 둘 중 어느 것에 집중해야 하는가?개발 안정성과 개발 속도에 대해 생각한 이유는 시스템 안정성과 작업 퍼포먼스 모두 잡고 싶은 마음 때문이었습니다. MSA는 서비스 별로 다른 언어를 사용해도 괜찮다는 장점이 있습니다. 덕분에 상황 별로 각기 다른 언어를 사용할 수 있고, 이를 통해 개발 안정성 혹은 개발 속도에 잘 집중할 수 있을 것이라 기대했습니다. 나중에 기술 스택을 설명하면서 얘기를 하겠지만, 개발 안정성을 추구해야 하는 부분은 java8로, 개발 속도를 추구해야 하는 부분은 node나 python으로 구현됩니다.서비스를 사용하는 주체는 누구인가?서비스를 어떤 기준으로 나눌지 고민이 많았습니다. 처음엔 상품 관리, 주문 관리, 출고 관리 등 DB 테이블에 가까운 기준으로 나누려고 했으나, 서버 운영이 큰 부담으로 다가올 것 같다는 의견 때문에 다른 기준을 세워야 했습니다. 서비스를 사용하는 주체 별로 나누면 어떨까라는 말이 나왔고, 이 기준이라면 큰 부담이 없을 것 같았습니다. 서비스를 사용하는 주체는 유저, 관리자, 입점사, 다른 서비스 이 4가지라고 정의했고, 이에 따라 서비스를 구성했습니다.—앞서 말한 두 기준으로 나눴을 때에 대한 예시입니다.유저 커머스 서비스 (node 혹은 python)관리자 커머스 서비스 (node 혹은 python)입점사 커머스 서비스 (node 혹은 python)커머스 핵심 기능 서비스 (java8)위 두 기준 말고도 서비스 운영에 큰 부담이 없다면 상황에 맞춰 다른 기준을 세워 서비스를 나누기도 했습니다.이 고민이 끝난 후, 현실적으로 실행 가능한 계획이 나온 것 같아 만족스러웠습니다. 이 계획을 토대로 아키텍처를 구성하고 개발을 진행했습니다.마무리어떤 문제 때문에 리빌딩을 결정했고, 어떤 목표와 계획을 세웠는지 주저리주저리 적어봤습니다. 앞에서 말했듯이 리빌딩은 아직 진행 중입니다. 현재 정식 일감으로 진행되고 있고, 상황에 맞게 계획을 다시 세워 조금씩 목표에 다가가고 있습니다. 처음엔 3부로 계획했지만, 아직 리빌딩 중이란 걸 까먹고 있었나 봅니다. 이 프로젝트가 완료되기 전까진 회고록으로써 글을 계속 쓸 것 같습니다. 앞으로 풀어야 할 문제들이 많으니 하소연할 것들도 많을 거고요. 아무쪼록 다음 편에선 시스템 구성도와 기술 스택에 대해서 한번 이야기해보려 합니다.스타일쉐어 개발팀의 고민과 생각들이 부디 도움이 되었길 빕니다. :)#스타일쉐어 #개발팀 #리빌딩 #인사이트 #조언
조회수 792

[인터뷰] 임팩트 베이스캠프 7기 | 디자인씽킹 B조

대중교통을 타고 이동할 때도, 집에서 밥을 먹을 때도 프로젝트를 고민하며 숨가쁘게 달려오고 있는 임팩트 베이스캠프 7기! DT프로젝트 팀별 인터뷰 세 번째 조를 만나보았습니다.권수연, 박소은, 엄석준, 이승연, 홍예진 베이스캠퍼가 속해있는 B조는 누구에게 공감하고, 어떤 사회문제를 해결하고자 하는지 볼까요?INTERVIEW .Q1. 하나의 키워드로 본인에 대해 소개해주세요!▲ 왼쪽부터 시계방향으로 권수연 님, 박소은 님, 엄석준 님, 홍예진 님, 이승연 님수연: “Arise, Shine” 나다움을 찾고자 하는 사람이에요. ‘교육’을 통해 다른 사람도 본연의 모습으로 살아갈 수 있도록 올바르게 세워주는 것이 제 비전입니다.소은: “작은 변화로 큰 변화를 이끄는 것” 작은 포인트를 교정하면 변화를 이끌어 낼 수 있다고 생각해요. 그 작은 포인트를 찾아내는 사람이 되고 싶습니다.석준: “대기만성형 인간” 지금은 스스로 어느정도 그릇을 채워가고 있는 단계라고 보는데요. 늦었다고 느껴질지 몰라도 완성되면 알찬 나를 기대해요.승연: “순간”이요. 지금 이 순간이 가장 젊을 때이고 결국 시간은 지나가고 있기 때문에 프로젝트 팀 혹은 가족, 지인과 함께 있을 때 그 자체에 집중하려고 노력하는 사람이에요.예진: “하고싶은 것 하고 살자” 제가 추구하는 모토에요. 내가 진짜 하고 싶은 걸 해 나가며 채워가는 것이 후회없는 삶이라고 생각해요.Q2. DT 프로젝트 문제정의의 발전(혹은 공감) 과정이 궁금해요▲ 프로젝트 주제 선정을 위해 논의 중인 B조의 모습예진: ‘장애인의 체육활동 증진’이 저희 팀의 첫 주제였는데요. 의미가 있을 것 같아서 선정하긴 했지만 다섯 명 모두 관심이 없던 분야라 공감 자체가 낮은 상태에서 시작했어요. 팀원의 지인을 통해 20대 시각장애인을 인터뷰하게 되었는데 그 과정에서 우리 팀이 더 공감할 수 있도록 대상을 구체화하여 시각장애인 문제를 다루기로 했어요.소은: 시각장애인이 겪는 불편함은 스포츠 활동 외에도 참 많더라고요. 인터뷰를 통해 우리가 생각지도 못한 문제가 있었다는 걸 인식하게 되었어요. 시각장애인의 생활 속 불편이 무엇인지에 대해 고민하고 ‘진짜’ 문제를 찾아가는 중이에요.수연: 저는 평소에 ‘교육’이라는 키워드에 몰입되어 있었기 때문에 개개인이 가진 잠재력을 들춰내는 변화에 초점을 맞추고 있었거든요. 그런데 프로젝트로 해결하고자 하는 문제는, 불편함을 바꿔주는 변화인거죠. 변화의 종류에 대해 알아가고 있는 중이에요.Q3. ‘시각장애인의 생활 속 불편함’에 주목한 B조, 어떤 프로토타입을 제작했나요?승연: [시각장애인은 공중화장실의 성별을 쉽게 구분하기 어렵다]는 불편함에 공감하고, 빠르게 프로토타입을 만들어 보았는데요. 인터뷰를 통해 시각장애인이 지하철 공중 화장실에서 성별을 구별하기 위해서는 점자를 만져봐야 한다는 것을 알게 되었어요. 그 점자 위치를 찾으려고 화장실 앞에서 헤매는 과정이 민망하지 않을까 생각했고, 점자가 아닌 유도블록으로 성별을 구분할 수 있도록 프로토타입을 제작하게 되었습니다.예진: 수수깡으로 미니 유도블록을 만들었다가 찰흙으로 실제 크기에 해당하는 프로토타입을 또제작했는데요. 현장 테스트 결과, 시각장애인 분들은 실제로 후각과 청각을 사용해서 구별하고 계셨어요. 여성 분들의 향수 냄새 혹은 구두 소리, 목소리 등을 통해서요!석준: 또 다른 프로토타입 중 하나는 [시각장애인은 식사를 할 때 반찬의 위치를 찾는 것이 어렵다]는 문제에 공감하여 만들었는데 아직 현장 테스트 전 단계이며, 인터뷰 섭외 중입니다.Q4. 이제 절반이 넘는 시간을 달려오셨는데, 팀으로 프로젝트를 진행해오며 느낀 점은 무엇인가요?소은: 저는 경영학과이기 때문에 팀플 경험이 많은데 보통 다수의 의견과 제 생각이 다르면 입을 열지 않았거든요. 그런데 DT 프로젝트 팀은 개인의 생각을 모두 존중해주고 오픈마인드로 서로의 이야기를 들어주는 것 같아요. 문제정의 같은 경우도 팀원 중 한 사람이 공감이 안되면 왜 공감이 안되는지 들어주고 함께 고민해줘요. 서로에게 자유롭게 생각을 말할 수 있는 이야기의 장이 열려 있다고 해야 할까요?수연: 저는 보이지 않는 가치를 발견하게 되었다는 점이 정말 좋아요. 또 ‘실패해도 된다’는 것을 알려주는게 디자인씽킹이라고 생각해요. 배움을 즐기고 교육자가 되고 싶은 학생으로서, 인사이트를 얻고 실행하는 이 모든 과정이 성찰의 습관을 만들어 주는 것 같아요. 또 저는 지금 ‘완벽하지 않은 나를 수용하는 훈련’을 하고 있다고 말씀드리고 싶어요.승연: 저도 실패해도 괜찮다는 말을 담아 두려고 노력하는 중인데요. 저는 완성된 상태에서 사람들에게 보여주고자 하는 강박 때문에 실패에 대한 두려움이 굉장히 크거든요. 또 저는 축산식품공학을 공부하고 있어서 과 특성상 팀플이 거의 없거든요. 각자의 역할을 ‘분업’하여 진행했던 팀플만 경험해보았는데 DT 프로젝트를 통해 ‘협업’에 대한 새로운 경험을 하고 있어요.예진: 이전에 팀 내에 공감하는 사람이 있으면 좋고 아니면 어쩔 수 없다는 주의였는데 공감의 중요성을 깨닫고 있는 중이에요. 공감하는 방법이 개념화되어 있는게 디자인씽킹이라고 생각하는데 저한테는 굉장한 센세이션이었어요. ‘공감을 이렇게 활용할 수 있구나’를 알게 되었습니다.Q5. 덧붙여서 IBC 인터뷰 단골질문을 여쭤볼게요! DT수업과 SL수업의 차이점은 무엇이라고 생각하시나요?수연: 우선 두 수업 모두 ‘Learning by doing’이라는 공통점을 가지고 있다고 생각해요. 차이점은 SL 수업이 나를 곤두세우면서 경험하게 한다면 DT 수업은 팀원끼리 서로의 온기를 느끼며 경험하게 한다는 것이에요. 비유를 들어보면 SL 수업은 나를 비춰보는 거울이고, DT 수업은 다른 사람 속에 내가 들어가 있는지(공감하고 있는지) 보는 활동인 것 같아요. 둘 다 정말 잘하고 싶어요.석준: 저는 두 수업 자체를 분리하는게 부자연스럽다고 생각하지만 SL 수업은 어두운 곳에서 무언가를 찾아가는 느낌이라면 DT 수업은 어느정도 조성된 안전지대에서 프로젝트를 하는 느낌이에요. 또 SL 수업에서 배운 것들을 직접 몸으로 부딪치면서 배우는 것이 DT 수업이라고 생각합니다. 예진: 저는 ‘감성과 이성’이라고 간단 명료하게 설명할 수 있을 것 같아요.Q6. 임팩트 베이스캠프의 모든 과정을 마친 후, 기대하는 것은 무엇인가요?소은: 사회를 위해서 무언가 하길 원하는 IBC 베이스캠퍼들과 지속적인 커뮤니티를 이어가길 원해요. 비단 비슷한 커리어를 갖게 되는 것만을 의미하는 게 아니라, 각자 다양한 자리에서 사회문제를 고민하고 해결할 때 서로 독려해주는 관계가 되었으면 하는 기대가 있습니다.수연: 항상 최상의 환경과 컨디션에서 프로젝트를 진행해야 된다고 생각했는데, 완벽하지 않아도 우리가 팀원으로 함께 할 수 있다는 것을 누리는 사람이 되었으면 좋겠어요.석준: 수업 초반에 제 DT 프로젝트 목표는 뚜렷한 아웃풋이 있어야 한다는 것이었어요. 평소에도 ‘결과물’이 중요하다고 생각하는 사람이었는데 그러다 보니 ‘과정’에서 배우는 것을 소홀히 했던 것 같아요. 그런데 이제는 결과에 크게 연연하지 않고, 어떤 프로젝트에 참여하더라도 과정을 통해 배운 나만의 무기를 갖추는 것이 목표에요.▲ 눈오는 날, 특별한 단체사진을 남기게 된 B조시각장애인이 일상생활에서 겪는 불편함을 느껴보고 공감하고자 집에서 불을 꺼둔 채 생활해보는 노력까지 마다하지 않는 B조. 프로젝트의 결과를 떠나 진심으로 배움을 즐기고 있는 베이스 캠퍼들의 모습이 참 아름답습니다. 우리의 배움과 채움이 더 나은 세상을 위한 나눔으로 이어지길 기대합니다. 다음 인터뷰로 돌아오겠습니다 :)#루트임팩트 #헤이그라운드 #임팩트베이스캠프 #디자인씽킹 #체인지메이커 #전략적리더십 #소셜벤처 #사회공헌

기업문화 엿볼 때, 더팀스

로그인

/