2024년 3월 24일 일요일

소프트웨어 국제화는 나중에 적용하면 늦는다 (24)

 잠시 중단했던 소프트웨어 국제화 칼럼을 재개한다.


당장의 소프트웨어 출시가 급하다고 국제화를 고려하지 않고 일단 개발하고 출시를 했다가 나중에 필요 시에 국제화를 적용하려고 하면 안된다. 비용이 너무 많이 들거나 너무 복잡해져서 제품 자체가 망가지기도 한다.

실제로 많은 회사들이 소프트웨어 국제화에 실패해서 비지니스에서도 실패하는 경우가 많다.




처음에는 국내에서만 팔다가 나중에 해외 진출을 하면서 뒤늦게 국제화를 적용하다가 낭패를 본다.
국제화를 적용하려고 했더니 데이터 베이스의 인코딩 등 설정을 바꿀 수 없기도 하고, 기능이나 UI를 대거 바꾸지 않으면 안되기도 한다. 초기부터 국제화를 적용했을 때의 국제화 비용보다 수십배 또는 수백배가 들기도 한다. 또한 수많은 버그를 만들어내곤 한다.

국제화를 적용하기에는 너무 늦어져 국제화 버전을 따로 개발해서 똑같은 소프트웨어가 여러벌이 되기도 하는데, 이는 더 큰 문제가 된다. 돌아올 수 없는 강을 건넌 것과 같다.

우리가 개발할 소프트웨어가 영원히 한국에서만 팔릴 소프트웨어라면 국제화를 적용할 필요가 없다.
한국에서만 팔리는 소프트웨어라도 한국내의 외국인을 위해서 여러 언어를 지원해야 한다면 국제화가 필요하다.
당장은 한국에서만 판매를 하지만 추후 해외에서도 판매할 계획을 1%라도 가지고 있다면 초기부터 국제화를 적용해야 한다.

당장 국제화 기능이 필요한 것은 아니고 추후 필요한 경우라면 국제화 아키텍처만 적용하여 나중에 국제화가 필요할 때 언제든지 적은 비용으로 빠르게 국제화를 적용할 수 있도록 할 수 있다.

간단한 예를 들어보자.

소프트웨어 내에는 날짜, 시간을 처리하는 수많은 모듈들이 있다. 이것을 국제화를 고려하지 않고 개발자들이 알아서 한국어에만 알맞게 개발을 한다면 어떻게 될까?

한국에서는 잘 동작할 것이다. 하지만 영어, 프랑스어 등 외국어를 지원해야 하는 국제화가 필요할 때는 큰 문제가 된다. 날짜를 처리하는 수많은 코드를 찾아다니면서 모두다 고쳐야 한다.

개발자들이 적절히 날짜 함수에 국제화 코드를 적용했다고 하더라도 문제가 된다. 각각 따로 적용한 국제화 코드는 일관성이 떨어져서 날짜를 표시하는 위치마다 다른 형태의 날짜가 표시될 수 있다.

그럼 당장 국제화가 필요하지 않지만 미래를 위해서 국제화 코드를 미리 적용해 놓으려면 어떻게 해야 할까?

날짜, 시간를 처리(입력, 출력)하는 모든 기능을 별도의 국제화 함수(클래스)로 분리를 하는 것이다. 그리고 모든 개발자는 날짜, 시간을 다룰 때는 꼭 이 국제화 함수를 사용하도록 하는 것이다. 이 국제화 날짜, 시간 함수는 현재는 한국어만 지원하지만 추후 필요할 때 언제든지 다양한 언어를 쉽게 지원할 수 있다.

날짜, 시간 처리 함수는 필요한만큼 다양하게 준비해야 한다. 소프트웨어 UI상 필요한 모든 조합을 함수로 만들어 놓아야 한다.

년월일시분초
년월일
시분초

날짜, 시간 함수 관련 추가 내용은 아래 글을 참조한다.

제공된 국제화 함수 외에 다른 형식의 날짜 출력 함수가 필요하면 개별 개발자는 스스로 함수를 만들어서 사용하면 안된다. 국제화 담당 개발자에게 필요한 날짜 출력 함수를 만들어 달라고 요청한 한 후에 그 함수를 써야 한다. 1인 개발이라면 한명의 개발자가 양쪽 역할을 다하면 된다.

국제화 외부 라이브러리가 모든 것을 해결해주지는 않는다. 외부 라이브러리를 이용하더라도, 현재 프로젝트에 맞게 다 커스트마이징해서 일관된 국제화 함수들을 만들어 줘야 한다. 개발자들에게 각자 알아서 국제화 함수를 사용하라고 하면 일관성이 없고 중구난방이 된다.

국제화 함수 인터페이스는 나중에 바뀌지 않도록 잘 정해야 하므로 경험이 많은 고참 개발자가 정하는 것이 좋다.

날짜 외에도 고려해야 할 것은 많다. 아래 그 예를 보자.

번역이 필요한 메시지, 문자 인코딩(Database, File, 통신), 키보드 글자 배치, 폰트 종류, 글자 크기, 숫자 표기, 띄어쓰기, 쉼표, 마침표, 날짜/시간 표기, 썸머타임, 대소문자, 정렬 방법, 화폐, 무게, 부피, 길이, 종이크기, 온도, 주소, 이름, 제도 관련, 문화 관련 색깔/아이콘 등, 소리, 텍스트를 포함한 아이콘, O/X 기호, 문자 입력 방향

국제화 이슈가 있는 것은 개별 개발자가 마음대로 개발하면 안되고, 국제화 라이브러리에 추가한 후에 사용해야 한다. 모든 소프트웨어가 이 모든 항목을 고려해야 하는 것이 아니므로 국제화 이슈가 있을 것 같은 항목을 만나면, 또는 이미 구현을 했어도 나중에 발견하면 국제화 라이브러리로 옮겨야 한다.

소프트웨어의 어떤 부분이 국제화의 영향을 받을지 찾아내는 것도 중요하다. 그래서 국제화 경험이 많은 개발자가 필요하다. 

개발 초기에 소프트웨어 국제화 전문가에게 컨설팅을 받는 것도 좋다. 대충 개발하고 나중에 국제화가 문제 되어서 큰 비용을 지불하는 것보다 훨씬 경제적이다.

국제화 아키텍처를 어떻게 구성해야 하는지는 아래 글을 참조한다. 실제는 이보다 훨씬 복잡하지만 간단한 참조는 될 것이다.

소프트웨어 국제화는 쉽게 생각했다가는 큰코다칠 수 있지만, 초기부터 제대로 적용하면 큰 무기가 될 것이다.

2021년 1월 1일 금요일

"소프트웨어 스펙의 모든 것" 책을 출판했습니다.

 그동안 블로그를 통해서 연재를 시작했던 "소프트웨어 스펙" 시리즈를 책으로 출판했습니다.

블로그를 통해서 얘기를 시작했지만, 서두 부분만 진행을 했는데, 책을 출판하는 것이 많은 개발자에게 도움이 될 것 같아서 한빛미디어를 통해서 책을 출간하게 되었습니다.

책을 통해서 소프트웨어 프로젝트에서 가장 중요한 스펙에 대해서 익히는데 많은 도움이 될 것입니다.


Link : 한빛미디어, Yes24, 알라딘, 교보문고

2020년 10월 17일 토요일

비대면 소프트웨어 개발에 가장 중요한 문서는?

 코로나19로 인해 전세계적으로 비대면 업무 방식이 확대되고 있고 소프트웨어 개발도 비대면 개발 방식이 크게 요구되고 있다. 비대면 업무 방식은 업무 효율성 증대와 생산성 향상에 기여를 하기 때문에 코로나19가 아니라도 도입이 필요하다.

