스토리 홈

인터뷰

피드

뉴스

조회수 3332

완벽주의라는 마약을 끊자

 오늘은 완벽주의에 대해 이야기해볼까 합니다. 이 이야기에 앞서 완벽주의에 대한 정의를 내리기보다는 제가 생각하는 완벽주의란 어떤 것인지에 대해 경험을 통해 이야기를 시작해볼까 합니다. 제가 얼마나 더럽게 완벽함을 추구했는지를 이야기할 때 보통 우스갯소리로 스타크래프트라는 게임을 플레이하면서 제가 추구했던 전략을 예로 많이 듭니다. 저는 저그 종족을 제일 많이 플레이했었는데 해처리에서 라바를 통해 유닛을 변태 시킬 때 꼭 3마리가 가득 차있어야만 변태를 시켰습니다. 4개의 해처리를 일렬로 짓고 각각의 해처리에서 3개의 라바가 반드시 존재할 때 12개의 라바를 선택한 후 한 번에 유닛을 뽑는 쾌감을 즐기곤 했죠.해처리의 오와 열을 맞추고 각 해처리에서 라바가 3마리씩 나올때까지 기다립니다 친구들과 저녁시간에 가볍게 만날 때는 항상 제 계획대로 움직여야 했습니다. 저는 밤에 언제, 어떻게 집에 갈 건지(혹은 밤샘 술과 노가리를 어느 장소에서 깔 것인지) 조차 미리 정한 후에 친구들과 만나곤 했죠. 데이트를 할 때도 정해진 코스로 정해진 시간에 가야만 했고, 만약 영화나 연극을 보기로 했다면 시작시간 10분 전에 가지 않으면 식은땀이 흘렀기 때문에, 자기 자신과 일행들을 보채며 30분 전에 도착해서 땀을 식히곤 했습니다. 저의 이런 습관은 제가 하는 일에도 영향을 미쳤는데, 프로그램을 코딩할 때 완벽하지 않으면 만들 시도조차도 하지 않게 하는 겁쟁이가 되도록 만들었습니다.(물론 완벽함을 추구하는 것이 득이 될 때도 있었습니다만) 반대로, 저의 시뮬레이션대로 위의 상황이 잘 진행되지 않으면 저는 초조했고 짜증이 났습니다. 내가 계획한 Best plan이 있는데 왜 다른 사람들은 알아주지 않는 걸까. 이 사람들은 정말 생각이라는 게 있는 걸까. 제가 어릴 때 아버지는 준비된 사람에게는 준비된 미래만이 있다며 준비성을 강조하셨습니다. 가훈도 "준비하는 사람이 되자"였지요. 저희 아버지에겐 "준비하는 사람"이 어떤 의미인지는 정확히 모르겠지만 제가 준비성이 철저한 사람이 되려고 노력하면 겪은 경험에 의하면 아버지의 말씀은 반은 맞고 반은 틀렸습니다. 틀린 반쪽에 대한 저의 논리를 뒷받침할 예를 들어볼게요.완벽은 유연을 이길 수 없다 중학교 시절 학교에서 있었던 일입니다. 시간표 중에서 일주일에 세네 번가량은 체육수업이 있었습니다. 체육수업이 있는 날은 집에서 체육복을 챙겨가야 했습니다. 저는 저와 우리 가족의 원칙에 따라 체육 수업 전날에는 시간표를 확인하고 체육복을 챙겼습니다. 하루는 제가 학교에 도착 후에 그날의 시간표를 확인하고 사물함에서 교과서를 꺼내 책상 서랍에 넣는 도중 아차 싶은 겁니다. 예상하셨다시피 집에서 체육복을 가져오는 것을 까먹은 것이죠. 그때부터 저의 등에는 식은땀이 흘렀고 안절부절못하고 다리만 떨 뿐 아무것도 하지 못했습니다. 다행히 제 짝꿍도 체육복을 가져오지 않았다고 했습니다. 체육시간에 체육복이 없으면 수업시간 동안 벌을 받아야 했는데 벌을 받는 사람이 나 혼자가 아니라는 사실에 한시름 놓았지요. 그런데 짝꿍이 이렇게 이야기하는 겁니다."체육복이 없으니 옆반에 빌리러 가야겠다" 우리 반 친구들은 똑같은 시간에 체육수업을 들으니 친한 우리 반 친구의 체육복을 빌릴 수는 없습니다. 그렇다면 그날 체육복을 빌리는 방법은 단 한 가지. 바로 그날 체육수업이 있는 반을 찾아서 누군가에게 헬프를 요청해야 하는 겁니다. 하지만 저는 체육수업이 있는 반을 찾고 누군가에게 도움을 요청하기보다는, 체육복을 까먹은 자신을 탓했고, 체육 선생님께 꾸중을 들어야만 했습니다.즐기는 사람은 (완벽한 사람보다) 행복하다 어렸을 적에 무궁화 꽃이 피었습니다, 깡통차기, 얼음땡과 같은 고전 놀이를 하며 친구들과 지냈던 좋은 기억이 있습니다. 위에 언급된 놀이의 공통점은 소수의 술래가 존재한다는 것이고, 술래가 된 사람은 필사적으로 술래에서 벗어나기 위해 열심히 뛰어다녀야 했습니다. 그리고 놀이를 잘 하는 아이들은(술래를 잘 따돌리고 술래를 하는 빈도가 낮은 아이들) 다른 아이들보다 멋진 녀석처럼 보였지요. 그래서 저도 친구들과 놀이를 할 때면 술래가 되지 않기 위해 필사적으로 노력하곤 했습니다. 가끔은 야비한 수를 쓰기도 했고요. 저와 친했던 웅희라는 친구는 달랐습니다. 이 녀석이 얼마나 특이했냐 하면, 녀석이 술래에게 잡혀 자신이 술래가 되면 입버릇처럼 이렇게 얘기했습니다."더 좋아" 도대체 뭐가 더 좋다는 건지 처음에는 이해를 할 수가 없었습니다. 술래가 더 좋다니? 웅희 녀석은 씩 웃더니 "더 좋아"를 신명 나게 외치면서 우리를 잡으러 다니기 시작했습니다. 그런데 그 모습이 얼마나 멋있었던지 우리는 술래가 될 때마다 웅희를 따라 "더 좋아"를 외치기 시작했지요. 술래잡기가 끝나고 저는 웅희에게 다가가 "더 좋아"의 의미에 대해 물어보았습니다. 왜 네 녀석은 술래가 되었는데 더 좋은지 말이죠. 웅희는 이렇게 이야기했습니다."맨날 안술래(숨는 역할)만 하면 재미없잖아. 가끔은 술래도 해야 재밌지!" 위에서 등장한 두 아이들의 공통점은 무엇일까요? 이들은 일이 벌어지기 전에 미리 이것저것 걱정하지 않습니다. 그들은 상황 대처능력이 빠릅니다. 그리고 자신을 믿고 상황을 즐기기까지 합니다. 이 아이들의 힘의 원천을 한마디로 하면 다음과 같을 것이라고 생각합니다.A bird sitting on a tree is never afraid of the branch breaking,because her trust is not on the branch but on it's own wings.나무에 앉아있는 새는 가지가 부러질까 걱정하지 않는다.그녀가 믿는 것은 나뭇가지가 아니라 자신의 날개이기 때문에. 여러분도 완벽한 나뭇가지를 찾기 위해(또는 만들기 위해) 스트레스를 받고 시간을 낭비하고 있진 않은가요? 만약 제가 유연성을 가지고 체육복을 빌릴만한 비슷한 체구의 아이들을 친구로 만들 능력을 가지고 있었다면 어땠을까요? 안술래가 되기 위해 노력하는 것도 중요하지만 술래가 되었을 때의 또 다른 즐거움을 알게 된다면 어떨까요? 현실이 아무리 비참하더라도 날아오를 날개가 튼튼하다면 걱정할 필요가 없을 것이라고 믿습니다. 아버지가 말씀하신 준비는 날아오를 때를 대비하여 날개를 단련하라는 뜻인지도 모르겠네요. 심리학자 아들러의 말을 마지막으로 글을 마치도록 하겠습니다. 현실은 엄격성보다 정신적 유연성을 요구하기 때문이다. 다시 말해, 우리가 몸담고 있는 현실은 추상 작용을 숭배하거나 신격화할 것이 아니라 적절히 이용할 것을 요구한다는 뜻이다. 어쨌든 세상을 살아가는 데 엄격하게 적용할 수 있는 원리 같은 것은 절대로 없다. 어떤 문제의 해결책으로 아주 정확한 것까지도 지나치게 전면으로 내세워질 경우에 삶의 흐름을 방해할 수 있기 때문이다. 예를 들어, 어떤 사람이 청결과 진실을 삶의 목표로 삼은 경우에 그 목표 자체가 그 사람의 인생을 방해하게 되어 있다.- 아들러의 말 page62에서 발췌, 알프레드 아들러#비주얼캠프 #인사이트 #경험공유 #조언
조회수 1511

비트윈 PC 버전 개발기

