IT DONGA

[스타트업 창업이야기] 스타트업 개발자에게도 저녁 있는 삶은 올까

권명관

[IT동아] #1.

A: "남편은 무슨 일 해?"
B: "IT회사 다녀"
A: "무슨 일 하는데?"
B: "개발자야."
A: "어휴, 그럼 야근도 많고 주말에도 일할 텐데, 애들 키우기 힘들지 않아?"

필자 아내와 아내 친구들이 나눈 일상 대화 중 일부다. 짧은 대화지만, 많은 의미를 담고 있다. 국내 IT개발자에 대한 이미지는 좋은 편은 아니다. IT개발자는 금융회사나 유통, 제조회사 등에서 사용하는 시스템을 개발하기 위해 파견 온 협력업체 직원이나 해당 협력업체에서 고용한 소위 '을', '병', '정' 프리랜서를 떠올리기 때문이다. 또한, 반바지에 빗질도 제대로 못한 헝클어진 머리, 밤낮없이 주말에도 코딩하느라 잘 씻지도 못한 사람이라고 생각하기 일쑤다.

최근 국내 한 게임업체의 경우, 3명이 과로사하거나 업무 부담으로 회사에서 자살했다는 소식도 들리니, 이러한 인식이 전혀 틀린 것도 아닌 듯하다.

미국에서 대우받는 소프트웨어 개발자

미국의 경우, 소프트웨어 개발자에 대한 이미지는 국내와 많이 다르다. 미국에서 소프트웨어 개발자라고 하면 엄지손가락을 세우며 '6 digits?'라고 묻는다. 연봉 $100,000 즉, 1억 원 이상이냐고 묻는 것. 연봉 10만 달러는 미국에서도 (전체 직업군과 비교해) 높은 편인데, 소프트웨어 개발자는 일반적으로 이를 상회한다. 실리콘밸리의 경우, 개발자 대졸 초임이 10만 달러 정도다.

공대 중 최고로 꼽히는 스탠포드와 MIT에서 최고 인기 전공은 단연 컴퓨터 공학(Computer Science)이다. 하지만, 국내는 좋은 인재들이 소프트웨어 분야를 여전히 기피해 소프트웨어 분야 전체가가 열악해지는 악순환이 계속되고 있다.

소프트웨어 개발자의 역할은 점점 중요해지고 있다. 이미 자율주행 시스템과 암 진단, 자산관리 로봇 등 빠르게 발전해 다양한 영역에서 활용되고 있는 '인공지능'뿐만 아니라, 뱅킹, 콜센터, 주차 정산, 음식 주문, 모바일 게임 등 우리 일상 생활의 많은 부분을 소프트웨어 개발자가 책임진다. 하지만, 만성적인 개발 인력 부족으로 국내 ICT 산업 경쟁력은 시간이 지날수록 떨어지는 것이 현실이다.

조금씩 개선되고 있는 국내 개발 환경

그나마 다행스러운 점은 과거보다 소프트웨어 개발자의 근무 환경을 사회에서 관심을 가지며, 야근 문화를 없애기 위해 노력하는 기업이 많아지고 있다는 점이다. 핀테크 기업 핀다도 접근 방법은 다소 다르지만, 이러한 문화를 확산시키는 데 노력 중이다.

개발자들의 집중력 향상을 위한 여러 방법 중 핀다는 업무 공간 다변화를 통해 성과를 낼 수 있도록 지원한다. 반드시 정해진 자리에서 하루 8시간을 꼬박 앉아서 일하는 것이 아니라, 근무 중 머리를 식히기 위해 사무실 내 탁구장에서 함께 탁구를 치고, 다트 게임을 즐긴다. 큰 화면의 TV를 보며 개발할 수 있는 회의실이나 탁 트인 전망이 있는 라운지 쇼파, 독서실 같은 1인실 등 스스로 원하는 공간을 찾아 일한다.

핀다 개발자 근무 환경(출처: 핀다)

물론 업무가 몰리고 데드라인에 쫓기면 야근도 하고 주말에도 근무한다. 하지만, 이를 권장하지 않는다. '저녁이 있는 삶을 위해서'다.

'월화수목금금금' 일정 맞추기도 어려운데, 배부른 소리라고?

업무량이 많은 개발 환경에서 '저녁이 있는 삶'은 현실성 없다고 말한다. 하지만, 업무방식을 효율적으로 개선하고 생산성을 높일 수 있다면 어떨까.

무슨 일이든 마찬가지겠지만, 소프트웨어 개발은 집중력이 중요하다. 사람이 하루 8시간을 집중해 일하기는 쉽지 않다. 집중하지 못한 상황에서 작업하면 낮은 품질의 코딩으로 이어지며, 이는 더 많은 오류를 일으키고, 결국 더 많은 시간을 할애하는 악순환을 반복한다. 나중에는 직원의 행복 지수, 건강, 충성도도 떨어지고, 퇴사할 가능성도 높아진다. 결국 회사 역시 잃는 것이 더 많아지는 셈이다.

그렇다고 단지 초과 근무로 인해 생산성이 떨어지기 때문에, 이를 지양하기에는 개발 현실 대부분이 너무 열악하고 다급하다. 이에 초과 근무를 대신할 다른 방안이 있어야 기업 관리자를 설득할 수 있다.

생산성 극대화를 목표로하는 개발 환경 조성

이에 현재 필자가 근무하고 있는 핀다의 경우를 소개한다. 핀다는 개발 프로세스, 코딩 컨벤션, 소프트웨어 설계 원칙을 세워 생산성을 높이고, 이를 통해 초과근무를 줄이고 있다.

1. 이슈관리 시스템 'Jira'를 이용해 태스크, 오류 등 모든 이슈를 관리