글로벌 소프트웨어 회사인 깃랩은 코로나 이전에도 1300명 전직원이 재택근무를 했고, 구글이나 페이스북 같은 글로벌 소프트웨어 회사도 코로나19 이전부터 상당수의 직원이 풀타임 재택 근무를 수행했고, 현재는 재택 근무를 대대적으로 확대하고 있으며 앞으로 전면 재택 근무로 전환하겠다고 하는 회사도 많다. 이렇게 할 수 있는 이유는 이전부터 비대면 개발이 가능한 형태로 일을 해왔기 때문이다.

비대면 소프트웨어 개발을 위해서는 시스템, 프로세스, 문서, 문화 등 여러가지를 갖추고 있어야 한다. 이중에서 문서는 얘기를 해보려고 한다. 소프트웨어를 개발할 때 프로젝트에 따라서 다르지만 여러가지 문서를 작성한다. 이중에서 비대면 개발을 위해서 가장 필요한 문서는 무엇일까?


비대면 개발에 가장 중요한 문서는 스펙


필자가 생각하는 가장 중요한 문서는 “스펙”이다.

“스펙”은 비대면 개발을 위해서만 필요한 것이 아니고 소프트웨어 개발 전체에 가장 핵심적인 문서이다.

과거 80년대 전세계적인 소프트웨어 위기를 극복하기 위해 소프트웨어 공학이 급속히 발전하면서 소프트웨어 프로젝트 성공을 위해서 가장 중요한 요소로 “스펙”을 꼽았다.

2000년 이후 우리나라의 수많은 대기업들이 글로벌 회사로 성장하면서도 소프트웨어 개발의 문제를 겪으면서, 방법론, 프로세스, 고가의 툴 등을 도입하면서 문제를 해결하려고 했으나, 기대만큼 문제를 해결하지 못했고, 몇몇 회사들은 “스펙”의 중요성을 인식하고 “스펙” 작성 역량에 투자를 하고 있다.

많은 회사들이 소프트웨어를 개발할 때 대략의 요구사항을 가지고 개발자들이 밀접히 접촉하여 의논하면서 소프트웨어를 개발한다. “스펙” 문서를 주고, 자신이 담당한 부분을 나눠서 멀리 떨어진 장소에서 일할 수 있는 회사는 그렇게 많지 않다. 이유는 “스펙” 문서를 제대로 작성하지 못하기 때문이다.

애자일이나 스크럼 방식으로 개발을 하는 경우 과거처럼 “스펙” 문서는 필요 없다고도 하는데, 그렇지 않다. 방식만 다를 뿐이지 “스펙”은 필요하다.

다같이 모여서 개발을 한다면 수시로 의논하며, 조율하여 개발을 해나갈 수 있지만, 비대면 개발을 한다면 그렇게 할 수 없다. 자신이 개발할 부분이 명확하게 정의가 되어 있어야 서로 떨어져서 개발을 할 수 있다. 하지만 스펙 문서가 없이 개발하거나 대략의 요구사항을 가지고 서로 모여서 조율해가면서 개발하는 방식에 익숙한 대부분의 회사들은 비대면 개발을 할 수가 없다.

그럼 코로나 이전에도 1300명의 전직원이 재택근무를 하고 있는 깃랩이나, 수많은 직원이 집에서 일하고 있었던 구글이나 페이스북은 어떻게 진작에 비대면 개발을 광범위하게 수행하고 있었을까?

시스템, 프로세스, 문화, 문서 등 여러가지 요소가 있지만, 잘 작성한 스펙이 그중에서 중요한 역할을 한다. 코딩은 개발 단계에서 가장 많은 인원이 참여하는 단계다. 많은 개발자가 서로 떨어져서 일할 수 있도록 스펙을 잘 작성해서 공유하기 때문이다.

여기서 문제는 스펙을 잘 작성하는 것이 소프웨어 개발에서 가장 어려운 주제라는 것이다. 국내 많은 기업들이 소프트웨어 개발 역량을 글로벌 수준으로 끌어 올리는데 여전히 어려움을 겪고 있는 이유도 스펙 작성의 어려움이 한 요소로 작용하고 있다.

스펙 문서는 꼼꼼하게 모든 것을 방대하게 작성하는 것이 잘 작성하는 것도 아니고, 간단하게 작은 문서로 작성하는 것이 잘 작성하는 것도 아니다. 방대한 템플릿을 꼼꼼하게 채우는 것이 올바른 방법도 아니다.

스펙의 역할은 여러가지가 있지만, 개발자 관점에서는 스펙 문서를 보고 자신이 개발한 부분을 충분히 구현할 수 있을 정도가 되어야 한다.

잘 작성한 스펙 문서가 어떤 것인지는 칼럼에서 짧게 다룰 수 있는 주제는 아니다. 그래서 여기서 스펙 문서에 대해서는 구체적으로 자세히 설명하지는 않겠다.

거대한 방법론이나 소프트웨어 공학 이론에서도 소프트웨어 스펙을 작성하는 방법을 이론적으로 다루고 있고, 이를 따라하면 방대하고 복잡한 스펙을 작성해야 한다. 하지만 깃랩, 구글, 페이스북이 이런 방식을 따르고 있지 않다. 이론은 이론일뿐, 실전적인 방법으로 스펙을 작성하고 있다. 대부분의 회사는 이런 이론을 따라하다가는 백이면 백 실패한다.

스펙을 작성하는 방법은 피아노와 골프를 배우듯 실전적인 방법을 배워나가야 한다.

10배의 비용과 시간을 들여서 완벽하게 자세한 스펙문서를 작성할 수 있을지는 몰라도 대부분의 실제 프로젝트에서 그런 방법은 쓸모가 없다.

최소 비용으로 효과적으로 스펙을 작성하는 것이 실전적인 방법이다. 


스펙은 목적은 소프트웨어를 최단 시간, 최소 비용으로 개발하기 위한 것


소프트웨어 프로젝트에서 스펙을 잘 작성하는 목적은 소프트웨어를 최단 시간, 최소 비용으로 개발하기 위함이다.

그래서 거대 방법론에서 제안하는 수십가지의 문서를 작성하는 방법은 실전적인 프로젝트에서 효용성이 떨어진다. 많은 회사가 이 방법을 시도했다가 포기하거나 프로세스는 따르지만 정작 소프트웨어 문제를 해결하지 못한 상태가 계속 되곤 한다.

아직도 많은 회사들이 소프트웨어 개발에 문제를 가지고 있다. 대부분의 프로젝트는 계획된 일정에 끝내지 못한다. 그래서 계획된 사업 로드맵에 맞춰 제때 소프트웨어가 출시되지 못해서 많은 사업이 차질을 빚고 있다. 또한 출시된 소프트웨어는 여러가지 문제가 발생하고 유지보수에 어려움을 겪고 있다. 소프트웨어 회사의 사업을 영위하는데 큰 어려움을 주고 있는 것이다.

이러한 소프트웨어 문제를 해결하기 위해서는 소프트웨어 공학에서 언급하는 프로세스, 툴, 품질, 설계, 형상관리 등 여러가지가 다 필요하고 이러한 것들은 충분히 확보가 가능하다.

하지만 가장 근본적이고 어려운 “스펙"을 작성하는 역량을 확보하지만 않으면 넘을 수 없는 벽에 부딪히게 된다. 소프트웨어에 있어서 2류까지는 가능할지 몰라도 1류가 되기는 어렵다.

그래서 나는 기업들이 소프트웨어 문제를 해결하고 구글이나 페이스북과 같은 글로벌 수준의 소프트웨어 개발 역량을 확보하고 싶다면 개발자들이 스펙을 제대로 작성할 수 있는 역량을 확보할 수 있도록 해야 한다고 주장한다. 

스펙은 분석 아키텍트가 혼자서 스펙이라는 문서를 달랑 작성하면 되는 것이 아니다. 스펙을 제대로 작성한다는 것은 회사 전체가 같이 움직이는 것을 말한다. 모든 관련자가 요구사항을 충분히 수집에 협조하고, 여러 전문가가 참여를 하며 작성된 스펙 문서에 대해서 관련자들이 철저히 리뷰를 하고 변경관리도 제대로 해야 한다. 모든 직원들은 스펙 문서를 이해하고 읽고 이에 따라서 일할 수 있어야 하고, 개발자는 스펙 문서를 파악하고 떨어져서 개발을 할 수 있어야 한다. 이러한 관행을 갖추려면 많은 노력과 오랜 시간이 걸린다.