지난 10월 20일, 비트윈 PC 버전의 오픈 베타 테스트를 시작했습니다. PC 버전 덕분에 컴퓨터 앞에서 일과 시간을 보내는 직장인들도 편리하게 비트윈으로 연인과 대화할 수 있게 되었습니다. 이 글에서는 PC 버전에 어떤 기술이 사용되었는지 소개하고 약 4개월의 개발 기간 동안 겪은 시행착오를 공유합니다. 비트윈 PC 버전 스크린샷개발 플랫폼 선택¶PC 버전 개발을 본격적으로 시작하기 전에 어떤 개발 플랫폼을 선택할 것인지 많은 고민을 했습니다. MFC나 WinForms 같은 네이티브 플랫폼, Qt 등의 크로스 플랫폼 라이브러리, 그리고 웹 기반 앱 등의 여러 후보를 가지고 토론을 거쳐 웹 앱으로 개발하기로 했습니다.웹 기반으로 개발하게 된 가장 큰 이유는 생산성입니다. PC 버전 팀이 웹 기술에는 이미 익숙하지만 다른 플랫폼은 경험이 많지 않았습니다. 또한, 비교적 자유롭게 UI를 구성할 수 있으며 기존의 각종 개발 도구를 이용하면 빠른 이터레이션이 가능할 것으로 예상했습니다.단, 사용자가 기존에 설치한 웹 브라우저를 통해 접속하는 방식이 아니라 브라우저 엔진을 내장한 실행 파일을 배포하는 방식을 택하기로 했습니다. 여러 브라우저 환경에 대응하지 않아도 되고, 브라우저에서 지원하지 않는 일부 시스템 기능을 직접 확장해서 사용할 수 있기 때문입니다.서버 아키텍처의 변화¶비트윈 서버의 서비스 로직은 Thrift 서비스로 구현되어 있습니다. 그리고 Alfred라는 자체 개발 라이브러리를 사용하여 Thrift 서비스를 Netty 기반의 서버로 구동합니다.기존의 비트윈 모바일 클라이언트는 채팅 서버와 Thrift의 바이너리 프로토콜로 통신하고 있습니다.1 그러나 웹 플랫폼에서는 서버와 지속적으로 양방향 연결을 유지하려면 WebSocket 프로토콜을 사용해야 하므로 Alfred에 WebSocket 프로토콜 지원을 추가하였습니다. 애플리케이션이 아닌 라이브러리 수준의 변화였기 때문에 기존 서비스 코드에 영향을 거의 주지 않고 새로운 프로토콜을 지원할 수 있었습니다.Alfred에 웹소켓 지원을 추가하였습니다.비트윈 PC 버전 셸¶비트윈 PC 버전은 크게 HTML과 자바스크립트로 작성된 웹 앱 부분과 웹 앱을 브라우저 엔진으로 구동해주고 플랫폼 API를 제공하는 셸 (Shell) 부분으로 구성되어 있습니다.비트윈 PC 버전 구조PC 버전 셸은 Chromium Embedded Framework (CEF)를 사용합니다. 이름에서도 알 수 있듯이 Chromium 브라우저 엔진을 애플리케이션에 내장하기 쉽도록 감싸놓은 라이브러리입니다. CEF는 Evernote나 Steam 등 웹 브라우저를 내장한 애플리케이션에서 널리 사용되고 있어 선택하게 되었습니다.2자바스크립트에서 셸이 제공하는 플랫폼 API를 호출할 때는 CEF의 Message Router를 사용하였습니다. Chromium은 멀티 프로세스 구조로 이루어져 있어, 렌더 프로세스에서 작동하는 자바스크립트 코드가 브라우저 프로세스에서 작동하는 C++ 코드를 호출하고 결과를 돌려받기 위해서는 별도의 처리가 필요합니다. Message Router는 이 두 프로세스 사이의 비동기 통신을 지원합니다. 이를 통해 창 투명도 조절이나 트레이 알림 표시 등 원래는 웹 플랫폼에서 지원하지 않는 기능을 확장하여 지원할 수 있었습니다.CEF에서는 Chrome 개발자 도구를 사용할 수 있어 디버깅이 용이했고, 디자이너 옆에서 바로바로 좌표나 색상 등을 바꿔볼 수 있어 협업에도 도움이 되었습니다.그러나 PC 버전을 개발하면서 가장 많은 시행착오를 겪은 부분이 CEF를 다루는 것이었습니다.문서화가 잘 되어있지 않습니다. 그래서 실제 작동 방식을 확인하기 위해 직접 소스 코드를 읽어야 하는 경우가 많았습니다일반적인 웹 브라우저에서는 잘 작동하는 API를 CEF가 자원하지 않거나 버그가 있어 다른 방식으로 구현해야 할 때가 있습니다.CEF에 노출된 API에만 접근할 수 있어 Chromium에서 제공하는 플랫폼 추상화 레이어를 활용할 수 없었습니다.비트윈 PC 버전 웹 앱¶비트윈 PC 버전의 주요 애플리케이션 코드는 HTML과 자바스크립트로 작성되어 있습니다. 자바스크립트로 큰 규모의 애플리케이션을 작성할 때 발생하는 여러 가지 어려움을 피하고자 React 라이브러리 및 최신 자바스크립트 기술을 적극적으로 활용하였습니다.React¶React는 Facebook에서 개발한 오픈 소스 자바스크립트 UI 라이브러리입니다. 일반적인 웹사이트보다는 비교적 복잡한 인터페이스를 구현해야 했기 때문에 jQuery처럼 간단한 라이브러리로는 부족할 것으로 생각하여 비트윈 PC 버전은 처음부터 React를 사용하였습니다.전통적인 개발 방식에서는 UI를 변경해야 할 때 기존에 렌더링 된 DOM 요소에 명령을 내립니다. 예를 들어 어떤 항목을 삭제하려면 그 요소를 찾아서 삭제 명령을 내리게 됩니다. React를 사용할 때는 이와 달리 해당 요소가 사라진 DOM 트리 전체를 다시 생성하면 React가 이전 트리와 새 트리를 비교하여 바뀐 부분만 반영해줍니다. 전체를 다시 렌더링하기 때문에 기존에 DOM 트리가 어떤 상태였는지 신경 쓰지 않고도 원하는 상태로 쉽게 변경할 수 있어 UI 코드의 복잡도를 줄일 수 있습니다.또한, React의 컴포넌트 시스템은 독립적인 UI 요소들을 서로 영향을 주지 않고 조합할 수 있도록 해주어, 한가지 컴포넌트를 수정했을 때 의도하지 않은 다른 컴포넌트와 간섭하는 문제가 적게 발생합니다. 비트윈 PC 버전에는 약 40가지의 React 컴포넌트가 쓰이고 있습니다.자바스크립트 모듈 시스템¶모든 코드를 한 파일에 넣으면 코드를 관리하기가 힘들어집니다. 따라서 서로 관련 있는 코드끼리 모듈로 나누어야 하는데, 자바스크립트에는 모듈 시스템이 기본적으로는 제공되지 않습니다. 비트윈 PC 버전에서는 CommonJS 표준을 따라서 모듈을 나누고, 이를 웹 브라우저가 해석할 수 있는 형태로 합쳐주는 Webpack 빌드 툴을 사용했습니다.Webpack은 자바스크립트뿐만 아니라 CSS나 이미지, JSON 파일 등도 모듈로 취급할 수 있고, 플러그인으로 지원하는 모듈 종류를 추가할 수 있습니다. 비트윈 PC 버전을 빌드할 때 실제로 사용하는 플러그인은 다음과 같은 것들이 있습니다.jsx-loader: React에서 사용하는 JSX 코드를 자바스크립트로 변환합니다. 또한, 미래의 자바스크립트 문법을 현재 브라우저에서 지원하는 형태로 변환합니다.less-loader: LESS 파일을 CSS 파일로 변환합니다.css-loader: CSS에서 참조하는 외부 리소스를 인식하여 의존성을 파악해줍니다.url-loader: 파일 크기가 일정 이하인 리소스를 Base64 인코딩으로 내장해줍니다.ECMAScript 6¶ECMAScript 6는 차기 자바스크립트 표준입니다. 현재 자바스크립트의 불편한 점을 많이 해소하기 때문에 장점이 많이 있습니다. 일부 기능은 이미 브라우저에 구현되어 있지만, 아직 지원되지 않는 기능도 있어서 jstransform을 통해 ECMAScript 5 코드로 변환하여 사용하였습니다.화살표 함수: 익명 함수를 (a, b) => a + b와 같은 문법으로 훨씬 간단하게 선언할 수 있습니다. 또한, this 변수의 스코프를 현재 코드 상의 위치에 따라 결정해줍니다.클래스: 다른 언어와 유사한 클래스 문법을 제공합니다. 상속이나 접근 제한도 가능합니다.해체(destructuring) 대입: 객체의 필드를 바로 같은 이름의 변수에 대입할 수 있습니다. 예를 들어, var {a, b} = {a: 1, b: 2}; 같은 코드를 작성할 수 있습니다.기타 사용된 패키지¶RSVP.js: Promise/A+ 구현을 제공하는 라이브러리로, Promise 패턴을 사용하여 비동기 로직을 알아보기 쉬운 형태로 작성했습니다.FormatJS: 다국어, 국제화 지원을 위한 라이브러리입니다. UI 메시지 번역이나 날짜, 시간 등의 포매팅에 사용했습니다.정리¶비트윈 PC 버전은 개발 비용을 줄이기 위해 웹 플랫폼 기반의 네이티브 애플리케이션으로 개발되었습니다.비트윈 서버에서 사용하는 Alfred 라이브러리에 WebSocket 프로토콜 지원을 추가하였습니다.Chromium Embedded Framework를 브라우저 엔진으로 사용하여 웹 앱을 구동하고 웹 플랫폼에서 제공하지 않는 기능을 확장하여 사용했습니다.자바스크립트 코드의 복잡도를 줄이기 위해 React, CommonJS, ECMAScript 6 등의 기술을 활용하였습니다.VCNC Engineering Blog, 비트윈 시스템 아키텍처, 2013년 4월↩Wikipedia, Chromium Embedded Framework - Applications using CEF↩저희는 언제나 타다 및 비트윈 서비스를 함께 만들며 기술적인 문제를 함께 풀어나갈 능력있는 개발자를 모시고 있습니다. 언제든 부담없이 [email protected]로 이메일을 주시기 바랍니다!
조회수 3867

소셜 네트워크 분석(Social Network Analysis)이란?

