2016년 6월 10일 금요일

소프트웨어 공학 국제표준 SEMAT Essence를 JIRA에 구현해 보기



SEMAT Essence라는 소프트웨어 공학 국제표준이 있다.

SW를 개발할때 적용하는 수많은 방법론의 공통적인 핵심부분을 뽑아내서 공통의 기호를 통해 표현하고 각 방법론을 비교할 수도 있게 해주겠다는 야심찬 의도를 가지고 추진하는 국제표준(OMG)이다. Essence에 대해 알게 된지는 2년도 넘었지만 겉핥기 식으로만 알고 있던 상태였는데, 최근들어 회사에 적용하고 있는 개발방법론을 버전업하려고 생각하다가 Essence를 JIRA에 구현해 보면 어떨까라는 생각이 들었고, 실제로 만드는데 성공해서 그 내용을 정리하고자 한다.

JIRA에 구현하려는 마음을 먹게 된 계기는 멤버로 참여하고 있는 BA전문가포럼에서 고맙게도 한글로 번역한 알파상태카드를 받았던 것이었다. 지금까지 Essence의 개념에 감동을 받았지만, 사내에 확산시키기에는 영어로 된 자료밖에 없다는 것이 가장 큰 장애물이어서 펼칠 엄두도 못내고 있던 상황이었다. Essence가 다루는 분야는 매우 방대하지만 그중에서도 핵심이 되는 알파에 대한 것만이라도 한글화가 된다면 실제로 업무에 적용했을때 큰 효과를 볼 수 있을 것이라는 확신이 들었다. 팀 주간 회고시간에 받아온 카드가지고 현재 진행되고 있는 프로젝트들의 상황을 카드놀이 식으로 늘어놓았는데 각 프로젝트별 상황이 깔끔하게 정리되어 보이는 것은 물론이고, 다른 팀원들도 그 상황을 쉽게 파악하는 모습을 보니 큰 가능성을 느낄 수 있었다.

자세한 내용을 설명하기에 앞서 SEMAT에 올라와 있는 참여자들의 의도를 엿볼 수 있는 Call for Action(원문링크)이라는 글을 살펴볼 필요가 있다.

소프트웨어 공학은 지금 미성숙한 실천법(practice)에 의해 중대한 저해(gravely hampered)를 받고 있다. 예를 들어 구체적으로 아래의 항목과 같다.
- 개념의 유행이 엔지니어링(공학 및 기술활동)의 한 분야라기 보다 패션업계와 비슷함.
- 확실히 널리 수용된 이론적 기초가 결여되어 있음.
- 매우 많은 방법론(methods)과 그 파생들. 또한 그것들 사이의 차이를 거의 이해할 수 없는 상태로 작위적으로 강조되고 있음.
- 신뢰할 수 있는 실험적 평가(experimental evaluation)와 타당성 확인(validation)이 결여되어 있음.
- 산업계의 실천법(industry practice)과 학계의 연구(academic research)와의 괴리가 존재함.
우리들은, 견고한 이론 및 검증된 원칙과 베스트 프랙티스에 기초하여  소프트웨어 공학을 재건(refound)하고자 한다.
 그 방법은 이하의 특징을 가지고 있다.
널리 합의된 요소들로부터 특정용도에 확장 가능한 핵심(Kernel)을 가져,
기술의 문제와 사람의 문제 양쪽을 모두 포용할 수 있고,
산업계, 학계, 연구자 그리고 사용자들에게 지지를 받는,
(새로운) 요구사항들과 기술(technology)의 변화에도 대응가능하며,
(표준으로서) 따를 수 있도록 하는 확장성을 제공한다. 
처음 이 글을 읽었을 때의 느낌이 생생하다. 당시 사내에 적용할 개발방법론에 대한 자료를 찾느라 머리가 너무 복잡했던 때라 더 큰 감동을 느꼈다. Essence에 대해 조금이나마 알고나니 '세상에 난무하는 모든 방법론을 하나의 언어로 표현한다는 것이 과연 가능한 일일까?'라는 의문은 깨끗하게 풀려버렸다. 이 사람들 정말 대단하다라는 생각 밖에 들지 않았다.

Essence에 대해 조금만 알아보기로 하자. 실은 나도 아직 정확하게 이해하고 있다고 자신하기는 어려운 상황이기는 하다.