여기서 중요한 것은 방법론, 툴이 아니고 문화, 습관, 인식의 변화다. 또한 이런 것을 이끌려면 경영자의 강력한 의지도 중요하다. 몇년전 국내 S사에서 소프트웨어 역량의 근본적인 해결을 위해 내부에서 분석아키텍트를 양성하기 위한 노력을 시작했는데 이런 활동을 매우 긍정적으로 생각한다. 시간이 오래 걸리겠지만, 꾸준히 노력하면 글로벌 수준의 소프트웨어 역량을 갖추는데 중요한 발판이 될 것으로 생각한다.

대기업보다 움직이기 수월한 스타트업이나 중소기업은 노력여하에 따라서 스펙 작성 역량을 확보하기 더 용이하다. 소프트웨어 1류가 되고 싶다면 스펙에 관심을 가지고 스펙 역량을 확보해야 한다.


2020년 9월 18일 금요일

진짜 비대면 업무 방식 vs 가짜 비대면 업무 방식

 최근 코로나 19 때문에 비대면 업무 방식으로 전환이 강하게 요구되고 있다. 그러면서 비대면 업무 방식을 많이 추진하고 있는데, 가짜 비대면 업무를 하고 있는 회사도 많다.

비대면 업무 방식은 생산성이 높기 때문에 코로나 19가 아니더라도 도입이 권장된다. 그러면 진짜 비대면 방식으로 일하고 있는지, 가짜 비대면 방식으로 일하고 있는지 9가지 지표로 알아보자. 


툴, 시스템


재택근무를 도와주는 솔루션만 도입했다고 진짜 비대면 업무를 하는 것이 아니다. 

가짜 비대면 업무를 하는 회사는 몇 가지 특징이 있다. 완전한 비대면 업무 방식으로 일하기 위해서 필요한 시스템과 툴을 충분히 도입하지 않아서 여기 저기 구멍이 있는 경우다. 그래서 수시로 메신저나 이메일로 업무를 물어봐 가면서 처리하고 시스템을 따라 업무가 유기적으로 진행되지 않는다. 

또, 부서마다 사용하는 툴이 다른 경우도 있다. 진짜 비대면 업무를 하기 위해서 가장 중요한 시스템이 이슈 관리 시스템인데, 이것을 부서마다 다른 것을 쓰거나 일부 부서만 사용하는 경우다. 그러면 업무 협조 시 상황에 따라서 써야 하는 시스템이 달라서 매우 번거롭고 업무가 물 흐르듯 흐르지 않는다.

하지만 진짜 비대면 업무를 하는 회사는 필요한 시스템과 툴이 촘촘히 잘 구축되어 있고, 서로 연동이 잘 되어 있고, 모든 직원이 동일한 시스템을 쓰며, 내재화가 잘 되어 있다. 그래서 업무가 매끄럽게 흘러가고 한 두개의 대시보드에서 자신의 업무가 다 모니터링 되고, 관리자는 부서의 업무를 한눈에 파악할 수 있도록 되어 있다.

대부분 들어본 시스템과 툴이지만 전사적으로 제대로 구축하여 잘 쓰는 것은 매우 어렵다.


문서 관리


비대면 업무 방식을 주장하면서 문서를 개별 PC에서 작성해서 이메일이나 메신저로 서로 주고받으면서 공유하고, 관리를 하고 있다면 가짜 비대면 업무를 하고 있을 가능성이 높다.

또는 문서 공유 시스템을 쓰기는 하는데, 부서별로 서로 다른 시스템을 사용해서 타부서와 문서를 공유할 때는 이메일이나 메신저 등으로 파일을 전달하는 경우도 있다.

진짜 비대면 업무를 하려면 전사의 모든 문서를 하나의 문서 관리시스템에서 체계적으로 관리하고 있어야 한다. 물론 부서별 업무별로 권한 관리를 잘하여 보안 상으로도 문제가 없어야 한다.

문서의 작성, 협업, 리뷰, 관리, 공유 등 모든 작업이 하나의 시스템으로 관리가 되어야 효율적인 비대면 업무를 할 수 있다. 


문서 작성 역량


비대면 업무를 제대로 하기 위해서는 문서 작성 역량도 매우 중요하다.

문서를 많이 작성해야 한다는 의미는 아니다. 대면 업무 방식에서는 문서의 내용이 부족하면 수시로 옆에서 물어가며 일할 수 있지만 비대면 방식에서는 그렇게 하기 곤란하다.

기획 문서, 스펙 문서, 설계 문서 등 여러 종류의 문서들이 문서만 가지고 충분히 내용을 파악할 수 있어야 한다. 100%는 불가능하지만, 80~90% 문서로 충분히 내용을 전달할 수 있는 역량을 가지고 있어야 한다. 물론 이런 문서도 문서 관리시스템에서 협업과 리뷰를 통해서 만들어지므로 잘 작성될 가능성도 높아진다.

가짜 비대면 업무를 하는 회사는 문서를 가지고 일하기 어려워 일할 때 커뮤니케이션이 너무 많이 필요하다. 그래서 옆에 앉아서 같이 일하기를 원한다. 예를 들어 소프트웨어 회사에서 외주를 줄 때 스펙 문서를 기반으로 외주를 주지 못한다. 대략의 기획 문서를 기반으로 외주를 준 후에 요구대로 소프트웨어가 개발이 잘 안되니 옆에 끼고 설명을 해주거나 나중에 프로젝트 일정이나 품질에 문제가 생기는 것이 다반사다.

진짜 비대면 업무를 하기 위해서는 직원들이 모두 말보다는 문서 위주로 일하기 때문에 문서를 제대로 작성할 수 있는 역량이 필요하다. 그래서 채용 시 글을 잘 쓰는 사람을 뽑기도 하고, 직원들에게 글을 잘 쓰고 문서를 잘 작성하도록 교육할 필요가 있다.

물론, 비대면 업무를 계속 하면서 문서 작성을 계속 하고 리뷰를 거쳐 피드백을 많이 받게 되면 누구나 문서 작성 역량이 조금씩은 향상된다.


보고


진짜 비대면 업무를 하는 회사는 별도의 보고가 많이 줄어든다. 또한 보고를 위한 보고는 보기 어렵다.

별도의 보고가 따로 필요하지 않은 이유는 촘촘하게 커버되는 시스템에서 업무의 진행 상황을 훨씬 더 자세히 파악할 수 있기 때문이다.

직원들도 별도의 시간을 들여서 보고서를 작성하지 않고 본연의 업무에 더 많은 시간을 쏟을 수 있다. 

하지만, 가짜 비대면 업무를 하는 회사는 업무는 업무대로 다하고, 일일보고, 주간보고 등 여러 형태로 보고서를 작성해서 보고를 해야 한다. 보고 방식은 온라인이라 할지라도 낭비요소가 아닐 수 없다. 

관리자는 또 상위 관리자에게 보고를 하기 위해서 직원들의 보고를 취합하여 또 보고를 한다.

보고를 줄이는 것은 진짜 비대면 업무 방식의 증거이자 혜택이다.


화상 회의 빈도


가짜 비대면 업무를 하는 회사는 형식만 비대면이지, 수시로 화상 회의를 실시하여 대면 업무 방식과 별 차이 없이 일한다.

화상 회의는 실제 만나서 얘기하는 것보다는 전달성이 떨어지지만 이동하지 않고 커뮤니케이션을 할 수 있는 장점이 있는 것이다.

하지만 화상 회의를 너무 자주 한다면 차라리 모여서 일하는 것이 더 효율적이다.

