스토리 홈

인터뷰

피드

뉴스

조회수 12618

슬랙봇, 어디까지 만들어봤니?

스포카에서 다년간 일하면서 나에게는 몇 가지 별명이 생겼다. 그 중 하나는 봇맘(Bot mom)이다. 다른 스타트업에서처럼 으레 스포카에서도 주어지는 일만 하는게 아니라 작고 큰 문제를 스스로 발견하고 고민할 기회가 왕왕 생긴다. 나 또한 그런 기회가 있었고 그러던 중 (귀차니즘을 극복하기 위해라고 쓰고) 일을 더 효율적으로 하기 위해(라고 읽는다) 봇(Bot)에 재미를 느끼게 되었다. 그리고 하나 둘 봇으로 문제를 해결하게 되었고 어느새 사람들이 그 별명을 붙여주었다.봇(Bot)2014년 즈음부터 스포카는 슬랙(Slack)을 사내 메신저로 사용하기 시작했다. 슬랙 도입 초창기에는 기본적인 업무 커뮤니케이션과 아틀라시안 제품군(JIRA, Confluence 등), Github 등 사내 업무 툴의 슬랙 라우팅 기능으로만 슬랙을 사용하였다. 하지만 기본 기능 만으로는 실제 업무 환경에서 불편한 부분들이 더러 있어 슬랙봇 기능을 점차 활발히 사용하게 되었다. 팀마다 사용빈도는 다르지만 현재 많은 직원이 슬랙봇을 활용하고 있는데 지속적으로 업무 환경을 개선하는데 봇 기능이 상당한 기여를 하고 있다.인터넷 상에서 자동화된 작업(스크립트)를 실행하는 응용 소프트웨어봇(Bot)은 위와 같이 설명되고 있다. 예를 들어, 슬랙에서 사용자가 설정한 단어가 입력되거나 시간대가 되었을 때, 설정했던 이미지나 텍스트가 자동으로 나오는 기능이라고 생각하면 된다.슬랙에서 기본적으로 제공하는 슬랙 봇과 Reminder 기능만 잘 활용해도 누구나 업무환경 개선을 시도해볼 수 있다. 개인적으로 스포카의 봇 활용(hacking)1은 어떠한 다른 팀과 비교해도 뒤지지 않는다 생각한다. 실제 업무에 적용한 사례를 보면 봇이 무엇인지, 무엇을 할 수 있는지 아는데 도움이 될 것이다. 큰 도움이 되고 있었던 사례를 모아 소개하겠다.2Case1. 자연스럽게 직원들에게 세뇌시키기상황 및 의도서비스 내 용어가 팀별로 다르게 쓰이거나 여러가지로 불리고 있는 것들이 있었다. 혹은 서비스가 런칭/업데이트되면서 개편된 제품/기능이름들이 있었다. 이는 아는 사람끼리는 문제가 없지만 신규입사자나 아직 전달이 덜된 타팀과 소통할 때에는 오해가 생길 수 있었다. 이런 상황에서 UXD팀에서는 추가적으로 새로운 이름을 알리고 즉각 교정 효과를 볼 수도 있는 효율적인 방법을 고안하고자 했다.1-1. 도도 매틱이 도도 메시지로 서비스명이 변경되었음을 알리는 봇이다1-2. 개편된 제품/기능이름을 알릴 때 쓰였던 슬랙봇들. 시간이 지나면서 제 임무를 다하고 사라졌다.효과잘못된 단어를 사용할 때마다 봇이 알려주니 즉각 교정 효과가 나타났다. 사람마다 교육되는 기간을 달랐지만 점차 잘못된 단어를 사용하는 사람들이 사라졌고, 몇 개월 후에는 옛날의 잘못된 단어가 무엇인지 까먹은 사람도 있었다. 그리고 시간이 지나고 제 목표를 달성한 슬랙봇들을 삭제하기까지 이르렀다.Case2. 개발자님 도와주세요ㅠㅠ상황 및 의도디자이너가 코드를 다루다가 가끔 알 수 없는 함정에 빠질 때가 있다. 서버가 왜인지 켜지지 않는다거나 원인을 명확히 알 수 없는 에러가 뜬다거나 하는 경우다. 그런 때면 개발자에게 도움을 요청하는데, 개발자의 입장에서는 진행하고 있던 업무를 잠시 중단하고 해결할 수 있는 커맨드를 알려주거나 알아보는데 시간이 걸릴 수 있다. 이럴 때 봇이 취해야하는 커맨드를 알려준다.봇으로 개발자가 도와줘야 하는 단계가 하나 줄었다!효과개발자가 도움요청 메시지를 보기 전, 디자이너가 먼저 바로 응급처치를 해볼 수 있어 덜 답답했고 개발자도 하나의 예상원인을 제거할 수 있어 빠르게 상황을 파악할 수 있었다.Case3. 항상 똑같은 질문과 답변은 그만!상황 및 의도기억력의 한계와 투명한 업무 진행상황 공유를 위해 이슈 기록 등 문서 작성에 기를 가하는 문화가 있다보니 사내위키문서가 자연스레 방대해졌다. 찾고자 하는 문서가 어딨는지 못 찾아 메일함과 위키사이트를 헤매고 못 찾으면 항상 팀원들에게 물어보게 되어 괜히 미안한 상황이 있었다. 그냥 누군가 물어볼 때 딱!하고 찾아주었으면 했다.다른 경우로는, 매번 특정 팀에게 물어보는 것이 있다. 사이트 내 친절히 설명을 작성하고 공지해도 정보 접근이 귀찮거나 어려운 곳에 있으면 바로 담당자에게 물어서 바로 올바른 답변을 얻고자 하게 된다. 이런 경우, 같은 질문을 하는 사람은 수십 명인데 답변하는 사람은 한 두명여서 답변하는 담당자는 피로해질 수 있다.3-1. 우리팀 주간미팅 회의록이 어딨더라...?3-2. 디자인팀에게 요청할 때 뭘 알려드려야 하지?3-3. 이 지역 담당자가 누구더라?효과원하는 문서의 바로가기 링크를 바로 얻거나 정보를 얻을 수 있어 위키 메뉴를 헤매지 않고 시간을 절약할 수 있었다. 반복적으로 물어보게 되는 사항을 물어보고 싶을 때 불편한 마음을 전혀 가지지 않아도 되었다.Case4. 이번엔 누구에게 의견을 물어볼까?상황 및 의도현재 스포카 Visual design팀(이하 VD팀)은 5명이며 디자인이라면 모두 관심을 가지고 의견을 주는데 주저함이 없다. 어떤 이슈를 진행할 때 중간 점검의 느낌으로 가볍게 1~2명에게 리뷰를 받고 싶을 때가 있다. 항상 같은 사람에게만 리뷰를 부탁하는건 아닌지, 다양한 의견을 받아보고는 싶은데 누구에게 돌리는게 좋을까, 리뷰어 선정에 고민을 하게 될 때가 있다. 혹은 이슈진행자가 정해지지 않았을 때 마음의 짐을 덜고 책임자를 정하는 잔인한 방법이 되기도 한다.(ㅋㅋ) 5명인데 1명 혹은 2명을 고르고 싶으므로 or/and를 병기하여 모든 경우의 수를 정리하여 봇을 만들었다.VD리뷰랜덤효과누구에게 리뷰를 맡길지 고민하는 시간이 줄었다. 타팀에서도 VD팀 누군가에게 리뷰를 부탁하고 싶을 때 활용되기도 한다. 하지만 휴가 중이라던지 가끔 리뷰를 볼 수 없는 사람이 계속 무작위로 나올 때가 있어 두세번 봇을 불러야 하는 일이 있다.Case5. 다나와 대화형 봇 (심화)앞서 소개한 유형들이 너무 단순하다고 느껴진다면 키워드 봇을 연속적으로 활용해보는 방법도 있다. 채팅형 봇을 만든 듯한 착각을 느끼게 할 수 있다.사이즈 다나와 (혹자는 이 사례를 보고 슬랙해킹의 정점을 달려가는 것 아니냐 감탄하였다.)Case6. 잊는 법이 없는 나만의 비서!봇이 일상화되니 왠만한 정기적인 업무일정은 무조건 봇으로 만드는게 습관이 되었다. 예전에는 다른 봇제작 서비스를 통해 만들던 기능이었는데, 슬랙에 리마인드(Remind) 기능이 업데이트 되면서 더 편해졌다. 리마인드 기능 설명은 이쪽을 참고 바란다.6-1. 스프린트 시작 알림 봇6-2. 데일리미팅 알림 봇6-3. 주말의 시작을 알리는 봇6-4. 파트타이머 급여 처리를 잊지 않도록 도와주는 비서봇Case7. 슬랙 API를 활용한 데이터드리븐 봇 (고급)상황 및 의도지금까지 소개한 것들은 회사 내부에서 업무를 진행할 때 도움을 받거나 내부 커뮤니케이션을 위한 것들이었다. 이번에 소개할 것은 회사 서비스와 관련된 개발자 친화적인 방법이다. 서비스 내 DB와 슬랙에서 제공하는 API를 접목하여 별도의 트래킹(tracking)툴 없이 실제 사용자의 행동 중 주요하게 알아야 하는 것을 슬랙봇으로 만든 것들이다.7-1. 부정적립으로 의심되는 이벤트를 알려주는 봇7-2. 매장 잔여코인 알림과 코인결제완료를 알려주는 봇효과별도의 트래킹툴이나 웹사이트에 접속할 필요 없이 실시간 데이터를 파악할 수 있었다. 또한 서비스에 주요한 영향을 끼치는 사용자의 실제 행동을 팀원들과 함께 빠르게 공유할 수 있었다.봇을 만들 수 있는 다른 방법슬랙의 리마인드 기능을 쓰지 않더라도 봇을 부릴(?) 수 있는 방법이 있다. 슬랙봇은 슬랙을 사용해야하고 관리자 권한이 있어야 설정 가능하다. 그러므로 개인적으로 쓴다면 아래 2가지 서비스들을 추천한다. 조합할 수 있는 서비스가 다양하니 자동화할 수 있는 아이디어가 있다면 시너지가 엄청날 것이다. 업무 뿐만 아니라 일상생활에도 활용할 수 있다.Zapier글쓴이가 슬랙에 리마인드 기능이 없을 때 애용하던 서비스이다. 무료 플랜으로 사용하면 설정할 수 있는 봇 개수와 작동하는 횟수가 제한적이지만 소소하게 가끔 필요한 것을 쓰기에는 괜찮다. 업데이트가 계속 되고 있으니 시도해보시라.IFTTTIf this, then that. 컨셉별 봇 레시피가 잘 정리되어 있어 바로 일상생활에 적용해볼 아이디어를 제공한다. 슬랙 외에도 다양한 앱과 연동하여 사용할 수 있는 장점이 있다.슬랙봇과 스포칸업무에 유용한 봇을 위주로 소개했으나 스포카의 슬랙봇은 업무의 즐거움을 향상시키는 스포칸의 드립 아카이브 역할을 하기도 한다. 업무에 활용하는 것만큼 다양한 방식으로 소구되고 있는데, 드립의 특성상 시간이 지나면 그 재미가 무뎌지는 것들이 있어 굳이 소개하지는 않겠다. 또한, 그외 개발자분께서 직접 창의적인 봇용 앱을 만든 사례도 여러 개 있었는데 나중에 기회가 되어 소개를 해볼 수 있으면 좋겠다.계속 슬랙이 업데이트되면서 나 외에도 비IT직군도 슬랙봇을 잘 활용해나가고 있고, 다른 팀원들도 번뜩이는 위트를 겸하며 슬랙봇을 활용하고 계시다. 여러가지로 활용되고 있는 슬랙봇은 하나의 값진 유산이라고 생각되기까지 한다. 간단한 기능임에도 더 집중해야 할 곳에 집중할 수 있도록 도와주기도 하고, 동료 간의 유대감을 깊게 만들기도 하기 때문이다. 스포카 외에 슬랙을 사용하는 다른 회사/팀들도 각자 사용하고 계시는 툴을 재밌고 유용한 방식으로 활용하며 팀 커뮤니케이션에 보탬이 되었으면 좋겠다.시스템 혹은 프로그램의 문제를 고치기 위한 행위 ↩이 포스팅의 예시 중에는 1~2년 전 스포카의 슬랙에서 활발히 쓰였다가 현재는 잘 사용되지 않는 경우도 있다. ↩#스포카 #개발 #개발자 #사내문화 #조직문화 #인사이트 #꿀팁
조회수 1184