소셜 네트워크 분석은 이벤트 로그 데이터를 작업자(Resource), 사회적 관점에서 분석하는 것입니다. 이벤트 로그의 속성 중에 누가 수행했는지를 나타내는 작업자(Resource) 속성이 있습니다. 이러한 속성을 사용하여 간단한 형태의 소셜 네트워크 분석을 할 수 있습니다. 소셜 네트워크 분석을 위한 방법에는 작업자-액티비티 매트릭스(Resource-Activity matrix), 핸드오버 매트릭스(Handover of work matrix) 등이 있습니다.작업자-액티비티 매트릭스(Resource-Activity matrix)는 누가 무엇을 하고 있는지에 대한 기본 인사이트를 제공해 줍니다. 작업자-액티비티를 작성하면 한 작업자가 특정 액티비티를 몇 번 수행했는지 알 수 있습니다. [그림 1] 이벤트 로그 예제[그림 2] 작업자-액티비티 매트릭스(Resource-Activity matrix)[그림 1]의 이벤트 로그를 이용하여 [그림 2]와 같은 작업자-액티비티 매트릭스를 작성할 수 있습니다. 작업자-액티비티 매트릭스에서 한 셀의 값은 케이스당 해당 액티비티를 특정 작업자가 수행한 비율을 나타냅니다. 예를 들어 [그림 2]의 액티비티 a열의 내용을 보면 a열의 총합 1(0.3+0.5+0.2)은 케이스당 액티비티 a가 평균 1회 발생하는 것을 의미하고, 액티비티 a는 오직 Pete, Mike, Ellen만이 작업하고 그 비율은 Pete 30%, Mike 50%, Ellen 20% 임을 알 수 있습니다. 액티비티 e의 경우에는 Sara만 수행하고, 케이스당 평균 2.3회 수행되는 것을 의미합니다. 즉 액티비티 e는 한 케이스당 여러 번 발생하는 것을 알 수 있습니다. 작업자 관점에서 보면 Sean은 액티비티 b만 수행하고, Sara는 e와 f만 수행하고 있습니다.핸드오버 매트릭스는 작업이 어떻게 전달되었는지에 초점을 맞추어 분석합니다.[그림 3] 핸드오버 매트릭스(Handover of work matrix)[그림 1]의 이벤트 로그로 [그림 3]과 같은 핸드오버 매트릭스를 만들 수 있습니다. 핸드오버 매트릭스에서 한 셀의 값은 한 작업자가 다른 작업자에게 작업을 전달하는 비율입니다. 예를 들어 Pete가 자기 자신에게 작업을 전달하는 비율, 즉 연속해서 작업을 하는 경우는 케이스당 평균 0.135회 발생하고 있습니다. 이는 Pete가 여러 작업을 수행하고 있어 자기 자신에게 작업을 전달하는 것일 수도 있고, 재작업으로 인한 반복 업무가 나타나는 것일 수도 있습니다. Sara가 Mike에게 업무를 전달하는 경우는 케이스당 평균 1.475회 발생하여 두 사람은 업무 연결도가 상당히 강하고 두 작업자 사이에 강한 Causality 관계가 있을 가능성이 높습니다.[그림 3]의 핸드오버 매트릭스를 기반으로 한 소셜 네트워크를 구해 보면 [그림 4]와 같이 표현할 수 있습니다. [그림 4] 핸드오버 매트릭스 기반 소셜 네트워크작업자와 작업자를 연결하는 화살표는 작업을 넘겨주는 관계를 표시하며, 화살표의 두께는 작업 전달 빈도를 나타냅니다. Mike와 Sara의 경우 서로 두꺼운 화살표로 연결되어 있어 두 작업자 간의 업무 전달 빈도 수가 높고 업무 연관 관계가 높음을 알 수 있습니다. Sara의 경우 모든 작업자와 연결되어 있어 핵심 업무 수행자일 수도 있고 모든 프로세스의 공통 업무를 담당하고 있을 수도 있습니다.핸드오버 매트릭스는 소셜 네트워크를 만드는 많은 방법 중 하나입니다. [그림 4]의 핸드오버 매트릭스 기반 소셜 네트워크에서 같이 일하는 그룹을 같은 노드 색깔로 표시하고 노드의 크기를 특정 작업자가 수행한 작업 빈도 수로 표시하면 또 다른 정보를 얻을 수 있습니다. 또한 케이스 기반으로 소셜 네트워크를 그릴 경우 같은 케이스를 수행하는 사람들의 업무 관계를 파악할 수 있습니다.이벤트 로그는 업무 프로세스 내의 업무 관계에 대해 다른 관점을 만드는 많은 정보를 제공합니다. 누가 가장 중심 업무를 수행하는지, 같이 일하는 그룹은 누구인지, 업무 상관성은 누가 높은지를 알 수 있습니다. 따라서 프로세스에서 작업자의 행동을 분석할 수 있으며 이는 종종 개선된 업무 방식에 대한 단서를 제공합니다. 소셜 네트워크 분석으로 다양한 인사이트를 얻기를 바랍니다.#퍼즐데이터 #개발팀 #개발자 #개발후기 #인사이트
조회수 2485

[Buzzvil Culture] Buzzvil Global Workshop 2018 in Bali

 “일 년중 가장 기대되는 회사 행사가 무엇인가요?” 라는 질문에 대해 누군가는 그런게 존재할 수 있냐며 반문하겠지만, 버즈빌리언들에게 묻는다면 열에 아홉은 분명히 글로벌 워크샵을 꼽을 겁니다. 회사 사람들과 함께 5일동안이나 같이 있어야 하는데 끔찍하지 않냐구요? 천만에요! 즐거움과 추억으로 가득했던 2018 버즈빌 글로벌 워크샵의 현장으로 여러분들을 초대 합니다.매년 그래왔듯이 버즈빌 글로벌 워크샵은 일주일 간의 프리워크샵으로 시작했습니다. 프리워크샵 기간동안 한국, 미국, 일본, 대만에 퍼져서 일하고 있는 모든 글로벌 멤버들이 한 곳에 모여서 각 오피스의 업무 상황을 공유하고 하나의 버즈빌로서 앞으로 어떤 방향으로 달려가야할지를 논의하고 조율하는 시간을 가졌습니다.다양한 이야기가 오갔던 프리워크샵을 와인파티로 마무리하고 드디어 모두가 기다리고 기다리던 해외 워크샵을 떠났습니다. 이번 해외 워크샵 장소는 발리였는데요. 작년 해외 워크샵이 아쉽게 불발 되었기에 더더욱 기다려졌던 해외 워크샵이 아니었나 합니다. 워크샵 기간동안 버즈빌리언들은 여러가지 액티비티들을 통해 서로에 대해 알아가며 하나가 되고 소중한 추억을 만들며 휴식할 수 있는 시간들을 보냈습니다. “일할 때는 열심히, 놀 때는 더 열심히” 라는 버즈빌의 정신에 부끄럽지 않게 자는 시간도 쪼개가며 워크샵을 즐기는 버즈빌리언들의 모습을 통해 다시 한번 버즈빌리언들의 남다른 열정을 확인할 수 있었습니다.  이번 워크샵이 더 특별했던 이유는 버즈빌리언 스스로가 액티비티를 기획하고 진행하는 시간들이 있었기 때문입니다.  절반 이상의 버즈빌리언들이 참여한 서핑부터 발리의 아름다운 바닷속을 감상할 수 있었던 다이빙, 별이 쏟아질 듯한 밤하늘과 잊지 못할 일출을 볼 수 있었던 하이킹 등 내가 다른 버즈빌리언들과 함께하고 싶은 액티비티를 직접 정하고 팀원을 모집해 함께 즐길 수 있었기에 더욱 즐거운 워크샵이 되었던 것 같습니다.  워크샵의 하이라이트는 바로 둘째날 저녁에 진행되었던 “버즈빌리언 어워드” 였습니다. 버즈빌에서는 매년 워크샵마다 버즈빌의 5가지 인재상에 맞는 버즈빌리언들을 추천받아 시상하는 버즈빌리언 어워드를 진행해왔습니다. 그런데 이번 버즈빌리언 어워드는 기존의 버즈빌리언 어워드와는 조금 달랐는데요. 그 이유는 올해에는 모든 버즈빌리언이 버즈빌리언 어워드의 주인공 이었기 때문입니다.  모든 버즈빌리언들은 HR팀에서 준비한 감사장과 선물을 받았고, 오늘 날의 버즈빌이 있기까지 숨가쁘게 달려온 시간들을 돌아보고 각자의 자리에서 누구보다 치열하게 최선을 다한 스스로와 서로를 축하하고 격려하는 시간을 가졌습니다. 이 시간을 통해 ‘나’가 아니라 ‘우리’로 일하는 것이 얼마나 가치있는 일인지를 돌아보고 버즈빌리언 한 명, 한 명이 버즈빌에 정말 필요하고 소중한 사람이라는 것을 느낄 수 있는 시간이었습니다.  순식간에 지나간 5일의 시간이었지만, 지난 겨울 구글 정책 변경으로 인한 여러가지 일들을 잘 마무리하느라 누구보다 치열한 시간들을 보냈던 버즈빌리언들이 스스로에게 충분한 쉼을 줄 수 있었던 쉼표같은 시간이 되었다는 점에서 큰 의미가 있는 시간이었다고 생각합니다. 과연 내년 글로벌 워크샵 어디로…?
조회수 705

보고 듣고 깨달은 업무의 40가지 진실