회상 회의를 해야 하는 안건이 대부분 이슈 관리 시스템이나 여러 시스템에 온라인으로 등록되고 프로세스를 따라서 처리되며 화상 회의는 꼭 필요할 때 최소화해서 해야 한다. 그래야 진짜 비대면 업무 방식으로 일한다고 할 수 있다.

회상 회의도 비싼 수단이다. 하루의 10~20% 넘는 시간을 화상 회의에 사용하고 있다면 일단 의심을 해보자.


회의 결과 관리


가짜 비대면 업무를 하는 회사는 회의도 자주 하지만 회의 기록이 없거나 회의 결과 해야 할 업무의 추적이 잘 안된다.

그러고는 한참 있다가 “지난 번에 내가 시킨 일 어떻게 되고 있지?”하고 묻는다. 전형적인 대면 업무 방식과 다를 바가 없다.

회의를 자주하는 것과도 관련이 있다. 회의를 계획하에 하지 않고 수시로 소집하기 때문에 회의록도 제대로 남기지 않고 후속 관리도 잘 안된다.

진짜 비대면 업무를 하는 회사에서는 회의 빈도도 적을 뿐만 아니라, 필요한 회의는 미리 계획이 되어 있고 회의 결과가 제대로 정리, 공유되어 있다. 또한 회의 결과로 인해서 해야 할 일은 회사의 온라인 시스템에 등록되어 실시간으로 추적이 된다. 

회의록만 보아도 후속 업무의 처리 현황을 실시간으로 볼 수 있도록 시스템이 구축되어 있기도 하다.

예를 들어 소프트웨어 회사의 경우 유지보수를 위해서 소스코드를 볼 때 특정 소스코드의 한 줄만 보아도 해당 줄을 누가 언제 작성해서 관련된 요청은 언제 누가 했으며, 이와 관련된 회의는 언제 누가 진행했고, 결론은 어떻게 나왔는지 줄줄이 모두 몇번의 클릭으로 추적이 된다. 그래서 누가 와서 유지보수를 해도 소스코드의 역사를 훤히 볼 수가 있다.


메신저 사용


가짜 비대면 업무를 하는 회사는 메신저를 끼고 업무를 한다. 회상 회의까지는 아니지만, 수시로 여러 사람에게 메시지를 날리고 이거 저거를 물어본다. 회상 회의보다는 작지만 비용이 많이 들어가는 일이다. 답변을 하기 위해서는 하던 일을 중단해야 한다. 만약에 집중 업무를 하고 있던 경우라면 다시 집중하는데 필요한 시간까지 최소 30분은 그냥 날아간다. 이런 일이 한 두 건이면 모르겠지만, 메신저를 통해서 메시지가 여기저기서 수시로 쏟아지면, 정작 집중해서 본연의 업무를 할 시간이 부족하다.

메신저의 문제점 중 하나가 기록이 체계적으로 남지 않아서 회사의 정보 자산으로 축적되지 않는 다는 것이다. 

그래서 메신저는 정보 자산과 관련 업무를 위해서 가벼운 용도로만 최소화해서 사용해야 한다.

편리하다고 수시로 메시지를 날리는 것은 대면 업무 방식과 크게 다를 바가 없다. 


업무 만족도


가짜 비대면 업무를 하는 회사는 현재 회사에서 진행하는 비대면 업무 방식에 불만이 많다. 아무래도 과거 대면 방식보다 불편하고 업무 효율성이 떨어지기 때문이다. 원인은 여러가지가 있을 수 있다. 시스템이 충분히 구축되어 있지 않은 채로 강제로 몰아붙일 수도 있고, 역량은 안되는데 과도하게 시스템을 도입한 경우도 있다. 

직원들이 충분히 시스템에 적응하지 못한 경우도 있다.

진짜 비대면 업무를 하려면 추가로 시스템이 필요한지, 직원들의 문서 작성 역량 향상이 필요한지, 시스템 사용 교육이 더 필요한지 회사에 따라서 다를 것이다.

대면 업무 방식으로 오랫동안 일하던 회사가 하루 아침에 완전 비대면 방식으로 전환하기는 어렵다. 인식의 전화, 시스템 사용 적응, 문서 작성 역량 등 필요한 것이 한두개가 아니고 수년 걸리는 일도 있다. 전문가의 도움을 받아서 하나씩 하나씩 꾸준히 추진하는 수밖에 없다.


재택근무 가능 여부


가짜 비대면 업무를 하는 회사는 100% 재택 근무를 하지 못한다. 최근 뉴스에 100% 재택 근무를 하고 있는 미국의 많은 회사를 접한다. 1200명 전원이 회사 사무실 하나 없이 100% 재택 근무를 하는 깃랩도 있고, 구글, 페이스북도 100% 재택근무를 하는 직원이 꽤 많다.

하지만 가짜 비대면 업무를 하는 회사는 일주일에 1~3일 정도 재택근무를 하고 나머지는 회사에 나와서 일해야 한다. 또는 재택근무가 가능한 특수한 직군만 100% 재택 근무가 가능하다. 최근 코로나 때문에 이런 식으로 일부 재택근무를 하는 회사가 있다.

물론 재택근무가 100% 우월한 것은 아니다. 대면 업무 방식은 얼굴 보고 일하면서 팀워크가 증가하는 것도 있고, 생활 리듬에 안정을 주는 것도 있다. 하지만 여기서 얘기하는 것은 필요할 때 재택근무를 할 수 있냐는 것이다.

100% 재택근무가 가능해야 진짜 비대면 업무를 하고 있다고 볼 수 있다. 그런 역량을 가지고 모여서 일하는 것은 회사의 선택이다.


이글은 ZDNet Korea에 기고한 칼럼입니다.

2020년 9월 7일 월요일

비대면 온라인 화상 회의를 효율적으로 하는 방법

코로나 19로 인해서 비대면 업무의 필요성이 대두되면서 회의도 비대면으로 진행해야 하는 요구가 커졌다. 인터넷을 통해 화상 회의를 하는 여러가지 시스템이 있고, 이런 시스템을 이용하면 효율적으로 비대면 회의를 진행할 수 있다. 현재 비대면 온라인 화상 회의 솔루션을 제공하는 회사의 가치는 하늘 높은 줄 모르고 치솟고 있다. 클라우드 기반 회상회의 서비스 회사인 줌(Zoom)은 최근 IBM의 시가 총액을 추월했다. 


코로나 19가 아니더라도 회의를 비대면으로 진행하는 것은 여러가지 장점이 있다. 먼저 비용이 더 적게 든다. 대면 회의는 한자리에 사람들이 모이려면 이동 시간도 필요하고, 넓은 회의 공간도 필요하다. 회의실도 제약이 있어서 원하는 시간에 회의를 못하고 시간을 조정해야 한다. 앞 회의가 늦게 끝나서 기다리느라고 시간을 낭비하기도 한다.  


하지만 온라인 화상 회의는 회의실도 필요 없고, 지구 반대편에 있는 사람과도 시간만 정하면 언제든지 회의를 할 수 있고 업무 효율성 면으로 많은 이익이 있다. 


오랫동안 온라인 화상회의에 익숙해진 회사라면 문제가 없지만 온라인 회의를 처음 도입하는 회사라면 막상 온라인으로 화상 회의를 진행해보면 오프라인 대면 회의와는 다른 점이 많다. 이것을 비교해보고 효율적으로 비대면 회의를 하는 방법을 알아보려고 한다. 


화상 회의의 단점


회상 회의는 인터넷을 통하기 때문에 0.5초~1,2초 정도의 시간 지연 효과가 있다. 내가 말한 후 약 1초 정도 후에 상대방이 듣는다는 의미다. 그래서 서로 얘기를 하다 보면 말이 서로 겹치고 꼬이는 경우가 발생한다. 그래서 대면회의처럼 서로 중간에 말을 끊고 열띤 토론을 하다 가는 뒤죽박죽이 된다. 그래서 화상 회의에서는 말하는 에티켓을 지켜야 한다. 한사람이 너무 오래 말을 하는 것도 좋지 않고, 중간에 말을 끊는 것도 좋지 않다. 한사람이 말을 하고 나서 동시에 두사람이 말을 시작하는 경우도 있다. 그래서 회상 회의 시스템에는 “손들기”기능이 있는 경우도 있다. 이 경우 손을 든 순서대로 발언의 기회를 주기도 한다. 회사에서 화상 회의 때 발언하는 규칙이나 에티켓을 정해서 시행하면 좋다. 