우리는 인연이 아닌가 봐요

콜라보레이션!스타트업들 간의 협업은언뜻 멋져 보인다.취지도, 명분도뭔가 그럴듯해 보인다.우리가 강한 경쟁자를 상대하기에부족한 것들을 같은 처지의 스타트업끼리뭉쳐 이겨낼 수 있을 것 같다.이론상 참 좋은 연합이다.(출처: 만화책 "드래곤볼카이" 중에서 퓨전합체)그런데 실제로는 어떠할까?나도 콜라보레이션의 취지는 좋게 생각한다.분명 장단점이 있고,콜라보를 통해 서로 시너지를 낸 선례들도 있다.근데 그게 그냥 "같이 합시다"라고 뭉친다고잘 되는 게 아니라더 신경 쓰고, 양보하고, 신뢰해야 하며,에너지가 많이 소비되는 형태이다.부족한 것은 상대방이 채워줄 것 같지?아니, 상대방도 너를 의존하고 있고,너에게 기대하는 바가 크기에제대로 뭉치지 않으면오합지졸 당나라 군대가 돼버리기 쉽다.우리 함께 연합해서 Win-win 하자고?괜히 어설프게 연합하다간함께 Lose-lose 할 수도 있다.무작정 뭉친다고 강해지는 게 아니다.오히려 서로에게 악영향이 되고,서로에게 감정만 상할 수도 있다.그럼 콜라보레이션은어떻게 해야 제대로 운영될 수 있을 까?1. 리더가 필요하다.양 무리에도 리더가 있다.둘 이상의 콜라보에서 동등한 의사결정이이상적으로 보일지는 몰라도업무를 수행하는 데 있어서 누군가는 전체 연합을조율하고, 이끌어가야 할 보다 강한 리더십이 있어야 한다.스타트업들 간의 연합의 취약점은바로 체계가 없음이다.동등한 위치에서,평등한 의사결정을 꿈꾼다면평행선을 달릴 일도 많아진다.우리에게 시간이 넉넉하고,자금이 풍족하다며시장이 우리의 제품/서비스를 기다려 준다면그 사이에 우리 모두 웃음꽃 피우며좋은 게 좋다고 끝없는 토론의 장을 가질 수 있겠지.한정된 시간과늘 부족한 자금과눈 깜빡할 새 변하는 변덕스러운 시장을순간순간 체크해야 하는데...누군가는 앞서서 진두지휘를 해야 한다.이게 참 말이나 글로 적긴 쉬운 건데실제로 적용되는 건 어려운 일이다.이리저리 신경 쓰기엔창업자가 할 일이 참 많잖아.2. 목적이 명확해야 한다.콜라보로 우리가 얻을 수 있는 것이 무엇인지에 대한명확한 목표/목적이 있어야 한다.양보할 수 있는 부분은 무엇이고,물러 설 수 없는 부분은 무엇인지를 확실하게 알려야 한다.이게 어정쩡하면,뒤에서 아쉬운 소리가 나올 수밖에 없다.두 가지 문제가 있더라.일단 뭔가를 잘 정의를 못 내리는 문제.우리가 왜 콜라보를 해야 하고,무엇을 위해서 해야 하는지 그다지 선명하지 않았다.두 번 째는상대방의 목적이 무엇인지 모르겠더라.뭐 상생이라던가,파트너십이라던가 참 듣기는 좋은 말인데...그래서 어쩌라는 건지,뭘 어떻게 하자는 건지너무 두리뭉실하다 보니...결국 거절을 하였다.서로의 목적이 다르면,서로 딴 주판을 튕기게 되고,그 끝은 서로에 대한 원망과 후회가 남는다.그나마 서로의 목적이 다르다는 것을 알기라도 한다면의견을 조율하고, 협의를 할 수 있겠지만서로 무슨 목적을 가지고 있는지 관심이 없을 때도 있다.그보다 콜라보를 해야 할 자신들의 근거조차스스로 모를 때가 더 많다고 해야 하나?3. 서로 신뢰할 수 있어야 한다.상대방을 믿을 수 있느냐가 가장 큰 벽이다.스타트업과 스타트업 간의 협력은대표들끼리 쿵짝쿵짝 코드 맞춘다고 돌아가는 게 아니다.구성원들 모두가 공감하고커뮤니케이션이 원활해져야 하는데...더군다나 자주 만나지도 못 하고,어쩌다 이슈가 생길 때만서로 연락 주고받는다면콩가루 스타트업 연합이 되지 않을까?사실 우리에게도 몇 번인가 콜라보 제의가 들어왔었다.그중 두 번 진행을 해봤다.한 번은 Good case, 한 번은 Bad case처음에는 뭣도 모르고  바로 계약서 준비하려 한 때가 있었다.(상대 쪽 대표가 착하고, 좋아서...)분쟁의 소지를 미연에 방지하기 위해서계약서는 큰 도움이 되는 것은 사실이니까.하지만 다시 생각해보니계약서는 굳이 쓸 필요를 못 느끼겠더라.괜히 계약서에 싸인 잘 못 했다가,우리 멤버들이 고생은 고생대로 하고,우리 방향에서 벗어날까 봐하는 노파심이 들었다.그래서 우리는 콜라보 제의에크게 비중을 두지 않은 상태에서확인 작업을 한다.아주 작은 사소한 일을 함께 해 본다.그리고 일이 진행되는 과정을 확인한다.그러다 몇 번의 소소한 미팅이 동반되는작은 일을 같이 해 본다.그리고 결과적으로신뢰할 수 있는 상대라고 판단되면,계약서를 준비한다.최근에 두 곳과 이런저런 일로작은 일을 진행하고 있는데...글쎄...좀 시간과 거리를 두고더 신중하게 접근하고 있다.신뢰라는 것은갑자기 생기는 것이 아니라관찰과 행동에서 나오는 것이다.팀빌딩에 신중했듯이,협업도 신중해야 하고,확인해야 하고, 복기해야 한다.힘들 때,우리는 누군가를 의지하고 싶어 진다.외로울 때,우리는 누군가 공감해 줄 사람이 그리워진다.그러한 감성적인 이유는콜라보레이션의 타당성을 주지 못 한다.논리적이고 합리적인 타당성이 없는콜라보레이션은 서로에게 죄를 짓는 것이다.오랜만에 스타트업 대표들끼리식사를 한 적이 있다.그 자리에서 한 분이연합 이야기를 꺼내셨다.어떤 대표들은 박수를 치며 환호를 하였지만,어떤 대표들은 고개를 절레절레 흔들었다.(출처: 게임 삼국지10, 황건동란, 도원결의)삼국지의 유비, 관우, 장비의 도원결의에 대해지극히 현실적이고 냉철하게 상상해보자.뜬금없이 술 한잔 나누면서 뭉친 모습으로상상하고 있는 건 아니겠지?그들이 서로를 몰랐겠는가.유비가 누구이고, 어떤 상황에 놓여 있는지,관우는 어떤 사람이고, 무엇을 중요시 여기는지,장비는 성격이 어떻고, 무엇이 관심사인지...그리고 그들이 공통적으로 꿈꾸는 목적이무엇인지 제대로 나누지도 않은 채그냥 꽃잎 날리는 복숭아나무 아래에서술 한 잔 주거니 받거니 하며의형제를 맺었겠는가.서로 다른 환경에서다른 삶을 살아왔던셋이 모여 리더(유비)를 정하고,더 필요한 누군가(공명)를 영입하고,후원자와 병사들을 모으고황건적의 난이라는 시기적절한 타이밍에그들이 전면에 등장하지 않았던가.단지,동지애만으로,즉흥적인 분위기에 휩쓸려서,아는 사람들이니까,백지장도 맞들면 낫다니까이런 말도 안 되는 이유로연합하자는 것은다 죽자는 거다.혼자 가는 길보다는 같이 가는 길이더 좋을 거라 착각하지 말자.같이 가는 길이 같은 방향일 때,같이 가는 동료가 서로에게 도움이 될 때,동행이 의미있고, 행복한 길이 되는거지무작정 함께라고 꽃길이 되지 않는다.함께 동행한다고 안심했는데그 길이 낭떠러지로 향하는 길일 수도 있다.이 글을 쓰는 말미에 꼭 남기고 싶은 말이 있다.스타트업 간의 연합 또는 콜라보레이션이나쁘다는 주장으로 오해하지 마시라.어정쩡한 콜라보레이션을 피하자는 것이다.방향이 없는, 목적성이 없는, 신뢰가 없는그런 연합을 만들지 말라는 것이다.실제로콜라보레이션이 성공한 케이스는너무나도 많다.그들이 성공한 이유는서로에게 시너지를 줄 수 있는제대로 된 콜라보레이션이었기 때문이다.한 가지만 더 첨언하자면,우리가 좋은 스타트업과 함께 동행하길 원한다면,우리도 상대에게 좋은 스타트업으로 준비되어 있어야 한다.세상은 Give and Take!줄 것이 있어야 받을 것이 있고,우리에게도 무언가가 있어야상대방의 필요를 채워 줄 수 있다.오늘도스타트업 창업자 동지들을 응원합니다.#클린그린 #스타트업 #스타트업창업 #초기창업 #창업자 #고민 #응원 #인사이트
조회수 2053

Good Developer 3 | 나쁜 개발자의 11가지 습관