요 근래 많은 대표님들이 큰 영감님들을 주셔서 하루하루 재미있는 에피소드와 신기한 요지경 업무세상에 대한 인사이트를 넓혀가고 있는 중입니다. 그래서 이 재밌는 걸 정리해서 써보았습니다. 지엽적인 사견이 가득하니 그냥 웃고 말자는 식의 글로 봐주시면 되겠습니다.1. 내가 원하는 대로 뭔갈 만들어서 가져오는 사람은 원래 없습니다. 교수님이 원하는 과제퀄리티와 같은 느낌인 것 같습니다.  2. 보통 10마디를 지시하면 청자의 머릿속엔 1문장 중에 목적어와 희미한 서술어정도만 기억에 남는 듯 합니다. "에빙하우스의 망각곡선"은 진리였습니다.3. 스타트업엔 크리에이티브한 사람보다 일을 땋땋땋,챡챡챡하는 사람이 더 필요합니다.4. 쾌활하고 끼가 많은 것과 크리에이티브함과는 아무 상관관계가 없습니다.5. 기발한 발상과 아무말은 다릅니다.6. 전략/기획자 뽑기보다 메일 잘 보내는 사람 뽑기가 더 어렵습니다.7. 똑똑한 사람보다, 상식이 많은 사람이 일할 땐 더 좋은 듯 합니다.8. 업무지시는 3형식이 좋은 것 같습니다. "너는 보고서를 만들어""보고서의 중요한 부분을 표시해" "그걸 나에게 가져와"9. 8번을 끊지않고 한 문장으로 지시하면 혼란한 종이를 받을 수 있습니다.10. 생각보다 자기가 일을 잘한다고 생각하는 사람이 많습니다. 일잘은 내가 아니라 남이 인정하는 겁니다.11. 그리고 상상이상으로 일 못하는 사람들이 많습니다. 물론 나와 다르게 일을 하는 것을 제외하고서라도 말입니다.12. 10명기준으로 1명정도는 평타이상의 업무능력을 보여주는 보배가 등장합니다. 10명 미만이면 보통 대표가 그 사람입니다.13. 대표님들은 항상 지병이 있습니다.14. 제가 만나본 대표님들은 항상 후즐근한 옷과 피곤한 표정, 급하게 뛰어오시고, 끝나고 항상 어디가야하고, 끊임없이 울리는 카톡과 전화에 '잠시만요.' 를 자주 언급하십니다.15. 제 사견으론 3차면접은 면접 대신 엉망진창이 된 파일더미를 주고 15분 내에 폴더정리를 해보렴. 이라고 과제를 준 후 그렇게 정리한 이유와 이걸 어떻게 활요할 건지 묻는 과제형테스트가 있었으면 좋겠습니다.16. 정리는 상당한 고급종합스포츠입니다. 드러운 것을 보고 깨끗한 그림을 그릴 수 있어야 하고, 일단 꺼내고 다시 정리하면서 순서, 구상, 작업, 체계, 활용여부, 마무리를 지을 수 있어야 합니다. 아무나 하는게 아님.17. 네트워킹파티가 많이 열릴수록 명함인쇄업체와 리멤버의 매출이 올라갑니다.18. '가치'란 말은 종종 불확실함과 나도 잘 모르겠음을 커버치는 보자기로 활용됩니다.19. 대부분의 디자인은 이론을 구현하는 게 아니라 상대의 욕망을 구현하는 작업입니다. 물론 공공/서비스 등 큰 영역에선 예외입니다.20. 도가 넘치게 상상이상의 놀라움을 보여주는 직원이 한 명씩 나타납니다. 우리의 멘탈과 인내심은 이러한 분들로 하여금 한발 더 성장할 수 있습니다.21. 무슨 컨퍼런스가서 뽐뿌받고 열정넘쳐서 '새로운 나로 다시 태어난 것 같다.' 라고 하는 건 좋은데 손과 머리는 그대로일 수도 있습니다. 성장은 느낌이 아닌 결과로 보여지는 겁니다.22. 말이 많은 것과 말을 잘하는 것은 다릅니다.23. 가치는 매출로 증명합니다.24. 현실적인 것과 시니컬한 것은 구별해야 합니다. 시니컬한 사람은 자길 현실적이다라고 하는데, 그건 그냥 시니컬한겁니다.25. 일 잘하는 사람들은 항상 뭔가 힘듭니다.26. 누군가가 똥을 싸놓으면 자연분해되서 없어지는 것 같지만, 그런 건 없습니다. 내가 모르는 누군가가 치운겁니다.27. '멋져요!' 란 말은 사실 그냥 하는 말입니다.28. 좋아요수는 매출이 아닙니다. 그리고 내 페친이 2,000명이라고 해서 그 중 10%는 사주지 않을까?라는 생각은 이상한 겁니다.29. 수평적문화에는 앞에 '경우에 따라' 라는 말이 생략되어 있습니다.30. 인간은 맞아야 말을 듣는건가?...라는 생각을 종종 하고 있다면 정상입니다.31. 내가 이상한 거 아닌가?라는 생각이 드는 것도 정상입니다. 이상한 사람들은 자기가 이상하다고 생각하지 못합니다.32. 우리 회사만 이상한 게 아닙니다. 다 도찐개찐입니다.33. 멍청한 사람들이 모이면 양으로 발산할 가능성이 높지만, 똑똑한 사람들이 모이면 음으로 수렴할 가능성이 높습니다.34. 종종 드는 생각입니다만..직무교육이 지옥캠프같다면 어떨까 싶습니다. 3일간 가둬놓고 메일만 72시간 내내 쓰게 하는 것도 나쁘지 않다고 생각합니다.35. 동기부여는 체화가 곁들여져야 의미가 있습니다. 침대에 누워서 의지만 가득한 건 어딘가 이상합니다.36. 보통 인간은 '정기적인 무언가'를 지독하게 못합니다.그런 것이 정착되기까진 못해도 3개월 이상이 걸립니다.37. 종종 디자인은 부족한 내실을 가리기 위한 가면처럼 쓰이기도 합니다.38. 일은 배운다고 되는 것이 아닌 것 같습니다. 교육과 경험을 통한 성장은 분명하지만, 그 한계량은 정해진 듯한 느낌입니다.39. 일못하는 사람은 일잘러의 육체를 상하게 하고, 인성이 나쁜 사람은 일잘러의 마음을 상하게 합니다.40. 일못러는 다른 업무로 변환이 가능하지만, 인성이 나쁜 사람은 빨리 잘라야 합니다. 나쁜 사람이 일을 잘한다고 해도 잘라야 합니다. 원래 암세포는 못나거나 망가져서 그런게 아닙니다. 돌연변이로 인해 자기 깜냥 이상의 분열능력을 지니고 있기 때문에 암세포가 되는 겁니다.
조회수 5974

MOIN 대표를 소개합니다

오늘은 저희 MOIN을 이끌고 계신 서일석 대표님에 대해 소개해볼까합니다.#이선균 뺨 치는 멋진 목소리를 가지신 대표님은 핀테크 스타트업에 어울리는 이력을 자랑하십니다.일문일답을 통해 대표님에 대해 알아가보겠습니다.이선균 목소리를 가진 MOIN 서일석 대표-Professional Experience-2015.07 - 2016. 03 옐로금융그룹 CSO2014.06 - 2015.07 퓨처플레이 투자총괄2011.07 - 2014.05 소프트뱅크벤처스 책임심사2007.08 - 2011.07 삼성전자 선임연구원-Education-Carnegie Mellon Univ. Software Engineering 석사KAIST 전산과 학사서울과학고등학교 ▶     여태까지 밟아 오신 커리어에 대해 간략하게 소개해주시겠어요?저는 과학고-공대-공학석사를 거친 전형적인 공돌이었습니다. 제 첫 커리어 역시 삼성전자 소프트웨어 연구 및 개발에서 시작했지요. 제가 스타트업 세계에 발을 내밀게 된 건 ‘소프트뱅크벤처스코리아(Softbank Ventures Korea)’에서 벤처캐피탈리스트(이하 VC)로 일할 때부터입니다. 이후로는 퓨처플레이와 옐로금융그룹 초기 창업진에 참여하면서 스타트업 세계에 본격적 뛰어 들게 됐죠. ▶     금융공학을 공부 하셨던건가요? 어떻게 컴퓨터 공학에서 VC로 커리어를 전향하신 건가요?금융공학을 공부한 건 아닙니다. 삼성전자에서 4년을 보내고 박사 과정을 밟을지, 원했던 창업을 할지 고민이 많았습니다. 하지만 아무리 생각해도 엔지니어로서의 커리어만으로 창업을 하는 게 위험하다는 생각이 들었습니다. 경영을 위한 재무나 관리 등에 대한 경험이 없었기 때문입니다. 이를 직간접적으로 겪어볼 수 있겠다 싶었던 것이 바로 VC라는 길이었습니다. 투자를 할 가치가 있는 벤처를 선별해내는 과정에서 스타트업 세계를 직•간접적으로 체험할 수 있었습니다.▶     창업을 하고 싶으셨던 건 꽤 오래 전부터였던가 보네요?먼저, 고등학교 시절부터 접해온 소프트웨어 개발과 이를 기반한 창업 모델에 익숙했습니다. 또 학사와 석사 모두 컴퓨터 공학을 전공하다 보니, 선후배나 동료 중에 엔지니어로서 창업을 하거나 스타트업 초기 멤버로 합류한 케이스가 많았습니다. 이런 모습을 지켜보면서 “나도 내 스스로 만든 서비스나 상품으로 창업을 하고 싶다”는 목표가 생겼습니다.  하지만 창업을 결심하고 하게 되기까지는 시간이 많이 걸렸습니다. 실패에 대한 두려움도 있었지만, 무엇보다도 부담감이 컸습니다. 창업이란 게 혼자만 실패하면 그만인 것이 아니라, 함께 일하게 될 동료들을 책임져야 하는 일이기 때문이죠. 결코 만만하게 볼 수 없는 부분이었습니다. MOIN을 소개하고 있는 서일석 대표▶     그러면 MOIN이란 스타트업은 어떻게 시작하셨나요?2014년 퓨처플레이에서 투자총괄로 근무하고 있을 때 창업 아이템을 4개 정도 가지고 있었습니다. MOIN 서비스 역시 그 중 하나였죠. 그 중 사용자들의 니즈가 가장 큰 부분이 해외송금 서비스라고 생각했습니다. 해외송금은 전통적으로 은행 영역인데, “비싼 수수료 + 느린 송금 속도 + 복잡한 절차와 수수료 구조”로 사용자들이 크게 불편함을 느끼고 있었습니다. 저 역시 카네기 멜론 대학원에서 석사를 지내면서 해외송금 불편함을 직접 경험해보기도 했구요. 하지만 결코 경험에서 나오는 ‘감’으로만 창업에 뛰어든 건 아닙니다. 소프트뱅크벤처스코리아에서 VC로 지내면서 깨달은 점이 있었습니다. ‘경험만으로는 창업을 할 수 없다’는 점과 ‘사업에는 시장이 있어야하고, 그 시장의 성장성도 있어야 한다’는 것이었죠. 이 깨달음을 바탕으로 철저한 시장 조사를 진행했습니다. 블록체인을 기반으로 한 해외송금 시장은 이미 유럽과 북미 등지에서 크게 성장하는 검증된 사업 모델이었습니다. 특히 아시아의 금융 시장은 유럽과 북미에 비해 국가별로 법과 규제가 비교적 많아, 성장을 하지 못하고 있었죠. 하지만 최근 몇 년 사이 아시아에서도 ‘핀테크 바람’이 불며 규제들이 완화되는 추세입니다. 해외송금 서비스를 실행하기에 가장 적기라고 판단했습니다. 뿐만 아니라 옐로금융그룹에서 근무할 때, 개인자산관리, 모바일 결제, 금융 큐레이션 등 기존 금융 서비스가 진보된 기술과 만나 새로운 ‘핀테크 서비스’로 업그레이드 되는 걸 지켜보면서 해외송금 역시 기존 방식에서 탈피하여 더 나은 서비스로 선보일 수 있겠다는 자신감이 생겼습니다."회사는 결국 사람이 하는 것이라 생각합니다"▶     아이템을 고안해내고 창업하기까지 꽤 걸린 셈이네요. 함께 창업하신 분들은 어땠나요?회사는 결국 ‘사람’이 하는 것이라 생각합니다. 그런 의미에서 창업하는 과정에서 정말 중요한 부분 중 하나는 역시 ‘사람’입니다. 아무리 좋은 아이템이더라도 사업비전을 함께 공유할 수 있는 창업 멤버들이 있어야 하는 법이라고 생각합니다. MOIN은 저뿐만 아니라 서홍석 개발자와 김보람 디자이너가 함께 하고 있는 핀테크 스타트업입니다. 특히, 두 분은 각각 다른 스타트업에서 공동창업을 해보고, 운영해 본 경험이 있습니다. 각자가 지닌 전문성(개발, 디자인)은 물론이고, 스타트업 생태계에 대한 이해도 역시 높아 앞으로 험난한 여정을 같이 동료로서 창업을 결심하는 데 큰 힘이 됐습니다. 서일석 대표에게 '함께 일하고 싶은 사람'이란?#열정 #책임감 #전문성▶     첫 커리어를 시작했을 때 자신의 모습과 지금 모습을 비교해본다면 무엇이 달라졌나요?삼성전자에서 엔지니어로 일할 때는 내가 맡은 업무만 잘하면 됐습니다. 하지만 스타트업을 운영하는 대표는 신경써야 하는 부분들이 굉장히 많습니다. ‘멀티플레이어’가 돼야 하죠. 기획, 개발, 디자인, 투자유치, 재무, 법무 등 많은 영역에 있어 결정을 하고 책임을 져야 합니다. 상당한 내공이 필요한 위치인 것 같습니다. 엔지니어에서 VC로 커리어를 전환한 게 큰 도움이 되고 있습니다. 투자심사역으로 어떤 스타트업이 전도유망한지 판단해보고, 퓨처플레이와 옐로금융그룹에서 스타트업 운영진으로서 경험해본 일이 무엇보다도 소중한 자산이 됐습니다.▶     앞으로 어떤 경영인이 되고자 하시나요?함께 성장하는 경영인이 되고 싶습니다. 특히 지금 MOIN은 소수정예로 이루어진 초기 스타트업 회사입니다. 이런 곳에선 개개인의 성장이 곧 회사의 성장이지요. 직원 하나하나가 그 능력과 역량을 키우는 데 있어 도움이 되고 싶습니다. 그러기 위해선 저부터도 배우고 성장해야 되지 않을까요? - 서일석 대표가 꼽은 인생 명언 -知之者不如好之者, 好之者不如樂之者어떤 사실을 아는 사람은 그것을 좋아하는 사람만 못하고,좋아하는 사람은 즐기는 사람만 못하다by. 공자 대표님이 창업을 결심하는 데 큰 기여를 하셨다는 두 분!다음 편에서는 창업진(개발자와 디자이너 순)을 소개해보겠습니다.기대해보셔도 좋습니다! #모인 #MOIN #대표소개 #팀원소개 #인터뷰 #팀원인터뷰 #팀원 #대표
조회수 1125