화상 회의를 하다 보면 소리가 울리는 하울링이나 시스템 문제 때문에 중간에 회의가 중단되는 일을 여러 번 겪게 된다. 그래서 가능하면 회상 회의 장비는 좋은 것을 갖추고 네트워크도 충분히 갖추는 것이 좋다. 비용을 조금 아끼려다가 툭하면 회의가 중단되어서 더 큰 비용을 지불하기도 한다.  


화상 회의의 단점 중 하나는 아무래도 대면으로 얘기하는 것보다 전달력이 떨어진다. 미묘한 표정의 변화를 읽기가 어렵고 소리가 100% 깨끗하게 전달되지 않거나 잡음이 좀 섞이기도 해서 대면 회의보다는 떨어진다. 따라서 회의 내용을 명확히 정의하고 안건을 해결하는데 집중하는 것이 좋다.  


화상 회의의 장점


가장 큰 장점은 비용이 적게 든다는 것이다. 회의실이 필요 없고, 한자리에 모일 필요가 없으니 이동 시간이 절약된다. 한 빌딩 안에 있는 사람들이 아니라면 이동 시간은 더욱 절약된다. 해외 지사의 인원이나 재택 근무자와도 이동없이 바로 회의를 할 수 있다. 회상 회의 시스템을 도입하는데 비용이 들기는 하지만 회상 회의를 통한 비용 절약은 비용을 넘어서고도 남는다. 


회의를 녹화 또는 녹음할 수 있기 때문에 나중에 재검토를 할 수도 있고, 비참석자도 회의 내용을 확인할 수 있다. 


화상 회의는 급한 안건으로 긴급하게 회의를 소집할 때 매우 유리하다. 빠르면 10분안에도 서로 다른 곳에 있는 사람들을 모아서 회의를 진행할 수 있다. 대면 회의로는 도저히 할 수 없는 신속함이 가능하다.  


 회상 회의에서 지켜야 할 사항


화상 회의도 편리하다고 아무 때나 마구 진행하면 비싼 비용을 치러야 한다. 미리 스케줄러에 계획을 하고 명확한 아젠다를 정의하고 가능하면 24시간 이전에 공유를 해야 한다. 모든 참석자는 아젠다를 철저히 검토하여 자신의 의견을 정립하여 참석해야 한다. 아젠다에 미리 의견을 첨부하여 회의 시간을 단축할 수 있다. 이것은 고스란히 회의록으로 이전된다. 


온라인 화상 회의도 회의 주도자가 있어야 한다. 그래야 여러 의견 충돌 시 조율을 하고 진행을 원활하게 할 수 있다. 회의는 핵심 이견만 논의하여 신속하게 결론을 내리면 된다. 온라인으로 공유하면 되는 내용을 공유하기 위해서 굳이 회의를 개최할 필요가 없다.  


온라인 회의도 시간을 지켜야 하는 것은 마찬가지다. 3시가 회의라면 적어도 5분전에 시스템에 접속을 해야 한다. 가끔, 문제가 생겨서 접속하는데 시간이 소요되기도 한다. 그래서 5분전에는 접속을 시도해야 회의에 늦지 않을 수 있다. 이래저래 준비하느라고 5분, 10분 늦게 회의를 시작하는 것이 일상화된 회사가 종종 있다. 항상 일찍 접속해서 기다리는 사람은 항상 시간을 낭비하고 회사 입장에서도 큰 손해다. 


재택근무시 화상회의를 하게 되면 너무 편한 복장으로 접속을 하는 경우도 있는데, 최소한의 예의를 갖추는 복장 정도는 입어주는 것이 좋다. 그리고 나름 조용한 공간도 필요하다. 주변이 너무 시끄러워도 회의에 방해가 되고, 회의 때문에 시끄러워서 주변에서 일하는 사람들에 방해를 주는 것도 조심해야 한다. 


앞에서도 언급했다시피 화상회의는 인터넷 속도의 한계상 지연이 발생할 수밖에 없으므로 상대방의 발언을 경청하는 습관을 들이고 중간에 끼어들지 않도록 하고 자신도 꼭 필요한 말만 간결하게 하는 습관을 들여야 한다. 화상회의를 이렇게 진행하면 업무 효율성이 많이 향상된다. 


회의록을 작성하는 방법


화상 회의를 하면서는 회의록을 실시간으로 작성하기 좋다. 회의가 끝나고 회의록을 따로 작성해서 배포하고 검토하고 수정하고 하는 것은 꽤나 번거롭고, 귀찮은 일이다. 그래서 회의 내용과 다른 회의록이 작성되기도 한다. 회의록은 실시간으로 작성하는 것이 좋은데, 회상 회의 때 회의 진행자가 회의록을 직접 작성하기를 추천한다. 아젠다를 띄워 놓고 직접 수정해가면서 회의록을 작성하면 좋다.  


회의록은 실시간으로 작성해서 모든 참석자가 실시간으로 눈으로 보면서 문구 하나하나 검토해서 의견이 다르면 회의록 수정을 요청해서 이것도 즉석에서 다시 적어야 한다. 회의록을 즉석에서 적고 공유할 수 있는 시스템도 있다. MS 팀즈에는 위키(Wiki)를 통해서 회의록을 실시간 공유할 수 있도록 되어 있다. 또는 화면 공유를 통해서 위키나 회의록 시스템에 실시간 기록할 수 있다. 


회의록을 작성하면서 결정사항, 미결사항, 해야 할 일 등을 태그로 표시를 하고 추후 해야 할 일은 Todo 시스템과 연동이 되도록 하는 것이 좋다. Atlassian의 Confluence의 회의록 시스템은 이런 기능이 잘되어 있다. 


간단한 일은 Todo와 연동하면 되지만 회의 후 해야 할 일이 꽤 큰 일이고 추적이 필요하면 이슈관리시스템과 연동을 하는 것이 좋다. 이렇게 해야 할 일을 등록해 놓고 추적하지 않으면 흐지부지 되는 경우가 많다. 


온라인 화상 회의는 이렇게 회의 준비, 과정, 결과, 후속 조치가 모두 온라인 시스템에 등록되어 회사의 자산이 된다. 그리고 지구상 어디에서든지 접근 가능한 정보가 된다. 온라인 회의가 제대로 정착되면 회사의 생산성이 증가할 수밖에 없다. 또한 비대면 업무로 전환하기 위한 강력한 무기가 된다.


이글은 ZDNet 코리아에 기고한 칼럼입니다.


2020년 8월 11일 화요일

효율적 비대면 업무를 위해 사용하면 안되는 5가지

 소프트웨어 개발 뿐만 아니라 모든 업무에서 비대면 방식을 지향하고 있는 회사에서 쓰면 안되는 것들이 있다. 흔히 쓰기도 하고 막상 편리하고 익숙하지만 사용하면 할수록 비대면 업무를 방해하는 것들이다. 이런 툴, 시스템, 방식은 투명한 업무, 공유, 추적, 협업에 저해되는 것들이다.

 

미국의 많은 소프트웨어 기업들은 오래 전부터 비대면 업무 방식에 많이 적응해 왔다. 그래서 코로나19로 인해서 어쩔 수 없이 비대면 업무 방식으로 전환을 해야 하는 상황에서 많은 소프트웨어 기업들은 무리 없이 비대면 업무를 적용하고 있다.

 