이슈별로 진행과정, 현재 상태, 담당자 등을 명시적으로 공유 관리해, 커뮤니케이션 비용을 줄인다.

2. 위키 시스템 'Confluence'를 통해 회사 및 프로젝트별 지식을 관리

위키 시스템 'Confluence'를 통해 회사 및 프로젝트별 지식을 관리(출처: 핀다)

위키에 프로젝트별로 스페이스를 만들고, 트리 구조로 페이지를 생성한다. 그림 상의 페이지에는 'Jira'에서 생성한 이슈들을 나열해 볼 수 있는데, 이러한 방식으로 회사의 지식들을 체계적으로 정리하고 공유한다.

3. Git을 이용해 소스코드 및 디자인 프로젝트 등을 관리

Git을 이용해 소스코드 및 디자인 프로젝트 등을 관리(출처: 핀다)

동시에 여러 버전의 소스를 유지하고, 여러 사람이 협업하기 위해 'Git flow'를 준수한다. 소스 변경(커밋) 시에는 그림과 같이 관련 이슈 번호를 넣어 커밋과 이슈를 연동하고, 상용 배포 버전에는 그림과 같이 버전을 태그로 달아 버전별로 릴리즈 노트를 작성한다.

Git을 이용해 소스코드 및 디자인 프로젝트 등을 관리(출처: 핀다)

4. 'Jenkins'를 이용해 시스템 빌드 및 배포를 자동화

각 빌드마다 버전을 태그로 붙여서 관리한다.

5. 객체지향 프로그래밍 방식 준수

시스템을 모듈로 나누고, 각 모듈 간 의존도를 최소화한다. 논리적으로 관련된 코드는 한 패키지, 클래스 등에 모아서 응집도를 높이고, 데이터와 데이터 처리 코드 역시 한 클래스에 모은다. 중복된 코드는 피할 수 있다면 한 줄이라도 허용하지 않고, 상속, 함수화, 오버로딩 등을 최대한 활용해 코드 사이즈를 줄인다.

6. 이해하기 쉬운, 설명이 필요 없는 코드와 문서를 작성

소프트웨어는 본질적으로 복잡하다. 복잡한 문제를 최대한 쉽게 풀어내는 것은 소프트웨어 개발자의 핵심 능력 중 하나다. 다른 사람이 이해하기 어렵도록 문제를 복잡하게 만들어 본인 능력이 뛰어나다고 생각하거나, 주석을 달지않고 문서화하지 않아 다른 사람이 코드를 보고 알아서 이해하면 된다고 자만하지 않는 것이 중요하다. 경험이 부족한 신입 개발자라도 30분 내에 구조와 흐름을 파악할 수 있어야 한다.

7. 웹, 안드로이드, 아이폰 앱은 철저하게 통일된 MVC 구조로 구현

모델(M) 부분은 '서버로부터 데이터를 받아오는 모듈', '데이터의 세부사항을 처리하는 모듈', '데이터의 보존과 공급을 담당하는 모듈'로 분리해 구현한다. 화면 부분을 담당하는 뷰(V)는 주어진 데이터로 화면을 그리는 것만 담당한다. 화면을 구성하기 위해서는 뷰를 배치하고, 모델로부터 데이터를 받아, 뷰에 전달해야 한다. 이는 컨트롤러(C)가 담당하는데 컨트롤러는 철저히 컨트롤만 하고 세부적인 사항을 처리하지 않는다.

핀다의 웹, 안드로이드, 아이폰 앱은 모두 동일한 폴더, 클래스 구조를 가지도록 설계한다. 다른 분야를 접해보지 못한 개발자라도 하루 내 파악해 코드 수정까지 할 수 있는 것을 지향한다.

종합하면, 핀다 개발팀은 자신만의 스타일로 코드를 작성하지 않는다. 프로그래밍 컨벤션에 따라 최적의 간결한 코드를 만드는, 타이트한 프로세스를 따른다. 구글이나 마이크로소프트보다 높은 수준의 클린 코드를 작성하는 것. 공통의 규칙을 철저하게 준수하며, 더 나은 개선 방안을 연구하는 것을 목표로 한다. 이는 곧 저녁이 있는 삶, 나아가 신나고 발전적인 직장생활을 누리기 위함이다.

핀다 개발자들의 협의 모습(출처: 핀다)
< 핀다 개발자들의 협의 모습(출처: 핀다) >

나은 방법으로 밝은 미래를 만들 수 있다고 생각하는 인재들에게는 스타트업에서 오히려 더 큰 기회를 만들 수 있다. 보다 많은 스타트업과 IT기업들이 그 기업과 문화에 맞는 방식을 도입한다면, 행복하게 일하는 개발자들도 자연스럽게 늘어나지 않을까. 기업과 개인이 함께 성장할 수 있는 환경이 조성되기를 희망한다.

김경전, 핀다(Finda)기술총괄이사

핀다 기술총괄이사(CTO), 디지탈아리아, 삼성전자, MS, 티젠스, SK플래닛 등에서 15년 동안 저작도구와 임베디드, UI 프레임워크, 윈도우폰 OS, 노래 합성 및 오디오 프로세싱, 커머스 SW 등을 개발. 기술적으로 다양한 경험을 하는 것과 개발, 업무 프로세스 혁신하는 것을 좋아함. KAIST 전산학 석사, 고려대학교 컴퓨터학과 학사.

*본 칼럼은 IT동아의 편집 방향과 다를 수 있습니다.

글 / 핀다 김경전 CTO(kyungjeon@finda.co.kr)
편집 / IT동아 권명관(tornadosn@itdonga.com)

이전 다음