Essence는 가장 핵심적인 개념인 커널을 가지고 있다. 크게 4가지 요소(알파, 액티비티 스페이스, 패턴, 컴피턴시)가 있고 그 중에서도 SW를 개발하면서 어떤 것을 고려해야 하는가를 표현하는 알파가 가장 중요하다. 알파는 7개가 있고 그것들 사이의 관계는 아래와 같다.



각 알파는 그 안에 프로세스처럼 표현되는 상태(state)를 가지고 있고, 각 상태는 완료조건이 되는 체크리스트를 가지고 있다.

상태와 체크리스트는 범용적으로 적용될 수 있는 내용들인데 이 항목들만 잘 챙기더라도 SW개발 프로젝트를 성공시킬 가능성이 매우 높아질 것이라 확신한다. 그간 성공의 법칙은 뛰어난 PM, 아키텍트, 개발자의 머리속에만 있었을 텐데 그 지식들이 세상밖을 튀어나온 것이라 해도 무방하지 않을까?

여기까지 보면 대충 Essence의 알파가 어떤 구조로 되어 있는지 감을 잡을 수는 있을 것이다. 자세한 것은 검색을 해보거나 책을 읽어보거나 표준문서를 직접 읽어 보는 것을 권한다.

파악하기 가장 좋은 방법은 아래의 카드를 입수해서 내용을 읽어보고 카드놀이를 좀 해보는 것일 것이다. 현재는 KOSTA에서 비매품으로 교육생들 대상으로 배포하고 있다. BA전문가포럼 세미나에서 구입할 수 있는 방법이 있는지 물어봤었는데 계획이 없다고 한다. 진가를 느껴보고 싶다면 어떻게든 입수해 보기 바란다.


카드같은 오프라인으로 하는 방법이 기본이겠지만 SW프로그램으로 만나볼 수도 있다.
아래는 아이패드용 앱으로 사용 가능한 Alpha State Explorer라는 앱이다. 영어로 되어 있어 불편함은 있겠으나 알파를 이해하고 프로젝트에 적용해보기 가장 좋은 SW라고 생각한다.

실제로 JIRA에 구현할 때도 이 앱을 레퍼런스 삼아서 비슷하게 구현했다.


글씨가 작아서 잘 보이지 않을 수도 있으나 느낌만 받아도 충분하리라 생각한다.

JIRA에 구현한 내용을 간략하게 설명해 보도록 하겠다.
기본적으로 JIRA Agile Kanban을 사용하고, 이슈타입은 7개의 알파로 생성하고 각 상태를 JIRA의 아이템으로 생성했다. 상태의 완료체크리스트는 커스텀 필드로 만들어서 한글 번역된 카드의 내용을 그대로 타이핑해서 입력해 두었다. Agile board에서 각 아이템을 클릭하면 체크리스트 내용이 표시된다. 화면에 노랗게 보이는 아이템들은 깃발을 올린 아이템들이다. 깃발을 올리는 것으로 상태가 완료되었음을 표시하는 것이 가능하다.

이렇게 만들어 두니 한 화면에서 프로젝트의 진행상황을 일목 요연하게 보는 것이 가능하다. 각 상태들은 JIRA의 이슈아이템이기 때문에 담당자들이 상세내용을 입력할 수도 있고 다른 페이지 링크를 하거나 산출물을 첨부파일로 업로드 하는 것도 가능하다.

아직 실제 프로젝트에 적용까지 해보지는 못한 상태이나 매우 유용하게 사용될 것이란 확신이 든다. 나중에 적용하게 되면 실제 사례내용도 업데이트 할 것이다.

앞으로의 계획은 현재 준비중인 사내 개발방법론2.0의 핵심개념이자 실제로 시스템에서 동작하는 도구로 제공하고 프로젝트 관리에 사용하도록 이끌어 나가는 것이다. 사내 표준으로 승인받아야 하는 과정이야 있겠으나 꼭 설득에 성공해서 실제 프로젝트에 적용해 보고 싶다.







태그 :  , , ,   With No comments 

2016년 3월 19일 토요일

'영업력'이 아닌 '제품'으로 승부하는 시대, 비즈니스를 바꾸는 것은 엔지니어


Atlassian 창업자에게 들어보는, 지금 엔지니어에게 필요한 스킬은? :