카카오 뱅크, 미완성.

일단, 가장 큰 문제는 '성능장애'문제이다. 아직도, 가입에 불편을 겪는 사용자들이 존재하고, 대출 서비스를 이용하려는 사람들은 거의 신청을 제대로 했다는 사람을 보기가 어렵다. 이 문제는 예측하건대, 기존의 뱅킹 시스템을 그대로 옮겨왔다는 이야기가 거의 기정사실로 보인다고 이야기할 수 있다.기존의 뱅킹 시스템들의 특징은 매우 당연하게도 대출신청과 같은 시스템들이 일반 고객들에게까지 오픈된 환경을 고려하여 디자인되어 있지 않았을 것이라고 추측할 수 있다.현재는 그나마 오류를 발생시키고, 사용자가 많다는 메시지를 지속적으로 보여주고 있기 때문에, 기존 다른 신용조회 서비스의 용량이나 내부 프로세스의 성능 부분들에 대해서 추가적인 개발이 거의 되지 않았다고 보이는 것은 이런 오류들의 상황 때문이다. 몇 가지 사례를 정리해보자.1. 가입 신청 시에 '오류'를 일으킨다. 문제는 대량의 요청이 들어왔을 때이다.2. 가입이 되는 절차상에서도 휴대폰 인증과 관련된 대량의 요청에도 '오류'를 일으킨다.3. 가입 이후에도 '대출신청'이나 '대출조회'와 같은 대량의 요청에도 '오류'를 일으킨다.대부분 '대량 요청'에 대해서는 처리를 못하고 있다는 것을 보면, 카카오 뱅크의 시스템은 모바일 앱은 카카오의 신규 개발자들이 만들었지만, 내부 백엔드 서비스는 기존의 은행 솔루션이나 은행의 기존 서비스 형태의 모습 그대로인 것으로 보인다.사실, 이러한 '오류'와 '장애'에 대해서 '앱'을 통한 서비스를 하게 되면 다음과 같은 방법으로도 충분하게 개선시킬 수 있었을 것이다.1. 사용자의 요청이 카카오 뱅크에게 들어온다.2. 대량의 사용자의 요청이 들어왔을 경우에는 '신청'만 받고, 처리가 되는 순서대로 '서버에 등록'한다.3. '서버에 등록된 순서'대로 처리를 한 다음, 처리된 내용을 '앱'으로 Push 서비스한다.4. 사용자는 앱에 Push 된 절차에 따라서, 다음 절차로 진행한다.모바일을 중심으로 디자인되었다면, Pull/Push방식이 적절하게 사용되면서, 아무리 폭주가 된다고 하더라도, 느리지만, 서비스의 동작은 가능하도록 설계되거나 디자인되고, 개발되었을 것이다.하지만, 이런 방식으로 카카오 뱅크의 앱은 동작하지 않고 있다.그래서, 아직 카카오 뱅크의 서비스는 완성된 것이 아니라고 이야기할 수 있다.이 부분이 기존 은행 앱들이거나 다른 은행들이 시도할 수 있는 좋은 방식이며, 너무도 당연한 방식이다.다만, '모바일'을 모르는 경영진들의 생각 때문에 그런 UX가 가동되고 있지 못하는 것 같다.물론, 보안 문제나 순서가 틀어졌을 때의 상황에 대한 걱정을 한다는 것 자체가 보안과 모바일에 무지한 생각이라는 것을 간단하게 적어두자.분명한 것은 아직 카카오 뱅크는 미완성이라는 것이다.다른 모바일 앱과 은행 앱들은 공인인증서를 빨리 사라지게 하고, UX를 개선하는 것으로 충분하게 카카오 뱅크에 대응이 가능하다. ( 물론, 안 하거나 늦겠지만... )아예, 카카오 뱅크의 서류제출 기능도 공인인증서나 PC가 아니어도 가능하게 하면 어떨까?파격적인 은행 앱을 기대해본다.뭐, 어렵겠지만...
조회수 821

[Tech Blog] Keep Principles in Mind

원칙(Principle)은 중요합니다. “난 원칙대로 살지 않겠어!” 라고 외치고 싶더라도, 원칙이 있고 원칙을 충분히 이해하고 있지 않다면 그저 사춘기 소년/소녀의 이유 없는 반항 정도로 밖에 들리지 않을테니까요. 사실 대부분의 이런 경우 원칙 보다는 “규칙(Rule)대로 살지 않겠다”에 가깝지만, 여기에서는 그냥 넘어가도록 하죠. 소프트웨어 개발에도 다양한 원칙들이 존재합니다. 학부 수업에서 잠깐 들었거나 이런 저런 글들을 읽다가 접해 봤을 이런 원칙들은 실제 서비스를 만들면서 바쁘게 기능을 추가하고 버그를 수정 하느라 어느새 기억 속에서 잊혀지곤 하죠. 정신없이 기능을 구현하다가 문득 코드를 돌아봤을 때 ‘이게 왜 여기에 있지’ 라는 의문이 든다면 한 번쯤 원칙을 되새겨 보라는 신호가 아닐까요? 이 글에서는 Clean Architecture 와 Clean Code 등의 저자로 유명한 Uncle Bob(Robert C. Martin)이 얘기하는 S.O.L.I.D Principles 에 대해 얘기해 보려고 합니다. SOLID 원칙은 밥 아저씨가 2000년도 자신의 논문 Design Principle and Design Patterns 에서 OOD(Object-Oriented Design)를 위해서 제안한 5가지 원칙의 앞 글자만 떼서 붙여졌습니다. Object-Oriented Design 을 대상으로 제안된 원칙이지만 Agile 개발 등의 개발 방법론 핵심 철학에도 적용될 수 있는 개념들 입니다. S.O.L.I.D Principles Single Responsibility Principle Class 는 오직 한 가지의 책임이 주어져야 하고, 오직 한 가지 이유에서만 변경되어야 합니다. 보고서를 편집하고 출력하는 모듈에 대해서 생각해 볼까요. 해당 모듈은 두 가지의 이유로 변경될 가능성이 있습니다. 보고서의 내용이 바뀌었을 때도 변경되어야 하고, 보고서의 형식이 바뀌었을 때도 변경되어야 합니다. 편집 과정 때문에 모듈을 변경하다 보면 해당 변경 사항이 출력 부분에도 영향을 미칠 가능성이 상당히 높습니다. 이 경우 내용을 편집하는 모듈(i.e 내용을 담당하는 모듈)과 출력하는 모듈(i.e 형식을 담당하는 모듈) 두 가지로 나뉘어야 합니다. “할 수 있다고 해서 해야 한다는 뜻은 아닙니다.” Open / Closed Principle Class, Module, Function 등의 소프트웨어 구성 요소는 확장(extension)에 대해 열려 있어야 하며, 변경(modification)에 대해 닫혀 있어야 합니다. 어떤 모듈이 Data Structure 에 필드를 추가하거나 함수를 추가하는 등 확장이 가능하다면 그 모듈은 확장에 대해 열려 있다고 표현합니다. 반면에 어떤 모듈이 수정 없이 다른 모듈에 의해 사용될 수 있다면 그 모듈은 닫혀 있다고 표현합니다.  public class CreditCard {     private int cardType;       public int getCardType() { return cardType; }       public void setCardType(int cardType) { this.cardType = cardType; }          public double getDiscount(double monthlyCost){          if (cardType == 1) {              return monthlyCost * 0.02;          } else {              return monthlyCost * 0.01;          }     } }  위 CreditCard class 에 새로운 카드 타입을 추가하려고 하면 getDiscount 함수를 변경할 수 밖에 없습니다. 이 경우 Open/Closed Principle 을 위반된다고 볼 수 있습니다. “코트를 입기 위해서 개복 수술을 할 필요는 없으니까요.” Liskov Substitution Principle 프로그램 상의 Object 들은 프로그램의 정확성을 해치지 않으면서 하위 타입의 Instance 로 변경 가능해야 합니다. 하위 타입 함수 인자의 반공변성(Contravariance), 하위 타입 함수 반환 타입의 공변성(Covariance), 상위 타입의 예외를 상속하지 않는 추가적인 예외 발생 금지 등의 요구 사항이 있습니다. OOP 에서 상속 개념을 배울 때 이해를 돕기 위해 주어진 몇 가지 예시들이 있었을텐데, 우습게도 우리가 생각하기에 타당한 상속에 관한 예시들 중 의외로 원칙을 위배하는 경우가 많습니다. Liskov Substitution Principle 을 위반하는 대표적인 예시는 정사각형과 직사각형입니다. 정사각형은 직사각형의 일종이니 Square가 Rectangle을 상속받는 것이 충분이 타당한 것으로 보입니다. 정말 그럴까요? Rectangle 의 넓이를 구하는 함수의 테스트를 구성해 봅시다.  Rectangle rect = new Rectangle(); rect.setWidth(10); rect.setHeight(20); assertEquals(200, rect.getArea());  여기에 new Rectangle() 대신에 new Square()가 rect 에 할당되면 어떻게 될까요? 넓이는 400 을 반환하기 때문에 테스트는 실패하겠죠. 정사각형이 직사각형을 상속 받으면 Liskov Subsitution Principle 을 위반한다고 볼 수 있습니다. 상속은 문제를 해결하는데 있어서 상당히 유혹적인 방법입니다. 하지만 상당히 많은 경우에 상속을 오용할 가능성이 높습니다. “오리처럼 생기고 오리처럼 꽥꽥 거리더라도, 배터리가 필요하다면 오리가 아닙니다.” Interface Segregation Principle 많은 것을 아우르고 일반적으로 사용 가능한 하나의 interface 보다 특정 클라이언트를 위한 여러 개의 interface 가 낫습니다. Xerox는 Stapling(프린터기가!?), Fax 등의 다양한 기능이 포함된 신규 프린터 소프트웨어를 개발 도중, 더이상 개발이 불가능할 정도로 프로그램이 번잡 해졌다는 것을 인정하고 밥 아저씨에게 도움을 요청합니다. 문제는 Job Class 하나가 모든 기능을 다 구현하고 있다는데 있었습니다. 이 비대한 Class 는 Client 입장에서 사용되지도 않을 모든 함수를 알 수 있게 구성 되어 있었죠. 이 문제에 대해 밥 아저씨는 Interface Segregation Principle 을 적용하여 각 Client 입장에서 사용해야 하는 함수 만을 가지고 있는 각 interface 들을 따로 만들었습니다. 그리고는 다음에 나올 Principle 인 Dependency Inversion Principle 을 통해서 해당 기능을 구현하게 함으로써 문제를 해결했습니다. Dependency Inversion Principle “추상화에 의존해야지, 구체화에 의존하면 안됩니다.” 상위 계층의 모듈은 하위 계층의 구현이 아니라 추상화에 의존해야 합니다. 상위 계층이 하위 계층의 구현에 의존하던 전통적인 의존 관계를 역전 시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있습니다. 예를 들어 Dependency Injection 은 이 원칙을 따르는 방법 중 하나 입니다. Conclusion 세상에 나쁜 프로그램은 있습니다. 당장 눈에 보이는 기능이 똑같다고 같은 프로그램인 것은 아닙니다. 생각보다 많은 코드들이 ‘그 곳에 넣을 수 있기 때문에’, ‘그 곳에 넣어도 돌아가기 때문에’ 깊은 고민 없이 그 곳에 정착합니다. 당장 좀 더 빠르게 기능을 추가해서 주변 사람들의 박수를 받을 수도 있습니다. 허나 이것들이 쌓이면 더이상 손댈 수 없는 코드가 되고, 문제를 느끼고는 Refactoring을 하자고 다짐하고, 모두 엎은 다음 또 다시 같은 코드를 만들게 되겠죠. 쉬운 코드가 가장 만들기 어려운 코드이고, 그런 좋은 코드는 좋은 원칙으로 부터 나옵니다. 변화에 적응할 수 있는 프로그램, 의도가 쉽게 읽히는 프로그램, 문제 발생 가능성이 적은 프로그램, 쉽게 확장할 수 있는 프로그램 등 좋은 프로그램을 만드는 것은 우리가 실제로 목표하는 것을 달성하기 위해서 정말 중요합니다. 이는 그저 경험이나, Tweak 만으로 이루어지지 않습니다. 다양한 신규 기술들과 Framework 들을 두루 섭렵하면서 활동 반경을 넓히고 경험을 쌓았다면, 가끔은 잠시 서서 원칙에 대해 되돌아 보는 것은 어떨까요?   *버즈빌에서 활기찬 개발자를 채용 중입니다. (전문연구요원 포함)작가소개 Whale, Chief Architect “Keep calm and dream on.”
조회수 3025