세상에 나쁜 개발자는 없다. 나쁜 개발 습관만 있을 뿐나쁜 개발자란 누구를 지칭하는 것일까? 코드가 별로인 개발자? 커뮤니케이션이 안되는 개발자? 나쁜 개발자로 지칭될 수 있는 사람들은 굉장히 많다. 하지만, 세상에는 나쁜 개발자는 없다고 생각한다. 단지, 나쁜 개발 습관만 존재할 뿐. 즉, 누구든지 나쁜 습관을 버리고 좋은 습관을 갖는다면 언제든지 좋은 개발자가 될 수 있다는 것이다. 좋은 개발자, 나쁜 개발자. 이것은 칭호가 아니라 속성일 뿐이다. 언제든지 바뀔 수 있는 속성 말이다.이것이 속성인 이유는 누구든지 좋은 개발자와 나쁜 개발자의 속성들을 가지고 있기 때문이다. 단지 그 속성의 비율의 차이가 그 사람이 어떤 개발자인지 결정할 뿐이다. 흔히, 좋은 개발자라고 불리는 사람도 나쁜 개발 습관이 있을 수 있다. 또, 나쁜 개발자라고 욕을 먹는 사람도 좋은 개발 습관이 있을 수 있다.우리는 이 글에서 나쁜 개발 습관(혹은 속성)들을 알아보고 왜 그것이 나쁜지 그리고 그것을 어떻게 피하는지에 대해 이야기할 것이다. 좋은 습관이 아니라 나쁜 습관들을 이야기하는 이유가 있다. 좋은 습관은 습득하기 어렵다. 하지만, 나쁜 습관을 버리는 것은 더더욱 어렵다. 나쁜 습관을 피하는 것이 때로는 좋은 개발자가 되기 위한 요건일 수도 있다. 아래의 습관들을 보면서 자신을 진단해 보자.(아래의 습관들 중 습관인 것들도 있고 단순히 사고방식이나 경향인 것들이 있다. 여기서 습관은 사고방식이나 행동의 양식 등 총체적인 행동 방식 등을 의미한다.)습관 1: 코드 리뷰가 없다.지난번에 같이 해보니까 험악만 말만 나오고, 분위기만 안 좋아졌다. 후배들에게 코드 지적받는 것도 자존심 상하고... 그리고 대부분 시니어들이 지적하고 주니어들은 고개만 끄덕이는 자리 아닌가? 코드 리뷰 할 시간에 코드 한 줄이라도 더 짜서 프로젝트 마감일이나 지키는 게 낫지. 솔직히, 프로라면 자기 코드는 자기가 책임져야 하는 거 아닌가?습관 2: 문서화를 하지 않는다.아니 개발할 시간도 부족한데 무슨 문서화인가. 개발자가 개발하는 사람이지 문서 만드는 사람인가? 인수인계받을 사람 오면 직접 알려주면서 일주일이면 끝날 텐데 말이다. 그리고 이때까지 만든 문서들 만들고 나서 본적이나 있나? 그냥 보여주기식 파일이지 뭐.습관 3: 커뮤니케이션 향상에 관심이 없다.지금도 말 잘하고 대화 잘 통하는데 더 향상시킬게 있나? 그리고 개발자의 핵심은 커뮤니케이션이 아니라 코딩인데 말이야. 컴퓨터랑만 잘 소통하면 되지. 어차피 다른 부서에 있는 사람들은 개발 기술에 대해서 잘 알지도 못하고... 커뮤니케이션 스킬은 그런 사람들이 향상시켜야 한다고 생각한다.습관 4: 업무 공유가 되지 않는다. 자신의 일에 대해 알고 있는 사람이 없다. 데드라인 잘 지키고, 주어진 일을 잘 해내면 된다고 생각한다. 보고를 하기 전까지 굳이 보고하지 않고, 동료나 후배들과 업무 공유를 잘 하지 않는다. 어차피 내가 하는 일에 별로 관심도 없는데 공유해봤자 무슨 소용인가?습관 5: 코드의 복붙(복사 후 붙여넣기)가 '일상화'되어 있다.직접 만드는 것보다 이미 만들어진 코드들을 찾아서 Ctrl +c,v하는게 더 빠르고 생산성 있다고 생각한다. 동료 개발자랑 공통 모듈을 만들어 사용할 수 있겠지만 그렇게 하기에는 너무 많은 리소스가 낭비된다고 생각한다. 잘 돌아가기만 하면 되지 않나?습관 6: 자신의 부족한 점을 드러내지 않는다.부족한 점에 대해 동료들과 터놓고 얘기하지 않는다. 괜히 부끄럽고 껄끄럽기도 하고 자신의 부족한 점이 드러나는 것이 두렵다. 동료들이 조언을 해주려고 해도 방어적으로 나오거나 피한다. 동료의 진솔한 피드백이 없으니 한 번 단점을 만들면 끝까지 내 것으로 가져간다.습관 7: 새로운 기술을 익히는데 시간을 투자하지 않는다.세상은 정말 빠르게 변하고 있다. 그리고 그 변화의 중심은 기술이고 기술 중에서도 IT 기술이 정점에 있다고 봐도 무방하다. 새로운 기술은 새로운 기술자들이 익히는 것이라 생각한다. 지금 하고 있는 일만으로도 벅차다. 그리고 지금 쓰는 기술이 시대의 주류인데 쉽게 바뀔까?습관 8: 자신의 개발 환경에서 벗어나지 않는다.개발자 모임이나 개발 커뮤니티에 시간을 쓰는 것은 낭비라고 생각한다. 개발에 대해 새로운 시도를 하지 않는다. 새로운 프레임워크나 협업 툴들이 나와도 기존의 환경을 고집한다. 왜냐하면 지금 개발 환경이 너무 편하고 익숙하니까.습관 9: 자신이 맡은 개발과 관련된 비즈니스를 이해하지 않는다.개발자는 개발에만 신경 쓰면 된다고 생각한다. 지금 개발하고 있는 서비스의 비즈니스적 관점은 생각해 본 적 없다. 어차피 기획자나 마케터, 프로덕트 매니저가 신경 써야 할 일이라고 생각한다. 개발만으로도 바쁜데 그것까지 신경 쓰면 정말 골치 아파진다.습관 10: 개발에 대한 지신만의 장기적인 목표가 없다.어떤 개발자가 되어야 하는지에 대한 목표가 없다. 주어진 프로젝트 외에 자신이 하고 싶은 프로젝트를 하면서 개발을 발전시키지 않는다. 그냥 개발의 메인 스트림을 따라만 간다. 커리어나 다른 생활에 대한 걱정은 종종 하지만, 개발 자체에 대한 고민은 하지 않는다.습관 11: 자신의 나쁜 개발 습관에 관심이 없다.(습관은 아니지만....)내가 나쁜 개발자라고...? 내가 하고 있는 것들이 나쁜 습관들이라고??? 글쎄..... 그냥저냥 잘 하고 있는 거 같은데.... 라고 생각하는 당신! 아무리 좋은 개발자라도 나쁜 습관은 존재하기 마련이다. 좋은 개발자는 좋은 습관들을 가지고 있는 개발자기도 하지만, 나쁜 습관들이 많지 않은 개발자이기도 하다.나쁜 환경은 나쁜 개발자를 만든다.당신이 만약 스스로를 나쁜 개발자라고 생각한다면 아마 '나쁜' 환경에서 개발을 했을 가능성이 크다. 혹은 선배가 나쁜 개발자여서 그 습관을 그대로 보고 배웠다든지, 아니면 좋은 개발자에 대한 고민 없이 흘러가듯 개발을 배웠을 것이다. 예를 들어, 코드 리뷰를 하지 않았던 것은 회사에서 코드 리뷰를 안 했을 가능성이 크다. 혹은 문서화를 안 하는 경우, 그 회사에서 그것에 대해 크게 신경 쓰기 있지 않을 가능성이 크다.Bad developers are not born, but created.위에서도 언급했듯이 나쁜 개발자는 없다. 나쁜 습관들이 있을 뿐. 당신이 지금 위의 습관에서 많은 부분들이 해당된다 하더라도, 그 습관들을 바꾸면 된다. 다른 개발자들에게 있는 좋은 습관들을 보고 배우면서 자신에게 해당되는 나쁜 습관들을 하나씩 바꿔나가는 것이다.환경이 바뀐다고 자신이 바뀌지는 않겠지만, 나쁜 환경이 나쁜 개발자를 만드는 것처럼, 좋은 환경은 좋은 개발자를 만든다. 좋은 환경을 찾아가라! 직장이 그걸 주지 못한다면 다른 곳에서라도 찾아라. 좋은 개발자는 나쁜 습관들을 하나씩 바꿔나갈 때 될 수 있을 것이다. 다음 포스팅에서는 좋은 개발자가 되기 위해 필요한 정보들을 압축적으로 모아 포스팅할 것이다.
조회수 886

Rxjava를 이용한 안드로이드 개발

Overview브랜디는 현재 2.0 기반 Android 버전입니다. Main Thread와 Sub Thread 사이의 ANR를 방지하려고 Volley, Otto Bus Library를 사용해서 백엔드 서비스(back-end Service)를 연동하고 있습니다. 이제 3.0 개발로 더 좋은 백엔드 서비스 기능을 만들려고 합니다. (기반 작업은 이미 완료했습니다.) 다만 3년 동안 브랜디 앱을 개발하면서 느꼈던 고통과 피로를 ‘제발’ 줄여보고 싶어서 브랜디 3.0에서는 Retrofit2 와 RxJava, Lambda 표현식을 사용하기로 했습니다. RxJava(Reactive programming)는 가장 추천하고 싶은 것 중 하나입니다. 우리는 함수형 리액티브(반응형) 프로그램이라는 표현으로 자주 마주치곤 하는데요. 주로 옵저버 패턴(Observer pattern)을 대체하기 위해 사용합니다. 단순히 데이터를 넘기고 마무리하는 건 옵저버 패턴으로도 충분하지만 대부분의 문제는 이벤트들을 묶어서 사용할 때 생깁니다.1) RxJava는 이벤트에 대한 조건 처리나 실패 처리, 리소스 정리에 대비해 사용합니다. 기존 방식의 명령형 리액티브 접근 방식을 사용하면 복잡함이 지속적으로 증가하는 반면, 함수형 리액티브 프로그래밍은 효율을 크게 높일 수 있습니다. 몇 가지 예제와 함께 살펴보겠습니다. Android에 직접 사용해보기새로운 프로젝트를 생성한 후, 아래와 같이 build.gradle 파일을 수정해봅시다. (JDK 1.8 설치 필수) apply plugin: 'com.android.application' android {    compileSdkVersion 26   defaultConfig {        applicationId "kr.co.brandi.myapplication"        minSdkVersion 21        targetSdkVersion 26        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }   //추가된 부분 1      compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8   }  } dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])       //추가된 부분2    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'    implementation 'io.reactivex.rxjava2:rxjava:2.1.3'      implementation 'com.android.support:appcompat-v7:26.1.0'    implementation 'com.android.support.constraint:constraint-layout:1.0.2'    implementation 'com.android.support:design:26.1.0'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.1'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' } 이제 람다 표현식과 RxJava를 사용할 준비가 되었습니다.Flowable.just("Hello World").subscribe(new Consumer() {    @Override   public void accept(String s) throws Exception {        Log.v(tag, s);   }  });   Flowable.just("Hello World !").subscribe(s -> Log.v(tag, s)); 간단한 생성자와 결과를 출력하는 부분입니다. 두 번째 subscribe는 람다 표현식으로 인터페이스를 생성하지 않더라도 첫 부분과 동일하게 결과물을 얻을 수 있습니다.2) 이제 RxJava에서 간단한 필터링으로 간편하게 데이터를 가공하는 능력을 확인해보겠습니다. 아래 코드는 기본적인 List 의 값을 출력하는 부분입니다.List valueList = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);   for (int data : valueList) {    String result = "value " + data;    Log.v(tag, result);  } Flowable.fromIterable(valueList)        .map(new Function() {            @Override            public String apply(Integer data) throws Exception {                return "value : " + data;            }        })        //.map(data -> "value : " + data)        .subscribe(data -> Log.v(tag, data)); 위의 코드에 조건을 추가해 ’짝수’만 출력하겠습니다.for (int data : valueList) {    if ((data % 2) == 0) {        String result = "value " + data;        Log.v(tag, result);    }  } Flowable.fromIterable(valueList)        //.filter(data -> {        //      return (data % 2) == 0;        //})        .filter(data -> (data % 2) == 0)        .map(data -> "value : " + data)        .subscribe(data -> Log.v(tag, data)); 위와 같이 데이터 가공은 순차적으로 진행되고, 여러 함수로 간단하게 처리할 수 있습니다. 원하는 데이터 가공을 위해 filter, map 등의 함수들을 순차적으로 이어 붙일 수도 있습니다.위에서 보여드린 RxJava는 간단한 예시이기 때문에 RxJava 의 기능을 좀 더 보여드리겠습니다.String[] data1 = {Shape.HEXAGON, Shape.OCTAGON, Shape.RECTANGLE};  String[] data2 = {Shape.TRIANGLE, Shape.DIAMOND, Shape.PENTAGON};   Flowable source =        Flowable.combineLatest(                Flowable.fromArray(data1)                        .zipWith(Flowable.interval(100L, TimeUnit.MILLISECONDS), (shape, notUsed) -> Shape.getId(shape)),                Flowable.fromArray(data2)                        .zipWith(Flowable.interval(150L, 200L, TimeUnit.MILLISECONDS), (shape, notUsed) -> Shape.getSuffix(shape)),                (id, suffix) -> id + suffix);   source.subscribe(s -> Log.d(getThreadName(), s)); CombineLatest() 함수를 이용해 두 개의 스트림을 하나로 처리하는 방법을 보여 드렸습니다. 각각의 스트림은 interval 함수를 시간 간격으로 data1과 data2 배열의 개수만큼 반복하여 처리하는 로직입니다. 서로 다른 두 스트림은 마지막 데이터를 가지고 있으며 새로운 데이터가 나올 때마다 하나의 스트림으로 출력됩니다.마블 다이어그램 3)결과Conclusion만약 RxJava를 이용하지 않고 두 개의 TimerTask를 이용해서 코딩했다면 결과는 같았을지도 모릅니다. 이제 RxJava를 알기 때문에 다시는 TimerTask를 이용해서 코딩할 일은 없을 겁니다. 알면 알수록 다양한 기능을 갖추고 있는 RxJava! 이제 브랜디 상용화 버전에 사용할 수 있게 다시 개발의 숲으로 들어가겠습니다. 그럼 이만. 1)함수나 네트워크 호출의 비동기 응답 2)Java 8 람다 표현식 자세히 살펴보기, 2018.03.09. 3)RxJava on Android 글고재성 과장 | R&D 개발1팀gojs@brandi.co.kr브랜디, 오직 예쁜 옷만#브랜디 #개발문화 #개발팀 #업무환경 #인사이트 #경험공유
조회수 254

컴공생의 AI 스쿨 필기 노트 ③ K-평균 군집화

AI 스쿨 3주차에서는 K-means clustering(K 평균 군집화)에 대해 배웠어요. 이에 대해서 간략하게 정리해볼게요.K-means clustering클러스터링이란 군집화를 의미하는데요, K-means clustering은 비슷한 데이터끼리 묶어주는 머신 러닝 기법이에요. K-means clustering은 비지도학습(Unsupervised learning)의 일종이에요. 비지도 학습이란 데이터와 각각의 데이터가 무엇인지를 설명해주는 라벨이 없는 학습을 말해요. 따라서 우리는 주어진 데이터들을 가장 잘 설명하는 클러스터를 찾아 데이터를 분류할 수 있어요. 아래는 데이터를 2개의 클래스로 군집화한 것을 잘 나타내주는 그래프에요.K-means는 클러스터 내부에 속한 데이터들이 서로 가깝다고 정의해요. 그렇다면 같은 클러스터에 속한 데이터들은 서로 가까이 근접해 있겠죠? K-means는 클러스터의 중심으로부터 가까운 데이터들을 찾아서 묶어주는 알고리즘이에요. 데이터들은 가장 가까운 내부 거리를 가지는 클러스터를 고르게 되는데, 이를 위해서 각각의 클러스터는 중심(프로토타입)이 존재하고 각각의 데이터가 그 중심과 얼마나 가까운지를 Cost로 정의해요.위의 식은 같은 클러스터에 속하는 각각의 점들로부터 그 클러스터의 평균(프로토타입)과의 거리의 합을 제곱한 함수에요. - N : 데이터의 개수- K : 클러스터의 개수- uk : k 번째 클러스터의 중심(프로토타입)- rnk : n 번째 데이터가 k 번째 클러스터에 속하면 1, 속하지 않는다면 0을 가지는 이진 변수우리는 위 식에서 rnk, uk를 구해야 해요. 이때 반드시 잊지 말아야 하는 조건은 각 데이터가 한 개의 클러스터에 할당이 되어야 한다는 것이에요.K-means 알고리즘K-means algorithm을 구하는 방법은 아래와 같이 크게 2단계로 나누어져요. 먼저 uk에 랜덤 값을 사용하여 임의의 초깃값을 설정해요.1. Expectationuk를 고정시키면서 J를 최소화하는  rnk값을 지정해야 하는데,  rnk은 모든 데이터 n에 대해 각각 모든 클러스터 중에서 xn- uk가 가장 작은 클러스터에 할당해요.2. Maximization새롭게 얻어진 rnk를 고정하고 uk는 k 번째 클러스터의 mean을 계산해요. 두 값이 적당한 범위 내로 수렴할 때까지 계산을 반복해요, 위의 두 단계를 각각 E(expectation) 단계와 M(maximization) 단계라 하고, 이 두 단계를 합쳐서 EM 알고리즘이라고 해요.알고리즘 코드로 나타내기그럼 K-means algorithm을 코드로 어떻게 나타내는지 살펴볼게요!Step1. 데이터 만들기np.random.seed(42)digits = load_digits()  data = scale(digits.data)n_samples, n_features = data.shapen_digits = len(np.unique(digits.target))labels = digits.targetx_train, x_test, y_train, y_test = train_test_split(data, labels, test_size=0.25, random_state=42) - digits = load_digits(): load_digits 함수를 사용하면 data와 target이 반환되는데 이 데이터를 scale 함수를 사용하여 전처리해요.- data.shape을 사용하면 n_samples에는 1797, n_feature에는 64가 할당돼요.- n_digits에는 digits의 target의 중복된 값을 제외한 개수를 할당해요.- train_test_split() 함수를 이용하여 train_set과 test_set을 랜덤 시드를 42를 가지는 75:25의 비율로 나눠요.Step2. KMeans model 만들기sklearn 라이브러리를 사용하면 KMeans model을 아주 쉽게 구현할 수 있어요.kmeans = KMeans(init='k-means++', n_clusters=10, random_state=42)clusters = kmeans.fit_predict(x_train)- KMeans 함수를 이용하여 모형은 k-means++를 가지고, cluster는 10개를 가지며 랜덤 시드는 42를 가지는 K-means clustering을 만들어요.- x_train 데이터 셋을 중심으로 클러스터의 중심을 계산하고 각 샘플에 대한 클러스터의 인덱스를 예측할 수 있도록 fit_predict()를 사용해요.Step3. K-means clustering 결과 출력print('Clusters: ', clusters)위와 같이 출력하면 아래와 같은 결과가 나와요.Clusters: [1 3 2 ... 6 6 0]]그래프를 출력하면 아래와 같은 결과를 볼 수 있어요!이번 수업에 배운 K-means clustering의 개념은 1주차와 2주차 수업의 개념에 비해 어렵지 않았던 것 같아요. 이해하기에 큰 문제는 없었지만 코드로 직접 짜려고 하니 막히는 부분이 있어서 고생을 좀 했어요. 저는 과제를 하다가 에러가 나면 구글링을 통해서 에러를 해결하거나 도저히 못하겠다 싶으면 도움 요청을 해요. 목요일에는 조교분들께서 Multiple Regression에 대해 숙명여대에서 수업을 진행해주셨는데요. 1, 2주차에 배운 내용을 복습하고 3주차 수업에서 짧게 살펴본 Multiclassification을 더 자세히 알려주셔서 본 수업 때 이해가 되지 않았던 부분이 해결이 되었습니다! 목요일 수업은 정식 수업이 아닌 보충수업이었기 때문에 소수의 사람들이 강의에 참여했는데요. 시간이 된다면 참석을 꼭 해주시면 굉장히 큰 도움이 될 것 같아요. * 이 글은 AI스쿨 - 인공지능 R&D 실무자 양성과정 3주차 수업에 대해 수강생 최유진님이 작성하신 수업 후기입니다.
조회수 666