구글과 페이스북은 대대적인 재택근무를 시행하고 있고, 그 기간을 연장하고 있다. 앞으로도 재택근무를 더욱 늘리고 재택근무 위주로 돌아가는 회사로 전환하려고 하고 있다. 이미 사무실도 하나 없이1,200명의 인원이 재택근무를 하고 있는 GibLab이라는 회사도 있다.

 

하지만 우리나라 회사들은 주중에 하루, 이틀을 재택근무를 시도하거나 아예 시도조차 못하는 회사도 많다. 얼굴을 안보면 일이 안되는 구조를 가지고 있기 때문이다. 재택근무, 비대면 방식으로 업무를 수행하기 위해서는 시스템, 프로세스, 인식, 문화 등의 개혁이 필요하다. 이와는 반대로 주의할 것도 있다.

 

그럼 효율적인 비대면 업무 진행을 위해서 사용하면 안되는 것들을 알아보자.

 

1. 내부 이메일 시스템

 

이메일 시스템은 회사에 꼭 필요하다. 외부 업체와 메일을 주고 받고, 직원들 간에도 업무를 할 때 이메일을 사용 하기도 한다. 하지만 비대면 업무 방식을 가로막는 가장 강력한 방해 요소이기도 하다.

 

결론부터 말하면 내부 직원끼리는 이메일 사용을 금지하는 것이 좋다. 좀더 자세히 말하면 업무 내용이 직원 간에 이메일로 유통되면 안된다. 하지만 대부분의 회사에서 직원간 이메일을 금지하면 큰 반발에 부딪힐 것이다.

 

이메일에는 치명적인 문제가 있다. 직원들 간에 이메일로 업무를 하면 다른 직원과는 공유가 안되고 업무의 추적이 어렵다. 처음에는 둘만 아는 정보였다가 나중에는 두 사람도 잊어버리는 정보가 된다. 퇴사자가 발생할 때도 문제다. 퇴사자 이메일함에 있는 정보는 처치 곤란이다. 실수로 모두 지워 버리기도 한다. 나중에 필요할 수가 있어서 보관을 해 놓아도 찾기도 어렵고, 관리도 어렵다. 업무 정보가 이렇게 흩어지고 관리가 안되면 비대면 업무를 제대로 할 수가 없다.

 

업무에 해당하는 내용은 절대로 이메일로 공유하면 안된다. 이슈관리시스템을 사용하고, 지식정보는 Wiki 등의 시스템에 정리하여 공유해야 한다. 

 

실제로 직원간 이메일을 완전히 금지한 회사도 처음에는 반발이 심했지만, 몇 개월이 지나 업무 효율이 크게 증가하는 것을 느낀 후에는 과거로 돌아갈 수 없다고 한다. 

 

예외는 외부에서 메일을 받은 경우인데, 이 경우도 해당 메일을 이슈관리시스템에 등록하여 공유하고 추적할 수 있도록 해야 한다. 귀찮지만 꼭 그렇게 해야 한다.

 

2. 개인 메신저, 채팅 

 

기업용 협업 시스템이 아닌 카카오톡 등의 개인 메신저를 사용하면 안된다. 좀더 자세히 말하면 업무 내용이 개인 메신저 시스템을 통해서 공유되고 유통되면 안된다. 공유, 관리, 추적이 안되기 때문이다.  

 

물론 업무 내용이 아닌, 잠깐 보자거나, 점심을 뭐 먹을지 등의 내용은 개인 메신저를 사용해도 된다. 하지만, 업무 관련된 의견을 물어보거나 정보를 공유하는 등의 내용은 기업용 메신저를 사용해야 한다. 급한 것이 아니라면 이슈관리시스템을 사용해야 한다.

 

기업용 메신저는 여러 사람이 볼 수 있고 투명하게 업무가 진행되며 회사의 정보 자산이 된다. 직원들의 감정 소비가 줄어드는 효과도 있다. 개인 메신저는 업무용으로 사용하지 못하도록 공식적으로 금지하는 것이 좋다.

 

3. 온라인화 되지 않은 문서

 

워드, 엑셀 문서들을 개인 PC에 저장해 놓고 완성본만 이메일로 전송하는 방식은 최악이다. 버전 관리도 안되고, 구버전의 잘못된 정보가 유통되기도 하고, 공유도 잘 안된다.

 

회사에서 생산되는 모든 문서는 회사의 공용 문서 관리시스템에 저장해서 관리해야 한다. 요즘은 클라우드에 회사 문서를 저장하는 것이 일반적이다.

 

회사의 모든 문서를 온라인 시스템에서 관리를 하려면 정교한 전략이 필요하다. 공간 및 폴더 구조, 파일 이름 규칙, 권한 설정, 버전 관리 전략 등 수많은 해결 해야할 문제가 있다. 전략을 제대로 세우지 않으면 문서가 온라인에만 있지 뒤죽박죽인 경우도 있다. 그래도 개인 PC에 굴러 다니는 것보다는 훨씬 낫다.

 

퇴근 후 회사의 모든 PC가 불타 없어져도, 정보 자산 관리에는 문제가 없어야 한다. 복구하는데 시간이 걸리겠지만 이런 기준으로 문서를 온라인에 저장하는 전략을 수립하면 부족함이 없다.

 

4. 종이 문서

 

종이를 없애야 비대면으로 업무를 수행할 수 있는 것은 자명하다.

 

위에서 언급한 온라인화 되지 않는 문서와 일맥상통하는 것이다. 워드나 파워포인트로 작성한 문서를 인쇄해서 상급자에게 보고를 하곤 한다. TV 드라마를 보면 결재판에 결제 문서를 넣어서 도장을 받고, 마음에 안 들면 집어 던지기도 하는데, 재미를 위한 연출인지 아직도 종이로 업무를 하는 회사가 많은지는 모르겠다. 종이 문서는 가독성이 뛰어난 장점이 있기는 하나 그 외에 여러 면에서 단점이 많다. 종이 문서를 없애야 업무의 속도가 빨라지고 공유, 추적, 관리에 유리하다. 부수적으로 종이 비용을 절약하는 효과도 있다.

 

5. USB 메모리

 

비대면으로 업무를 수행하려면 인터넷이 연결되는 곳이라면 어디에서나 일을 할 수 있도록 해야 한다. USB 메모리에 파일을 넣어 다니면서 일을 하는 것은 구시대적인 방법이다. 회사의 문서 관리 시스템이나 클라우드에 모든 문서를 저장하고 어디서나 접속하여 업무를 할 수 있어야 한다.

 

또한 USB 메모리는 회사의 보안을 취약하게 만드는 요소이므로 사용하지 않는 것이 좋다.

 

비대면 방식은 코로나19로 인한 필요성도 있지만, 업무 효율성 및 생산성을 높여주는 것과 일맥 상통한다. 비대면 업무 방식으로 전환하려고 하는 회사는 필요한 것을 도입하는 것도 필요하지만, 사용하면 안되는 것을 제거하는 것도 필요하다. 그렇다고 무작정 제거하기보다는 정교한 전략이 필요하다. 없애는 것을 보완할 시스템이 필요하며, 프로세스, 문화, 교육 등에 투자해야 비대면 업무 방식으로 전환하여 기업의 경쟁력을 높일 수 있다.


이 글은 ZDNet Korea에 기고한 칼럼입니다.

2020년 7월 29일 수요일

비대면 소프트웨어 개발을 위한 핵심 시스템 10가지

비대면으로 소프트웨어를 잘 개발하는 방법은 비대면이 아니라도 일반적으로 소프트웨어를 잘 개발하는 방법과 다르지 않다. 그래서 비대면으로 소프트웨어를 잘 개발하는 방법을 도입하는 것은 의미가 있다.

비대면으로 소프트웨어를 효과적으로 개발하기 위해서는 필수적으로 도입해야 하는 툴, 시스템이 있다. 이 툴 중 대부분은 비단 소프트웨어 개발 뿐만 아니라 회사의 일반 업무에도 필요한 시스템이다. 소프트웨어 회사가 아니라도 관심을 가지고 보자. 툴과 시스템을 도입하는 것은 회사의 문화, 인식, 프로세스를 바꾸는 것보다는 쉽다.

