스토리 홈

인터뷰

피드

뉴스

조회수 550

P2P금융, 2가지 모델

P2P금융이라는 용어가 오해의 소지가 다분하다는(misleading) 것은 이전 포스트에서 정리해보았다. 개인 간 거래 형식(Peer-to-Peer)에서 시작된 P2P금융의 투자자는 개인(Individual Lender)에서 기관(Institutional Lender)으로 빠르게 확장되어 갔다. 물론 여전히 개인 투자자들의 투자가 근간을 이루고 있지만, 전체적으로는 기관 투자자들의 투자 비중이 현저히 높다. 이와 관련해, 최근에 많이 받는 질문 중 하나가 ‘기관으로부터 자금이 조달되면 기존의 대부업과 다른 점은 무엇이냐?’는 것이다. 이에 대한 답은 이미 정리한 바와 같다. 바로 P2P금융의 핵심은 자금 융통 방식의 차이가 아니라 '기술을 통한 비용 구조의 개선과 중금리 제공'에 있다는 사실이다.여기서 좀 더 눈여겨 볼 점이 있다. 기관 투자자가 P2P금융 플랫폼을 통해 투자하는 방식 역시 2단계로 진화해왔다는 점이다. 세계적으로 P2P금융에 가장 활발하게 투자하고 있는 사모펀드인 빅토리 파크 캐피탈(Victory Park Capital, 이하 VPC)의 2015년 보고서에 따르면, VPC가 전세계 35개 P2P금융사에 투자하는 방식은 플랫폼의 특성에 따라 2가지 방식으로 나뉜다. 하나는 마켓플레이스 렌딩(Marketplace Lending)이고 다른 하나는 자기자본 렌딩(BalanceSheet Lending) 이다. 마켓플레이스 렌딩과 자기자본 렌딩 방식으로 투자한 비율은 각각 5:2로 집계된다. 이중 자기자본 렌딩 방식의 투자가 상대적으로 늦게 시작되었다.P2P금융의 자금 융통 방식은 계속해서 진화하고 있다.마켓플레이스 렌딩은, 투자자가 P2P금융사의 대출 채권 하나하나에 직접 투자하는 것을 의미한다. 개인과 개인을 연결하는 최초의 P2P모델이 기관과 개인을 연결하는 I2P 모델로 확장된 개념이다. 채권 하나하나에 투자한다는 건 곧 각 채권의 연체 및 부도에 대한 리스크에 투자자가 그대로 노출된다는 의미이기도 하다. 반면 자기자본 렌딩은, 투자자가 P2P금융사의 대출 채권 하나하나에 직접 투자하는 것이 아니라 P2P금융사 자체에 투자하는 것을 의미한다. 즉, 투자자는 플랫폼사에 직접 투자하고, 플랫폼사는 이렇게 조달한 자금을 대출 자원으로 사용하는 방식이다. 이렇게 될 경우 투자자는 각 채권과는 절연되는 효과가 있어, 투자에 대한 리스크는 투자자가 아니라 플랫폼사가 지게 된다. 자기자본 렌딩의 경우 플랫폼사가 대출 채권을 만기시까지 계속 보유하며 이자 수익을 얻는다. 대표적인 회사로 미국의 SoFi, Avant 가 이에 해당하며, 국내 P2P금융사 중에는 존재하지 않는 것으로 파악된다. 이미 익숙한 카드, 캐피탈, 대부와 같은 여신업체의 자금 융통 방식과 동일한 방식이다. 기관 투자자 입장에서 보면, 투자자가 리스크를 소화하는 성향에 따라 위의 2가지 투자 방식 중 하나를 사용하는 것으로 이해할 수 있다. 그렇다면 P2P금융사가 일반 여신업체와 마찬가지 방식인 자기자본 렌딩을 시작한 이유가 무엇일까? 그 이유는 (1) 안정적인(stable) 자금 융통과 (2) 좀 더 높은 수익 창출로 정리할 수 있다. (1) 안정적인 자금 융통 : 기관 투자자가 대출 채권에 투자할 때 가장 크게 영향을 받는 요소는 시장 상황이다. 아무리 심사 능력이 검증된 P2P금융사의 채권에 투자하더라도, 그리스 금융 위기와 같은 외부 악재들이 생긴다면 약속한 투자를 철회할 가능성이 크다는 것이다. 따라서, P2P금융사 입장에서 보면 마켓 플레이스 모델을 통한 투자금의 유치는 시장 상황에 따라 불안정적(volatile)이다. 반면 자기자본 렌딩의 경우에는 기본적으로 투자 계약이 체결될 때 투자금을 완납받게 된다. 그러므로 조달 방식에 따라 차이가 있겠지만, 미래의 시장 상황에 상대적으로 큰 영향을 받지 않게 된다.(2) 좀 더 높은 수익 창출 : P2P금융사가 충분한 실적과 높은 신용도를 갖고 있다면 매우 낮은 금리로 자금 조달이 가능하기 때문에, 마켓플레이스 모델을 통해 고정 수수료를 수취하는 것보다 자기자본 렌딩을 통해 좀 더 높은 마진 창출이 가능하다.어느 산업이나 마찬가지겠지만, ‘안정적인 자금 융통'과 ‘높은 수익 창출'의 2가지 요소는 P2P금융사의 재무건전성 개선에 필수적이라는 생각이다. 이는 곧 P2P금융 산업의 견고한 발전에 주축이 된다고 볼 수 있다.P2P금융의 선진국인 미국, 영국, 호주, 중국 등에서도 모두 마켓플레이스 렌딩 모델과 자기자본 렌딩 모델이 공존하고 있다. 그리고 이 두가지 모델을 혼용하는 하이브리드(hybrid) 모델이 점차 확산되며 가장 활발하게 쓰이고 있다.흥미로운 점은 P2P금융산업의 비즈니스 모델이 이렇게 변모해 가면서, 산업을 지칭하는 용어도 다양하게 나타나고 있다는 점이다. Peer-to-Peer 모델이 탄생한 영국에서는 여전히 ‘P2P렌딩’이라는 용어가 가장 많이 사용되는 반면, 미국에서는 ‘마켓플레이스 렌딩’이 이 산업을 대표하는 용어로 자리잡고 있다. 최근 2~3년 전 부터는 ‘자기자본 렌딩’ 방식이 점점 더 비중이 커지면서 P2P, 마켓플레이스 렌딩 방식의 I2P, 그리고 자기자본 렌딩 방식의 I2P 모델을 모두 포괄하는 단어로서 ‘온라인 렌딩(Online Lending)’이라는 용어가 활발히 사용되기 시작했다.다시 한 번 강조하고 싶은 점은, P2P금융의 변하지 않는 핵심 가치는 ‘기술을 통한 비용 구조의 개선과 중금리 제공'에 있다는 사실이다. 투자자가 개인인지, 기관인지, 혹은 대출-투자 방식이 마켓플레이스인지, 자기자본인지는 부차적인 수단의 다양성일 뿐이다.핵심은 변화하지 않는 본질을 뜻한다. 계속해서 진화하며 변화하고 있는 ‘자금 융통 방식’을 P2P금융업의 본질로 해석하는 순간 많은 실수를 범할 수 있다. 산업의 올바른 성장을 위해서는 업의 핵심을 명확히 이해한 뒤, 각 세부 수단에 적합한 규제가 수반되어야 할 것이다.
조회수 770

스토어의 브랜딩: 항상 문제는 인사에서 시작된다