에이스프로젝트 피트니스 지원

'겨울 동안 마음 놓고 너무 많이 먹었나...? 몸이 둔해진 것 같아 ㅠㅠ','요새 체력이 많이 약해진 거 같아... 자도 자도 너무 피곤하네','이제 여름도 얼마 안 남았네? 바다가 나를 부른다!'어느새 이런 생각이 많이 들 때인 4월입니다.이런 분들의 고민을 해결해주기 위해, 에이스프로젝트에서는 피트니스 이용권을 제공합니다.아침, 점심시간, 저녁 그리고 주말까지 간편히 이용 가능! 피트니스센터는 바로 회사 지하 1층입니다.엘리베이터만 타고 내려가면 바로 운동할 수 있어요. 가깝다 보니 점심시간에 탄력 근무를 이용해 운동하고 돌아오는 에이스인들도심심찮게 만날 수 있답니다!피트니스센터가 아주 가깝다는 점 외에도 또 하나의 장점!개인 사물함도 따로 제공하고 있습니다. 항상 들고 다니기 귀찮은 운동화와 샤워용품은 입구 옆에 있는 개인 사물함에 보관할 수 있습니다.언제든지 몸만 가면 운동을 할 수 있는 거죠.그리고 이용 방법도 아주 간단합니다. 에이스프로젝트 공용 사물함에 있는 명단에 이름을 적고, 넉넉히 들어있는 출입카드 중 하나를 꺼내서 입장하면 됩니다. 차~암 쉽죠?다양한 운동기구들이 있기 때문에근력 운동, 유산소 운동 등 본인이 원하는 운동 스타일에 맞추어 여러 운동을 할 수 있습니다.운동은 골고루 열심히! 으쌰 으쌰특별한 운동을 원하는 에이스인이라면 'G.X(Group Exercise)' 이용 가능!혼자 운동하는 게 재미없다는 사람들도 있죠.그룹으로 운동하는 것, 또는 전문가의 도움을 받고 싶다면 G.X(Group Exercise)를 이용할 수 있습니다. 이것도 무려 무료!!!!요가, 줌바, 필라테스, 웨이트 트레이닝 등 다양한 운동을 전문가 선생님에게 배울 수 있어요. 원하는 요일, 시간에 맞춰 선택해서 들을 수 있어좀 더 특별하게 운동을 할 수 있을 거 같네요.PT(Personal Training) 이용자, 복지포인트 20% 할인 혜택 제공!운동이 처음이어서 어떤 기구를 써야 할지, 자세는 어떻게 해야 할지 막막한 분들도 있어요.에이스프로젝트에서는 PT 이용을 원하는 사람에게 복지포인트 20% 할인 혜택을 제공합니다!회사 복지 포인트를 이용하여 PT를 결제하면, 20% 할인된 금액만 차감되는 방식이에요.저처럼 회사 입사 전까지 운동이 낯설었던 사람을 위한 최고의 혜택이죠.직원의 건강이 좋아지면 자연스레 업무 효율이 올라가고, 이는 당연히 회사의 성과와도 연결되겠죠?직원의 건강이 회사의 건강이라 생각하는 에이스프로젝트.체력은 기본! 피트니스센터 지원과 함께 건강한 에이스인이 되어요!
조회수 943

[인공지능 in IT] 인공지능과 저널리즘