좋은 툴, 시스템을 도입해야 개발 및 업무 효율성이 배가 된다. 툴, 시스템은 오랫동안 진화를 해왔고, 지금도 진화하고 있다. 이것들을 잘 선택하는 것도 실력이다. 워낙 많은 툴, 시스템을 도입해야 하기 때문에 선택도 쉽지는 않다. 그렇다고 잘 도입해서 사용하고 있는 한 회사의 사례를 그대로 따라하는 것도 좋은 것은 아니다. 회사마다 프로젝트의 성격, 규모, 문화, 환경이 다르기 때문이다.

꼭 비싼 툴을 도입하는 것이 좋은 것은 아니다. 그렇다고 무료 툴이 무조건 좋은 것도 아니다. 비싼 툴은 비싼 값을 하지만 기능이 너무 많거나 복잡해서 회사에 따라서는 오히려 과한 경우도 있다. 회사의 규모, 문화, 프로세스에 따라서 적합한 툴의 조합을 잘 선택해야 한다.

툴, 시스템을 도입하는 것은 쉽지만 잘 쓰는 것은 어렵다. 도입만 하고 안쓰거나 형식적으로 쓰는 경우도 많다. 툴만 도입하고 프로세스와 연계를 안하거나 회사의 상황에 너무 과한 툴, 시스템을 도입한 경우에도 정착에 실패할 수 있다.

회사의 기존 프로세스를 잘 적용할 수 있는 시스템을 선택하기 보다는 툴, 시스템의 철학에 맞게 회사의 프로세스와 업무 방식을 바꾸는게 낫다. 업무 방식은 좀더 자율적이고 능동적이어야 하며 수평적으로 바뀌어야 한다. 그래야 비대면 업무가 효율적으로 진행될 뿐만 아니라 생산성도 증가한다.

각 툴, 시스템들은 서로 연결이 되어서 유기적으로 작동한다. 한 회사에서 개발한 여러 툴 세트를 쓰면 연동이 잘 되기는 하지만 그렇다고 한 회사의 툴을 쓰는 것이 무조건 좋은 선택은 아니다. 회사의 프로세스와 잘 엮어서 여러 회사의 툴을 섞어 사용하기도 한다.

그럼 비대면 소프트웨어 개발을 위해서 꼭 도입해야 할 시스템을 알아보자.

1. 문서 공유 시스템


문서들이 직원들의 각자 PC에서 생산되고 이메일을 통해서 돌아다닌다면 보통 혼란스러운 것이 아니다. 문서의 버전을 관리하기도 어렵고, 보관도 어렵다. 문서 공유 시스템을 도입하면 문서의 버전을 철저히 관리하고 적절한 공유, 권한 제어, 외부 전달, 백업이 가능하다. 비용이 들기는 하지만 비용 이상의 생산성 향상을 줄 수 있는 시스템이다.

가장 마음이 드는 기능 중 하나는 검색 기능이다. 시스템마다 차이는 있지만 회사의 수만 개의 문서 중에서 내가 찾는 문서를 간단한 검색을 통해서 몇 초 만에 찾아준다. 문서의 본문까지 모두 찾아주는 시스템도 있으니 매우 편리하다.

몇몇 문서 공유시스템은 PC의 파일 탐색기와 연동하여 편리하게 사용할 수 있도록 해준다.

회사의 문서를 외부 공간인 클라우드에 저장하는 것에 보안 상 우려를 하는 기업도 있지만, 회사 내부에서 여기저기 문서가 굴러다니는 것보다 더 안전할 수 있다.

대표적인 시스템으로는 Dropbox, Apple iCloud, Google Drive, MS Sharepoint, Amazon WorkDocs 등이 있다.

국내 기업으로는 사이버다임사의 문서관리시스템이 있다.

2. 문서 공동 작업/리뷰 시스템


문서 공유 시스템과 접목하여 문서를 공동 작업 및 리뷰할 수 있도록 하는 시스템이다. 여러 사람이 동시에 문서를 작업해도 충돌 없이 같이 작업할 수 있다. 완벽한 문서 공동 작업 솔루션이 나온 것은 그렇게 오래되지 않았다. 불과 수년 전만 해도 상상하기 어려웠던 기능인데, 이제는 일반화 되었다.

문서를 리뷰할 수 있는 기능도 제공한다. 문서 리뷰를 실시하면 여러 관련자가 문서의 곳곳에 자신의 의견을 댓글로 남기면서 토론을 할 수 있다. 그 결과를 문서에 반영하고 다시 리뷰를 진행하는 사이클로 진행된다. 이렇게 문서 온라인 리뷰를 진행하면 관련된 모든 사람의 의견을 꼼꼼히 문서에 반영할 수 있다. 이런 시스템 없이 오프라인으로 문서를 리뷰하고 반영하는 것은 보통 어려운 일이 아니다. 오프라인으로 문서를 작성한 것보다 훨씬 완성도 높은 문서를 작성할 수 있다.

이렇게 문서를 온라인으로 보관하고 공동 작업하고 리뷰하는 프로세스를 적용하고 적응해 나가면 어느덧 비대면 업무 방식에 익숙해져 간다.

대표적인 시스템으로는 MS Office 365, Google Docs, Apple iWork 등이 있다.

3. 요구사항 관리 시스템


소프트웨어를 개발하는데 있어서 가장 중요한 것 하나를 꼽으라면 요구사항을 분석해서 스펙을 작성하는 일이다. 스펙을 문서화 하기 위해서 MS Word로 작성하기도 하고, GoogleDocs, Wiki를 이용하기도 하지만, 전문적인 관리시스템을 사용하기도 한다.

MS Office와 같은 문서 위주의 편집 툴을 사용하여도 소프트웨어 요구사항을 충분히 분석하고, 협업하고, 리뷰할 수 있지만, 전문적인 요구사항 관리 시스템은 조금 더 많은 기능을 제공한다.

요구사항을 수집, 관리, 협업, 리뷰, 버전 관리, 요구사항 추적, 재활용 등에서 좀더 많은 기능 및 편리함을 제공한다. 요구사항 분석 역량을 충분히 갖춘 회사라면 한번 도입해 볼만하다.

대표적인 시스템으로는 Jama, Orcanos, DOORS, ReqSuite, Accompa 등이 있다.

4. 이슈 관리 시스템


이슈 관리 시스템은 소프트웨어 회사만 필요한 시스템이 아니다. 이슈 관리 시스템은 버그 관리 시스템에서 출발하여 점차 진화를 거듭하여 회사의 모든 이슈를 관리하는 시스템으로 성장하였다. 이제는 거의 모든 형태의 회사에 필요한 시스템이 되었다.

이슈 관리 시스템은 단순히 설치해서 사용하는 것 만으로는 그 혜택을 다 볼 수 없다. 회사의 업무 철학과 방식이 바뀌어야 한다. 업무 방식을 지시와 보고 형태에서 자발적 업무와 모니터링 형태로 바뀌어야 한다. 일일이 업무를 지시하고 추후 결과 보고를 받는 형태로 업무를 계속 하면서 그 프로세스를 이슈 관리 시스템에 적용하면 비대면 프로세스로 전환하기도 어렵고, 이슈관리시스템의 철학과는 좀 멀어지고 업무 효율성도 떨어진다.

이슈 관리 시스템이 완전히 정착되면 모든 업무가 투명하게 진행되는 효과가 있다. 투명한 업무 진행을 꺼려하는 조직도 있지만, 적응하고 나면 업무 생상선이 대폭 증가하는 것을 경험할 수 있다.

이슈 관리 시스템을 도입하여 효과를 최대로 보고 비대면 업무를 효율적으로 진행하려면 업무 방식을 바꾸는 것에 많은 노력을 들여야 한다는 것을 명심하자.

대표적인 시스템으로는 Jira, Redmine, Mantis, Bugzilla, Trello 등이 있다.