「영업력이 아닌 제품으로 승부하는 시대, 비즈니스를 바꾸는 것은 엔지니어」

JIRA」「Confluence」「HipChat 개발팀의 커뮤니케이션, 협업을 지원하는 도구 제품군을 제공하고 있는 Atlassian. 시장 요구의 변화에 대응하기 위해 비즈니스를 지원하는 소프트웨어 개발에도 한층 민첩함(Agility) 요구되고 있는 중에 동사의 툴은 국내(일본)에서 지지를 얻고 있다. 그러면 경쟁 제품도 많은데 동사의 제품이 현장에서 지지받는 이유는 무엇인가? 동사의 창업자이며 Co-CEO 스캇 파쿠아 와의 인터뷰를 통해 개발 사상을 있었다.
[PR/IT]
애자일로의 흐름을 느껴 대학 졸업 직후 창업
대학생 시절 당시에는 넥타이를 하지 않아도 되고 함께 졸업하는 친구들과 비슷한 정도의 급여를 받을 수 있는 정도의 일(직업)을 할 수 있으면 그것으로 족하다고 생각했었다. 큰 부자가 될 것이라는 생각도 기업가가 될 생각도 없었다.”
호주 Atlassian Co-CEO 스캇 파쿠아
그렇게 이야기 하는 것은 호주 Atlassian사의 공동창업자로 Co-CEO인 스캇 파쿠아씨이다. 파쿠아씨는 친구인 마이크 캐넌 브룩스(Mike Cannon-Brookes)씨와 함께 대학을 졸업하던 2002년에 Atlassian사를 설립했다. 같은 해에 프로젝트 관리 소프트웨어인 「JIRA」를 개발하여 웹 마케팅과 입소문만으로 세계 시장에 판매하는 비즈니스 모델로 성공했다. 동사의 제품은 포춘 100대 기업 중 85개사에서 이용하고 있고 둘(스캇과 마이크)IT기업의 톱 리더의 위치에 있는 것으로 인정받는 존재가 되었다. 파쿠아씨(역자주-원문에는 파쿠아씨라고 존칭하고 있으나 이 글에서는 스캇이라고 친근하게 표현하겠음) JIRA 개발의 계기에 대해서 다음과 같이 술회한다.
처음에는 수중에 있던 1만달러로 기술지원(technical support) 회사를 만들려고 했었다. 그런데 고객 중에는 외국회사가 많아 아침 3시에 일어나야만 하는 기술지원 비즈니스는 어렵다는 것을 느끼게 되었다. 동시에 자기 자신이 소프트웨어 개발에 대한 열정을 가지고 있다는 것도 느꼈다. 그래서 먼저 효율이 좋은 지원을 하기 위한 소프트웨어를 만들었다. 그것이 JIRA였다. ”
 막상 JIRA 제품으로 릴리즈하니 사용하기 편한 버그 트래킹, 이슈 트래킹 시스템으로써 회사에서 일하는 엔지니어에게 인기를 끌었다. 사용자 저변이 넓어진 요인에 대해서 스캇은 3가지 포인트로 요약했다.