미국의 금리인상이 한국의 스타트업에 미치는 영향

 사람을 화성에 보내네 마네, 가상현실세계가 구현되네 마네 하는 지금 이 시대에도, 미국이 금리를 올리고 내리면 항상 경제면 탑 뉴스를 장식하게 되는 건 변함이 없다. 대체 미국 금리가 지구 반대편에 사는 우리와 무슨 상관이 있을진대 저렇게 떠들썩한 걸까? 세상 사람들이 저렇게 너도나도 달러와 금리를 외치고 있는데, 과연 스타트업에서 일하는 우리들은 그런 사바세계의 삿된 번뇌와 거리를 두고 묵묵히 자기 일만 하면 되는 걸까? 뭘 끄적이면 좋을까 생각하던 차에, 항상 나를 놀라게 하는 우리 팀원들이 전혀 겹치지 않을 거라 생각했던 이 두 점을 하나로 이어주었다. 전혀 새로운 관점에서 기존의 것을 바라보게 되는 경험은 언제나 신선하고 놀라웠으며, 머릿속에서 글자들이 마구 떠오르기 시작했다. 그리고 그렇게 오늘의 주제가 되었다. 미국의 금리가 오르면, 한국의 스타트업 시장에는 어떤 영향이 있을까? 최대한, 아주아주 쉽게 설명해 볼 생각이지만, 생각보다 어려울 수도 있을 것 같다. 하지만 이 정도의 지식만 알아도, TV나 신문에서 떠들어 대는 경제 관련 뉴스의 6할은 이해할 수 있을 것이다.1. 금리? 환율? 달러? 대부분의, 경제라는 것이 어설피나마 작동하고 있는 나라는 '기준금리'라는 것을 정한다. 미국의 경우는 연방 기금 금리(통칭 FF Rate)를 FRB(연방준비제도이사회)의 월별 회합에서 정하며, 한국은 한국은행 휘하 금융통화위원회의 월 정례 회의에서 정하고 있다. 어려운 얘기는 여기까지만. 아주 간단하게 말하면, 기준금리가 올라가면 은행끼리 돈을 빌리고 빌려줄 때의 이자율이 높아져서, 시중 은행들도 거기에 맞춰 금리를 올리게 된다. 그래서 금리가 올라가면 돈 빌린 사람은 갚을 이자가 늘어나고, 돈 빌려준 사람은 받을 이자가 늘어난다. 그리고 우리 모두가 알고 있듯, 외국에 나가서 콜라를 사먹고 만 원짜리 지폐를 꺼내 계산할 순 없다. 황당한 눈으로 바라보는 점원의 눈빛은 당신을 이미 얼간이로 규정지은 뒤일 것이다. 여기서 환율이라는 것이 등장한다. 1달러, 100엔, 1유로, 1캐나다 달러, 1스위스 프랑...모든 화폐는 저마다의 가치를 가지고 있다. 만약 조개껍데기를 돈으로 쓰는 나라가 있다면, 조개껍데기 1개=200원 하는 식으로 가치가 매겨지는 것이다. 옛날옛적에는 사람들이 환율을 따질 때 영국의 파운드를 기준으로 삼았었다. 하지만 그리 멀지 않은 과거에 그 기준은 아메리칸 달러로 바뀌었고, 이 '기준이 되는 나라의 돈'을 '기축통화'라고 한다. 기축통화가 무엇이고 왜 필요한 지는 아주 간단하게나마 설명하고 넘어가자. 2018년 10월 11일의 원-달러 환율은 1달러당 1,135.66원이었고, 달러-엔 환율은 1달러당 112.473엔이었다. 그럼 1,000원은 몇 엔일까? 1$=1,135.66₩=112.473¥이다. 112.473/1135.66*1,000으로 계산하면, 1000원은 약 99.04엔이 된다.  이런 식으로, 세계 모든 돈의 가치를 달러로 재기로 정해놨기 때문에, 달러의 가치가 달라지면 환율은 심하게 요동치게 된다.  마지막으로 하나만 더. 돈의 가치는 수요와 공급의 법칙에 의해 결정되므로, 찾는 사람이 많거나 세상에 나도는 양이 적으면 가치가 올라가고, 사람들이 죄 내다 팔거나 세상에 나도는 양이 많아지면 가치가 내려간다.  *이 때의 일급 4딸라는 대략 16만 3천원 정도라고 한다.2. 1+1+1+1=?? 이제 이것들을 하나로 합쳐볼 것이다. 슬슬 짜증이 나기 시작하겠지만, 여기만 잘 이해하면 나머진 자연스럽게 이해할 수 있으니 조금만 인내심을 갖고 논리적으로 잘 따라오기만 하면 된다. 얼마 안 남았다. 앞서 설명했듯이, 달러는 기축통화로서의 지위를 갖기 때문에 비교적 안정적인 가치를 갖고 있다. 1미터의 길이가 어느 날은 95센티미터였다가, 어느 날은 121센티미터가 되거나 하면 세상 모든 길이의 개념이 뒤죽박죽이 되어버릴 것과 같다. 미국은 아직도 미터법을 안 쓰는 해괴한 나라라서 어쩌면 상관없을 지도 모르겠지만.  그리고 기준금리가 올라가면 돈을 빌려주는 사람이 유리해진다. 같은 돈을 투자해도 더 많은 이자를 받을 수 있는 것이다. 즉 미국이 기준금리를 올리면, 안정적인 가치를 가진 달러를 이용하여 투자했을 때 더 많은 돈을 벌 수 있게 된다. 100달러 투자해서 10달러 버는 것과 1,000원 투자해서 100원 버는 것, 어느 쪽이 더 이득일까? 당연히 전자다. 이제 사람들이 원은 필요없으니 팔아버리고, 달러로 바꿔서 투자를 한다. 그래서, 설명이 아주 길었지만, 결론적으로, 미국이 기준금리를 인상하면 원-달러 환율이 올라가고, 세계의 투자자금이 마치 블랙홀에 빨려들어가는 것처럼 미국으로 향하게 된다.*미국이 금리를 올리면 원의 가치는 대략 이런 느낌이 된다.3. 그래서 스타트업이랑 무슨 상관인데 눈치가 빠른 사람들이라면 이미 눈치챘을 것이다. 투자자금이 미국으로 몰린다는 얘기는, 한국의 투자시장에서 돈이 빠져나가는 것을 의미한다. 그렇게 되면 주식, 채권, 부동산 할 것 없이 시장이라는 시장은 죄다 끝간 델 모르고 하락세로 돌아서게 된다. 외부 요인에 의한 경기 둔화가 시작되는 것이다. 돈은 돌고 돌아야 돈인데, 그 돈이 자꾸 외국으로 나가니 시장이 얼어붙기 시작한다. 그래서 많은 나라들은 미국의 기준금리보다 높은 금리를 유지하려고 한다. 나라라기보다 거대 경제 블럭에 가까운 EU, 해괴하기가 이를 데 없는 명목상 마이너스 금리를 시행중인 일본 같은 특수 케이스를 제외하면, 어쨌든 미국보다 높은 금리를 유지해야 자본이 밖으로 흘러나가지 않기 때문이다. 시장의 안정성이 낮을 수록 이 경향은 강하다. 말인즉슨, 한국도 기준금리를 올려야 한다는 압박이 가해진다는 뜻이다. 사족으로, 대출을 받아놓은 사람들은 늦기 전에 변동금리가 아니라 고정금리 상품으로 갈아타는 것을 추천한다. 이미 은행에서 미리미리 그런 상품들은 다 치워버렸거나 이자율을 높여놨을테지만. 모든 기업이 그렇지만 특히 스타트업은 돈이 부족하다. 운영자금조차 없어 허덕이기도 하고, 임대료와 인건비도 제대로 못 맞추는 경우조차 허다하다. 대표가 빚을 내는 건 비일비재하고. 대출금리까지 오르면 그야말로 죽을 맛이다. 거기다, 같은 스타트업 시장에 투자를 해도 미국 스타트업에 투자하는 게 더 이득이 된다. 가뜩이나 좁아터진 시장인데 득실계산을 해보면 더더욱 메리트가 떨어지기에, 글로벌 단위로 움직이는 투자사들이 포트폴리오의 국가별 구성비를 변경할 가능성이 높다. 같은 아시아 지역의 마이크로 펀드라고 해도, 어차피 리스크를 질 거라면 금리가 더 높은 나라의 기업으로 포트폴리오를 구성하거나 현금 보유비율을 높여 자산 가치를 보전하는 쪽을 택하게 된다. 금리가 그대로면 투자자본이 이탈하고, 금리가 오르면 대출이자 부담이 늘어난다. 결국, 미국의 금리가 오르면 한국의 스타트업 시장도 장기적인 자금 압박이 시작될 가능성이 있다.*안 그래도 돈 없어 죽겠는데 더 힘들어질 거라고 하면...4. 오늘 굶으나 내일 굶으나 굶긴 매한가지 아닙니까 그러면 의문이 든다. 미국이 금리를 올리면 당장 창업한 기업을 때려치우고 공무원 시험이나 알아보아야 할까? 전혀 그렇지 않다. 어차피 하이퍼 리스크-하이퍼 리턴을 노리고 창업을 하는 건데 그까짓 거시경제학적 관점에서 바라본 리스크 요인 하나가 더해졌다고 해서 여러분의 심장이 쫄깃해질 필요는 어디에도 없다. 생각해보면, 미국의 금리 인상이 가져올 충격이 한국에 도달하기 전에 우리 회사는 이미 망해있을 수도 있으니까. 중요한 것은 일단 살아남는 것이다. 당장 굶어죽을 판인데 독이 든 사과면 뭐 어떤가, 일단 삼키고 봐야지. 그 사과를 안 먹으면 100% 죽고, 먹으면 50%확률로 산다면 결론은 불보듯 뻔하다.  지금 하는 사업에 자신이 있고, 성공을 확신한다면 그것으로 충분하다.*하지만 여러분이 따스한 감성의 소유자라면 뭐 그럴 수도 있겠다고 생각한다.5. Winter is coming 그래도, 적어도 오래도록 살아남아 성공의 꿈을 이루고자 한다면 어느 정도 준비는 해야 할 것이다. 특별한 수는 없다. 사업 아이템을 더 가다듬고, 비즈니스 모델을 고도화하고, 서비스나 제품 퀄리티를 높이고...때로는 정공법만이 답일 때가 있으니까. 그래도 한 가지 말해두고 싶은 건, 조금 더 뾰족하게 갈아둘 필요가 있을 거라는 것이다. 어차피 한국의 시장은 너무나 작고, 그 중에서도 스타트업 시장이라면 더더욱 작다. 아마 중소규모의 펀드에서도 한국의 스타트업 시장이라면 포트폴리오의 0.01%도 차지하지 않을 것이다. 그렇기 때문에 전체적인 영향은 덜 받겠지만, 아주 작은 자금 흐름의 변동으로도 체감상 변화는 크게 느껴질 수 있다. 아직 뚜껑을 열어본 것은 아니기 때문에, 어떻게 될 것이라고 단언할 순 없다. 세상에 절대라는 건 절대로 없으니까. 하지만 큰 물줄기가 바뀌어 가는 것을 먼저 감지한다면, Plan B를 준비해둬서 나쁠 건 없다. 조금 더 단기적인 현금의 확보와 매출의 성장, 중장기 운영 자금 조달을 위한 핀포인트 비즈니스 모델을 준비해 놓고, 언제든 시장에서 변화의 낌새를 알아챘을 때 시행할 수 있도록 해두면 좋을 것 같다. 뭐 누구는 돈을 벌기 싫어서 안 버느냐는 말이 당연히 턱밑까지 치고 올라오겠지만, 기존 비즈니스 모델과 해리감이 있더라도 단기적 현금 흐름의 확보에 집중한 계획, 즉 Business Contingency Plan을 말하는 것이다. 사실 매일매일이 Contingency로 꽉 차서 하루는 커녕 1시간 뒤에 무슨 일이 터질 지 모르는 게 스타트업이긴 하지만.*1딸라에 만족하지 않고 4딸라를 추구하는 자세가 필요하다. 팀원들이 던져준 아이디어에 덥썩 숟가락을 올려놓으며 생각해 본 것은, 이전 직장에서 하던 일과 현재의 일은 아무런 연결점이 없을 것이라고 나 스스로 단정짓고 있었다는 점이었다. 분명 이질적이고, 상당히 다른 업계지만, 돈을 다루고 금융에 조금이라도 관련이 있다면 어디에선가 분명히 이어지는 점이 있을 것이라는 점을 한참동안 잊고 지냈던 것 같다. 작은 계기였지만, 시장과 미래를 예측하는 감각이 오랜만에 움직이는 것을 느꼈고, 낯익지만 무언가 새로운 경험을 한 것 같다. 이럴 때 주식투자를 해야한다는 생각이 강하게 듦과 동시에, 이번달 휴대폰 요금이 제대로 납부될런지 걱정하며 글을 마친다.#더팀스 #THETEAMS #인사이트 #증권 #금융지식 #금융권 #스타트업 #세계시장 #관계