기본적으로 브랜딩은 이미지입니다. 처음보든 여러번 보든 이미지란 건 3가지의 속성이 있죠.1. 딱봤을 때 아.2. 계속 보니 음.3. 알고 보니 헐.소개팅할 때 이성이 금체인목걸이를 걸고 팔자걸음으로 들어오면 3초안에 '도망가야한다...' 라는 것을 느끼게 됩니다. 인지심리학에선 이를 초두효과라고 하죠. 3초냐 11초냐 등등 가설이 많긴 하지만 어쨋든 때릉~하고 문열리고 의자에 앉기까지 대략 첫인상이 결정된다는 것은 변함이 없습니다.그렇게 금체인을 걸고 앉아서 얘기를 한참하는데 의외로 순수하고 인간적인 매력이 있으면 일단 뭐지....하는 호기심과 궁금증으로 좀 더 지켜보게 되긴 합니다.그러다가 알고보니 금체인이 돌아가신 어머니의 유품이었달 지 고대로부터 내려오는 차크라의 금술이 담겨진 유물이었달지 등의 진실을 알게되면 비로소 이해가 되면서 금체인목걸이를 건 그사람에 대한 재정의를 내리게 됩니다. 이런식으로 이미지는 구축되고 유지되고 변형되죠.브랜딩도 비슷한 프로세스를 거칩니다. 받아들이는 사람 입장에서 말이죠. 대부분 회사에서 내거는 캐치프라이즈나 슬로건, 키비쥬얼 따윈 별 신경을 쓰지 않습니다. 내가 구매하는 것을 보죠. 제 아무리 브랜딩이 잘되어 있어도, 배송받아 본 상품이 다 깨져있는데 고객센터는 전화도 안받고, 문의답변도 안달리면 세련되고 나발이고를 떠나서 그냥 싫은겁니다. 스토어도 마찬가지입니다. 오프라인 매장을 운영하는 곳에선 그 직원들을 바라봅니다. 앱서비스를 운영하는 곳에선 앱버그 대처를 보죠. 이상한 기사가 났을 때의 대응방식도 중요하구요. 브랜딩은 비즈니스 전체보단 오히려 디테일에서 판가름이 납니다.오프라인의 브랜딩에선 대표와 BX팀이 의도한 것과 다른 여러가지 요소들이 발생하곤 한답니다. 행사운영을 할 때도 마찬가지죠. 사람들이 다아아아 내 맘 같이 움직여주지 않기 때문에 이는 불가피한 요소긴 하지만, 브랜드를 망치는 여러가지 사례들이 공공연하게 보여지는 것을 보면 어쩔 수 없다는 핑계로 그냥 덮어두기만 하긴 어려운 일 같습니다.오프라인의 브랜딩은 스멀스멀 작은 사례로부터 망가지는 경우가 많습니다. 이를 잘 알고 미리 대응하는 사례가 이솝이라고 할 수 있겠네요.Aesop의 경우엔 자사제품이 납품된 곳에 일일이 전화 또는 방문하여 어떤 곳에 어떻게 제품들이 배치되고 활용되고 있는지 등등을 일일이 체크하고 있습니다. 2014년 가로수길에 오픈한 시그니쳐 매장도 이솝의 브랜드컨셉이 잘 드러나도록 미술관 느낌을 주는 공간과 배치를 활용하고 있죠.번거롭고 어렵지만 하나하나 제품들의 쓰임새와 활용을 체크하면서 관리하는 일은 이솝에게 매우 중요한 일이었습니다. 그들에겐 제품이 곧 브랜드였기 때문이죠. 물론 이솝은 손떨리는 금액과 그에 걸맞는 예쁜 패키징이 존재합니다. 시각적인 이미지에서도 그 성분과 생산의도에 맞게 의약품의 느낌을 한껏 살렸습니다. 비쥬얼적인 측면에서도 좋은 브랜딩을 진행했지만, 중요한 것은 시그니쳐 매장이나 제품관리를 위해 파견되는 직원들의 애티튜드였죠.개인적인 사례지만, 여의도 IFC몰에도 이솝 스토어가 있습니다. 얼마 전 그곳을 처음 지나쳤을 때는 넓은 스토어에 단정한 복장을 한 매니저가 제품을 닦으며 정리하고 있는 직원을 보았습니다. 스토어의 분위기가 분위기인지라 구석에서 히터 틀어놓고 핸드폰만 만지작거리긴 힘든 공간이었을 겁니다. 꽤나 고급스럽다라는 느낌을 받았죠. 사람도 스토어도 함께 말입니다. 다음에 지나쳤을 땐 멍 때리고 계시더군요. 뭐 그냥 웃으며 넘기긴 했습니다만, 이렇게 글쓰려고 보니 다시 떠오르는 걸 보면 사람의 기억이란 것은 꽤나 오묘한 것들을 조합해서 단정짓는 것을 좋아하는 것 같습니다. 아마 멍때리는 모습을 처음에 봤다면 어떤 이미지가 되었을 지는 잘 모르겠네요.반면에 예상치 못한 큰 이슈들이 터져서 후속대응을 해야하는 경우도 있습니다.얼마 전 어떤 업체에서 배송직원들의 태도에 대해 논란이 있었던 적이 있었습니다. 물론 그 행위들이 회사의 잘못이라고 할 순 없습니다. 개개인의 운전습관 또는 인성의 문제일 뿐이니까요. 하지만 의도치 않게 이러한 사건들이 터져버리면 회사입장에선 굉장히 난감할 수 밖에 없습니다. 이렇게 외부이슈가 발생해버리면 회사는 3가지 정도의 선택지를 지니게 됩니다.1. 빠르게 대처해서 사과문 등 해명을 한다.2. 버티다가 못이겨서 공지를 한다.(사과는 아님)3. 쌩깐다.1번의 좋은 케이스는 배민의 예를 들 수 있겠습니다. 오프라인 사례는 아니지만, 일전에 배달업체에 대한 개인정보 문제에 대해 누군가가 이의를 제기한 적이 있습니다. 물론 배민에 직접적으로 게재한 것은 아니었죠. 하지만 당시 배달앱의 대표주자였기 때문에 배민은 빠르게 이슈에 대한 대응책과 책임의 글을 올렸습니다. 결과적으론 이 문제를 중요하게 생각하고 있고 문제해결의 의지를 엿보였다라는 평가로 오히려 브랜드이미지를 상승시키는 계기가 되기도 했습니다.해당이슈 기사 링크 참조http://www.the-pr.co.kr/news/articleView.html?idxno=225602번은 요즘 애플의 배터리문제를 들 수 있겠네요. 최근 터진 인텔사의 CPU문제도 비슷하구요. 결코 '사과'라는 표현은 쓰지 않더군요. 해당 이슈에 대해 선심성정책을 그것도 한정적으로 제공하면서 그럴싸하게 프로모션 행사처럼 포장하는 건 진짜 사태의 중요성을 몰라서 그런건지, 아니면 그냥 그런 스타일을 좋아하는 건지 잘 모르겠습니다만 딱히 좋은 평가를 받고 있는 것 같진 않습니다. 인텔사의 CPU메모리에 대한 스펙터와 멜트다운 버그가 발견되면서 인텔사도 굉장히 난감할 것으로 생각됩니다. 하지만 성능저하는 어쩔 수 없으니 업데이트해라...라는 식의 공지는 사람들을 벙찌게 만들기에 충분하죠. 폭스바겐의 배출가스 조작으로 인한 리콜사태 등도 어찌어찌 버텨보다가 결국 백기를 든 케이스라고 할 수 있겠습니다. 3번은 전략적침묵에 가까운데, 사실 이를 좋은 방식이라고 하기엔 애매하지만 사측의 입장에서보면 효율적이긴 한 것 같습니다. '어차피 잊는다.' 라는 것이죠. 이는 사실 프레임탈출법이라고 해서 1970년대 맥도날드가 경험을 통해 배웠던 전략이기도 합니다. 패티에 지렁이고기를 쓴다는 루머가 돌자 맥도날드는 반박하는 자료와 제조과정등을 공개하며 대응에 나섰죠. 하지만 어찌된 일인지 사람들은 더욱 외면하기만 할 뿐이었습니다. 말을 하면 할 수록 오히려 부정적인 정보가 강화되는 인지편향 때문이었죠. 맥도날드는 그냥 침묵하기로 합니다. 놀랍게도 사람들은 얼마 지나지 않아 다시 맥도날드로 돌아오기 시작했고, 지렁이패티 논란은 언제 그랬냐는 듯 사라지고 말았죠. 대중들이 지닌 인지프레임을 깨는 방식은 반박보다 침묵을 통한 망각에 의존하는 편이 효과적이라는 것이 전략적으로 드러난 사례였습니다. 하지만 이것은 누명과 오해를 벗기위한 방식이지 잘못된 것을 덮고 잊으려는 수단으로 전락해서는 안될 일이죠.맥도날드 지렁이패티 루머 관련링크https://lukekimwork.wordpress.com/2016/03/07/맥도날드-패티를-지렁이로-만든다고/어디라고 말은 못하겠지만, 전 국민적 나쁜회사라고 할 지라도...아쉽지만 소비자들에겐 도덕성보다 생활과 습관이 우선이 되는 경우가 많았습니다. 지금 이순간에도 말이죠.어더오데요... 이러한 비즈니스적인 사례 이외에도 사실 우리 주변에도 일상적으로 일어나는 여러가지 사례들을 통해 브랜드이미지를 생각해볼 수 있습니다.매장에 딱 들어갔을 때 영혼 빠진 표정으로 나를 졸졸 따라다니는 점원에게서 풍기는 다크포스라던지, 요금제 바꾸려고 전화했는데 날 비웃거나 무시하듯 대충 말하는 콜센터 직원이랄지, 심지어 강의장이나 행사에 갔는데 정신도 없고 어리버리한 스탭을 마주했을 때의 당황스러움 등에서 말이죠. 지난 행사장의 브랜드 편에서도 얘기를 했듯, 현장에서의 경험은 쉽사리 지워지지 않습니다. 저 또한 스토어에 들어갔다가 부담스럽거나 불친절해서 나와버린 경험이 다수 있으니까요. 그리고 그 곳은 잘 가지 않게 되더군요. 페이스북에서 보여도 딱히 좋은 느낌을 받진 않는 달까요. 사실 그 회사에 대해선 잘 모릅니다. 제가 알 필요도 없구요. 제가 아는 사실은 단지"그 때 그 사람은 불친절했어."라는 단편적인 사실 뿐이죠. 일반화의 오류가 확실하고 확증편향임에도 틀림없지만, 소비자에게'그렇게 단정지어서 판단하는 것은 논리적으로 잘못된거야!! 전체를 보고 비판적으로 판단해야지!' 라고 꾸짖는 것이 무슨 의미가 있을까싶습니다. 소비자는 브랜드 하나하나를 신중하게 논리적으로 고민하고 생각해볼 의무도 필요도 없잖아요. 그냥 아니면 안사는 거고, 싫으면 안보는 것일 뿐. 때문에 의사결정단계에서도 항상 이성적이고 논리적인 브랜드전략만을 고집하는 것은 현실과 잘 맞지 않을 위험이 있어요. 사업단에선 전체적인 것을 보고 탑다운 형식으로 브랜딩을 구축하려고 하지만, 정작 소비자가 보는 것은 구석에 있는 그 한 명의 사원이거든요. 물론 모든 디테일을 관리하기엔 어렵습니다. 회사 측에서 기쁜 소식은 인간은 망각의 동물이란 것이죠. 사실 뭔 사건이 생기고 치명적인 난리가 나도 시간 지나면 잊혀지긴 합니다. 위에서 프레임탈출법에 대해서 언급했듯 사실 말하면 말할수록 사람들은 그 문제를 단편적으로 강화시키기 시작합니다. 그리곤 어느새 그 자극에 지치기 시작하죠. 그게 도덕적으로 큰 문제가 있는 것이었다고 해도, 나의 삶과 큰 연관이 없다면 '어휴, 저거저거 나쁜놈들 쯧쯧쯧.' 하면서 마는 것이죠. 생각해보세요. 이 글을 읽고계신 독자분들 중 폭스바겐 배출가스 조작사건때문에 잠 못 이루고 불매운동을 벌이신 경험이 있는 분이 계신가요? 정작 내 차가 폭스바겐이고 리콜대상이 되지 않으면 그 문제는 그냥 뉴스거리에 불과하죠.강의업체도 그렇습니다. 운영은 엉망진창에 준다하는 자료도 안주고, 환불소식도 3달이 넘도록 답변도 없고, 온풍기도 안되서 춥고, 멀티탭도 부족해서 강의시간도 한참 지연되는 등 불만이 가득해져도, 끝나고 나면 그냥 그것으로 끝인 경우가 많아요. 물론 나는 다신 듣지 않겠지만, 또 다른 사람들은 그런 사실을 알든 모르든 계속 신청을 하겠죠. '내 일이 아니니까요.'기억안남이러한 망각과 외부화를 통해 브랜드의 리스크들은 대부분 중화되거나 잊혀지곤 합니다. 그러니 모든 직원들의 인사를 철저하게 관리하거나 매장의 운영이 제대로 되는 지 밤잠 설치며 힘들어 할 필욘 없습니다. 네, 이건 사실이예요.하지만, 분명히 할 부분이 있습니다. 브랜딩은 새로운 뭔가를 자꾸 만들어서 벌리는 것이 아닙니다. 하던 일을 더 잘하는 것에 가깝죠. 브랜딩을 위해서 사원교육을 하거나, 매장관리를 하는 방식은 뭔가 주객이 전도된 느낌입니다. 브랜딩은 그 행위를 통한 영향력이라고 할 수 있죠. 그러니 브랜딩을 잘하려고 애를 쓰는 것이 아닌, 일을 잘하기 위해 노력하는 것이 오히려 리스크를 줄이고 고객들의 만족감을 높일 수 있는 핵심이라고 말하고 싶어요.매장사원들에게 인사를 잘하라고 교육을 시키기 이전에, 그럴 수 있는 환경을 만들어주고, 스스로 참여하고 매출을 높일 수 있는 방식들을 고민하게 만드는 것이 더 중요해요.운영스탭에게 기획안을 숙지하라고 으름장을 놓기 이전에 분명하게 업무분장을 해주고, 너무 업무로딩이 걸리지 않게 업무효율화를 시켜주는 것이 더 중요하죠.제가 늘 말하듯 브랜딩은 디테일에서 폭망합니다. 그들의 졸음과 지겨운 표정이 브랜딩을 무너뜨리기 시작하죠. 그러나 그 전에....혹시 매장의 온풍기 온도가 너무 높진 않은지, 휴식시간이 충분히 보장은 되고 있는지를 먼저 체크해보는 것이 브랜딩컨설팅을 받는 일보다 더 중요하지 않을까요?
조회수 2322

단순 협업툴, 사업을 넘어 장인정신으로 향하는 길