첫번째 포인트는 제품개발에 오픈소스 컴포넌트를 이용하고 오픈소스 커뮤니티에 공헌도 하는 오픈소스 모델을 적용한 것이다. 두번째 포인트는 기존의 폭포수 개발이 아닌 웹에 맞는 애자일 개발을 채용했던 것이다. 세번째 포인트는 인터넷이라는 새로운 유통 스타일을 활용했던 것이다. “경쟁사는 이런 포인트를 알아채지 못하고 예전부터 해오던 개발방식 판매방식을 고수하고 있었다. 그것이 (기존 제품과) 차별화할 있었던 결정적인 요인이 되었던 것이라 생각한다.”
구체적으로는 상용고객들은 누구나 소스코드에 접근하여 개량할 있도록 했다. 또한, 전문 영업 조직을 두지 않고 마케팅이나 커뮤니티 활동을 중요시했다. 그리고 유저의 의견을 최우선시하여 평이 좋지 않은 경우 곧바로 개선하도록 하는 고객이 바라는 제품의 개발 초점을 두고 회사를 운영해 왔다.
미국에서 애자일 소프트웨어 개발선언(Manifesto for Agile Software Development)’ 나온 것은 2001년의 일이다. 스캇은 웹을 통해 그와 같은 개발방식에 친근함을 느껴 관련 문서를 손에 넣어 탐독했다고 한다. 최종 사용자와 직접 의견을 나눠가면서 진짜로 도움이 되는 소프트웨어를 스피디하게 만든다-그런 애자일 개발로의 흐름을 리얼타임으로 느껴 그것을 자신의 회사에 적용해 성공한 최초의 세대이다.
어떤 것이 좋은 제품인가, 어떤 것이 시장에서 통하는가 CEO라고 해도 수가 없다
엔지니어의 입장은 예전과 지금이 완전히 달라졌다.”
사실 엔지니어의 입장은 예전과 지금이 완전히 달라졌다고 한다. 이전에는 영업 부문이 가장 힘을, 다음으로 기획 부문이 힘을 가지고 있어 그들이 고객의 요구를 듣고 와서 엔지니어들로 하여금 (제품을) 만들도록 했었다.
그런데 최근의 스타트업에서는 엔지니어 자신이 고객의 의견을 듣고 자신들이 요구에 맞는 제품을 만드는 것이 보통 생각이 되었다. 예전과는 급여도 다르다. 실리콘밸리에서 일하는 신입 엔지니어이 초봉은 1000만엔에 달한다. 이것은 예전에 영업이 얻고 있었던 평가를 엔지니어가 받을 있게 되었기 때문이다.
누군가에게 만들라는 지시를 받고 그대로 만드는 것이 아니라 엔지니어가 고객과 가까이에서 의견을 듣고 제품을 만들고 있다. 이전에는 라이벌 회사와의 경쟁이라는 것은 영업 영업 싸움이었다. 작은 싸움부터 시작하여 그것에 이기는 것을 계속하여 최후에는 거대한 벤더가 상대가 되었다. 하지만 지금은 제품 제품 싸움이다. 스타트업 직후부터 거대 벤더가 라이벌이고 제품이 좋으면 싸움에 승리를 거두는 것이 가능하다. 그렇기 때문에라도 엔지니어가 중요해진다.”
이것은 IT분야에 국한되지 않는 현상이라고 한다. 예를 들면, 전기자동차 회사인 테슬라 모터스는 사람의 영업맨이 사람의 고객을 담당하는 그때까지의 판매방식을 바꾸어, 온라인에서 판매에 초점을 맞추는 판매체제를 갖추었다. 고객 미팅이나 차량 납품, 고객 지원 각각의 부문을 전문 스탭이 담당한다. 요컨대 영업이 아닌 제품이나 서비스에 힘을 쏟는 것이 경쟁력으로 연결되고 있다.
지금은 제품과 제품의 싸움이다. 스타트업 직후부터 거대 벤더가 라이벌이 된다. 제품만 좋다면 싸움에서 이기는 것도 가능하다.”
”Atlassian자신도 그런 스타일로 사업을 확대해 왔다. 둘이서 시작하여 벤처 캐피탈의 지원도 받았다. 창업한 장소도 세계적인 관점에서 보면 변방으로 생각될 만한 곳이었다.(역자주-호주의 시드니) 그래서 웹을 통한 유통과 오픈소스 커뮤니티를 중요하게 생각했다. 제품의 힘에만 기댈 밖에 없었다.”
다만, 어떤 제품을 만들어야 시장에서 통할 있는지 전혀 알지 못했다. 그랬기 때문에 개발방식을 애자일로 정했다.
어떤 제품이 좋은지는 CEO라고 해도 수가 없다. 스티브 잡스도 무엇이 팔릴지는 수가 없었다. 그래서 A/B테스트를 통해 시장이 무엇을 원하고 있는지 탐색하여 (시장이 원하는) 제품을 스피디하게 만드는 것이 매우 중요하다. 사내에서는 A/B테스트를 수행하는 전문 부서도 두어 곳에서 (테스트의) 결과에 의거하여 제품을 계속해서 개량하고 있다. 테스트의 결과에 대해 점심내기를 하기도 한다. 나도 바로 며칠 전에 (내기에서) 케밥을 얻어먹었다. [웃음]”
엔지니어에게 있어 필요한 스킬이란?
그러면 이런 시대에 있어서 엔지니어에는 자신의 경력(career) 어떻게 만들어 가야하는 것인가? 지금 요구되는 스킬이나 마땅히 가져야 비전에 대해서 스캇은 우선 비즈니스 센스를 길러야 한다.”라고 말한다.
단지 만드는 아니라 무엇을 만들것인가?’ 중요하다
다양한 오픈소스 컴포넌트나 개발지원도구를 이용가능하게 됨으로써 제품을 만드는 것이 이전보다 간단해졌다. 만드는 것이 간단해졌다라는 것은 단지 만드는 아니라 무엇을 만들것인가?’ 중요하게 되었음을 의미한다. 이것은 어떻게 하면 비즈니스에 도움이 되는가?’ 생각하는 것이 중요하게 되었다라고 바꾸어 말할 수도 있겠다. 엔지니어는 기술의 세계에만 갇혀 사는 사람들이다. 그러나 (기술만으로는) 좋은 제품을 만드는 것이 불가능하다.”
그러면 비즈니스 스킬을 기르기 위해서는 어떻게 하면 좋을까? 스캇의 대답은 사람들과 만나 의견을 듣는다라는 것이다. 혼자서만 공부하는 것이 아니라 직장의 선배나 후배, 동료에게 의견을 듣고 과거의 사례를 찾아보고 (의견을 듣기 위해) 고객과 직접 만나러 간다. 고객과 직접 접촉하여 무엇을 필요로 하는가를 알아내는 것은 비즈니스에 있어서 빼놓을 없는 스킬이라고 한다.
오히려 제품을 아는 엔지니어이기 때문에 고객에게로의 질문이나 제안을 다른 누구보다도 잘할 있다. 이런 고객과의 인터페이스를 어떻게 만드는가가 중요하다. 그것이 불가능하다면 좋은 엔지니어가 없다. 물론 대학시절에 좋은 성적이나 높은 기술력이 갖추는 것은 좋다. 하지만 가장 중요한 것은 고객이 무엇을 원하고 있는지 알아내는 스킬이다. 테크놀로지의 진보도 스킬이 지탱해 왔다. ”
가장 중요한 것은고객이 무엇을 원하고 있는지 알아내는 스킬이다.
스캇 자신도 스타트업 시절부터 개발자로서 기술력을 높이는 것뿐만 아니라 고객의 의견을 직접 듣는 것을 항상 명심하고 있었다고 한다. 그렇다고는 해도 처음에는 부풀려 말하는 (?) 필요했다라고 회상한다.
회사는 작은 스타트업 따위는 상대로 생각하지 않는다. 그래서 자사의 웹사이트 상에서 고객지원, 영업, 마케팅 가공의 부서를 복수로 만들어 그것들 하나하나에 메일 주소를 할당하는 것으로 회사를 크게 보이도록 했다. (고객의) 어떤 질문사항에도 명이서 (중복) 대응했다.”
비즈니스와 사회를 바꾸는 엔지니어를 강력하게 지원해 것이다.
이러한 스캇의 생각은 5개의 회사 비전에서도 읽을 수 있다.
  • Open Company, No Bullshit――오픈 컴퍼니, 터무니 없는 것은 없음
  • Build with Heart and Balance――마음을 다하여 균형을 생각하여 만듦
  • Don't #@!% the Customer――고객을 업신여기지 않음
  • Play, as a Team――팀으로서 움직임
  • Be the Change You Seek――자기 자신이 변화의 원동력이
Atlassian 가치 (동사 홈페이지의 회사정보로부터 발췌)

스캇은 지금까지 가장 힘들었던 점은 엔지니어의 채용과 육성이었다고 말한다. 회사 비전에는 그러한 엔지니어로서의 성장 비즈니스와 IT 공고한 연계에 대한 생각을 반영시켰다고 말한다.
그리고 이런 사고방식은 동사의 제품과 서비스에도 반영되어 있다. 그것은 과제관리툴(이슈트래킹 도구) JIRA, 팀의 개발/협업을 위한 도구인 Confluence, 채팅이나 파일 공유를 위한 HipChat」등의 제품을 보면 실감할 있지 않을까?
스캇은 도전(challenge) 계속하는 회사와 엔지니어를 앞으로도 계속해서 강력하게 지원하고 싶다라며 미소를 띄우며 말했다. 엔지니어나 개발에 대한 스캇의 생각을 Atlassian 제품으로부터 다시금 느껴보면 어떨까?


태그 :  , , , ,   With No comments