얼마 전, 재미있는 기사를 읽었다. 일본의 한 SF 공모전에 응모한 작품 1,400편 중 인공지능이 작성한 소설 두 편이 예선 심사를 통과했다는 내용이었다. 이 중 소설 한편의 제목은 '컴퓨터가 소설을 쓴 날'이다. 소설을 작성하는 인공지능 기술을 개발한 연구팀은 육하원칙 등의 제시어를 준 뒤, 연관어에 따라 소설을 쓰는 알고리즘을 활용했다.미디어 혹은 인공지능 분야에 생소한 독자들에게 다소 신기할 수 있겠지만, 사실 인공지능을 활용한 저널리즘은 수 년 전부터 진행 중이다. 국내에서는 2014년 서울대학교 언론정보학과의 'hci+d Lab' 이준환 교수팀이 개발한 알고리즘을 시초라고 할 수 있다. '프로야구 뉴스 로봇'이라고 불리는 소프트웨어는 KBL의 모든 경기를 자동으로 요약해 정리한다. 연구팀이 처음부터 이 같은 기능을 염두에 둔 것은 아니었고, 데이터를 시각화하는 과정에서 시각화 방식을 텍스트로 바꿔본 것이 연구의 시작이라고 한다. 위 사례는 사람이 아닌 기계가 직접 '글'을 작성했다는 점에 있어 의미가 크다. 미디어 업계에서도 디지털화는 불가항력 같은 존재가 되고 있다.얼마 전, 옥스퍼드-로이터 저널리즘 연구소에서 미디어 업계를 대상으로 조사를 시행했다. "2018년 실행해야 할 가장 중요한 과제는 어떤 것이라고 생각하는지"에 대한 물음에 "데이터 수용량을 증가시키는 것"을 가장 많이 답변했다. 모바일 알림, 웹사이트나 애플리케이션에 사용자를 등록시키는 일 등 여러 과제들이 있었지만, IT 솔루션 업계도 아닌 미디어 업계가 데이터 수용량 증가를 최우선 과제로 생각하고 있다는 사실은 개인적으로 매우 충격적이었다. 또한, "현재 귀사에서는 기사 보도에 있어 어떠한 용도로 적극적인 인공지능 기술을 도입할 예정입니까?"라는 질문에 '컨텐츠 추천', '업무 자동화', '기삿거리 탐색' 등 다양한 분야에서 인공지능 기술 도입을 계획하고 있었다. 그만큼 이미 언론에서도 인공지능 기술은 먼 세상 이야기가 아닌, 당장 피부로 느껴질 정도로 가까워졌다.세계 최대 통신사 중 하나인 'Associated Press(AP)'는 2017년 'The Future of Augmented Journalism: A guide for newsrooms in the age of smart machines'이라는 인공지능 활용 기술 가이드를 발간했다. 해당 가이드에 따르면, 인공지능은 언론에서 크게 다섯가지 영역으로 활용된다. 이에 대한 예시를 하나씩 살펴보도록 하자.첫번째로 'Machine Learning', 즉 기계학습이다. 기계학습을 이용하면, 방대한 데이터로부터 결론을 도출하는 과정을 쉽게 처리할 수 있다. 그리고 기계학습 알고리즘을 통해 기자들은 이미지를 포함한 막대한 양의 자료를 한 번에 처리할 수도 있다. 미국의 매체 'Quartz' 소속 'Sarah Slobin' 기자가 트럼프 미국 대통령의 취임 연설에 대한 기사에 기계학습을 이용한 분석 자료를 쓴 일례가 있다. 트럼프의 얼굴 표정과 연설에서 표현된 감정을 판단하는 데에 기계학습 알고리즘을 사용한 것.< 출처: Quartz, 제공: 스켈터랩스 >두번째 활용 영역은 'Language'다. 인공지능 분야에서 언어에 대한 연구는 꾸준히 이어지고 있는데, 언어 처리 분야 중에서도 저널리즘과 관련 있는 기술은 '자연어 생성'과 '자연어 처리'다. 당연하겠지만, 자동으로 문장을 생성하는 것은 언론에서 매우 유용하게 사용할 수 있는 기술 중 하나다. 'LA Times'는 'LA Quakebot'이라는 서비스를 개발했다. 'LA Quakebot'은 자연어 생성 기술을 활용해 지역에서 지진이 일어난 순간, 이미 작성된 프레임에 맞춰 기사를 작성하며, 완성된 기사는 트위터를 통해 송출한다.< 출처: LA QuakeBot 트위터, 제공: 스켈터랩스 >세번째는 'Speech'로, 저널리즘에서 대화형 인터페이스가 뉴스 소비 및 유통에 어떠한 영향을 미칠 지 관심을 가지고 있다. 이미 'AP', 'Wall Street Journal', 'BBC', 'Economist' 등 여러 미디어가 오디오 인터페이스 기술을 시도하는 것으로 알려졌다. Speech 역시 크게 두 가지로 나뉘는데, 'TTS'라고 불리는 'Text-To-Speech'를 활용하면 뉴스룸에서 제공하는 문자 기사를 음성으로 변환시키고, 합성된 음성을 콘텐츠로 송출할 수 있다. 반대로 'STT', 즉 'Speech-To-Text'를 활용하면 음성으로부터 의미를 잡아내고, 모든 의도와 목적에 맞춰 음성을 문자로 변환시키며, 이를 통해 기자들이 인터뷰 내용을 녹취하는데 소요하는 시간을 줄일 수 있다.< 출처: BBC NEWS LABS, 제공: 스켈터랩스 >네번째, 듣는 것과 녹취하는 것을 넘어 눈으로 본 것을 기록할 수 있는 'Vision' 기술이다. 컴퓨터 비전을 활용하면 빠르고 쉽게 이미지 및 영상을 분류하고 정리할 수 있다. 용이한 검색을 통해 궁극적으로 편집 속도까지 높일 수 있는 셈이다. 'AP'는 인공위성으로 수집한 영상 데이터를 공급하는 'Digital Globe'라는 기업을 통해 동남아 선박의 고해상도 위성사진을 확보했다. 이를 통해 노예선에 관한 탐사보도에 필요한 결정적인 증거를 찾으며, 2016년 공공서비스 부문 퓰리처상을 수상했다.< 출처: AP, 제공: 스켈터랩스 >마지막으로 'Robotics'를 꼽을 수 있다. 로봇 센서를 활용해 사건 사고에 대한 사람들의 반응을 실시간으로 측정할 수 있으며, 앞서 언급한 'Quakebot'의 예처럼 자연재해가 발생하는 것에 대해 다룰 수 있다. 'AP'는 2016년 하계올림픽 당시, 로봇과 원격 카메라를 이용해 기자들이 물리적으로 직접 접근할 수 없는 지역에 카메라를 설치하고, 원격 조종해 촬영했다. 또한, 드론을 이용해 이라크 모술 남동쪽 다이바가 근처에 추방된 이라크인들을 촬영해 중독 지역 난민 위기에 대해서도 보도한 바 있다.< 출처: AP, 제공: 스켈터랩스 >이렇듯 인공지능이 미디어 업계 전체에 긍정적인 영향을 주고 있으며, 이를 활용한 사례는 앞으로도 더욱 늘어날 것으로 전망한다. 다만, 지속적으로 발전하는 인공지능을 무조건 도입하는 것만이 능사는 아니다. 인공지능 기술의 확산으로 보도 속도, 보도 규모 및 범위 등에 도움될지라도, 데이터의 질에 따라 좋지 않은 기사가 나올 수 있기 때문이다. 'AP'의 스마트머신 시대 뉴스룸을 위한 가이드에도 언급된 포인트로 마무리를 해보자.1. 인공지능은 저널리즘의 도구이지, 저널리즘을 대체하지 않을 것이다.2. 인공지능은 인간과 마찬가지로 편향적이고, 실수를 할 수도 있다. 이는 데이터가 모든 것을 결정하기 때문이다.3. 인공지능이 만병통치약은 아니다. 최근 자율주행 자동차 사고 이슈처럼 기술이 극복하지 못하는 문제는 여전히 존재한다.4. 인공지능에 대해 더 많이 알아야 인공지능 활용 가능성의 문이 크게 열린다.5. 저널리즘의 도구가 변한다고 해서 저널리즘의 법칙이 변하지 않는다. 언제나 윤리와 기준은 매우 중요하다.이호진, 스켈터랩스 마케팅 매니저조원규 전 구글코리아 R&D총괄 사장을 주축으로 구글, 삼성, 카이스트 AI 랩 출신들로 구성된 인공지능 기술 기업 스켈터랩스에서 마케팅을 담당하고 있다 #스켈터랩스 #기업문화 #인사이트 #경험공유 #조직문화 #인공지능기업 #기술기업
조회수 1473

“암호화폐 분석의 새로운 기준점을 제시합니다” - 리서치센터 공태인님 인터뷰

‘보고서 작성하느라 잠을 잘 못자서, 오늘 사진촬영 괜찮겠죠?’검게 내려온 다크서클. 2018 연말 야근상 후보자. IFC 19층에는 불이 꺼지지 않는 신비의 방이 있습니다. 암호화폐 투자자들에게 시장 트렌드와 올바른 정보를 전달하고자 밤낮으로 일하는 태인님이 있기 때문인데요. 투자자들에게 심도 깊은 암호화폐 정보를 전달하기 위해 오늘도 ‘열일'하는 태인님의 비하인드 스토리를 파헤쳐봤습니다.Q. 안녕하세요 태인님, 자기소개 부탁드릴게요!안녕하세요, 저는 코인원 리서치센터장 공태인입니다. 코인원 리서치센터가 어떤 일을 하는지 궁금하시죠? 리서치센터는 블록체인과 암호화폐 및 금융 시장 전반에 대한 Macro/Micro 리서치를 통해 고도화된 분석 업무를 수행하는 곳입니다. 급격한 시장 변화에 대응할 수 있도록 전반적인 트렌드를 분석하고, 보고서 발간을 통해 투자자들에게 깊이있는 인사이트를 제공하죠. Q. 코인원이 암호화폐 거래소 최초로 리서치센터를 설립했는데요, 태인님은 어떤 계기로 코인원 리서치센터로 오게 되셨나요?암호화폐 시장에서 발생하는 정보 비대칭성을 해결하고 싶었어요. 현재의 암호화폐 시장을 주식시장에 빗대보자면 90년대 후반 2000년대 초 주식시장이 미성숙했던 시기와 매우 비슷합니다. 투자업계가 발달되지 않아 정보가 부족했고, 이로인해 IR에 대한 개념도 잡히지 않았고 사업보고서조차 접근이 쉽지 않았었죠. 투자자들에게는 자신이 투자하고자 하는 대상에 대한 정보가 사실상 아무것도 없었습니다.현재 진행되고 있는 블록체인과 암호화폐 프로젝트들도 마찬가지에요. 토큰과 코인을 판매하는 주체가 프로젝트에 대한 정보를 쥐고 있지만, 투자자들은 이 정보를 찾아 어렵게 다녀야하죠. 저는 투자자들에게 이 시장이 어떤 메커니즘으로 돌아가는지, 왜 투자를 해야하고 하지 않아야 하는지에 대한 정보의 흐름을 알리고 싶었어요. https://news.naver.com/main/read.nhn?mode=LSD∣=sec&sid1=101&oid=366&aid=0000410893▲참고기사 : 코인원 리서치 센터 출범Q. 기본적으로 ‘리서치센터'라는 단어를 들었을 때, 독자분들은 증권사를 먼저 떠올리실 것 같아요. 실제로 증권사 리서치센터와 유사한 부분이 있을까요?블록체인과 암호화폐 산업이 안정화된다면, 저희가 하는 역할도 증권사들과 많이 유사해질 거라고 예측해 봅니다. 90년대 후반 2000년대 초 애널리스트들은 해당 산업의 외부전문가 역할을 톡톡히 하고 있었어요. 그때는 정보 비대칭성이 훨씬 심했던 시기이므로 애널리스트가 투자 의견 제시뿐만 아니라 다양한 이해관계자들을 대상으로 교육도 함께 중점적으로 진행했지만, 현재는 투자자에 훨씬 포커스 되어있죠. 암호화폐 시장도 마찬가지로 저같은 애널리스트들이 프로젝트의 투자자들에 대한 서비스를 진행하는 날이 올 것 같네요.  Q. 리서치센터에서 출간되고 있는 보고서에 대한 반응이 매우 뜨겁습니다.  예상보다 큰 반응에 놀랐습니다. 정말 많은 분들이 관심을 가져 주셔서 너무 감사하게 생각하고 있어요. 지금은 긍정적이든 부정적이든 피드백이 필요한 시점인 것 같아요. 사실 증권시장에서는 애널리스트가 발간한 보고서에 대한 피드백 흐름이 정말 자연스러워요. 투자자들을 대상으로 전화를 돌리거나 직접 대면해서 현장 반응을 그대로 체감하고 다음 보고서 토픽을 생각하죠. 아직 암호화폐 산업에서는 피드백 흐름이 형성되지 않은 극초기 단계라, 주변 반응을 듣고 커뮤니티를 모니터링 하면서 피드백을 놓치지 않기 위해 노력하고 있습니다!Q. 거래소에서 최초로 새롭게 접근한 암호화폐 분석법으로 매우 이슈가 되었는데, 그 동안의 분석법과 어떤 점이 다른가요? 금융권에서 활용되는 가치 측정 기법을 암호화폐 시장에도 적용했기 때문인데요, 현재까지 암호화폐를 이런 기법으로 분석한 곳은 코인원이 최초에요. 보고서를 보시면 아시겠지만, 코인원 리서치센터 보고서에는 기술 리서치의 비중이 상대적으로 제한적이에요. 이미 미디엄이나 레딧 등의 플랫폼에만 들어가도 블록체인의 기술적인 부분에 대해 더 전문적으로 설명하고 계시는 분들이 많기 때문이죠.그래서 투자 관점에서의 암호화폐 분석을 시작한거에요. 예를 들면 주가이익배율 (PER : Price Earnings Ratio)을 적용할 수 있을까? 블록체인 생태계 안에서 암호화폐 프로젝트를 하나의 기업으로 바라보고 유사한 증권분석 컨셉이 적용가능할까? 등을 고민했죠. 이런 무수한 고민들을 통해 현재의 분석보고서가 탄생하게 되었어요. (눈물)코인원 리서치센터에서 발행한 암호화폐 보고서▲코인원 리서치센터 바로가기Q. 기존 금융권에서 오랜 경력을 쌓으신 태인님이 어떻게 암호화폐 시장에 매료되셨는지 궁금합니다.제가 중, 고등학교 때 컴퓨터 자격증을 독학할 정도로 컴퓨터에 관심이 많았어요. 도이체방크에서 애널리스트로 근무했을 때에도 담당했던 산업이 ICT쪽이었습니다. 그러다보니 블록체인 개념 또한 빠르게 접할 수 있었는데요, 개발자가 주체적으로 이끌어가는 비즈니스 모델이 흥미로웠습니다. 이렇게 여러가지 관심사가 겹쳐서 암호화폐 시장의 매력에 빠지게 되었네요. Q. 태인님이 앞으로 코인원 리서치센터에서 전달하고 싶은 가치는 무엇일까요?현재 암호화폐 시장에는 올바르지 않은 정보가 난무하고 있어요. 저는 암호화폐 거래소에서 정보 흐름의 선순환을 만들어나가야 한다고 생각합니다. 제대로 된 정보를 제공하고 토큰 이코노미 내 이해관계자들 사이에서 자정작용을 일으켜야만 해요. 향후 중/장기적으로 블록체인과 암호화폐 산업에 규제가 잘 마련이 되면, 투자의견까지 제시할 수 있는 날이 올 거에요. 앞으로도 보고서에서 흥미로운 토픽들을 심도 있게 다룰 예정이니 많이 기대해주세요!저는 암호화폐 보고서뿐만 아니라 보노보노책(?)도 좋아합니다코인원은 리서치센터를 통해 암호화폐에 대한 심도 깊은 정보를 꾸준히 전달해, 암호화폐 시장의 투명성과 안정성을 제고하기 위해 노력하고 있습니다. 앞으로도 코인원 리서치센터에서 더욱 다채로운 보고서로 찾아 뵐 예정이니, 많은 관심과 응원 부탁드려요!#코인원 #블록체인 #기술기업 #암호화폐 #스타트업인사이트 #기업문화 #조직문화 #팀원소개 #인터뷰
조회수 1979