조회수 3145

야놀자 앱은 왜 자동실행 되나요?

pluu 04 JUL 2018저는 야놀자 CX서비스실의 Android 파트에서 레이아웃 깎기와 Kotlin과 새로운 Android 기술을 전파하는 노현석입니다. 야놀자에 합류하고서 경험한 가장 독특한 케이스에 대해서 이야기해 보려고 합니다.시작은 물음표부터언제부터인가 야놀자앱을 설치하거나 업데이트하면 앱이 자동으로 실행된다는 리뷰가 들어오기 시작했습니다.네?! 그게 무슨 말이에요?안드로이드 개발을 시작한 이래로 처음 들어보는 내용이라, 원인도 정확한 해결책도 떠오르지 않는 그런 리뷰였습니다. 그래서 자연스럽게 브라우저를 켜서 구글에 검색을 먼저 해봤습니다. Android, Auto Start, Install 등 다양한 검색 결과로 일정한 패턴의 내용을 확인할 수 있습니다.  Intent Action 관련 내용android.intent.action.PACKAGE_ADDEDandroid.intent.action.PACKAGE_CHANGEDetc.Broadcast Receiveretc.일반적으로 안드로이드 앱이 설치 및 업데이트될 때 발생하는 이벤트(이하 Broadcast)를 받는 방법에 대한 설명이 많습니다. Broadcast는 배터리 변화, 전화 여부, 와이파이 등 시스템의 상태 변화를 감지하거나 서비스 내부적에서 이벤트를 전달하기 위해 사용합니다. ???? 실질적인 해결책은 되지 않지만, 범위를 좁혀서 찾아볼 포인트로 Intent 의PACKAGE관련 액션을 포커스로 잡았습니다. 하지만, 야놀자앱에서는 마케팅 성과 측정을 위해com.android.vending.INSTALL_REFERRER를 광고 트래킹 SDK에서 사용하는 것 이외에는 별도의 작업을 하지는 않습니다. 그러나, 이를 알 리가 없는 사용자는야놀자 앱이 일으키는 문제라고 인지하기 쉽습니다.  일차적으로, 어느 경로를 통해서인지는 모르지만 누군가가 야놀자 앱을 실행하는 것이라고 생각했습니다.야놀자 앱 사용자의 기기에 설치된 모든 앱 리스트를 받아올 수도 있고, 리퍼럴에 따른 앱 실행경로를 모두 수집할 수도 있지만, 단순히 버그를 찾기 위해 사용자의 동의 없이 정보를 수집할 수는 없기 때문에 장기전으로 돌입하게 되었습니다. 하지만 동일한 리뷰는 계속되었고 여전히 뚜렷한 해결책이 없는 채로 시간이 흘러갔습니다.  저 재현되는데요증상이 나타나지만 재현은 되지 않고, 재현 경로를 단기간에 파악하기는 어려운 과제였습니다. 한두 명에 불과하던 제보가 시간이 지날수록 Android 파트의 목을 조르듯이 점점 유입되는 횟수가 늘어만 갔습니다. 그런데 어느 날, 다른 팀의 분께서저 재현되는데요라는 한 줄기의 빛과 같은 언급을 해주셨습니다.믿고 싶지 않은 일이 현실이 되었다네? 그게 … 정말로 일어났습니다.이제부터가진짜시작역시버그는재현이되어야제대로잡을수있겠죠! 저에게는재현되는 단말이 있어요!Android에서 디버깅을 할 수 있는 다양한 수단이 있습니다. 이번 사례의 경우는Log혹은Dump를 확인해보는 선택지가 있습니다.Log민감한 정보라고 판단되는 부분은 모자이크했습니다.앱 설치 후 광고 SDK가 수집하는 것으로 보이는 Log에는 다양한 항목들이 나열되는 것을 볼 수 있습니다. 이때 설치한 앱의 정보가 SDK를 통해 특정 API로 전송되는 것도 확인할 수 있습니다. 하지만 Log는 Log일 뿐입니다.  Dumpsys이렇게 Log만으로 추적이 어려울 때, 추가적으로 시스템의 상태를 얻어내 디버깅 할 수 있는 방법이 있는데 바로dumpsys입니다. dumpsys는 Android 단말에서 실행되며 시스템 서비스에 대한 다양한 정보를 제공하는 도구입니다. ADB(Android Debug Bridge)를 사용하여 dumpsys를 호출 시 해당 단말에서 실행 중인 모든 시스템 서비스에 대한 정보를 가져올 수 있습니다. 간단하게 말하면 배터리의 잔량, 메모리 소비량, 네트워크 통신 상태 등을 명령어로 확인할 수 있습니다. dumpsys의 기능에 대해서는 방대한 설명이 필요하므로, 자세한 내용은 아래 링크로 대체합니다.  Android Developers ~ dumpsyshttps://android.googlesource.com/platform/frameworks/native/+/master/cmds/dumpsys/dumpsys.cppActivity DumpDumpsys 에서 좀 더 Activity 와 관련된 정보를 얻기 위해서는 아래의 명령어를 적용해볼 수 있습니다.// Activity Log Dump adb shell dumpsys activity activities 결과를 확인해봅니다. 아래와 같은 Activity 의 활동 이력을 얻을 수 있습니다.Activity Dump에 나타난mCallingPackage값으로 야놀자 앱을 시작시킨 앱의 패키지를 확인할 수 있습니다. 해당 패키지를 실제 Play Store에서 확인해본 결과, 사진 보정 필터앱으로 유명한카메라 앱중 하나였습니다.???? 야놀자와는 전혀 연관성이 없는 앱인데, 호출하고 있네요… ????Process ID// 애플리케이션의 Process ID 취득 adb shell ps Activity Dump에서 확인한mCallingUid는u0a423였는데, 이는 Activity를 호출한 uid 값을 가리킵니다. 실제로 Process 가 호출되는 Application ID도 카메라 앱에서 호출한 ID 정보와 일치합니다.대상 앱 자료 분석단순하게는 APK 를 분석하여 추측하는 방법이 있습니다. Android Studio 에서 제공되는Analyze APK기능을 이용하여 해당 앱에서 사용되는 서비스의 정보를 파악할 수 있습니다. 이 방법을 이용하여 문제의 앱이 사용하는 광고 SDK 서비스에서 패키지 설치/제거 관련 Broadcast Receiver를 수집하는 것을 확인 할 수 있습니다.패키지 관련 Broadcast인android.intent.action.PACKAGE_ADDED, android.intent.action.PACKAGE_REMOVED를 앱이 사용하는 것은 잘못된 것이 아닙니다. 예를 들어 런처 앱의 경우 단말기 내부의 앱 정보가 변경되었다는 이벤트를 이용하여 화면 렌더링 및 동작을 변경하는 처리를 할 수 있습니다 해당 광고 SDK의 경우에는 앱을 설치 및 실행하는 것으로 사용자에게 포인트 및 여러 혜택을 제공할 것이라고 예상할 수 있습니다.개인적인 의견으로는 사용자의 액션과 상관없이 동작하는 부분에 대해서는 분명히 Android 의 개선도 필요하다고 생각됩니다. 이런 정상 동작과 어뷰징은 아슬아슬한 경계에 있지만, 자칫 어뷰징으로 이어지는 경우 서비스의 품질이 떨어지게 되면서 사용자와 개발사 모두에게 좋지 않은 경험을 줄 뿐입니다.설마 이것도 되려나?동일 패키지명이번 포스팅을 작성하게 된 카메라 앱과 야놀자 서비스 사이에 특별한 관계가 없다면, 왜 이런 현상이 발생하는지 고민해봤습니다. SDK도 연결하지 않았다면, 앱을 추적할 수 있는 유일한 키는패키지명이지 않을까라는 생각으로 패키지명만 야놀자 앱과 동일한 샘플 앱으로 테스트해봤습니다.동일 재현 성공!!그럼… 해결… 끝?많은 사람들에게 이름이 널리 알려진 여러 서비스에서조차 이번 포스팅에서 다룬 내용과 같은 현상이 발생하고 있습니다. 발생 유무에 따른 차이점이나 현상의 인과 관계를 명확히 판단하기엔 아직 정보가 많이 부족합니다. 그리고 이번 분석에서 발견한 문제의 앱을 비롯하여 또 다른 제2, 제3의 앱들이 등장할 거란 가능성도 배제할 수 없는것이 현재 상황입니다. 슬프게도 아직 이 현상은 지금도 계속되고 있으며, 불편을 호소하는 리뷰가 등록되어 서비스 전체의 이미지와 평점을 갉아먹고 있습니다. 안드로이드 생태계가 사용자 및 서비스 제공자에게 더 유익한 방향으로 나아갔으면 하는 바람을 담아 작성했습니다.도움 주신 분동일 증상을 발견하고, 단말을 빌려주신 R&D SF팀 전호숙님같이 추적해주신 R&D CX 서비스실 유관종님Dump/Log 관련 조언을 주신 Wind River의 차영호님 (????????????)국어가 많이 부족한 저를 도와주신 리뷰어 ???????????? R&D CX 서비스실 강미경님, 송요창님, 유관종님, 유용우님, 이미혜님이번 현상 추적에 도움을 주신 분들에게 감사함을 전합니다.#야놀자 #개발자 #개발팀 #문제해결 #버그수정 #안드로이드 #인사이트 #경험공유
조회수 572