2014년, 3월 비캔버스 개발을 시작했다. 약 2년이 넘게 시간이 지나면서 많은 방향 전환이 있었다. 단순한 포스트잇 기록 가능한 메모 도구로 시작했지만 이후, 온라인 화이트보드, 프로젝트 관리 툴, 비주얼 블로깅 툴 등 약 4번 이상의 크고 작은 방향 전환이 있었던 것 같다. 작년에 이미 국가와 기업으로부터 3억 원 이상의 자금을 투자받은 상태였기 때문에 조급함만 쌓였던 것 같다. 그런데, 일을 하면서도 전혀 그 분야에 대해 박식해지는 것과 같은 느낌이 들지 않았고 비전도 명확하지 않았다. 하고 싶지 않은 일이라서가 아니었다. 이 분야의 한계가 명확하게 머릿속에 들어왔기 때문이었다. 지금 그러한 경험을 공유하고자 한다. 내 경험으로 협업툴. 특히 프로젝트 관리 툴 시장은 매우 포화상태이며 미래가 없고, 인류를 위해서 조금도 도움이 되지 않는다는 결론에 도달했다.다만, 이런 프로젝트 관리 툴을 만들면 전 세계에서도 경쟁력 있는 회사가 될 수 있겠다.개별 기업 혹은 팀이 자신과 팀이 일하는 워크플로우를 간단하게 A4용지나 액셀등으로 정리하면 그것에 딱 맞게 커스터마이즈 된 툴을 제공한다. 혹은 이제까지 일한 정보들을 바탕으로 그에 최적화된 툴을 만들어준다.  이유는 간단하다. 회사마다 일하는 플로우가 너무나도 다르다. 그렇기 때문에 프로젝트 관리 툴의 최고봉은 아직도 액셀일 수밖에 없다. 전 세계적으로 이름이 조금 알려진 것만 해도 1,000여 개가 넘는 프로젝트 관리 툴이 있는데, 그들 대부분이 작게나마 수익을 올리고 있는 이유도 이와 같다. 워크플로우가 너무 다양하기 때문에 Needs가 매우 파편화 되어 있다. 트렐로, Asana, 스마트시트와 같은 탑 3 프로젝트 관리 툴은 매우 보편적인 형태의 기능을 제공함으로써 시장을 골고루 나눠먹고 있다. 트렐로는 보드 형태의 직관성을, ASANA는 체크리스트 방식, 스마트시트는 액셀 방식으로 서비스를 제공한다. 프로젝트 관리에는 역시 액셀이 짱이다. 다양한 회사가 자신의 워크플로우에 맞게 개인화할 수 있다.컴퓨터라는 도구가 생긴 이래로 우리가 일할 때 해오던 방식은 저기서 끝났다고 봐도 과언이 아니다. 여기에 더해서 페이스북과 같이 SNS를 기업형으로 만든 케이스가 있는데, 써보면 알겠지만 쓰면 쓸수록 불편하다. 애초에 정보의 영속성이 요구되는 기업현장에서 정보를 망각 가능한 말랑말랑한 객체 로보고 두뇌처럼 관리하는 타임라인 방식은 도통 맞지 않는 셈이다.그렇다면, 왜 나는 프로젝트 관리 도구가 미래를 제시하지 못한다고 결론 내렸을까? 그 이유는 매우 간단한데, 툴과 사람의 주객이 전도돼가고 있는 것이 느껴졌기 때문이다. 실제로, 협업 툴을 도입하면 사람들은 그 툴에 모든 워크플로우를 다시 맞춰야 하고, 툴을 배워야 하며 그 툴에 이제까지의 정보를 넣는 등 필요 없는 작업들을 해야 한다. 그저, 검색과 관리의 용이성을 위해 우리는 인간 개개인이 가진 힘을 전체 속에 껴넣는데 불필요한 리소스를 낭비한다고 판단했다. 그리고 올해 초, 한창 힘들었을 시기에 도구에 대해 매우 깊고 조용하게 생각할 시간을 갖게 됐다. 역사적으로, 도구는 인간이 생물학적인 한계를 넘어서게 만들어, 더 나은 세상을 만드는데 기여해왔다.포클레인은 작은 아이도 거대한 힘을 발휘할 수 있도록 만들었고, 자전거는 인간이 맹수보다도 빠르게 이동할 수 있는 힘을 줬다. 애플의 스티브 잡스, 워즈니악이 발명한 개인 컴퓨터는 인간이 신체뿐 아니라 정신적 한계까지 넘어설 수 있는 힘을 줬다. 이렇게 언제나, 인간은 도구를 이용해 한계를 넘고 가치를 창출해왔다. 그것이 인간만이 가진 초월적인 힘이다.결국 도구는 '초월'을 의미하는 것이 아닐까?그런데, 갑자기 모든 것이 달라졌다.도구들의 비약적 발전과 함께 일어난 것은 사람들이 일하는 방식의 변화였다. 작은 공방, 상점 등에서 일해왔던 인류는 무언가를 수행하기 위해 언젠가부터 100명. 200명. 수 천명. 매우 거대한 조직을 만들기 시작했다. 조직의 비대함과 함께 개인의 역량에 대한 기대와 요구는 떨어졌고, 그들을 전체적으로 관리하고 통솔하는데 관리자는 몰두하기 시작했다. 우리는 이미 알고 있다. 나 자신도 누군가의 '관리의 대상'이라는 것을 말이다. 사람 한 명, 한 명은 아마존이나 Ebay에 배치된 상품처럼 DB화 되어 HR관리자에 의해 관리된다. 인터넷 시대로 접어들면서 모든 기업은 종이에 쓰인 아날로그 정보들을 디지털로 옮겨오기 시작했다. 아날로그식 업무를 디지털로 옮겨오면서 발생하는 손실을 막기 위해 ‘관리’가 곧 생산성의 척도가 됐다. 지금 존재하는 생산성 툴의 80%가 이런 방향을 향해가고 있다고 보면 된다.나는 이것이 이미 깨진 항아리를 막기 위한 고군분투인 것으로 보였다. 깨진 항아리를 막아달라는 '니즈'는 분명히 존재하기 때문에, 누군가 달려들어 깨진 항아리를 운 좋게 한번 잘 막을 때마다 시장으로부터 돈을 버는 형태로 사업이 이어지고 있다고 판단했고, 이 분야에선 발전적인 미래가 없다고 생각했다. 그때였다. 간디의 말은 내 심장을 뿌리 깊게 파고들었다.그렇다. 대부분 협업 툴은 물론 우리가 향했던 방향은 '행동'을 만드는 일이었다. 사람들이 일하는 방식을 만들고 우리의 방향을 강요해서 습관으로 만들고, 그 습관의 관성을 유지시키는 것이 비즈니스 모델이었던 것이다. 그 습관을 유지하는 것 자체가 '가치'라는 착시로 보일 것이 분명했다. 이때, 이 방향이 인류를 위해 조금도 도움이 되지 않는다고 강하게 확신이 들었다.그래서, 간디의 말에 더욱 귀를 기울였다. '믿음과 생각.' 이 근본적인 단계에 접근하는 것을 목표로 정했다.평범한 사람의 잠재성도 끌어낼 수 있고 더 나아가 그것 자체로 사람들이 자신의 한계를 넘어선 가치를 만들 수 있는 도구를 만들자. 그들이 평소 내지 못할 법한 생각도 낼 수 있게 만드는, 그런 도구를 만들자.루트번스타인의 '생각의 탄생'을 다시 읽어보기 시작했고 아인슈타인이나 다빈치 등 천재들이 사고하는 방식에 대한 중요한 내용이 담긴 책 초반 부분을 소프트웨어로 옮기기 위해 설계를 시작했다. 위대한 업적을 남긴 사람들은 '개인'이었고 그들은 관리의 대상이 아니었다. 그리고 그들이 사고하는 방식에는 일정한 패턴이 있었는데 그것은 매우 조직화된 사고방식이 아닌 방사형 사고방식을 갖고 있었다는 것이었다. 간단한 예로, 싸이월드를 꾸밀 때의 창의성은 페이스북을 시작한 순간 사라졌다. 배경음은 무엇으로 할까, 다이어리엔 무엇을 쓸까? 아바타는 뭘 입고 있을까. 어디에 꾸며놓을까. 대문글은 비밀글로 할까? 방명록은 비밀글로 할까? '비밀로 써줘~' 멘트는 무엇으로 쓸까? 이런, 우리의 크고 작은 창의적인 수많은 고민들은 어디로 갔을까? 사람들이 '어떻게 느낄지'에 대해 깊이 고민하며, 첫사랑에 빠진 초등학생의 창의성까지도 끌어냈던 우리의 과거는 어디 간 걸까? '개인'이라는 인간 자체의 의미는 '페이스북'이라는 거대한 집단 속으로 들어가 개성을 잃고 그저 거대한 네트워크 속, 한 줄의 DB로 영원히 전락한 것일까?비캔버스는 그러한 고민을 하게 만드는 도구로 만들기로 결심했다. 링크를 단순히 즐겨찾기 할 때도, 별 모양 하나를 눌러 어디에 저장되는지도 모르고 Keep 해놓는 것이 아니라, 자신의 감성과 생각에 맞게 자유롭게 배치하고, 그것을 배치하기 위해 고민하게 만들었다. 자신의 생각, 자신의 관념을 시각화할 수 있는 툴. 하지만 개념적으로 어렵지 않게 파워포인트와 매우 유사한 사용성을 가진 직관적인 툴. 그것이 우리의 방향이 됐다. 대충 만들었지만, 정성과 미묘한 감성이 느껴지지 않는가?이 글을 쓸 때도, 비캔버스로 초안을 잡았다. 내 생각을 포스트잇에 마음껏 적어 뿌려놓고 순서를 배열해보면서 어떤 순서가 나을지를 고민했다. '관리되고 있는 나'에 집중하는 것이 아닌 '생각하고, 일하고, 아이디어를 내는 나'에 온전하게 집중할 수 있는 툴을 만드는 것을 목표로 한 순간, 모든 것이 명확해졌고 일에 속도감도 생기고 재미도 붙었다. 하지만 함께 일하는 협업 툴로 쓰기 위해서는 나의 세계에만 흠뻑 빠져있는 것이 아니라, 다른 사람들에게 내 생각이 담긴 캔버스를 공유했을 때도 누구나 이해하기 쉽고 그 정성이 느껴져야만 한다. 그것을 디자인적으로 풀기 위해 노력해왔다. 위 캔버스를 만드는데 약 1분 30초가 걸렸다. 정확히 구조적인 텍스트로 풀어보자면, 유튜브 영상 2개, 웹 링크 1개, 이미지 7개, 포스트잇 3개가 들어갔다. 하지만 저 캔버스 안에는 단순한 텍스트로 표현할 수 없는 뭔가가 느껴진다. 정보를 모으고 그룹화하는 사람의 심리와 그 정성! 제 아무리 싸이월드를 못 꾸미는 사람의 홈피에 들어가도 그 사람의 정성이 느껴질 수밖에 없듯 말이다. 그리고 그 정성이 담긴 캔버스는 한눈에 직관적으로 이해될 수 있다. 파워포인트와 크게 다르지 않기 때문이다.지금 이 순간, '흠... 비캔버스라... 재미는 있는데, 딱히 필요는 없겠네. 비즈니스 모델이 뭐지?'라고 생각하고 있는 사람들이 있을 것이라 확신한다.그런데 나는 앞으로의 도구는 이러한 방향이 아닐까 진지하게 고민해본다. 도구는 서비스와 다르기 때문에 먼저 가치를 주고 그 가치를 고객이 강하게 받아들이는 역방향의 사업 진행이 가능하다고 판단했다. 비타민과 진통제의 비유를 역으로 들어보자면 지금의 사업개발 풍토라면 사람들은 비타민을 만들지도 않았을 것이고 아무도 먹어볼 수 없다. 비타민을 만들겠다고 말한다면, 사람들이 사업을 할 줄 모른다며 다른 마약성 진통제를 개발하라고 할지도 모른다. 물론 비타민이 필요하다고 말하는 '니즈'는 강하지 않을 것이다. 누구나 돈 되고 니즈 명확하고 시장이 검증된 진통제만을 만들 것이고 결국 우리 인류는 비타민 부족으로 각종 질병에 시달려 명확한 '시장'과 '니즈'가 생길 때까지 비타민을 만나지 못할 것이다.피아노는 어떤가? 피아노를 왜 만드나? 악기를 왜 만드나? 그게 돈 되나? 누가 사나? 피아노라는 도구가 없었다면 모차르트도 베토벤도 쇼팽도 아무도 없다. 더 무서운 것은 우리 인류가 그것에 대한 불편이나 적막함을 전혀 느끼지 못했을 것이라는 것이다. 적막한 세상 속에 살면서도 우리 인류는 그 세상이 적막한지도 모르는 채 살아갔을 것이다. 자본주의의 가장 큰 약점이 여기 있다고 본다. 당장 가시적으로 돈이 보이는 곳이 아니면 누구도 모험을 하지 않는다. 말을 조금 바꾸면 니즈가 없으면 제품도 없다. 인류는 모든 정답과 자신의 욕망, 필요성을 명확히 인지하고 주머니 바깥으로 돈을 빼놓고 기다려야만 한다. 그러면 기업가들이 제품을 만들어 줄 것이다. 세상을 바꾸는 것은 단순한 니즈가 아니다. 자본주의 사회에서 니즈란 돈을 뜻하는데 우리 인류가 살아가는 이유가 돈이 아니다. 주객이 전도되면 안 된다. 그래서, 나에게 가장 무서운 말은 '위대한 생각이고 뭐고 그딴 거 필요 없을 것 같은데. 비타민 말고 진통제 같은 걸 만들어야지, 당신은 진짜 사업 초짜군요!'가 아니다. 그런 이야기를 들을 때마다 인생의 덧없음과 인류를 위해 온전하게 걸어야 할 길에 대해 진지하게 고민해보지 않은 사람이라고 밖에 생각이 안 든다. 우리에게 매우 중요한 순간은 '필요 없을 것 같은데'가 아니라 진짜 필요 없을 때다. 그것이 우리의 실패를 의미한다.'비캔버스 한 달 써봤는데, 너무 쓸모가 없어서 그냥 안 쓰기로 했어요'이 얼마나 공포스러운 말인가? 익숙하지 않은 제품을 의식적으로 쓰기 위해 노력했음에도 쓸모가 없다고 판단을 내릴 정도로 끔찍한 제품을 만들었다니... 이것이 컨저링 2보다도 무서운 진정한 공포다. 하루 종일 도구만 만드는 사람들에게 너무나도 가혹하면서도 강한 자극을 줄 수밖에 없다.다행히, 비캔버스의 고객은 어느새 3만 명이 넘어가고 있고 매일 아침만 되면 사용자들이 들어와 자신만의 비주얼 세계를 구축하기 시작한다. 정말 아름다운 순간이다. 밤에는 북미와 남미에서 유저들이 들어와서 무언가 프로젝트를 진행한다. 가슴이 벅차다는 말은 이럴 때 쓰는 것이 아닐까 심각하게 고민해본다.비캔버스를 이용해 보면 알겠지만, 우리는 고객지원을 장인(개발자)이 직접 하고 있다. 그 이유는 매우 간단한데, 개발자는 개발에 집중을 하다 보면 그저 텍스트로만 이뤄진 제품이 실제 살아 숨 쉬고 그것과 고객과 만나는 생명력을 갖는다는 것을 이해하기 힘들다. 버그가 생기면 버그를 고쳐야겠다는 생각만 가득하지, 그것을 왜 고쳐야 하는지 등에 대한 고민을 하기 힘들기 마련이다. 이 때문에 장인이 직접 고객지원을 함으로써 고객은 자신이 요구한 피드백이나 문제점을 빠르게 해결할 수 있고 장인은 제품이 실제 살아 숨 쉰다는 것을 지각하는 것은 물론 자신이 만든 제품에 대한 사명감과 자부심이 깊어진다.한 가지 더 이득이 있다면, 나도 한 때 개발을 할 때 느꼈지만 개발자들이 Java, Javascript나 Objective-C와 같은 언어에 집중을 하다 보면 인간의 언어로 소통을 하는데 큰 어려움을 겪기 마련이다. 이것이 바로 기계와 인간의 주객이 전도된 대표적인 비극이 아닐까 싶다. 우리 장인들도 고객지원 초기에는 인간의 언어를 구사하는 것에 큰 어려움을 느꼈다. 하지만, 이제는 인간의 언어를 자연어처럼 자유롭게 구사하며 감성을 가진 개발자로서 그 영역을 넓혀가고 있다. 이처럼, 장인의 직접적인 고객지원은 장인정신을 강화하는데도 매우 중요한 역할을 해왔다.도구를 만드는 많은 장인들처럼, 우리 또한 장인정신을 갖고 서비스를 만들고 있다.우리는 협업 툴과 생산성을 넘어선 도구를 만들고 있고, 앞으로도 계속 그럴 것이다. 화이트보드와 마인드맵이 우리의 생각의 폭을 넓혀주는 것처럼, 우리는 그런 도구를 만들고 싶다. 사람들이 자신의 한계를 초월한 가치를 폭발적으로 만들어낼 수 있게 돕는 도구. 인류의 발전적 미래를 고민했을 때 우리의 사업, 우리의 서비스와 그 방향이 일치하는 그런 길을 걷고 싶다.그러한 뜻과 사명이 없다면 조그마한 위기나 상처에도 굴복하고 포기할 것 같다. 수많은 위기를 지금 우리 회사의 장인들과 함께 견뎌왔고 앞으로도 견딜 것이다. 그것을 견디고 우리가 장인정신을 갖게 해주는 비결이 바로 위와 같은, 인류의 발전적 미래를 향한 방향과 우리의 사업적 방향이 일치한다는 그러한 사명의식에서 나온다.사람들의 가치를 끌어올려주는 도구를 만드는 길. 그것이 가시적으로 드러나는데 조금 시간이 걸리더라도 차근차근 조바심 내지 않고 그것을 달성하는데 온 집중을 다할 것을 진심으로 다짐해본다. 비캔버스는 웹사이트 beecanvas.com 에서 만나볼 수 있으며, 아이폰, 아이패드를 위해 아름답게 디자인된 앱을 앱스토어에서 만나볼 수도 있다.고객님들의 위대한 생각과 성과를 위해 어지러운 세상 속에서도 언제나 파이팅할 것을 약속드린다. 마지막으로 아인슈타인의 명언이다.  
조회수 3603

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]브랜디, 오직 예쁜 옷만#브랜디 #개발문화 #개발팀 #업무환경 #인사이트 #경험공유
조회수 2439

JANDI 검색엔진 도입기