Jira는 상용 소프트웨어지만 현재 10유저까지는 무료로 제공하고 있어서 스타트업에서 매우 유용하게 쓸 수 있다.

5. 소스코드 관리 시스템


소스코드 관리 시스템을 사용하지 않는 소프트웨어 회사는 거의 없을 것이다. 만약에 특별한 이유로 소스코드 관리 시스템을 사용하고 있지 않다면 꼭 도입을 해야 한다. 특별한 이유라는 것도 소스코드 관리 시스템을 사용하지 못하는 결정적인 이유는 아닐 것이다.

소스코드 관리 시스템은 도입은 쉽지만 제대로 쓰는 것이 만만치는 않다. 브랜치, 머지, 베이스라인, 체크인에 대한 여러가지 규칙을 잘 만들고 지켜야 한다.

소스코드 관리 시스템은 중앙 집중형과 분산형이 있으니 회사의 상황에 맞게 선태하면 된다.

대표적인 시스템으로는 Subversion, Git, Murcurial, Perforce 등이 있다.

설치형, 클라우드 형이 있으며, 클라우드 형으로는 Github, Gitlab, Bitbucket 서비스 등이 있다. 각자 유/무료 정책이 있으니 비교하여 선택하면 된다.

6. CI(지속적인 통합) 시스템


개발자들이 서로 떨어진 장소에서 얼굴 안보고 실시간으로 협업을 하기 위해서는 소스코드가 항상 빌드가 가능한 상태로 유지가 되어야 한다. 소스코드는 매시간, 매분 새로 업데이트가 된다. 그런데, 한 개발자가 빌드가 안되는 상태의 소스코드를 등록하면 개발팀 전체가 개발에 차질이 생긴다. 개발자는 항상 빌드 가능한 소스코드를 등록해야 하며 이 규칙은 매우 엄격하다.

CI(지속적인 통합) 시스템을 이용하면 소스코드를 등록할 때마다 소스코드를 점검하고, 빌드 가능한 상태를 유지하도록 도와준다. 이때 회사의 코딩 규칙 검사, 자동 테스트 등을 수행하며 소스코드의 버그를 줄여주기도 한다.

CI 시스템이 잘 구축되어 있으면 개발자는 자신이 담당한 모듈을 코딩해서 소스코드 관리시스템에 등록하기만 하면 된다. 나머지는 시스템이 알아서 해준다.

대표적인 시스템으로는 Jenkins, Bamboo, Cirble CI, GitLab CI 등이 있다.

7. 코드 리뷰 시스템


코드 리뷰는 온라인, 오프라인으로 진행하며 여러가지 방법이 있지만, 비대면 개발을 위해서는 코드 리뷰 시스템이 필수다. 모여서 코드 리뷰를 할 필요가 없고, 온라인 코드 리뷰 시스템에 코드 리뷰를 등록하면 관련된 수많은 사람이 온라인으로 코드 리뷰를 진행한다. 온라인 코드 리뷰는 오프라인보다 훨씬 많은 사람이 참여할 수 있고, 시간을 많이 절약해준다. 그래서 코드 리뷰를 좀더 활성화하는데 도움을 준다.

회사의 프로세스마다 다른데, 소스코드를 등록한 후에 코드 리뷰를 하기도 하고, 코드 리뷰를 통과한 소스코드만 회사의 메인 소스코드 저장소에 등록하도록 하기도 한다.

코드 리뷰가 활성화 된 회사일수록 개발자가 더 잘 성장한다. 그리고 고참 개발자가 될수록 코드 리뷰에 더 많은 시간을 할애해야 한다. 고참 개발자는 코드 리뷰를 통해서 후배를 양성하기도 하지만, 본인이 성장하는 수단이 되기도 한다.

많은 회사들이 코드 리뷰 도입에 실패하지만, 좋은 온라인 코드 리뷰 시스템을 도입하면 코드 리뷰 정착에 도움이 된다.

대표적인 시스템으로는 Gerrit, Crucible, GitHub, GitLab, Review Board 등이 있다.

8. 지식 공유 시스템


소프트웨어 회사만 필요한 시스템은 아니다. 회사에서 업무를 하다 보면 공유할 수많은 정보, 지식이 생성된다. 지식 공유 시스템이 없다면 이런 정보는 연기처럼 사라지거나 개인의 저장소에 묵히게 된다.
정보를 생산할 때 실시간으로 정보를 정리하여 공유할 시스템이 필요하다. 그래서 지식 공유 시스템은 비대면 개발의 핵심이다.

회사, 제품, 프로젝트, 프로세스 등 여러가지 분야로 잘 나뉘어서 정리된 지식과 정보는 이 사람 저 사람 찾아다니면서 물어보지 않아도 업무를 할 수 있게 해준다. 원격으로 접속 가능한 시스템이므로 지역적인 제약없이 일할 수 있다.

대표적인 지식 공유 시스템은 Wiki와 KMS다. Wiki의 용도는 매우 다양하다. 이를 회의록으로 사용하는 경우도 많고 회의록 기능을 강화한 Wiki 시스템도 있다.

설치형, 클라우드형이 있다. 장단점이 있으니 상황에 맞게 선택해야 한다.

대표적인 Wiki 시스템으로는 Confluence(10유저 무료), Bookstack(무료), Wiki.js(무료) 등이 있다.
KMS는 국내업체인 사이버다임날리지큐브가 제공하고 있다.

9. 화상 회의 시스템


비대면 개발을 하더라도 얼굴을 보고 회의를 해야 할 때도 있다. 재택 근무가 완벽하게 진행되어 모든 업무를 문서와 시스템으로 진행한다고 하더라도, 정서상의 이유와 팀워크 유지를 위해서 얼굴을 보고 얘기를 할 필요도 있다. 또 온라인으로, 문서로 쉽게 답이 안나오는 이슈는 얼굴 보고 논의하는 것이 훨씬 효율적이다. 이럴 때는 웹캠을 이용해서 화상 회의를 실시하는 것이 좋다.

화상 회의는 주기적인 프로젝트 회의로 진행하기도 하고, 이슈가 있을 때 비정기적으로 실시하기도 한다.

회상 회의는 1:1 뿐만 아니라 여러 명이 동시에 회의를 할 수도 있다. 여러 명이 원활히 화상 회의를 하기 위해서는 빠른 인터넷도 필수다. 화상 회의는 일반 회의와 마찬가지로 용건만 짧게 빠르게 진행해야 한다.

화상 회의 시스템은 부가 기능으로 녹화, 화면 공유, 화이트 보드, 그룹 스케줄러 기능을 제공하기도 한다.

대표적인 시스템으로는 Teams, Skype Business, Google Meet(hangout), Zoom 등이 있다.

10. 협업 시스템


협업을 위한 여러가지 기능을 한꺼번에 넣어 놓은 종합 선물세트다. 소프트웨어 회사 뿐만 아니라 모든 형태의 회사에 비대면 업무를 효율적으로 진행하기 위해서 필요한 시스템이다.

기본적으로 팀 관리, 채팅, 파일관리 등이 기본 기능이지만 화상 회의, Wiki 등 위에서 언급한 여러가지 툴 중 일부를 포함하고 있는 경우도 많다.

비대면 업무 필요성이 증가할수록 도입하는 기업이 늘 것으로 생각된다.

대표적인 시스템으로는 Teams, Slack, Swit, 잔디, 라인웍스 등이 있다.

이상 10가지의 시스템을 알아봤는데, 이런 시스템을 모두 사용한다고 완벽하게 비대면으로 소프트웨어를 개발할 수 있는 것은 아니다. 또한 모두 비대면으로 소프트웨어를 개발해야 더 생산성이 높은 것은 아니다. 시스템을 잘 활용하여 개발과 업무를 진행하면 비대면 비율이 높아질 수 있다. 그 자체가 개발 및 업무 생산성이 높아지는 것과 일맥상통한다.

이 글은 ZDNet Korea에 기고한 칼럼입니다.