블랭크에 없는 10가지

블랭크는 10가지를 덜어내고 앞으로 나아가는 기업 입니다.아래 내용에 공감하고 뛰어오르고 싶은 사람!언제든 두팔 벌려 환영합니다  VIDEO_BLANK CORP. BI 1. 블랭크는 내가 속한 '팀'이 없습니다.팀이라는 단어에는 배타적인 기운이 있어요. 우리 팀 외에는 배척하려는 강한 힘을 가졌죠. 팀에 소속되면 자기 팀만 챙기게 되는 속성이 있다 보니 블랭크는 큰 하나의 팀만을 가지게 되었습니다. 그것은 'Team blank' 입니다.블랭크는 큰 하나의 팀으로 공동의 목표를 향해 함께 가며, 기존 회사의 팀 개념인 '유닛'은 소속이 아니라 일을 정말 빠르게 하기 위해 만든 단위로 언제든 변화할 수 있는 것이지요. 우리에게 팀은 ‘블랭크 전체’입니다. 2. 블랭크는 ‘룰(변하지 않는)’이 없습니다.‘금속활자’ 기술은 수세기 문명을 이끌었습니다. 그러나, PC의 시대는 30년, 모바일 시대는 10년, 현재 기술은 그 변화주기를 상상할 수 없을만큼 빨라지고 있어요. 우리가 지금 만든 룰이 과연 1년 후에도 적용 가능한 룰일까요? 우리는 구성원 모두가 최대한 동의하는 '상식'을 찾아 나가야 해요. 그 상식은 문맥과 상황에 따라 계속 정의되고 바뀌어야 해요. 우리는 끊임없이 검증할거고 이 방식 그 자체가 우리의 문화가 될 것이라 생각합니다. 3. 블랭크는 ‘직급’과 ‘위계’가 없습니다.직급이 생기면 모든 사람이 가설을 얘기하고 비판하며 토론할 수 없어요. 부장님이 말하는데 "제 생각은 달라요" 라고 말하는 것.. 정말 어려운 일이죠. 대신 우리는 모두 '프로'라는 직급을 가지고 서로를 '님'이라고 불러요. 그런데!! 조심해야할 것이 있어요. 직급이 없지만 그렇다고 형, 동생, 언니같은 허물없는 친화도 조심해야해요. 어떤 동료끼리 친하다고 언니/오빠/형/누나라고 서로를 부른다면 그 외 나머지 사람은 그 관계를 의식하게 됩니다. 이후 논리적인 토론을 하거나 비판하기가 어려울 수 있을 것이고, 또 평가에 대한 공정성이 무너질 수도 있기 때문입니다. 4. 블랭크는 ‘좋게~좋게~’가 없습니다."아 좋게좋게 가자는데 왜케 반대하세요"라는 말! "그냥 대충 갑시다"와 같은 말이죠. 우리는 그런거 없습니다.우리는 그 누구의 논리적 과정을 비판할 수 있어요. 그것은 그 사람에 대한 공격이 아니라 일의 개선을 위한 데이터로 받아들여야 합니다. 비판을 통해 자신의 가설을 깨나가면서 검증하는 것이 블랭크의 방식입니다. 만약 자신의 논리를 비판한 그가 미워졌다면 본인의 자존감에 대해 다시 한번 생각해봐야 합니다.물론 논리를 비판함과 인격을 무시함은 확연히 다릅니다. 5. 블랭크는 ‘시키는 대로 해야 하는 것’이 없습니다.제가 만약 "0000가 잘 될 것 같아요. 한번 가봅시다"라고 해서 무비판적으로 일을 진행했다고 쳐보자고요. 그런데 그것이 실패했다면 우리는 그 실패를 통해 무엇을 배울 수 있을까요? 직관으로, 혹은 리더가 시켜서, 혹은 관행이었으므로 그 일을 했다면 그 것의 성공과 실패로는 배움이 없을거에요. 모든 도전은 다음번의 성공확률을 더 높이는데 일조해야 하므로 모든 도전에는 가설과 논리가 있어야 합니다. 6. 블랭크는 ‘상대평가’가 없습니다.대학교때 상대평가를 하는 과목과 절대평가를 하는 과목의 강의실 분위기가 달랐던 것 기억하시나요?? 예를 들어, 매출과 성공을 기준으로 순위 매기기, 혹은 상대평가를 한다면 조직별, 개인별 이기주의가 생겨 그 누구도 공유를 하려하지 않을 것입니다. 계속 바꾸고 변화해나가야 하지만 현재 우리는 '블랭크 팀'의 평가이고, 진일보한 방식이 될 것임을 자부합니다.  7. 블랭크는 ‘사수제도’가 없습니다.모든 구성원은 독립된 'PRO'에요. 스스로 일을 찾아서 해야 합니다. 처음 들어온 '신입'이 한 명의 '사수'에게 수동적으로 일을 배우고 그 안에서만 사고하게 된다면, 스스로 일을 찾는 능력이 떨어질 뿐만 아니라 '사수'가 누구냐에 따라 좋지 않은 습관을 답습할 수도 있습니다. 8. 블랭크는 ‘연간 KPI’가 없습니다.2번에서 이야기했듯이 세상이 너무나 빠르게 변하는데 1년 간의 나의 목표를 정하고, 1년동안은 변하지 않는 목표를 지향한다는 것이 정말 정답일까요..? 연간 KPI보다는 일주일, 하루, 끊임없이 나만의 목표를 설정하고, 관리해야 하는 숫자를 계속 점검하고 그 시기의 중요도를 생각하며 수정해 나갈 수 있는 KPI를 갖는 것이, 빠르게 변화하는 이 세상과는 더 부합하다고 생각합니다. 9. 블랭크는 ‘정해진 예산’이 없습니다.가장 적정한 마케팅 예산, 상품원가, 제작비 등을 알 수 있는 사람은 누구일까요? 그런 사람 아무도 없어요. 각 영역의 전문가, 실무를 뛰고 있는 당신이 가장 논리적으로 예산을 설정할 수 있어요. 당신은 끊임없이 의심하고 정의해나가며 가장 적정한 비용을 찾아나갈 것이니까요. 당신을 신뢰하니까요. 10. 블랭크는 ‘비밀’이 없습니다.블랭크의 모든 소통은 투명하게 이루어져야 합니다. 당신은 저에게나 그 누구에게나 블랭크에 관한 모든 것을 물어볼 수 있고 들을 수 있습니다. 만약 그 자리에서 공개될 수 없는 '비밀'이 있다면 '이유'가 분명해야 하고 공유할 수 있는 시기를 고지해야 합니다. 이러한 사고의 바탕에는 당신에 대한 신뢰가 존재합니다.지금 확인해보세요. Jason KH커뮤니케이션    기획자

기업문화 엿볼 때, 더팀스

로그인

/