이번 포스트에서는 JANDI가 검색엔진을 도입하게 된 배경과 어떤 작업을 했는지 공유하려고 합니다검색엔진 도입 배경JANDI는 사용자가 입력한 메시지를 검색하고 사용자가 올린 파일의 파일명/파일 타입을 검색하는 메시지/파일 검색 기능을 제공하고 있습니다. 데이터 저장소로 MongoDB를 사용하고 있는데 검색되는 필드에 인덱스를 걸고 정규 표현식을 이용하여 DB Like 검색(“DB는 검색을 좋아한다”아니에요;;)을 하고 있습니다.초기에는 데이터가 아담했는데, 서비스가 커감에 따라 사용자 증가하면서 생성되는 데이터도 많아졌습니다. 올 초에 데이터가 많아지면서 검색이 DB에 부하를 주고, JANDI 서비스에도 영향을 주게 되었습니다. 그래서 JANDI 서비스용 MongoDB와 검색 전용 MongoDB를 분리했는데 이는 임시방편이었고 언젠가는 꼭 검색엔진을 도입하자며 마무리를 지었습니다.시간은 흘러 흘러 4월이 되었습니다. 당시 메시지 증가량을 봤을 때 올해 안에 검색엔진을 사용하지 않으면 서비스에 문제가 될 거라고 판단이 되어 도입을 진행하게 되었습니다.검색엔진 도입의 목표는 다음과 같았습니다.현재 DB Like 검색과 비슷한 검색 품질이어도 좋다. (일정때문에)검색엔진 도입을 통해 검색이 JANDI 서비스에 영향을 주지 않도록 한다.색인을 위해서 주기적으로 JANDI의 MongoDB 데이터를 가져 와야 했지만, 이 작업이 JANDI 서비스에 큰 부하를 주지 않을 거라고 생각했습니다.검색엔진 후보로는 Solr, ElasticSearch, CloudSearch, ElasticSearch Service 가 있었는데 Solr를 선택했습니다.왜냐하면제가 경험한 검색엔진이 Solr 였습니다. 더군다나 2010년 초에 접했던 Solr 비해 많이 발전한 것 같아 개발자로서의 열정과 도전 욕구가 샘솟았습니다. SolrCloud pdf, WhyNoWarAWS에서 제공하는 검색 서비스는 많은 부분을 관리해준다는 면에서 솔깃했지만, Custom Analyzer는 적용할 수 없어서 선택하지 않았습니다.ElasticSearch에 크게 흔들렸지만 경험이없다 보니 공부하면서 프로젝트를 진행한다는 부담감이 커서 다음을 기약했습니다.작업 내용1. MongoImporter, Sharding. MongoImporter 수정현재 JANDI는 MongoDB를 데이터 저장소로 사용하고 있습니다. MongoDB의 데이터를 색인하기 위해 데이터를 검색엔진으로 가져와야 하는데 Solr에서는 DataImportHandler 기능을 제공하고 있습니다. 기본 DataImportHandler로 RDB 데이터는 가져올 수 있지만 이 외 MongoDB나 Cassandra 같은 NoSQL의 데이터를 가져오기 위해서는 따로 구현이 필요합니다. 구글신에게 물어봐서 SolrMongoImporter 프로젝트를 찾았는데 문제가 있었습니다. mongo-java-driver 버전이 낮아서(2.11.1) 현재 JANDI에서 서비스 되고 있는 MongoDB(3.0.x)의 데이터를 가져올 수 없었습니다.url: Reference compatibility MongoDB Java2.11.1에서 3.2.2로 버전을 올리고 변경된 api를 적용하는 작업, 빌드 툴을 ant에서 maven으로 변경하는 작업을 하였습니다. 마음의 여유가 된다면 P/R을 할 계획입니다.여담으로 DataImportHandler 작업과 함께 검색 schema 정하는 작업을 했는데 sub-document 형식이 필요하게 되었습니다. Solr 5.3부터 nested object를 지원한다는 article을 보았는데, nested object 지원 얘기를 보니 Solr도 text search 뿐 아니라 log analysis 기능에 관심을 가지는건 아닐까 조심스레 생각해봤습니다. (역시나… 이미 banana, silk 같은 프로젝트가 있습니다. Large Scale Log Analytics with Solr 에 관련된 이야기를 합니다.). Sharding. 그리고 Document Routing대량의 데이터를 처리하기 위해 한 개 이상의 node로 구성된 데이터 베이스에 문서를 나누어 저장하는 것을 sharding이라고 합니다. SolrCloud는 shard 생성/삭제/분리할 수 있는 API가 있고, 문서를 어떻게 나눌지 정할 수 있습니다. 어떻게 나눌지는 shard 생성 시 router.name queryString에 개발한 router 이름을 적어주면 됩니다. 그렇지않으면 Solr에서 murmur Hash 기반으로 문서를 나누는 compositeId router를 사용합니다. JANDI의 검색 기능은 Team 단위로 이루어지기 때문에 TeamId를 기준으로 문서를 나누기로 하고, compositeId Router를 사용했습니다. 실제 서비스의 문서 데이터를 색인 돌려서 각 node에 저장되는 문서 개수나 메모리/디스크 사용량을 확인했는데 다행히도 큰 차이가 나지 않았습니다.하나의 문서는 TeamId와 MessageId를 조합한 “TeamId + ! + MessageId” 값을 특정 field에 저장하고 해당 필드를 uniqueKey 지정했습니다. 간단한 수정으로 문서 분배가 되는점이 좋았고, 더 좋았던건 검색시 _route_ 를 이용해서 실제 문서가 존재하는 node에서만 검색을 한다는 점이 었습니다. 4년 전 제가 마지막으로 Solr를 사용했을 때는 사용자가 직접 shards queryString에 검색할 node를 넣어주어야 했습니다..../select?q=\*:\*&shards=localhost:8983/solr/core1,localhost:8984/solr/core1SolrCloud RoutingSolrCloud Routing2Multilevel CompositeId2. analyzer, queryParser. analyzerSolr에 기본으로 있는 text_cjk analyzer를 사용하였습니다. <!-- normalize width before bigram, as e.g. half-width dakuten combine --> <!-- for any non-CJK --> text_cjk는 영어/숫자는 공백/특수기호 단위로 분리해주고 cjk는 bigram으로 분리해주는 analyzer 입니다. analyzer는 이슈 없이 완성될 거라 생각했지만 오산이었습니다. 텍스트가 들어오면 token을 만들어주는 StandardTokenizerFactory 에서 cjk와 영어/숫자가 붙어있을 때는 분리하지 못해 원하는 결과가 나오지 않았습니다. 또한 특수기호중에 ‘.’(dot), ‘_‘(underscore)가 있을 때에도 분리하지 못했습니다.nametextInputTopic검색개선_AB1021_AB제시CD.pdfStandardTokenizerFactoryTopic검색개선_AB1021_AB제시CD.pdfCJKWidthFilterFactoryTopic검색개선_AB1021_AB제시CD.pdfLowerCaseFilterFactorytopic검색개선_ab1021_ab제시cd.pdfCJKBigramFilterFactorytopic검색개선_ab1021_ab제시cd.pdf원하는 결과topic 검색개선 ab 1021 ab 제시 cd pdf그래서 색인/검색 전에 붙어있는 cjk와 영어/숫자사이에 공백을 넣어주고 ‘.’와 ‘_‘를 공백으로 치환해주는 작업을 하였습니다. 색인은 Transform에서 처리하고 검색은 다음에 알아볼 QParserPlugin에서 처리했습니다.nametextInputTopic검색개선_AB1021_AB제시CD.pdfTransform 단계Topic 검색개선 AB 1021 AB 제시 CD pdfStandardTokenizerFactoryTopic 검색개선 AB 1021 AB 제시 CD pdfCJKWidthFilterFactoryTopic 검색개선 AB 1021 AB 제시 CD pdfLowerCaseFilterFactorytopic 검색개선 ab 1021 ab 제시 cd pdfCJKBigramFilterFactorytopic 검색개선 ab 1021 ab 제시 cd pdf※ 추가 : 검색 결과를 보여줄때 어떤 키워드가 매칭되었는지 Highlight 해야했는데, 색인하기 전에 원본을 수정을 해서 Solr에서 제공하는 Highlight를 사용하지 못하게 됐습니다. 눈 앞의 문제만 바라보고 해결하기 급급했던 저를 다시금 반성하게 되었습니다.. queryParser앞에서도 언급하였지만, 색인뿐만 아니라 검색할 때도 검색어가 입력되면 검색하기 전에 붙어있는 cjk와 영어/숫자를 분리하고 ‘.’, ‘_‘를 공백으로 치환해주는 작업이 필요합니다. Solr에서 기본으로 사용하는 LuceneQueryParserPlugin 을 수정하였습니다.@Override public Query parse() throws SyntaxError { // 수정한 코드 String qstr = splitType(getString()); if (qstr == null || qstr.length() == 0) return null; String defaultField = getParam(CommonParams.DF); if (defaultField == null) { defaultField = getReq().getSchema().getDefaultSearchFieldName(); } lparser = new SolrQueryParser(this, defaultField); lparser.setDefaultOperator (QueryParsing.getQueryParserDefaultOperator(getReq().getSchema(), getParam(QueryParsing.OP))); return lparser.parse(qstr); } QParserPlugin3. DataImportHandler manageMongoImporter에서도 얘기했지만 Solr에서는 DB 데이터를 가져오는 DataImportHandler 기능을 제공 하고 있습니다. DataImportHandler Commands를 보면 총 5개의 명령을 제공하고 있는데, 그중 색인을 실행하는 명령은 full-import와 delta-import입니다. full-import 명령은 DB의 모든 데이터를 색인 하는 것을 말합니다. 색인 시작할 때의 시간을 conf/dataimport.properties에 저장하고 이때 저장한 시간은 delta-import 할때 사용됩니다. 전체 색인한다고 말합니다. delta-import 명령은 특정 시간 이후로 생성/삭제된 데이터를 색인 하는 것을 말합니다. 특정 시간이란 full-import 시작한 시간, delta-import가 최근 종료한 시간을 말합니다. full-import와는 다르게 delta-import가 종료된 시간을 conf/dataimport.properties에 저장합니다. 증분 색인 혹은 동적 색인이라고 하는데 여기서는 증분 색인이라고 얘기하겠습니다. 두 명령을 이용하여 JANDI의 메시지/파일을 색인 하기 위한 삽질 경험을 적었습니다.. 첫 번째 삽질full-import는 현재 active인 데이터를 가져올 수 있도록 query attribute에 mongo query를 작성하고, delta-import 는 특정 시간 이후에 생성된 데이터를 가져올 수 있도록 deltaQuery attribute에 mongo query를 작성합니다. 또한 deltaQuery로 가져온 id의 문서를 가져올 수 있도록 deltaImportQuery attribute에 mongo query를 작성하고, 특정 시간 이후에 삭제된 데이터를 가져올 수 있도록 deletedPkQuery 에도 mongo query를 작성합니다.<!-- data-config.xml --> <?xml version="1.0" encoding="UTF-8" ?> 정상적으로 동작은 했지만, 색인 속도가 실제 서비스에 적용하기 힘들 정도였습니다. 실행되는 mongo query를 확인했는데 다음과 같이 동작하였습니다.특정 시간 이후에 생성된 데이터를 색인하기 위해 약 (새로 생성된 문서개수 + 1) 번의 mongo query가 실행되었습니다. (batch size와 문서 갯수에 따라 늘어날 수도 있습니다.) 메신저 서비스 특성상 각각의 문서 크기는 작지만 증가량이 빠르므로 위 방식으로는 운영 할 수 없었습니다. 그래서 delta-import using full-import 를 참고해서 두 번째 삽질을 시작 하였습니다.. 두 번째 삽질full-imoprt 명령을 실행할 때 clean=false queryString을 추가하고 data-config.xml query attribute를 수정하는 방법으로 증분 색인 하도록 수정했습니다. 특정 시간 이후 생성된 문서를 가져오는 attribute인 deltaQuery와 deltaImportQuery 는 필요가 없어 지웠습니다.<!-- data-config.xml --> <?xml version="1.0" encoding="UTF-8" ?> <!-- if query="" then it imports everything --> 전체 색인은 /dataimport?command=full-import&clean=true 로 실행하고, 증분 색인은 /dataimport?command=full-import&clean=false(생성된 문서)와 …/dataimport?command=delta-import&commit=true(삭제된 문서)로 실행하도록 했습니다.정상적인 것 같았지만, 문제가 있었습니다.full-import, delta-import 명령을 실행하면 conf/dataimport.properties 파일에 전체 색인이 실행한 시작 시각 혹은 증분 색인이 최근 종료한 시간이 “last_index_time” key로 저장됩니다. 첫 번째 삽질에서 증분 색인시 delta-import 명령 한 번으로 생성된 문서와 삭제된 문서를 처리했지만, full-import와 delta-import 두개의 명령으로 증분 색인이 동작하면서 생성된 문서를 처리할 때도 last_index_time이 갱신되고 삭제된 문서를 처리할 때도 last_index_time이 갱신되었습니다.예를 들면증분색인 동작이 1분마다 삭제된 문서를 처리하고, 5분마다 생성된 문서를 처리 한다고 가정해보겠습니다. 3시 13분 14초에 delta-import가 완료되어 last_index_time에 저장되고, 다음 delta-import가 실행되기 전 3시 13분 50초에 full-import가 완료되어 last_index_time이 갱신되었다면, 3시 13분 14초부터 3시 13분 50초 사이에 삭제된 문서는 처리를 못 하는 경우가 발생합니다.Solr에서 dataimport.properties에 기록하는 부분을 수정하는 방법과 전체/증분 색인을 동작시키는 Solr 외부에서 특정 색인 시간을 관리하는 방법이 있었는데 Solr를 수정하는 건 생각보다 큰 작업이라 판단되어 외부에서 관리하는 방법으로 세 번째 삽질을 시작하였습니다.. 세 번째 삽질전체/증분 색인을 주기적으로 동작 시키는 곳에서 full-import&clean=false(생성된 문서) 처리할 때 필요한 마지막으로 색인 된 문서 id와 delta-import(삭제된 문서) 처리할 때 필요한 마지막으로 색인 된 시간을 관리하도록 개발하였습니다. 증분 색인 시 full-import&clean=false를 실행하기 전에 현재 색인 된 마지막 id 조회 후 해당 id보다 큰 데이터를 처리하도록 하였고, delta-import를 마지막으로 마친 시간을 따로 저장하다가 delta-import 실행 시 해당 시간을 전달하는 방법으로 수정하였습니다.<!-- data-config.xml --> <?xml version="1.0" encoding="UTF-8" ?> 마치며튜닝의 끝은 순정이라는 말이 있는데 IT 기술은 예외인 것 같습니다. 현재는 Solr의 기본 기능만으로 구성했지만, 고객에게 더 나은 서비스를 제공할 수 있는 시작점으로 생각하고, JANDI 서비스에 맞게 끊임없이 발전해나가겠습니다.감사합니다.참고Getting Started with SolrApache Solr 5.5.0 Reference Guide PDFApache Solr 6.1 - Analyzers, Tokenizers and FiltersRebalance API for SolrCloud issueYonik Blog#토스랩 #잔디 #JANDI #개발자 #개발팀 #개발후기 #인사이트
조회수 1311

8퍼센트에 입사하기까지

아래 글은 제 개인블로그에 올렸던 것을 옮긴것이다. 8퍼센트에 관련된 글들은 하나씩 옮겨 오려고 한다.오늘은 입사하기까지의 이야기를 해 보려고 한다.글을 쓰기 위해 사용하는 에버노트에 “출사표”라는 노트가 있다. 새로운 길을 가게 될 때 그 각오를 글로 남겨야겠다는 생각으로 만든 노트이다. 오늘 다시 살펴보니 생성한 지 이미 일 년이 넘었다. 하지만 아직 노트가 비어 있으니, 다음 행선지를 선택하지 못했었다. 그 노트를 채우기 위해 지난 일 년 동안 수많은 열정적인 사람들을 만났다. 그들 중 대부분은 "그들과 함께했으면 어땠을까?"라는 생각이 종종 들 정도로 내가 당시 만났을 때보다 훨씬 멋진 사람이 되었으며 더 큰 도전을 맞이하고 있다.8퍼센트 이효진 대표도 그중 한 명이었다. 2014년 겨울로 기억한다. 마루 180에 친구들을 보러 갔는데 친구 중 한 명이 이효진 대표가 1층 카페에서 일을 하고 있다고 한 번 만나보라고 했다. 그 전에 이효진 대표가 새로운 일을 계획하고 있다는 이야기를 들었기에  궁금하던 차였다. 이효진 대표는 혼자 카페에 앉아 일하고 있었고, 내가 다가가자 멋쩍은 웃음으로 인사를 건네 왔다. 지금 기억을 되살려 보면 “1호 채권”을 준비하고 있었던 것 같다. 그리고 한번 읽어봐 달라며 메일로 사업계획서를 보내왔다.(이제 유물이 된 당시의 사업 계획서. 비슷한듯 하지만 로고를 포함해 많은 것이 바뀌었다)그 후 3일 뒤에 “1호 채권”이 열렸고, 구글폼을 통해 투자 신청을 했다. 당시 투자라는 생각은 하지 않았고, 그저 새로운 도전을 시작하는 그녀를 응원하고 싶은 마음이었다. 그 이후 한 달간 두 번의 투자를 더 하고 다시 이효진 대표를 만났다. 그때 이효진 대표는 몇 번의 거래 진행을 통해 시장을 확인하고 자신감을 얻은 상태였고, 내게 함께 하자는 제안을 했다. P2P 대출이라는 시장은 매력적인 것 같은데, 당시 나는 그 시장을 이효진 대표가 열어 갈 수 있다는 확신이 없었다. 그래서 그냥 응원하겠노라고 말만 전하고 며칠의 시간을 들여 개발 프로토타입을 만들어 주었다. (그러고 보니 프로토타입을 만들어 주고 밥도 못 얻어먹었다.)다시 몇 달이 지나 2015년 5월이 되었다. 소소하게 투자를 하던 용돈이 떨어져서 그냥 페이스북에 글이 올라오면 “좋아요”만 누르며 응원하게 되었다. 이효진 대표는 그동안 많은 부침을 겪으며 도전을 이어나갔다. 그리고 내게 다시 연락이 와서 디캠프의 사무실을 찾았다. 이제 함께 하는 동료들도 5~6명이 모여있었다. 2015년 5월에는 조인할까 하고 꽤 심각하게 고민을 했던 것으로 기억한다. 하지만 내게 규제의 리스크를 안고 이슈의 중심에 있었던 8퍼센트는 위험해 보였다. 다음 달 출산하는 둘째를 생각하면 선뜻 도전하는 마음이 들지 않았다.시간은 다시 흘러 2015년 10월이 되었다. 그동안 8퍼센트는 지속적인 성장을 했고 회사를 둘러싼 시장의 분위기는 모난 돌에서 시장을 열어가는 주목받는 스타트업이 되어 있었다. 나는 왠지 놓쳐버린 기회가 생각이 나서 한동안 페이스북 "8퍼센트 그룹"의 글을 막아두기도 했었다. 그리고 그동안 다니던 회사를 나와 새로운 일을 준비하고 있었다. 이때 다시 이효진 대표의 페북 메시지를 받았다.연락을 받은 즉시 사당으로 내려갔고, 이효진 대표를 만나 세 번째 제안을 받았다. 그리고 그로부터 2주 뒤에 이효진 대표에게 가겠노라고 답을 전했다.왜 그때 나는 “Yes”라는 답을 할 수 있었을까? 내가 다음 행선지를 정할 때의 기준이 몇 가지 있었다.· 창업을 하거나, 15명 이내의 스타트업에서 일한다. 지금까지 스타트업에서 10년간 일해왔고,   앞으로도 그럴 것이다.· CTO로 일한다. 개발 조직에 대한 책임을 지고 꿈꿔왔던 이상을 실험한다. 회사 경영에 대해   경험을 한다.· 사회에 도움이 되는 일을 한다. 그렇다면 일에 대한 동기부여를 따로 찾지 않아도 된다.· 대표가 내가 존경할만한 사람이다. 스타트업은 대표가 반이다.  · 성공한다. 실패하는 것에서도 배울 것이 있겠지만 성공하는 회사에서 훨씬 많은 것을 배울 수   있고 돈도 벌 수 있다.지금까지의 8퍼센트는 1,2,3번이 만족되었지만 4,5번에 대한 확신이 없었다. 하지만 결정을 할 시기에는 회사의 성공에 대한 확신이 들었고 내가 조인하면 그 성공 확률이 높아진다는 생각이 들었다. 또한, 이효진 대표가 경험해 온 지난 일 년에 대한 존경하는 마음이 들었다.이효진 대표에게 조인하겠노라고 말을 전한 이후에도 불안한 마음이 사라지진 않았다. 하지만 그것 이상으로 회사에 들어가서 하고 싶은 일들이 뭉게뭉게 피어났다. 새로운 여행을 떠나는 기분. 정확히 그것과 같다. 두려움 반. 설렘 반. 나는 어떤 모험을 하게 될까?원문 : 브런치
조회수 637

디자이너가 조직에서 인정받지 못하는 이유

디자이너는 대단하다.디자이너가 대단한 이유는 매우 탁월한 능력을 가지고 있기 때문이다. 디자이너 스스로도 그 역량을 잘 인식하지 못하기 때문에 타인들에게 잘 어필하지 못하기도 하지만, 이 능력은 분명 무시무시한 역량이다. (스스로 잘 인식하지 못한다는 의미는 누구나 디자이너처럼 그 능력을 가지고 있다고 믿기 때문일지도 모른다)그 탁월한 능력이란생각을 언어와 이미지로 동시에 구체화할 수 있다는 것이다.언어와 이미지로 동시에 생각할 수 있다는 것은 추상적 개념의 단계에서 구체적 구상의 단계로 넘어가는 과정을 동시에 프로세싱 할 수 있다는 것이다. 뿐만 아니라 머리속 상상을 세상이 인식할 수 방식으로 민첩하게 표현할 수 있기 때문이기도 하다.이 능력을 갖지 못한 사람들은 그것이 어떤 파워를 가질 수 있는지 상상하지 못한다. 그렇기 때문에 디자이너가 다른 이들에게 그 위상이나 가치를 쉽게 인정받지 못하는 것이다. 그 능력을 상상하지 못하기 때문에 인정받기도 힘들다는 의미이다.이런 확신은 아주 최근에 더 강해졌다.디자이너로의 경험을 바탕으로 브랜드 영역의 업무를 하다보니, 브랜드의 컨셉을 text로 정리하는 업무와 text를 비주얼로 표현하는 업무에 상당한 프로세스가 존재한다는 것을 알게 되었다. 업계에 verbal의 영역과 visual의 영역을 담당하는 전문 분야가 당연히 나눠져 있겠지만, 그 간극은 꽤 멀다. 멀기 때문에 복잡해지고, 갭이 존재할 수 밖에 없고, 커뮤니케이션의 오류가 생길 수밖에 없다.만일 이 두 가지를 동시에 할 수 있다면, 그것은 대단한 힘을 가질 것이다. 마치 시나리오를 쓰는 작가가 직접 영화를 연출하거나, 작곡을 하는 뮤지션이 직접 노래를 부르는 것과 같은 '의도와 표현의 일치 효과'를 보여줄 수 있다.인간의 언어는 세상을 표현하기엔 너무나 낮은 해상도를 가지고 있다. 동일한 언어를 각기 달리 해석하는 이유도 그 때문이다. A라는 사람이 특정 의도로 정리된 verbal을 B라는 누군가가 시각적으로 표현한다면 당연히 자의적인 해석이 개입될 수밖에 없으며, 초기의 생각과 다른 방향으로 표현됨으로써 오류가 발생될 수 밖에 없다. 기획자가 디자이너와 갈등하는 이유이기도 하다.좋은 디자이너란, 특정 생각(컨셉)을 verbal의 낮은 해상도 단계를 거치지 않고 곧바로 현실 세계에 표현할 수 있는 능력 때문에 존중되어야 한다. 그리고 그 능력 때문에 조직에서 복잡한 프로세스를 현격히 줄일 수 있다. 때문에 디자이너의 아이디어가 올바른 방향이라면 이 능력은 조직에서 엄청난 생산성과 창의적 결과를 발휘한다. 디자이너가 CEO 역할을 하는 배달의 민족이나 에어비앤비가 그런 예시가 될 수 있을 것이다.하지만,왜 그런 일들이 빈번히 일어나지 않을까?곳곳에서 역량을 발휘하는 디자이너들이 늘상 자신의 능력과 재능을 인정받지 못하고, 조직 내에서 늘상 을의 입장에 놓여야만 하는가? 감각이 뛰어난 디자이너조차 조직에서는 크게 다르지 않다. 디자이너라면 공감할 것이다.왜 그럴까?이유는 이미 앞에서 언급되어 있다.디자이너가 아닌 사람들이 이미지를 구체화하기 어렵듯이 디자이너는 이미지를 언어로 표현하는데 어려움을 겪는다. 혼자서 일하지 않는 한 타인과 생각을 공유해야 하는데, 이미지라는 포맷으로만으로는 다양한 전문가들을 일일이 상대하지 못한다. 때문에 디자이너의 verbal 표현 능력이 매우 중요하다. 조직에서 일하기 위해서는 말이다.그동안 내가 경험했던 훌륭한 디자이너들은 뛰어난 감각과 자신의 생각을 매력적으로 표현하는 능력을 동시에 가지고 있었다. 그들은 예외없이 뛰어난 프레젠테이션 능력을 가지고 있다. 화려한 언변이 아니라, 매력적인 단어 선택 능력과 핵심을 끄집어내는 표현 능력을 가지고 있다. 낮은 해상도의 언어를 통해서이지만 전체를 이해할 수 있게 표현한다.디자이너는 verbal 표현 능력을 키워야 한다. 꾸준히 훈련해야 한다. 그것도 감각이다. 그걸 통해서 반쪽짜리 디자이너에서 벗어나야 한다.특히 조직에서 제대로 인정받기 위해서는 verbal 커뮤니케이션 능력을 월등히 키워야 한다. 생각을 글로 표현하고, 함축적 언어로 기술할 수 있어야 한다.그럼 점점 주위에서 자신을 인정하기 시작할 것이다. 인정받지 못하는 것은 당신의 언어가 아니라 타인이 인식할 수 있는 언어로 표현하지 못했기 때문이다.그 덕분에 주변의 조직이 디자이너의 창의적 아이디어를 꽃 피울 수 있기를 기대한다. 또한 덕분에 디자이너들이 조직에서  점점 더 주체적으로 일할 수 있기를, 그리고 없어서는 안될 사람으로 인정받을 수 있기를 기대한다.아깝지 않은가?그 탁월한 능력이....
조회수 1620

응원합니다. 스타트업!

그간 저의 글들이 무거웠다면,오늘은 가벼운 마음으로 희망의 뽕을 주입하는 글입니다.그렇다고 추상적이고, 근거 없는 희망론을이야기하는 것은 아니고요.오늘은 좀 부드럽게,그리고 평소에 쓰는 "요"체와 존댓말로 글을 남기겠습니다.줄어드는 통장 잔고에 한 숨이 나오나요?채용한 지 얼마 안 되어 잠수 타버리는 직원을 원망하나요?계속되는 거절과 핀잔에 위축되었나요?막 시장에 진입하려는데 누군가 같은 또는 더 진일보한 제품/서비스를 출시하였나요?그렇다고 이쯤에서 포기하기엔 너무 먼 길을 온 것 같아서더더욱 고민하고 있나요?스타트업은 원래 그런 겁니다라고 말하면,화내실 거죠?걱정하지 마세요.원래 그런 거 아니니까요.항상 내재되어 있던 리스크일 뿐이지,꼭 이런 일들이 발생하는 것은 아니랍니다.피해갈 수 있고,극복할 수 있어요.당신은 무모해 보일 정도로 용기를 가졌으니까요.당신은 남들보다 독특한 눈을 가졌으니까요.등 떠밀려서 창업한 게 아닌 이상,당신은 다른 사람들이 보지 못 한 무언가를 보고이 길을 걷기 시작했으니까요.응원을 맨 입으로 하기는 좀 그렇고,오늘은 제가 가진 리스트 중에서 도움이 될만한정보의 창고를 일부 정리해서 올립니다.도움이 되시길~~!1. 교육과 강연 그리고 네트워킹에 대한 고민교육을 듣고자 하는데 어디서부터 찾아야 할지 모르겠다면,전 "온오프노믹스"를 추천합니다.http://onoffmix.com/그곳에는 많은 강연과 교육에 대한 정보가 매일 업데이트되어 올라오고,무료/유료 교육 콘텐츠가 다양하게 올라옵니다.또한, 네트워킹이라던가 투자자를 만날 수 있는 모임도꾸준히 올라오지요.그리고 다들 잘 아시겠지만,K 스타트업(구. 창업넷)에도 쏠쏠하게 교육이 올라옵니다.http://www.k-startup.go.kr/main.do특히, 창업넷에는 대학교/기관에서 하는 교육이 많이 올라옵니다.그 외에...분야별/업종별로 다르겠지만"스타트업 얼라이언스", "팁스타운", "디캠프", "마루180"도 좋은 교육과 모임이 자주 공지됩니다.2. 창업 공간에 대한 고민참고로 전 창업 전인 2014년 4월부터 2017년 7월까지 무상으로 공간을 활용하고 있습니다.물론 그냥 거저 공간을 제공해 준다기보다는경쟁을 통해 선발된 인원에게 혜택이 있습니다.우선은 각 지역의 창조경제혁신센터를 활용하세요.https://ccei.creativekorea.or.kr/그리고 "K 스타트업" 홈페이지에서 1인 창조기업을 대상으로센터를 무상으로 활용할 수 있답니다.여기는 미리 예약해 놓고, 사용하기 때문에 부지런하게들락날락거리며 공간과 시간을 잡으세요.또 하나는,각 지방자치단체에서 제공하고 있는 창업 보육공간입니다.저렴한 공간도 있지만, 간혹 무상으로 사용하는 공간도 있어요.(특히 경기도는 G 창업 프로젝트에서 공간도 무상 제공하죠)그 외에 구글 캠퍼스라던가 스타트업 얼라이언스, 디캠프 등에서 제공하는 공간 지원도 있답니다.개인적으로 KDB 산업은행과 한국청년기업가정신에서 운영하는스타트업 카페도 있습니다.여기는 비정기 활용도 되지만 이왕이면 정기 활용을 하면,차 한 잔이 공짜! 따로 조용한 공간에서 일할 수 있습니다.위치가 강남의 신논현역 근처라는 것도 장점!http://www.kdbstartup.or.kr/무상 공간 지원의 단점은아무래도 코워킹 스페이스다 보니 작은 소리나 움직임에 민감한 분들은 개별적인 공간을 원하실 텐데요.그러면 사실 유료 공간을 얻으시는 편이 낫지요.근데 요즘 늘어나는 코워킹 스페이스나 개별 사무실이아무리 할인이다, 합리적인 가격이다 하더라도창업자에겐 꽤 부담되는 고정비가 아닐 수 없죠.그래서 주변 시세보단 싸고,개별적인 독립공간이 있는 BI센터를 추천합니다.http://www.bi.go.kr/main/main.do여기는 대학교 또는 지자체가 운영하는 창업보육센터들에 대한 정보가 올라오는데요.일반 사무실보다 저렴한 편입니다.(그래도 역시 서울에 위치한 곳은 비싸게 느껴지는 것은 우리가 돈이 늘 부족함 때문이죠)그 외에도 각 지자체의 "테크노파크" 홈페이지에 들어가시면,공간을 국가시설을 이용하는 정해진 단가로 공간을 얻을 수 있는 정보들이 있습니다.http://www.technopark.kr/index.php/main 잘 활용하시면 고정비 중 공간에 대한 걱정은 좀 덜어낼 수 있을 겁니다.3. 인력채용에 대한 고민스타트업에서 팀빌딩이 늘 고민이지요.초기 멤버(co-founder)까지는 어떻게 인맥을 동원해 구성되었지만이제 신규직원을 뽑아야 하는데 어떤 루트가 좋을까요?가장 좋은 것은 지인소개나 추천이겠지요.그러나 확장성의 한계가 있기 때문에 온라인으로 찾을 수 있는 방법을 남깁니다.1) 로켓펀치(https://www.rocketpunch.com/)스타트업 채용에서 로켓펀치를 빼놓을 순 없겠죠?블로그처럼 만들어 놓은 채용공고를 보고 스타트업에 관심 있거나 꿈을 가진 분들이 만나는 곳이죠.인지도도 높은 편이고, 인재 Pool이 많다는 장점이 있습니다.다른 회사의 채용공고를 보고 배울 점이 많아요.우리 식대로 재편성할 콘텐츠가 많습니다. 단점이라면, 많은 스타트업들이 수시로 채용공고를 업데이트하다 보니웬만큼 신경 안 쓰면.... 채용공고가 뒤로 밀릴 수도....;;;2) 더팀스(https://www.theteams.kr/)대표자의 개인 블로그라던가,회사소식 등을 지원자에게 보여주어 회사를 잘 알릴 수 있도록 해 주는 스타트업 채용 사이트입니다.참고로, 더팀스도 채용에 있어서는 꽤 인재 Pool이 좋습니다.다만, 유료 서비스가 생각보다 비싼 듯 하지만...전 무료 서비스만으로도 충분히 효과를 누릴 수 있더군요.(물론 그만큼 동료들이 채용공고에 신경 많이 썼습니다.)단점이라면,무료 서비스는 기간이 넘어가면 지원자의 정보를 볼 수 없어지기 때문에따로 저장하든, 기록하든 해 놓는 것을 추천합니다(특히! 연락처)3) 오피스엔(http://officen.kr/index.do)다소 생소하신 분도 있으시겠지만, 전 개인적으로 여기 채용사이트 만족합니다.실제로 SNS를 통해 홍보도 많이 하고 있고,구직자에게 회사를 잘 노출시켜줍니다.더불어, 저는 오피스엔에서 인터뷰도 해 주고, 회사 홍보 사진도 찍어주고, 블로그에 회사 홍보도 올려주어서애착이 더 많이 가네요.위의 세 곳!그러니까 로켓펀치와 더팀스, 오피스엔을 저는 주로 활용합니다.이것은 지극히 개취(개인적 취향)니까 존중해 주시죠~4) 위시켓(https://www.wishket.com/)이 곳은 프리랜서를 매칭 시켜주는데요.사실 디자인이라던가 개발자의 역량을 파악하기 힘든 스타트업에서먼저 외주/협력 형태로 위시캣을 활용해 업무를 맡겨보세요.그러고 나서,정말 맘에 든다 싶으면,유비가 삼고초려했듯이 매달리고, 꼬시고, 유혹하셔서팀원으로 합류시키는 방법이 있습니다.5) 원티드(https://www.wanted.co.kr/)지인 추천과 채용 보상금이라는 독특한 인재 연결 사이트입니다.사실 전 여길 사용해 보지는 않았기에 뭐라 특정할 수는 없지만,스타트업에 맞는 인재를 지인이나 함께 일 해 본 분들이추천하는 형태로 진행됩니다.다음에 한 번 여기도 도전해 보겠습니다.4. 지원사업에 대한 고민자력으로 생존할 수 있는 상황이라면,굳이 정부지원사업을 할 필요는 없습니다.하지만 대다수의 스타트업들은 초기 비용과 시제품/베타 서비스의 관문까지 힘겨운 나날을 보내며,그 외 잡다한 부대비용들이 여간 부담스러운 게 아니죠.전략적으로비용을 최소화하고, 더 다양한 시도가 가능하도록적극적으로 각종 지원제도를 활용하면서자금 소진 속도를 조절하기 위해지원사업을 꾸준히 관심 갖는 것을 추천합니다.그렇다고 지원사업에만 매몰되어버리면,회사가 산으로 올라가고,제품/서비스는 손에서 멀어지니까이 점은 항상 유의하시고요.여러분이 잘 알고 계신 K 스타트업(창업넷) 홈페이지는기본적으로 알아두시고요.중소기업청 기술개발사업 종합관리시스템은 주로 기술개발 쪽 사업을 공고하는데R&D 쪽으로 지원이 필요하신 분들은 여기는 필수!특히 창업기업에게는첫걸음 R&D라던가, 창업성장과제가 좋고요.여성창업기업이나 기업부설연구소 설립 등에 특화된 과제도 있습니다.http://www.smtech.go.kr/front/main/main.do또 자주 봐야 하는 사이트는 "기업마당"이라는 곳입니다.여기는 전국/지역/분야별로다양한 중소기업 지원사업을 올려주고 있습니다.http://www.bizinfo.go.kr그 외에는 각 지역의 창업 관련된 지원사업들이 공고되는데...경기도/강원도/충청도/전라도 등 각 도청/시청에 링크 타고 들어가서 직접 찾아보고 즐겨찾기 해두세요.예를 들어,우리 회사의 경우는 강원도에 본사를 두고 있어서,기본적으로강원 테크노파크, 춘천바이오산업진흥원, 춘천시청, 강원지식재산지원센터, 강원창조경제혁신센터 등을 자주 서치 합니다.5. 그 외 고민지식재산권 출원에 대한 고민이 있는 분들은각 지역마다 존재하고 있는 RIPC를 활용하세요."지역지식재산센터"라고 있는데특허출원부터 분쟁해결 지원까지 지식재산권에 관련된 다양한 프로그램이 있습니다.참고로 우리 회사는 지난 3년간 매우 많은 지원을 받았습니다.http://www.ripc.org/2016_main.do수출은 당연히 코트라겠죠?코트라에서는 해외전시회뿐만 아니라 사절단,해외지사 설립 등에 관한 지원이 주로 있습니다.수출을 타진하기 위한 연계 사이트도 있으니까,공부도 많이 되고, 해외진출에 활용하면 좋습니다.http://www.kotra.or.kr/kh/main/KHMIUI010M.html더불어서 우리 회사 제품의 HS코드가 뭐지? 하고 궁금하다면...사이트 주소 하나 더 붙여드릴게요. 관세법령정보포탈이라고 있는데...여기서 검색해서 찾으시면 수월하십니다.https://unipass.customs.go.kr/중소기업 진흥공단에서도 수출 관련하여 도움을 줍니다.특히 언어별 웹페이지 제작지원과 인콰이어리 대응 지원 등관련된 온라인 지원이 세세하게 존재하는데요."고비즈코리아"라고 부릅니다.여기서 계정 만들어서 이런저런 지원을 받으세요.http://kr.gobizkorea.com/support/index.jsp더 많은 사이트와 정보가 많지만,아무래도 일일이 제가 올리기보다는자신의 회사에 맞추어 직접 찾는 것이 가장 현명합니다.일단 공통적으로 필요할 정보들이 있는사이트를 올렸습니다.스타트업이라는 이름으로 길을 떠난 순간부터많은 고뇌와 막막함이 다가올 것입니다.저 역시 처음엔 무식하게 시작해서남몰래 눈물 흘리기도 했고,지금도 사업과 공부를 병행하고 있습니다.다들 쉽게, 쉽게 조언할 수는 있지만,사실 우리에게 가장 절실한 것은 문제 해결을 위한답이 아닐까요?제가 드릴 수 있는 것은답은 아니지만, 실마리라도 찾기 위해정보를 얻을 수 있는 장소만 소개입니다.어떻게 활용하고,무엇을 얻어낼지는 다 다르니까요.응원한다고 말을 꺼냈지만,제가 드릴 수 있는 것은 딱 이 정도 수준이네요.우리나라가 기업 하기 좋은 나라라고 하는 말에어느 정도 반대할 이야기도 있습니다.하지만 정부가 손 놓고 있는 게 아니랍니다.나름 창업을 통해 고용과 수출을 늘리기 위해많은 프로그램과 제도를 꾸준히 업데이트하고수정/보완하고 있습니다.저는 우리나라를 찾고, 두드리고, 행동하면,기업 하는데 도움이 되는 나라라고 생각합니다.그리고 세계 유명한 어느 기업이든,자국의 버프(도움)를 안 받는 곳은 없습니다.다만, 눈에 뻔히 보이는 지원이냐(예를 들어 중국처럼)눈에 안 보이지만 절대적으로 유리한 지원이냐(예를 들어 미국처럼)그 차이가 있을 뿐입니다.가만히 있는 것은 죽은 시체도 할 수 있는 일입니다.움직이고, 살아날 길을 찾아야 생명체입니다.우리 스타트업 동지들 모두가활발한 생명력으로성공하시길 기원합니다.그래서,세금도 많이 내고,사회환원과 업무환경도 신경 쓰고직원들과 그 가족들이 행복하도록 분배하며,우리 후대들이 우러러볼 수 있는 존경받는 기업이 되길 소원합니다.응원합니다.스타트업!#클린그린 #스타트업 #스타트업창업 #스타트업창업자 #창업자 #꿀팁 #응원 #조언
조회수 956

창업, IPO 그리고 새로운 출발

작년 그러니까 2018년 11월 28일, 내가 창업을 했고 지금 CEO를 맡아서 일하고 있는 네오펙트가 코스닥 상장기업이 되었다. 2010년 6월 창업을 시작했을 때 솔직히 IPO를 생각하고 사업을 시작했던 것은 아니었는데, 좋은 기회를 얻어서 운 좋게 IPO에 성공하게 되었다. IPO를 한 이후에 많은 사람들이 나에게 "꿈을 이루셨네요"라고 이야기를 한다. 그때마다 난 "IPO가 제 꿈은 아니었습니다"라고 대답을 하곤 한다. 실제 창업을 할 때 IPO가 나의 목표는 아니었다. 솔직히 창업을 할 때 한 번도 IPO를 생각해본 적이 없었다. 단지 그때는 내가 만들고 싶은 제품과 서비스, 그리고 내가 꿈꾸는 회사를 만들어 가는 것이 나의 가장 큰 목표였고, IPO는 나의 염두에 있지 않았다. 그런 내가 IPO를 하게 된 이유는 IPO를 통해서 내가 원하는 목표를 만들어 가는데 도움이 될 것이라는 판단을 했기 때문이다. 더 좋은 제품과 서비스를 만들기 위한 자원을 확보하고, 그걸 통해서 내가 창업을 했을 때 꿈꾸었던 비전을 만들어갈 수 있는 충분한 연료를 만들 수 있는 기회를 가질 수 있다는 생각을 했다. 실제 상장기업이 되고 나니 불과 4개월이 되었지만, 많은 변화를 느낄 수가 있다. 상장기업으로서의 책임과 새로운 어려움도 분명히 있지만, 그럼에도 불구하고 우리가 앞으로 나아가는데 큰 도움이 될 것이라는 생각을 가지게 된다. 첫 번째로 상장기업이 되어서 체감할 수 있는 장점은 인재 확보의 장점이다. 상장 이전에는 불리한 회사의 위치, 약한 인지도로 인해서 좋은 인재를 확보하는 많은 어려움을 겪어왔다. 결국 회사는 사람이고, 좋은 인재들이 있어야지 좋은 제품과 서비스를 만들 수 있고, 또 그걸 통해서 회사의 경쟁력을 만들 수 있는 것인데, 그러한 부분에 있어서 어려움이 바뀌고 있다는 체감을 할 수 있었다. 우리 회사의 채용공고에 많은 좋은 지원자들이 반응을 하고 지원을 하고 있고, 또 실제 면접을 보면 상장회사이기 때문에 안정성이 있을 것이라는 생각에 지원을 했다는 지원자를 많이 보게 된다. 난 이것이 우리 회사가 장기적인 성장동력을 만들어나가늗데 큰 도움이 될 것이라고 확신을 한다. 두 번째로 많은 협력의 기회가 생길 것이라는 기대가 든다. 상장이 되고 나서 우리 회사가 4개월 만에 뭔가 급격히 달라지지는 않았다. 하지만 상장이라는 이벤트는 우리 회사를 바라보는 외부의 시선들이 분명히 달라졌다는 것을 느낄 수가 있었다. 그리고 그러한 인지도의 상승과 신뢰의 상승은 우리가 국내외 협력 관계를 만들어 나가는데 분명히 도움이 될 것이라는 생각이 든다. 국제적인 파트너십을 만들어갈 때 우리 회사를 소개할 때 너무나 쉽게 설명할 수 있게 되었다. 한국 주식시장에 상장된 회사라는 말 한마디는 우리가 만들 협력 관계의 형성을 쉽게 이어 나갈 수 있는 지렛대가 될 수 있을 것이라고 생각한다. 세 번째로 유입된 상장자금과 자본시장에 대한 접근 기회는 장기적 성장의 발판이 될 것이라고 확신한다. 회사라는 로켓은 인재와 돈이라는 연료를 태워서 날아간다. 우리는 미국 B2C 재활 시장의 새로운 패러다임을 만들고 있다. 인공지능과 원격 재활 서비스가 결합된 새로운 형식의 재활 서비스를 만들어 나가고 있다. 폭발적인 성장이 기대되는 이 시장에서 우리는 다른 업체들이 가지지 못하는 무기를 가지게 된 것이다. 성장하는 시장을 선점하고 시장의 지배력을 만들어가기 위해서 상장자금은 유효하게 쓰일 것이라는 기대를 가지게 된다. 내부의 직원들에게도, 외부의 친구들에게도, 그리고 나 자신에게도 IPO는 나의 꿈도 아니었고, 우리가 가는 길의 종착역이 아니라는 사실을 지속적으로 이야기해왔다. 그것은 우리가 가야 할 길이 아직도 많이 남아있음을 의미한다. 그리고 그것은 상장이라는 날개를 달고서 새로운 출발을 할 수 있다는 의미이다. 우리가 가는 길은 분명히 쉽지 않은 길이다. 남들이 가보지 못한 길이고, 우리가 스스로 개척해야 하는 길이다. 그러기에 더 가치가 있고, 재밌는 여행이 될 것이라고 확신한다. 
조회수 1060

신입들을 위한 직장생활의 디테일 70가지

패기에 불타오르는 시닙회사에 들어가면 기쁩니다. 이제 월급도 나오고 사원증같은 것을 목에 걸고 출입문에 찍는 신세계를 경험하게 되죠. 처음에 사무실에 들어가면 경쾌한 키보드소리와 마우스의 딸깍이가 절묘한 조화를 이루며 내는 자진모리 업무사운드와 의자엔 목배게, 뭔가 담요, 텀블러, 다육이, 루피 피규어, A4용지산맥 등을 바라보며 아 드디어 나도 진정한 로동의 력꾼이 될 수 있겠구나 싶습니다. 물론 냉장고에 붙어있는, 또는 탕비실 어딘가에 수북히 쌓인 야식전단지는 별개의 문제입니다. 이것은 신입사원들을 위한 글입니다. 그 중에서도 브랜딩, 마케팅, 디자인 직무에 해당하는 분들을 기준으로 썼습니다. 왜냐면 그걸 쓰고싶었기 때문입니다. 경력자 분들은 알아서 자기 일을 찾아서 하실 테니, 그냥 키득키득용으로 읽어주셔도 무관합니다.일전에 잠깐 얘기했지만, 마케팅,브랜딩,기획자,디자이너는 각자 업무가 매우 유사하면서도 다른 것들이 많습니다.  이론상으로야 브랜딩과 마케팅, 기획은 거의 하나의 명제를 기준으로 움직이며(매출극대화), 긴밀히 협업이 이루어지는 것이 많습니다만 어디 현실이 그러합니까. 대부분 현실은 그냥 회사가 임의대로 나눈 직무에 따라 채용이 되고, 필요한 업무를 하게 되는데 소위 필요한 업무라는 것은 이것저것 쏟아져 들어오는 다양한 것들일 가능성이 높습니다. 마케터로 뽑혔지만 거의 올라운더가 될 수도 있단 얘기입니다. 작은 회사일수록 업무분할의 모호함은 더욱 커져갑니다. 화분에 물도 줘야하고, 쓰레기도 비워야하는데, 견적도 알아보고, 때때로 제안서도 만들고, 디자인도 하고, 미팅도 가며, 영업도 합니다.그러니 실상 오늘의 글은 어찌보면 '대부분'의 신입사원이 겪게될 상황들에 대한 이야기일 수도 있겠습니다.그럼 시작합니다~1. 처음 들어갔는데 사수가 있다면 : 사수의 말을 잘 듣습니다. 인수인계하는 건 목이 아픈 일입니다, 광동비타500 제공 내지는 함께 담배타임을 가지도록 합시다. 담배타임엔 색다른 진실들을 마주할 수 있습니다. 비흡연자라면 커피타임을 추천합니다.2. 처음 들어갔는데 사수가 없다면 : 지난 프로젝트 기획서와 결과보고서를 달라고 해서 뒤적거리도록 합니다. 뭔 말인지 모르겠어도 뒤적거려봅니다.3. 책상을 정리해보자 : 1일차엔 문구류셋팅, 2일차엔 가습기, 다육이 셋팅, 3일차엔 애인사진, 담요, 미니선풍기 셋팅, 4일차엔 간식셋팅, 5일차엔 비싼 기기들 셋팅(아이패드, 노트북냉각기..) 6일차엔 목장갑, 줄자, 공구류 셋팅(필요할 때가 많습니다.) 7일차엔 모든 걸 창조하고 휴식을 취합니다.4. 프린터를 셋팅해보자 : 시작메뉴에서 장치및프린터를 누른다음, 장치추가를 누르고, 프린터이름(후지, 캐논, 뭐시기)과 제품명을 (C2263같은거)를 찾아서 선택합니다. 구글에다가 "후지 제록스 C2263 드라이버" 를 치면 고객센터/다운로드/지원 탭이 나오는데 거기서 최신버전 드라이버 다운받아서 설치한 후 프린터추가를 실행합니다. 테스트페이지 인쇄를 해보고 잘 나오면 끼야호를 외치며 테스트페이지를 집에 가져가 액자에 끼워 걸어놓습니다.5. 회의를 해보자 :회의할 땐 있어보이는 다이어리나 노트북따위를 들고갑니다. 다이어리는 몰스킨등이 좋지만 비싸므로 테이블톡 정도가 적당한 것 같습니다. 뭔갈 죄다 기록합니다. 죄다 기록하는 것이 좋습니다.6. 회의분위기가 싸하다 : 다이어리를 쳐다봅니다.7. 회의분위기가 좋다 : 집에 돌아가 조상님의 공덕에 감사드립니다.8. 회의록을 써보자 : 회의록은 워드로 작성합니다. 발제자, 참석자, 회의시간, 장소, 회의주제, 회의내용, 결정사항, 업무분장, 기타사항등을 표로 만들어서 작성합니다. 대부분은 이미 회의록이 양식으로 있을 것입니다. 회의들어가기 전에 항상 먼저 양식이 있는 지 물어보고 득하도록 합시다. 물론 득하는 순간 본인이 써야하는 것은 어쩔 수 없습니다.9. 회의를 하는데 하품이 나온다 : 볼펜을 떨어뜨리고 밑에서 하품을 해봅니다.10. 회의를 하는데 기침이 나온다 : 기침을 하면 됩니다.11. PPT를 할 수 있냐고 물어본다 : 저녁약속을 취소하도록 합니다12. 엑셀을 할 수 있냐고 물어본다 :시력보호를 위해 안토시아닌이 풍부한 블루베리쥬스를 마십시다.(눈이 벌개질 수 있음)13. 포토샵 할 수 있냐고 물어본다 : 이번주말 약속을 취소합니다.14. 버스측면 광고비용 좀 알아봐달라고 한다 : 네이버지도를 켭니다 - 원하는 구간을 선택한 후 대중교통으로 검색합니다. - 한번에 가는 버스번호를 모두 긁은 후 노선을 확인합니다. - 사람들이 많이 모이는 구간이 있는 버스를 따로 구분합니다. - 버스광고회사에 문의해서 해당 번호,노선의 견적을 알아봅니다 - 두 군데 전화합니다. - 비교견적을 냅니다 - 금액과 옵션을 구분해서 보고합니다.(금액은 반드시 기간과 함께 파악합시다)15. 굿즈제작을 하자고 한다 : 구글로 제작업체를 알아봅니다 - 레퍼런스를 확인합니다 - 견적문의메일을 보냅니다(몇 시까지 달라고 반드시 얘기하긔.) - 제작기한과 예상수령일자를 확인합니다 - 견적을 받습니다 - 마찬가지로 두세군데 알아봅니다 - 비교견적을 냅니다 - 레퍼런스+비교견적표를 함께 보고합니다.16. 견적왔냐고 물어보시는데 아직 안왔다 : 몇 시까지 달라고 요청해놨다고 보고하면서 다시 전화해 보겠다고 합니다.17. 견적왔냐고 물어보시는데 왔다 : 5분뒤에 정리해서 드리겠다고 합니다.(5분동안 잘 정리해서 보고한다.)18. 대표님 어디가셨냐고 묻는다 : "전화해볼까요?" (O) "몰라요"(X)19. 군것질이 하고싶다 : 일단 나눠주고 남은 것을 먹습니다.20. 치킨이 먹고싶다 : 집에가서 먹습니다.21. 주말에 등산을 가자고 한다(설마? 아직도?...)집에 돌아가 동생에게 내 십자인대를 끊어달라고 합니다.22. 퇴근 후 카카오톡이 왔다 : 카카오톡을 삭제합니다.23. 그 카카오톡이 내 실수때문에 사고가 터진 이슈였다 : 출근 전 청심환을 먹도록 합시다.24. 큰 사고를 쳤다.보고하기전 일단 옥상으로 올라가 담배를 한 대 핍니다- 엄마에게 사랑한다고 전화를 합니다- 내려가서 사고경위와 내용을 정리합니다.- 나름의 해결책을 구상해봅니다 - 1,2안정도를 짜봅니다(제가 책임지겠습니다..이런 얘긴 하지말자. 너가 책임질 수 없다. 책임은 늘 대표님의 몫이다.) - 빨리 잘, 현명하게, 얼른, 최소한의 피해로 처리하는 게 우선입니다.- 팀장님께 드릴 말씀이 있다고 합니다. - 자리로 가서 소근히 말하도록 합시다 - 팀장님의 낯빛이 어두워지는 것을 슬로우모션으로 관찰합니다. - 팀장님이 대표님께 보고하겠다고 할 겁니다.. - 살아생전 경험하기 힘든 억겁의 시간을 경험해봅니다 - 잘 처리됩니다.덧 : 사고는 어떤식으로든 해결은 됩니다. 도덕적인 문제만 아니라면25. 물을 흘렸다 : 얼른 닦아.  어떡하지!어떡하지! 하지말고26. 동기가 자꾸 나에게 일을 시킨다 : 나도 시키도록 합시다. 응 알았어 해줄께, 참! 그럼 이것 좀 도와줄 수 있어?라고. 동기는 점점 일이 이상하게 돌아가는 것을 느낄 것입니다.27. 점심시간이 어색하다.혀에 느껴지는 미세한 5가지 맛을 구별하며 맛을 음미하도록 합시다.28. 국밥을 잘 못먹는 타입이라면 : 비빔밥을 시킵시다.29. 페이스북 좋아요를 늘리자고 한다 :이제부터 판타지가 펼쳐질 수 있습니다..30. 카드뉴스를 만들으라고 하신다 : 표지와 엔딩카드가 있는 것을 좋아들 하십니다. 망고보드나 타일을 잘 이용해봅시다.31. 뭔가 딱 정리된 보고서를 원하신다 : 표를 넣습니다.32. 격식을 갖춘 보고서를 원하신다 : 표지를 만들고 결재판에 꽂아서 가져다드립니다.33. 블로그 개편을 하자고 한다.투명위젯만들고 링크위젯 넣으란 얘기입니다.(http://blog.naver.com/jdklovekms/220079690297) 참고34. 시안을 몇 개 가져와보라고 한다.시안은 2개를 가져가고, 나머지 3개는 핀터레스트에서 찾아서 레퍼런스로 가져갑니다. 시안5개 다 만들필요없습니다35. 시안을 보는데 표정이 별 변화가 없다 : 큰일났습니다.36. 퇴근시간이 다 되어가는데 아무도 가지 않는다.저녁약속을 취소합니다.37. 괜찮으니 먼저 가도 된다고 한다.마찬가지로 저녁약속을 취소합니다.38. 사수가 자리에서 일어났다.그로부터 +10분 후 짐을 싸도록 합시다.39. 딱히 할일이 없거나 일찍 끝나버렸다 : 창고나 비품실의 물건위치를 몽땅 외웁니다.40. 현장나갈 일이 생겼다.끝나고 맥주를 마시게 됩니다.41. 박람회 부스를 간다.한손엔 판촉물과 한 손엔 방명록, 가입서류같은 걸 들고 일단 뭐라도 긁어모읍니다. 뭔가 박람회에서 서서 돌아다니는 건 개인정보 줍줍을 하기 위함이 큽니다. 현장가입, 앱다운, 판매처유치, 상품판매가 주목적이죠. 설문조사를 미끼로 꼬드겨서 인상이 참 선해보이신다고 극찬하며 오른손으로 녀석의 손을 꽉 쥐고 놓아주지 않도록 합시다.42. 제안서를 쓰자고 한다.일단 각 페이지네이션을 먼저 합니다. 워드로 30줄짜리 행을 만든다음 페이지넘버를 적고 뭐뭐 들어갈 지 간략한 페이지 테마를 씁니다. 일단 그것부터 컨펌을 받습니다.. 그리고 필요한 자료들을 여기저기 구걸하며 달라고 합니다. 자료들이 모두 모이고 나면 주말약속을 취소합니다. 그리고 나의 주말에 안녕을 고하고 명복을 빌어줍니다.43. 영어이름을 짓자고 한다.간지나게 리암니슨 같은걸로 합니다.44. 협력업체에게 독촉전화를 해야한다.잘 좀 부탁드린다고 12번쯤 말합니다.45. 업무메일을 써야한다.안녕하세요, 어디에 누구누구입니다. 일전에 말씀드린(꼭 들어가야함) 어쩌고의 건으로 연락드립니다. 해당 건의 진행상황이 어디까지 되었고, 이제 다음단계인 "뭐시기"를 진행해야 하는데 필요한 몇 가지 사항을 아래와 같이 정리하여 드리오니 확인 후 회신부탁드립니다.감사합니다.1. 어쩌고저쩌고2. 어쩌고저쩌고3. 어쩌고저쩌고하기첨부한 파일은 각각 1. 뭐시기, 2. 뭐시기, 3.뭐시기 입니다.수고하세요!(느낌표정돈 붙여줘야 합니다)46. 업무전화를 받아보자(외부전화) : 벨렐렐레~ 여보세요(X)벨렐렐레~ 네, 무슨 회사 마케팅팀 박창선입니다(O)47. 업무전화를 받아보자(내선) : 벨렐렐레~ 네(X)벨렐렐레~ 네 과장님~(O)48. 지각을 했다굽신굽신 들어가서..아 죄송합니다...49. 심하게 지각을 했다응급실로 갑시다.50. 되도않는 소리를 한다에베베베베베하며, 하는 시늉을 냅니다.51. 나 사원땐 말이야~라며 왕년드립을 친다.저 수정란땐 말이예요..하면서 태초의 기억을 꺼내봅시다.52. 누군가 날 이유없이 미워한다 : 그럼 미워할 이유를 만들어즙시다.53. 누군가 날 미워하는데 내 잘못이다 : 술 한잔하자고 직접 얘기합니다. 일단 죄송하다고 합니다. 자초지종과 등등을 설명해봅시다. 그래도 말이 안통하면 떡이 될 정도로 먹여서 나한테 미안할 짓을 하게 만들도록 합시다.54. 제아씨는 참 특이해..? 라는 얘기를 한다 : 많이 참고있는건데요? 라며 서랍속에 권총을 보여줍니다.55. 홈페이지 개편을 해보자고 한다. 그런데 내부적으로 알아서 하자고 한다.그간 알고있던 코딩지식을 모두 망각해보도록 합니다.56. 영업미팅에 동행했다.집에 있는 가장 멋진 기기들을 모두 꺼냅니다. 아이패드에어, 벨킨키보드, 컨설팅모드 노트북, 몰스킨에서 산 클립파일, 가죽커버의 링바인더 총출동, 아이워치를 끼고 킹스맨의 기분을 느껴봅니다.57. 인쇄를 할 땐흑백/이면지/모아찍기/품질(저)58. 다들 흡연자다그렇다고 당신이 담배를 배울 필욘 없습니다.59. 다들 비흡연자인데 나만 흡연자다 : 이 참에 아이코스를 준비합시다.60. 퇴근시간이 다되었는데, 야식을 시키자고 한다.껐던 카카오톡을 다시 켜고, 친구에게 미안하다고 합시다.61. 대표님 기분이 안좋다.오늘따라 열심히 일을 할 수 있을 것 같습니다.62. 팀장님이 깨지고 왔다.황급히 오늘 팀장님이 시킨 일들이 무엇이었는지 다시 정리해봅시다. 황급함은 들키지 않는 것이 좋습니다.63. 업무일지를 써보자.업무일지는 상세하게 적는 것이 좋습니다. 사실 굉장히 안좋은 문화라고 생각합니다. 하지만 일단 적으라고 하는 데에는 여러가지 이유 중 감시의 목적이 크므로, 내가 지금 얼마나 빡세게 일하고 있는지 상세히 기록하도록 합시다.64. 회식을 가는데 시간이 어떠냐고 묻는다 : 점심회식 아니예요? 라고 반문해봅시다.65. 복사기가 고장났다 : 복사기 옆에 보면 기사님 전화번호가 있다 전화합시다. 혼자멀뚱멀뚱 이것저것 누르지말고..66. 항의전화가 걸려왔다 : 일단 10분정도 계속 들어봅니다. 그 후 전해드리겠다고 하고 메모한 후 넘깁니다. 보통 그런 고객들은 직급이 올라갈 수록 고분고분해지는 경향이 있습니다.67. 지출증빙서류를 써보자.은행과 계좌번호를 제발 잘 확인합시다. 천단위 쉼표 찍는 것도 잊지말고. 그리고 엑셀에 수식좀 깨지마영수증은 네 귀퉁이에 풀칠 다해서 제출하고 날짜순으로 정리해서 부착합니다.68.  주말에 기획안 최종본 좀 다시 달라고 그런다.예전에 줬는데도 또 달라고 하는 경우가 많습니다. 메신저를 뒤져보거나 아니면 앗싸리 구글드라이브나 드롭박스에 가지고 있는 편이 낫습니다.69. 대표님이 뭔가 번뜩이는 아이디어가 떠올랐다고 한다.일단 듣고, 며칠 기다려봅니다. 번뜩이는게 항상 좋은 것은 아니니까요.70. 퇴사를 하고 싶어진다.비싼 걸 하나 지르고 이성적으로 생각해 봅니다.
조회수 1004

flake8-import-order-spoqa

안녕하세요. 스포카 프로그래머 홍민희입니다.스포카 사내에서는 파이썬 코드의 스타일을 맞추기 위해 flake8을 사용해왔습니다. PEP 8 스타일을 준수하게 해주고, 안 쓰는 임포트를 꼭 지우게 하는 등의 좀더 구체적인 규칙도 지키게 해주는 린트 도구입니다. 사실상의 표준이기 때문에 파이썬을 이미 쓰고 있는 분들이라면 많이들 알고 계실 것입니다.그렇지만 import문의 사용에 대해서는 우리가 원하는 것만큼의 규칙을 제공하지 않아서, 예전부터 동료 강효준 님이 import-order를 별도로 만들어서 써왔습니다. 만들었을 당시에는 import문의 쓰임에 대한 린트 도구가 없었기 때문에 유용하게 써왔고, 다른 파이썬 오픈 소스 프로젝트에서도 유용할 것 같다고 생각하여 쓰인지 1년쯤 지난 뒤에 오픈 소스로 공개했습니다.하지만 flake8과는 다르게 외부 커뮤니티에서 널리 쓰이지는 못했고, 사실상의 표준이 되었다면 편집기 연동 등이 이뤄졌겠지만, 그에 미치지는 못했습니다. pre-commit hook이나 CI에서나 검사가 이뤄지기 때문에, 코딩을 마쳤다고 생각한 이후에 뒷북으로 실수를 바로잡는 일이 많아 불편했습니다.그 뒤로 시간이 지나자 커뮤니티에서는 flake8-import-order라는 도구가 나와서 사실상의 표준이 됐습니다. 이미 많은 편집기에서 연동이 되는 flake8의 확장으로 구현됐기 때문에 편집기에서 즉시 확인이 가능했고, 더 많은 옵션도 제공했습니다. 그렇지만 cryptography 프로젝트 사람들이 만든 도구다보니, cryptography 스타일 및 Google 스타일 등 몇 가지만 제공했고, 이 도구를 활용하려면 스포카에서 3년 넘게 쓰이던 import 스타일을 포기하고 사내의 모든 코드를 전부 수정하는 난리를 피우거나, flake8-import-order에 스포카 사내 스타일을 옵션으로 추가하거나, 프로젝트를 포크해서 별도로 유지보수하며 써야 했습니다.사내 모든 코드를 전부 수정하는 것은 쉽지도 않을 뿐더러, 스포카에서 쓰이던 스타일에도 나름의 논거는 있기 때문에 쉽게 포기하기는 힘든 결정이었습니다. 일부 프로젝트부터 옮겨가는 시도도 있었으나, 같은 회사에서 코드마다 스타일의 일관성이 달라지는 혼란이 있었습니다.저는 flake8-import-order에 스타일을 추가하는 것을 주저했습니다. Google 스타일처럼 문서화가 이미 아주 자세히 되어 있지도 않고 유명하지도 않은, 일개 회사의 사내 스타일을 사실상의 표준 린트 도구의 7번째 공식 지원 스타일로 추가하는 것이 이뤄질 개연성이 낮다고 봤습니다.그래서 프로젝트를 포크하기로 마음먹은 것이 보름 전쯤입니다. 그런데 코드를 열어보니 좀더 나은 아이디어가 떠올랐습니다. flake8-import-order의 코드를 고치지 않고 런타임에 스타일을 확장 가능한 플러그인 구조를 추가하면, 스포카에서 쓰는 import 스타일을 별도 패키지로 구현할 수도 있다는 생각이 든 것입니다. 당시 flake8-import-order의 스타일 구현은 Style의 기반 클래스를 상속받는 식으로 이뤄져 있었고, 다만 스타일의 목록이 하드코딩되어 있는 것이 문제였습니다. 막상 코드를 읽어보니 플러그인 구조를 도입하는 것이 어렵지 않을 것이라는 생각이 든 것입니다.파이썬 생태계에서는 서로 다른 패키지 사이에서 런타임에 확장 가능한 의존성 주입을 위해 setuptools 시스템이 엔트리 포인트라는 개념을 제공합니다. 예를 들어 국제화 라이브러리인 Babel은 파이썬 이외의 프로그래밍 언어에서도 gettext 문자열을 extract할 수 있게 하기 위해, 확장 가능한 babel.extractors 엔트리 포인트를 노출합니다. 그리고 별도의 템플릿 언어인 Jinja는 해당 템플릿 엔진을 쓸 때 국제화도 대응할 수 있도록, babel.extractors 엔트리 포인트에 Jinja 언어를 해석하는 jinja2.ext.babel_extract를 주입합니다.저는 같은 개념을 활용하여, flake8-import-order가 flake8_import_order.styles라는 엔트리 포인트를 노출하게 하는 패치를 제출했고, 다행히도 업스트림에 받아들여졌습니다.flake8-import-order를 런타임에 확장할 수 있는 구조가 됐으니, flake8-import-order 위에서 스포카의 import 사용 가이드를 구현하는 것은 어렵지 않은 작업이었습니다. 어차피 스포카의 파이썬 코딩 스타일은 대부분 PEP 8을 그대로 따르고 있었고, 따라서 flake8-import-order에 이미 존재하는 스타일 구현에서 몇 부분만 덮어씌우는 것으로 충분했기 때문입니다.위와 같은 장광설 끝에, 그래서 이번에 소개하려고 한 스포카의 파이썬 import 린트 도구는 flake8-import-order-spoqa입니다. 만든지 보름이 지난 뒤에 소개하는 것은, flake8-import-order에 제출한 패치가 포함된 0.12가 PyPI에 릴리스될 때까지 기다려야 했기 때문입니다.사용법은 어렵지 않습니다. pip로 flake8-import-order-spoqa를 설치한 뒤에, flake8 설정에 다음 옵션을 추가하면 됩니다.[flake8]import-order-style = spoqa#스포카 #개발 #개발자 #개발팀 #개발팁 #꿀팁 #인사이트

기업문화 엿볼 때, 더팀스

로그인

/