안드로이드와 자동화 툴

모바일은 플랫폼의 생태계와 규모에 비해 개발자들이 처리해야 할 것이 매우 많습니다.서버나 타 플랫폼들 또한 개발자들의 영역이 많지만 그 영역들이 세분화되고 전문화되어 가고 있습니다. 데이터베이스, 백엔드, 프론트웨어, 인프라, DevOps 와 같이 점점 분야별로 심화되고 독립성을 갖추어 가고 있습니다.하지만 모바일은 각 플랫폼의 개발자들이 전체적인 아키텍쳐, 프론트, 내부용 데이터베이스, 리소스 관리, 배포 등이 해당 플랫폼의 소수의 개발자들에게 광범위하게 공존합니다. 다양한 분야가 전문화되기엔 변화가 잦고 규모가 점 형태로 구성이 된 경우가 많기 때문입니다.그렇기 때문에 반복적이고 불필요하게 비용이 소모되는 작업일수록 자동화 해서 최대한 코드 작성 본연에 업무에 집중할 수 있도록 환경을 구성하는 것이 중요합니다.토스랩 안드로이드 팀은 2015년 초부터 조금씩 자동화 환경을 구성하여 현재는 아래와 같습니다.다국어 문자 관리 자동화이미지 관리 자동화CI다국어 문자 리소스 자동화1. 다국어 글로벌 담당자의 원본 문서토스랩은 다국어 지원을 위해 글로벌 번역 문서를 관리하고 있습니다. 문서는 Google Drive 를 통해서 관리되고 있으며 기획/개발 파트에서 다국어 지원을 위한 리소스를 기입하면 각 언어의 담당자들이 해당 언어를 번역하고 있습니다.구성은 아래와 같습니다ABCDEFGH영어한국어일본어중국어-간체중국어-번체웹키ios 키안드로이드 키2. 기존 작업기존에는 해당 언어의 번역 데이터를 추가하기 위해 개발 파트에서 수동으로 각 언어의 리소스 파일에 추가하는 형태로 진행하였습니다.이러한 작업의 단점은 언어별 리소스 파일에 키-값 형태의 문자 리소스를 추가하는 작업을 반복적으로 해야 한다는 것입니다. 또한 반영이 된 후에 수정된 문자에 대해서 반영하기가 매우 어렵고 실수도 빈번하게 발생합니다.이러한 가능성을 최소화 하기 위해 자동으로 문자 리소스를 갱신하는 작업을 진행하였습니다.3. 안드로이드 파트를 위한 별도 필터 파일 추가|A|B|C|D|E|F| |—-|—-|—-|—-|—-|—-| |영어|한국어|일본어|중국어-간체|중국어-번체|안드로이드 키|가급적 원본 파일에 대한 조작을 피하기 위해 안드로이드용으로 Read-Only SpreadSheet 를 별도로 생성하였습니다.해당 작업을 위해 Google SpreadSheet Script 를 사용하였습니다.4. 자동화 툴 작업자동화 툴의 역할은 크게 3가지였습니다.안드로이드용 필터 파일을 다운로드한다.Spread-sheet를 분석해서 다국어용 자료구조로 변환한다.다국어용 자료구조를 XML 파일로 변경한다.툴은 Python 스크립트로 작업하였습니다.5. Gradle Task 로 추가별도의 Python 파일을 실행해도 되지만 Gradle Task 로 추가하여 Android Studio 에서도 Task 를 실행할 수 있도록 하였습니다.개발팀에서 안드로이드 키를 원본 문서에 추가한 후 Gradle Task 실행하면 바로 반영되도록 하였습니다. 기존의 방식과 가장 큰 차이점은 Merge 시 충돌 이슈에 대해서 더이상 관여하지 않아도 된다는 것입니다. 가장 최근 시점을 기준으로 자동화 Task 를 실행하면 모든 리소스가 최신화되기 때문에 충돌이 난다하더라도 무시하고 새로 Task 를 실행함으로써 충돌에 의한 이슈를 완전히 배제하고 작업할 수 있다는 장점이 생겼습니다.더 나아가 현재는 Android 용 리소스 Key를 기획 팀에서 기획시 적용하도록 하기로 현재 논의되고 있습니다. 이러한 논의가 반영된다면 더이상 리소스 관리에 있어서 개발파트에서 관리 할 필요가 없어지므로 다국어 리소스에 반영해야할 리소스 또한 최소화 될 것이라 기대하고 있습니다.이미지 리소스 자동화1. 기존 작업앱에 사용되는 디자인 리소스는 이슈 트래커와 JANDI 의 디자인 토픽을 통해서 전달 받아 작업을 하였습니다.이런 작업 형태는 이미지 관리가 분산 될 뿐만 아니라 일관성 있는 전달 방식이 아니기 때문에 누락건이 언제든지 존재할 수 있습니다.그래서 디자인 리소스에 대한 관리를 디자인 팀이 주도적으로 하며 개발팀에서는 빠르고 편하게 이미지를 전달 받을 수 있도록 하기 위해 자동화 툴을 만들었습니다.2. 개선 작업토스랩의 디자인 팀에서 사용하는 저장소는 권한에 따라 접근이 가능하도록 API 를 제공하고 있습니다. Read-Only 권한을 부여받은 후 API 를 통하여 이미지를 다운로드하도록 툴을 구성하였습니다.툴은 Python 스크립트로 구성하였습니다.3. Gradle Task 로 추가문자 리소스와 마찬가지로 별도로 Gradle 로 툴을 이용할 수 있도록 하기 위해 별도의 Task 를 정의하여 사용하도록 하였습니다.자동화된 리소스의 관리문자와 이미지를 자동화로 관리한다 하더라도 개발자가 필요에 따라 임의로 추가/수정하는 리소스가 존재 할 수 있습니다.이를테면 다운로드한 이미지 리소스를 활용한 Selector-Drawable 과 같은 것들입니다.이에 따라 자동화 처리된 리소스들은 별도의 관리를 위해 추가적으로 ResourceSet 을 만들었습니다. android { // ...중략 sourceSets { main.res.srcDirs += ${별도의_리소스_경로} } } 이러한 방식을 통해서 자동화된 리소스와 추가적한 리소스를 분리하여 발생할 수 있는 문제를 최소화 하였습니다.지속적 통합 (Continuous Integration, CI)자동화와 관련되어서 결코 빠질 수 없는 내용입니다. 빌드, 테스트, 배포, 리포팅에 이르기까지 이 모든 과정에 있어서 자동화 되지 않았다면 상상하기 어려운 작업들입니다.토스랩에서는 Jenkins 를 활용하여 빌드-테스트-리포팅을 하고 있습니다.1. 빌드 대상빌드의 의미는 최소한 컴파일 오류가 발생하지 않는 코드들이 최종 상태로 관리되고 있음을 의미합니다. 그러기 때문에 언제나 중앙 저장소에 반영되었거나 반영될 예정의 소스들은 항상 빌드 대상이라고 볼 수 있습니다.안드로이드 팀은 내부적으로 빌드 대상이 되는 브랜치를 아래와 같이 정의하였습니다.개발된 이슈가 최종적으로 반영된 브랜치 (develop)Github 에서 코드에 변경이 발생하면 이를 Jenkins 로 통보하여 해당 브랜치를 빌드합니다.개발 브랜치에 반영을 위해 코드리뷰 중인 브랜치 (features, fixes)Github 에 새로운 Pull-Request 가 발생하면 Jenkins 로 통보하여 해당 브랜치를 빌드합니다.테스트와 리포팅은 이 시점부터 발생한다고 볼 수 있습니다.2. 빌드빌드를 하는 과정에 기본적인 정적 분석을 사용하고 있습니다. 코드의 Convention 이나 복잡도 등을 측정하고 이를 분석하여 수정할 부분을 파악하기 위해서입니다.3. 테스트안드로이드팀은 작년 중순까지 Robolectric 이라는 Test Framework 을 사용하였으나 여러가지 이슈로 인하여 현재는 Android Test Support Library 를 사용하고 있습니다. ATSL 은 에뮬레이터를 필요로 하기 때문에 Jenkins 서버에 에뮬레이터를 구동하여 Test-Bed 를 구성하였습니다.빌드 과정에서 정적 분석이 완료되면 테스트 코드를 동작 시킵니다.테스트 된 결과는 JUnit Test Report 와 Jacoco Coverage Report 를 받고 있습니다.4. 결과 리포트빌드, 테스트 결과는 Jenkins 에서 별도로 관리되고 있지만 모든 동작들은 자동화 되어 관리되기 때문에 별도의 장치가 없다면 알아채기 어렵습니다.좀 더 빠른 피드백을 받기 위해 JANDI-Webhook 기능을 이용하여 결과 리포팅을 바로 받아 확인 할 수 있도록 하였습니다. 또한 Github Pull-Request 화면에서 Build-Status 연동하여 코드리뷰 하는 과정에서 잠재적 오류를 찾을 수 있도록 하였습니다.※ 빌드된 결과물의 배포는 내부적인 정책으로 현재는 하지 않고 있습니다만, 현재 가용 가능한 리소스 안에서 해결 방안을 찾고 있습니다.총평자동화의 가장 큰 목적은 반복적이지만 시간을 소요하기엔 가치가 떨어지는 작업을 단순화 하기 위함이었습니다. 여기서 오는 가장 큰 의미는 관리에 소요되는 시간을 최소화함으로써 생산성을 향상 시켰다는 데에 있습니다.특히 다국어 리소스와 이미지 리소스를 자동화 하기 위한 작업은 소요된 시간이 극히 미미하지만 그 효과는 매우 긍정적이라 할 수 있습니다.CI 는 초기 설정뿐만 아니라 관리가 매우 어려운 작업입니다. 해당 시스템을 총체적으로 알고 있다는 가정에서 해야 하며 정책적으로 규정해야 하는 것들도 있습니다. 하지만 결과물 그 자체에 대한 관리를 위해서는 없어서는 안되는 도구이며 정적분석과 자동화 테스트 등 다양한 효과를 얻을 수 있기 때문에 많은 개발자들에게 권장하고 싶습니다.#토스랩 #잔디 #JANDI #개발 #효율 #자동화툴 #업무환경
조회수 1112

이혜민 핀다대표 “쇼핑하듯 쉽게, 금융상품 찾아드려요"

이투데이 청춘반란 시리즈의 6번째 인터뷰이(inverviewee)로 핀다(Finda) 이혜민 대표님이 소개되었습니다. 핀다와 핀다의 금융상품 정보 에 대해 더 깊게 알아보는 기회가 되시기를 바랍니다! 이투데이 기사 원문보기 260개 금융기관 7000여개 상품 정보 이해하기 쉽게 표준화…맞춤형 비교·검색 고객에 최적 상품 추천… 月 30만명 방문 똑부러진 목소리와 열정이 담긴 눈빛. 이혜민(35) ‘핀다’ 대표는 3차례의 창업 경험으로 잔뼈가 굵은 스타트업 대표답게 인터뷰 내내 뚜렷한 목표와 방향성을 제시했다. 창업 시장에서 산전수전 다 겪은 그가 선택한 네 번째 창업 아이템은 바로 ‘금융’이다. <이혜민 핀다 대표는 2일 이투데이와의 인터뷰에서 “단순한 금융 서비스를 제공하는 데서 더 나아가 개인 맞춤형 자산관리 서비스를 제공하는 게 목표”라고 말했다. 사진=이동근 기자 정보의 비대칭성 해소하고 금융도 쇼핑하듯 이용하자“정보 격차가 가장 심한 분야는 금융이라고 생각합니다. 30년 전이나 지금이나 어렵고 불친절한 금융 서비스를 누구나 쉽고 편하게 이용할 수 있게 만들고 싶었습니다.” 이 대표가 금융정보 서비스 앱 ‘핀다’를 창업하게 된 계기는 자신의 경험에서 나온 운명적인 선택이었다. 대출을 받으려고 은행을 찾았던 그는 창구에 앉자마자 머리가 백지 상태가 됐다. 당시 이렇다 할 수입이 없던 그에게 은행은 높고 두꺼운 벽처럼 다가왔다. 게다가 금융 지식이 없던 그는 은행원의 설명을 하나도 알아들을 수 없었다. 심지어 어떤 금융 서비스가 필요한지 감도 잡히지 않았다. 그는 “필요성을 느끼면 주위에 확인하는 걸 습관적으로 한다”며 “나만 필요한 게 아니라 모든 사람이 느낀다면 사업성이 있다고 생각하는데 마침 주위에 나와 비슷한 고민을 하는 사람들의 의견을 들을 수 있었다”고 말했다. 본능적으로 창업을 떠올렸다. 그는 곧바로 팀을 꾸리고 2015년 10월 금융 정보를 서비스하는 ‘핀다’를 설립한다. 핀다는 판매자와 구매자, 공급자와 수요자 간 금융 정보의 비대칭을 해소하기 위해 탄생했다. 금융 서비스도 쇼핑몰에서 옷을 구매하듯 구매자가 1분 안에 원하는 상품의 정보를 얻고 선택할 수 있도록 도와줘야 한다는 생각이 창업의 바탕이 됐다. 핀다는 국내 260여 개 금융기관의 7000여 개 금융상품 정보를 수집, 사용자들이 이해하기 쉽게 표준화해 제공하고 있다. 금융감독원의 오픈 API(응용프로그램 인터페이스)뿐 아니라 제휴 금융기관의 API를 통해 상품 정보를 직접 전달받는다. 제휴사는 신한은행, KEB하나은행, KB국민카드, 우리카드, 신한카드, 삼성카드, 현대카드, 케이뱅크 등 금융사와 렌딧, 어니스트펀드 등 핀테크사 31곳이다. 이를 통해 주택담보·신용·자동차·P2P 등 대출, 예·적금과 P2P투자 및 펀드 등 투자, 신용·체크카드, 보험상품 등 카테고리별로 상품 비교를 통해 고객에게 최적화된 상품을 추천해준다. 월 방문자 수는 30만 명을 기록 중이며, 지난해 4분기부터 매출이 발생하고 있다. 특히 지난해 11월에는 대화형 상담이 가능한 챗봇 기능을 도입했다. 챗봇에 들어가는 상품 추천 알고리즘과 대화 로직은 6개월의 개발 기간을 거친 순수 자체 기술이다. 이 대표는 “이달 정식 모바일 앱 출시에 앞서 오픈베타 버전을 내놨다. 현재 신용정보사와 기밀유지협약(NDA)을 검토 중으로 조만간 정식 앱 서비스를 시작할 수 있을 것으로 보인다”며 “앞으로 개인의 데이터를 토대로 맞춤형 금융서비스, 궁극적으로는 자산 관리 서비스를 제공하는 것이 목표”라고 말했다.  성공에 안주하지 않고 끊임없이 도전 이 대표는 2007년 STX에 입사해 해외영업을 담당했는데, 금액이 큰 대기업의 글로벌 사업인 만큼 호흡이 길었다. 일은 재미있고 배울 것도 많았지만 업무가 피부에 와닿지 않았다. 그는 5년차가 되던 2011년 고민 끝에 회사를 나와 창업 시장에 뛰어든다. 자신의 의사 결정이 곧바로 회사 경영에 반영되고 현실화될 수 있는 일을 찾기 위한 도전이었다. 잘나가던 대기업을 때려치우려니 주위의 만류도 많았다. 성공에 대한 확신도 없었다. 이 대표는 “내가 가장 취약한 부분, 악조건을 골라 창업해 보고 싶었다”며 “대기업에서는 항상 선택하는 입장에서 영업에 취약했고, 이 부분을 가장 어렵게 느꼈던 터라 발품을 팔고 영업하는 업종으로 창업을 결심했다”고 회상했다. 자본금이 넉넉지 않았던 그는 ‘로켓인터넷(Rocket Internet)’이라는 독일의 벤처 투자 및 육성 회사의 투자, 인큐베이팅을 받아 ‘글로시박스’라는 화장품 정기 배송 스타트업을 창업한다. 미국의 ‘버치박스(Birch Box)’에서 아이디어를 얻은 국내 최초 화장품 정기 배송 업체다. 창업 6개월 만에 손익분기점에 이를 정도로 빠르게 성장했고 스타트업으로선 꿈 같은 일인 해외 진출도 이뤄냈다. 이후 유아용품·유기농 식재료 정기 배송 서비스 ‘베베앤코’를 창업했다. 화장품에서 유기농 식재료로 내용을 바꾼 것이다. 이 대표는 “태풍이나 자연재해로 인해 식재료 수급이 어려웠고, 무엇보다 당시 유기농에 대한 인식이 그리 높지 않을 때라 사업을 성장시키기 어려워 결국 접었다”고 말했다. 이 대표는 세 번째 사업을 구상하던 중 미국 뉴욕의 워크스마트랩스라는 건강관리 관련 앱 개발회사를 알게 된다. 이 팀과 협업을 결정하고 건강관리 앱 회사 ‘눔’을 만든다. 뉴욕에 본사를 둔 눔에서 그는 한국 법인 대표를 맡는다. 사업 1년 만에 137만 명의 회원 유치에 성공, 건강관리 앱계의 ‘우버’로 불리면서 화려하게 재기한다. 4차례의 창업을 통해 이 대표는 본인만의 경영 철학을 구축했다. 그는 “대중이 공감할 수 있는지가 가장 중요하다”며 “사업을 시작할 때 더 나은 상황으로 만들 수 있다는 확신이 서야 한다”고 강조했다.#핀다 #CEO #인터뷰 #기업문화 #스타트업CEO #철학 #인사이트
조회수 898

그럴싸해 보이는데 읽기 힘든 글들의 특징

오늘은 글에 대한 이야기이니, 짤이미지 없이 글만 적어보겠습니다. 이미지 찾기 귀찮아서 그런거 아님 브런치에서 자주 놀다보니, 요즘은 브런치에 올라오는 글들을 읽게 됩니다. 브런치 담당자님들이 꿀같이 픽해준 글들이 아주 찰지더군요. 최근엔 가상화폐 글들이 온통 올라와서 떡락장에 시퍼렇게 멍든 제 가슴을 한층 더 먹먹하게 해주고 있습니다. 이 다양한 글들을 읽으면서 쓰신 분들의 정신세계를 유영하는 즐거움을 느끼고 있습니다. 타인의 표현속으로 풍덩 뛰어드는 것은 아주 아스트랄한 경험이죠. 세상엔 참 다양하고 똑똑한 분들이 많다는 생각을 하며 그러면 도대체 난 뭐하는 놈일까...라는 자기성찰의 시간을 가지기도 합니다.꼭 브런치가 아니더라도 페이스북이든 뭐 트위터를 포함해서 최근엔 다양한 텍스트콘텐츠가 슬며시 떠오르고 있습니다. 시각적 피로가 쌓인 탓도 있겠고, 아날로그한 트렌드가 슬쩍슬쩍 롤라장과 함께 되돌아오고 있는 까닭도 있겠군요.모든 콘텐츠가 그러하듯, 어떤 것은 눈에 땋! 보이면서 공차의 타피오카 펄마냥 쑤욱 읽힙니다. 가끔 너무 잘읽혀서 목에 펄이 걸리는 느낌을 받을 때도 있죠. 거친 리딩이었어..하앍하앍..거리면서. 금손님들의 미친 필력과  일필휘지의 감동을 느낄 때면 동공이 두근대며 살아있음을 느낍니다. 반면 종종 순간 14년전으로 되돌아가 11월10일 그 날의 언어영역 비문학 지문을 보는 기분을 느낄 때도 있습니다. 순간 수능용 시계를 손목에 차고있는 착각을 느껴 깜짝 놀라곤 합니다.우리의 주요 일상은 일집일집일집일집 입니다. 집에서 글쓸 일이야 페북이나 브런치에 썰푸는 것 정도일테고, 주로 글을 쓴다면 일할 때 많이 쓰겠네요. 업무용 텍스트는 결이 다르긴 하지만 궁극적으론 평소의 필력대로 속도와 퀄리티가 결정됩니다. 종종 기획안이나 보고서 등을 보다보면 비슷한 언어영역 시간에 빠져든 기분에 저도 모르게 컴싸를 꺼내들게 됩니다. 밑줄 친 a를 자꾸 찾게 되죠.그래서 오늘은 왜 그럴싸해 보이는 데 어떤 글을 잘 읽히고 어떤 글은 안 읽히는 지 생각해봤습니다. 글 잘 쓰는 방법에 대해선 이미 다양한 콘텐츠들이 나와있으니, 우리는 똥글을 만드는 방법을 알아보도록 하죠.1. Deep하고 Complicated한 Word의 complexity아니 그냥 '마무리' 라고 하면 될 걸 굳이 'Finalize해주시고..' 라고 쓰는 경우가 있습니다. 한/영키도 두번 눌러야 하고 키보드로 따지면 2글자나 더 쳐야하는데 정작 의미는 전혀 다르지 않습니다. 기본적으로 한영혼용체는 가독성을 격렬히 떨어뜨립니다.  인간이 언어를 이해하는 구조는 아주 다양합니다. 소뇌에선 독서에 필요한 운동능력, 그러니까 동공의 움직임, 타이밍, 정확성을 담당합니다. 그리고 전두엽과 좌뇌부근의 브로카 영역에서 언어의 음운/의미 등을 처리하게 되죠. 이 때 마치 컴퓨터의 캐시파일처럼 자주 쓰는 단어는 자동적으로 기억이 나도록 임시저장을 해두기도 한답니다. 그러나 새로운 단어나 외국어가 등장할 경우엔 그 단어의 뜻과 맥락을 파악해야 하니까 새로운 파일을 여는 동작을 하는 셈이죠.  우리는 흔히 책을 대각선으로 읽는다고 생각하지만, 실제 아이트래킹에선 완벽한 대각선을 그리지 않습니다. 밑에 1/3부분은 거의 시선이 가지 않죠. 시작은 왼쪽 상단에서 시작하지만 중간쯤에선 그냥 전체적으로 보이는 단어들을 쏙쏙 뽑아 문맥을 자체적으로 정리하고 이해하는 과정을 거칩니다. 그런데 영단어들이 중간중간에 등장해버리면, 단어만 뽑아서 문맥을 이해할 때 움찔합니다. '어...어서 뜻을 찾아!!''그 뜻이 이 문맥과 맞는지 확인해!!''혹시 잘난 척은 아닌지 파악해!!(?)'등등 언어처리과정에서 몇 개의 추가적인 과정을 거쳐야 합니다. 직관적인 이해를 방해하고 다시 읽고 또 읽게끔 만들죠. 두뇌는 엄청나게 게으르고 귀찮아서, 몇 번 봤는데 자꾸 걸리적 거리면 안 보려고 합니다. 한글과 영어의 혼용체는 일전의 병신보그체라는 이름으로 백성들에게 널리 알려졌는데, 딱히 좋은 느낌은 아닙니다.2. 수동태 작렬"마케팅은 고객으로 하여금, 브랜드로의 접근을 용이케하고 구매에 있어서 원활한 루트를 경험되어지게 한다."영문법에서 까다로운 부분 중 하나가 수동태였죠. be+p.p로 과거분사 뒤엔 항상 전치사가 붙었습니다. 수동형문장은 기본적으로 국문법에서 잘 쓰이지 않기도 할 뿐더러 '조사'를 엄청 쓰기 때문에 문장을 복잡하게 만듭니다. '~로 하여금, ~에게, ~에 의하여, ~하게 한다.' 등의 조사들은 굉장한 지루함을 선사하죠. 반성문에 자주 쓰는 표현입니다. 문장을 억지로 늘려야 하니까요.3. 영문번역체'이러한 연구결과는 상품선택에 있어서 우리에게 주어진 너무 많은 정보가 선택을 어렵게 할 수 있음을 느끼게 한다.'음, 번역체가 사실 잘못된 표현은 아닙니다. 오히려 꽤나 익숙하죠. 우리는 십수년간 영어지문을 기계적으로 독해해왔고, 타일러도 이해못하는 수능외국어영역 문제를 구조화시켜 풀 수 있는 신박한 능력을 지니고 있으니까요. 하지만, 그건 1~5번 중에 답 하나를 고르기 위한 분석을 할 때 얘기이고, 쭉 읽어내려갈 때는 번역체는 꽤나 걸림돌이 됩니다. 사실 저도 번역체를 많이 씁니다. 가장 흔한 예로"씁니다 - 쓰고 있습니다."등의 어미 늘리기와 "그것은 이것과 함께 어쩌고..그녀에게"와 같은 폭풍대명사 사용하기가 대표적이군요. 추가적으론"아름다운 그녀의 목걸이를 본 그는 황홀한 눈빛을 감출 수 없었다.""그는 그녀의 아름다운 목걸이를 보고 황홀함을 감출 수 없었다."등의 관계대명사 수식절 사용도 있겠네요.4. 쓸데없이 괄호/인용구 쓰기도… 돌은 내려놔 주세요. 아무쪼록 빠른 시일 내에 연재를 재개 할 수 있도록 노력하겠습니다. 어차피 기다려주시는 분도 별로 없겠지만(웃음) 그래도 제 글을 기다리는 분들을 실망시키고 싶지는 않으니까! (퍽퍽퍽, 탕! 질질 끌려간다.)오덕체에서 자주 보던 괄호형 혼잣말하기나 쓸데없이 직접인용구를 사용하는 경우도 있습니다. 독서의 맥을 끊죠. '작은 따옴표' 를 자주 쓰는 경우도 마찬가지입니다. 줄바꿈이 너무 많거나 문장부호가 괜히 막 들어가 있는 경우도 있죠. 5. 그냥 뭔 말인지 모르겠는 문장의사가 진단서에 '목감기 콜록콜록' 이라고 쓰면 처방전받을 때 왠지 손을 머뭇거리게 됩니다. 그렇습니다. 말과 글은 상대방의 지식수준과 신뢰와 직결되어 있죠. 하지만 종종 그걸 졸라 뽐내고 싶은 분들이 있는 듯 합니다. 처방전은 약사보라고 주는 겁니다. 약사는 휘갈긴 악필을 이해할 수 있구요. 하지만 소비자와 대중들을 상대로 하는 글에서 전문용어를 폭풍 남발해버리는 건 난 똑똑해!!! 라고 어깨 견장 움찔거리는 느낌이 들어 불편합니다.6. 어설픈 재수없음문법의 문제가 아니라, 이런 내용입니다.'나에게 닥쳐온 시련은 이번 뿐만이 아니었다. 하지만, 내 행동력이 어디 가겠는가. 후우... 이건 나에게 단점이자 장점과 같은 것이었다. 날 괴롭게 하고 잦은 실수에 빠뜨렸지만, 언제나 다시 일어설 힘을 주었던 내면의 힘같은 것이었다.'단점이자 장점이 아니라 그냥 대놓고 난 오늘도 영도다리에서 눈물을 흘리지 따위의 싸이감성을 뿜뿜하는 오글이토글이 글이 아닙니까. 물론 이러한 감성은 2000년대 싸이질의 추억을 깨워주지만 계속 읽어내려가긴 몹시 힘듭니다.7. 접속사 폭발, 끝나지 않는 스토리투머치토커라는 말이 있습니다. 글에도 투머치가 있지요. 도무지 끝나지 않는 문장입니다. 접속사와 쉼표로 끊임없이 연결된 시베리아 횡단열차같은 문장. 도대체 그 끝은 어디일까요. 이런 문장은 읽다가 삼천포로 빠지는 경우가 많습니다. 작성자나 읽는 이나 둘 다 말이죠. 나중에 삼천포에서 만나면 그나마 다행이겠지만 대부분은 각자 제 갈 길을 떠나는 경우가 많습니다.8. 시종일관 날카롭고 저속한 글정부비판에 극단적인 표현들, 가상화폐 비난 등등 의문형 문장이 넘쳐나는 날카롭고 강렬한 글들은 처음엔 임팩트가 있긴하지만 계속 질문만 던지고 따지는데 스크롤을 내리기가 좀 무섭습니다. 굉장히 피로한 글입니다. 마지막에 기똥차게 결론을 내려주면 또 나름의 카타르시스가 있지만 대부분은 마이클 베이영화처럼 처음부터 끝까지 터지고 부서지고 폭발하다가 결국 메간 폭스 엉덩이같은걸 클로즈업하며 끝납니다. 9. 노잼유행어를 쓴다고 재미있진 않습니다.10. 같은 말 반복"가치를 되살리는 일은 결국 그 본질적인 부분을 깨워 세상에 달리는 것과 같다. 이러한 가치의 재생은 사업의 참모습을 깨닫게 하고 고객에게 스토리텔링할 수 있는 기반을 만들어 준다. 때문에 가치에 대해 고민하는 것은 사업자에게 아주 중요한 과정이라고 할 수 있다."똑같은 말을 몇 번 반복하고 있는거야...이렇게 같은 말이 반복되는 이유는 사실 네이버에 "아아아아아...뭐더라" 라고 치는 심리와 비슷합니다. 뭔가 정리가 안되서 계속 그 자리에서 맴돌고 있는거죠. 쓰면서 생각 정리중입니다. 글은 정리를 끝내고 쓰는 겁니다.#모두 즐글 :)
조회수 1103

레진 기술 블로그 - 모두를 위한 설계. 레진 웹 접근성 가이드라인.

레진엔터테인먼트는 글로벌(한국, 일본, 미국) 서비스를 운영하고 있기에 다양한 사람들의 재능과 욕구에 관심이 있습니다. 우리는 웹 접근성에 관심을 기울여 조금 특별한 욕구를 가진 사람들의 문제를 해결하려고 합니다. 소수의 특별한 욕구는 모두의 욕구와 연결되어 있다고 생각하기 때문입니다.조금 특별한 욕구를 가진 사람WHO는 세계 인구의 15%에 해당하는 사람들이 장애가 있는 것으로 파악하고 있습니다. 그리고 보건복지부 장애인 실태조사에 따르면 후천적 장애 발생률은 90% 수준입니다. 이런 통계에 따르면 한 개인이 일생을 살면서 장애인이 되거나 일시적으로 장애를 체험하게 될 확률은 무려 13.5%나 됩니다.저는 적록 색약입니다. 약한 수준의 장애로 분류할 수 있죠. 채도가 낮은 상태의 적색과 녹색을 쉽게 구별하지 못합니다. 충전 중 적색이었다가 완충이 되면 초록색으로 변하는 LED가 박혀있는 전자제품은 전부 망했으면 개선하면 좋겠어요. 전 세계 남성의 8%가 색약이고, 여성은 0.5%가 색약입니다. 대부분 적록 색약이고 마크 저커버그도 적록 색약입니다. 만화가 이현세 선생님도 적록 색약이고요. 한편 색약인 사람은 빛의 밝고 어두움을 구별하는 능력이 뛰어난 것으로 밝혀져 있어 저격과 관측에 탁월한 능력을 발휘합니다. 숨어있는 저격수 빨리 찾기 게임을 해 보세요. 위장 사진 1, 위장 사진 2, 위장 사진 3. 색약인 사람이 이길 것입니다.전맹 시각장애인은 마우스 포인터와 초점을 볼 수 없으므로 키보드만을 사용해서 웹을 탐색합니다. 키보드와 음성 낭독에 의존하지만, 키보드 기능을 정말 잘 다루죠. 그래서 키보드 접근성 문제를 해결하면 시각장애인뿐만 아니라 키보드를 능숙하게 사용하는 사람들의 사용성이 높아집니다. 소수의 특별한 요구사항을 해결하는 것이 모두를 위한 설계와 연결되어 있습니다.결국, 누구에게나 특별히 다른 측면이 있고 그것을 고려할 때 "모두를 즐겁게 하라!"라는 우리의 좌우명에 한 걸음 더 가까워질 수 있다고 믿습니다.도저히 풀 수 없을 것 같은 숙제웹 접근성을 소개할 때 많이 듣는 질문이 있습니다.장애인이 우리 서비스를 이용해요?매출에 도움이 돼요?시간과 비용이 많이 필요하지 않아요?이 질문에 대한 제 대답은 다음과 같습니다.이용한다면 기쁠 것 같아요.큰 도움은 안 될 거예요.조금은 그렇죠. 하지만 반환이 있어요.레진코믹스와 같이 이미지 기반의 콘텐츠를 서비스하는데 웹 접근성을 준수하려고 노력한다는 것은 무모한 도전에 가깝습니다. 왜냐하면, 현재로서는 전맹 시각장애인 고려가 없고 논의조차 쉽지 않기 때문입니다.하지만 달에 갈 수 없다고 해서 일찌감치 체념할 필요는 없겠지요. 쉬운 문제부터 하나씩 풀어 나아가길 기대합니다. 로켓에 올라탔으니까 금방 갈 수 있지 않을까요?W3C 표준을 우리 언어로W3C에서는 WCAG 2.1이라는 웹 콘텐츠 접근성 지침을 제시하고 있고요. 국내 표준 KWCAG 2.1 또한 있습니다. 국내 표준은 W3C 표준에서 중요도가 높은 항목을 우리 언어로 정리한 것이기 때문에 결국 어떤 지침을 선택해서 따르더라도 괜찮습니다.하지만 표준 문서는 너무 장황하고 전문 용어가 많아 다양한 분야 전문성을 가진 직원들과 함께 보기에는 한계가 있다고 생각했습니다. W3C 표준을 근간으로 하되 비전문가도 15분 정도면 읽고 이해할 수 있을 만큼 정리된 문서가 필요했고 레진 웹 접근성 가이드라인 사내 표준을 제안하고 공개하게 됐습니다.의미를 전달하고 있는 이미지에 대체 텍스트를 제공한다.전경 콘텐츠와 배경은 4.5:1 이상의 명도 대비를 유지한다.화면을 400%까지 확대할 수 있다.키보드만으로 조작할 수 있다.사용할 수 있는 충분한 시간을 제공한다.발작을 유발하는 콘텐츠를 제공하지 않는다.반복되는 콘텐츠 블록을 건너뛸 수 있다.모든 문서의 제목은 고유하고 식별할 수 있다.링크와 버튼 텍스트는 콘텐츠의 목적을 알 수 있다.섹션에는 의미있는 마크업과 헤딩이 있다.문서의 휴먼 랭귀지 속성을 제공한다.문맥 변경은 예측할 수 있다.폼 콘트롤 요소에 설명을 제공한다.실수를 예방하고 정정하는 것을 돕는다.HTML 문법을 준수한다.WCAG 2.1 지침의 1.1.1 항목 예를 들어 볼게요.All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below. 사용자에게 제공되는 모든 텍스트 아닌 콘텐츠는 아래 나열된 상황을 제외하고 같은 목적을 수행하는 대체 텍스트를 제공한다.원문 표현보다 아래와 같이 다듬은 표현이 좋다고 보는 것이죠.의미를 전달하고 있는 이미지에 대체 텍스트를 제공한다.물론 사내 지침은 너무 단순하게 표현했기 때문에 지침마다 ‘부연 설명, 관련 예시, 기대 효과, 관련 표준, 평가 도구’ 텍스트와 링크를 간략하게 제공하고 있습니다. 사실상 W3C 표준에 대한 링크 페이지라고 생각해도 괜찮습니다. 사실이 그런걸요.맺음말레진 웹 접근성 가이드라인은 사내 유관 부서 담당자분들께 공유하고 동의를 얻어 사내 지침으로 결정하고 공개할 수 있게 됐습니다. 긍정적으로 검토해 주신 사우님들 감사합니다.레진 웹 접근성 가이드라인은 W3C 표준을 요약한 버전에 불과하므로 누구라도 복제(Fork), 개선 요청(Pull Requests), 문제 제기(Issues)할 수 있습니다."Design for all, amuse everyone!"

기업문화 엿볼 때, 더팀스

로그인

/