[Interview with CTO] 블록체인 개발자 채용, 면접 이야기
1. 본인을 한 문장으로 소개해 주세요.
- 소프트웨어 개발 경력 25년차입니다. 웹 클릭스트림 분석 전문 회사인 넷스루를 동료들과 창업해서 18년 정도 근무를 하다가 람다256에 합류하게 되었습니다. 2012년부터 애자일과 소프트웨어 공학실천법(Engineering Practice)에 관심을 가지게 되었고, 리팩토링, 테스트 주도 개발, 단위테스트, CI(Continuous Integration)와 같은 엔지니어링 프랙티스를 도입하여 개발 프로세스를 개선했던 경험을 가지고 있습니다.
- 현재는 람다256에서 BaaS(Blockchain as a Service) 플랫폼인 루니버스 개발팀을 이끌고 있으며, 블록체인 어플리케이션을 쉽고 빠르게 개발할 수 있는 도구를 만드는데 힘쓰고 있습니다.
2. 람다256 합류를 결심하게 된 이유는 무엇인가요?
- 2017년도 블록체인이 한창 떠오르는 시기에 Jay(현 람다256 대표이사)와 같이 블록체인 스터디를 시작하게 되었고, Jay가 두나무로 오시게 되면서 블록체인 관련 일을 해보자고 먼저 제안을 하셨습니다. 다니던 회사에 18년간 재직을 했던 터라 고민을 많이 했고, 그와 더불어 블록체인의 미래에 대해서도 생각을 많이 해보게 되었죠. 당시 데이터가 아닌 화폐를 은행과 같은 기관을 거치지 않고 온라인으로 전송한다는 것이 참 신기한 기술이라고 생각했고, 블록체인을 공부하고 제대로 이해하는데 시간이(약 6개월 소요) 굉장히 걸렸습니다. 연구를 하면서 블록체인 앱을 개발하는게 정말 힘들겠다는 내용에 공감을 했고, 기업들이 블록체인 앱을 쉽게 개발할 수 있는 플랫폼을 만들어 보자는 것에 크게 마음이 동하게 되었습니다. 2017년 말 두나무도 마침 블록체인 개발을 하고 있었고, 점차 성장세에 있는 것을 두 눈으로 확인하고 저도 로켓에 탑승하게 된 것이죠. 하하
- 현재는 람다256에서 BaaS(Blockchain as a Service) 플랫폼인 루니버스 개발팀을 이끌고 있으며, 블록체인 어플리케이션을 쉽고 빠르게 개발할 수 있는 도구를 만드는데 힘쓰고 있습니다.
3. 어떤 개발자가 훌륭한 개발자인가요? (람다의 CTO님은 개발자 면접 시에 어떤 점을 중점으로 보는지 엿보기)
요즘 개발자에게 요구하는 게 많긴 합니다. 그런데도 점점 더 요구하는게 많아지는게 트렌드인 것 같아요. 1) 옛날에는 개발만 잘하면 됐는데, 요즘은 개발은 필수고, 2) 테스트 코드도 잘 짜야하고(자기가 개발한 것에 대해 정상적으로 작동하는지를 증명할 수 있는 역량), 3) 추가로 요구사항 분석과 설계 역량도 필요로 하죠. 즉, 기획팀, 마케팅팀, 나아가 고객을 비롯한 이해관계자의 의도와 요구사항에 대해 정확한 의미를 파악해야 하는데 이는 또 커뮤니케이션 역량과도 연계가 되죠.
- 커뮤니케이션 역량하니까 함께 언급하고 싶은게 있는데, 개발팀 내부적으로 진행하는 커뮤니케이션도 많이 중요해요. 개발팀 내부에서 커뮤니케이션을 잘하려면 분석과 + 코딩 역량이 뛰어나야 합니다. 개발자끼리 커뮤니케이션 하는 도구로는 분석 모델, 제품 코드, 테스트 코드가 있습니다. 분석모델을 제대로 만들지 않으면 만들어야 할 것을 서로 다르게 이해해서 요구사항을 제대로 구현하지 못하는 경우들이 많습니다. 개발자들끼리 의사소통에 가장 많이 사용하는 도구가 코드입니다. 개발자들끼리는 코드 리뷰를 통해 코드의 품질에 대한 의견을 주고 받습니다. 특히 이름에 대해서 소통해야 하는 경우가 많고, 코드리뷰가 자칫 감정 대결로 이어지는 경우도 많이 봤습니다.
- 그럼 개발실 내 커뮤니케이션을 잘하려면? 요구사항에서부터 나온 용어(도메인 용어)를 사용해 버릇해야하죠.
- 본격 개발을 할 때는 Engineering Practice(공학실천법) 관련한 지식과 경험이 중요해요. 개발을 잘하려면 기능 개발도 중요하지만, 리팩토링, 단위테스트 코드 작성과 같은 실천법을 실천하는 것이 중요합니다. 리팩토링은 동작을 바꾸지 않으면서 코드 품질을 높이기 위해 코드 구조를 변경하는 실천법이고, 단위 테스트 코드 작성은 동작을 검증하는 테스트 슈트를 만드는 실천법입니다. 궁극적으로는 테스트 주도 개발 (Test-Driven Development)을 실천할 수 있으면 더할 나위 없겠죠.
- 잠깐 샛길로 새볼까요?(샛길이라고 표현하지만 굉장히 중요한 지름길과도 같은 길이에요) 공학실천법이라는게 왜 필요할까요?
- 옛날(
라떼는)에는 소프트웨어 배포 주기가 1년 정도였고, 그땐 저 개념이 그렇게 중요하지 않았어요. 하지만 현재, 우리 회사 같은 경우 2주에 한번씩 고객에게 배포가 되게끔 하고 있고, 안정적으로 배포를 하기 위해서는 하루에도 수십번 자신이 개발한 모든 코드가 정상적으로 동작하는지 여부를 상시 검증할 수 있어야 합니다. 이를 위해서 잘 짜여진 테스트 코드가 있어야 하고요. - 요구사항이 수시로 변경되고 그에 따라 코드가 바뀌는데 기능만 계속 추가하다 보면 추후 유지보수 비용이 너무 많이 들어가게 됩니다. 이를 방지하기 위해 설계 리팩토링을 해야하는 거고요. 즉, 현재 요구사항에 맞는 복잡도를 가질 수 있게끔, 추후 기능 변경 추가가 쉬울 수 있도록 하는게 바로 설계 리팩토링이라고 합니다.
- 말이 좀 길어졌네요. 요지는 바로 공학실천법을 사용하지 않으면 설계를 바꾸는 비용이 많이 들게되어 이는 결론적으로 개발팀의 생산성에 영향을 주게 되는 것이죠. 개발 환경, 개발 언어가 바뀌어도 공학실천법은 수명이 긴 지식이라고 감히 말할 수 있습니다. 회사에서는 개발 생산성을 높이고, 개발 비용을 줄이는 것 만큼 중요한 건 없으니까요.
- 옛날(
4. 면접 시에 어떤 점을 중점적으로 보시나요?
- 성장 의지가 있는 사람 (실제로 실천을 하고 노력을 하는 사람)
- 자신이 개발하고 있는 소프트웨어 도메인에 대한 관심과 지식을 갖춘 사람 (우리 회사의 경우 당연 블록체인에 대한 기본 애정이 있어야겠죠?)
- 위에도 언급한 공학실천법에 대해서 실제로 이해를 하는 사람 → 리팩토링, TDD 원전(원서)을 읽어본 사람. 개발지식의 생애주기가 매우 짧은 편인데, 앞에 책들은 90년대말 2000년 초에 출판된 책이지만 여전히 유효하고 중요한 지식임
5. 람다 개발자가 되면 얻게 되는 경험이나 이득엔 무엇이 있나요?
- 블록체인 업계에 대해 깊게 공부할 수 있고, 이를 바탕으로 플랫폼을 만들어 볼 수 있는 경험
- 좋은 개발 프로세스, 프랙티스(Engineering Practice)를 만들고 실천해 나갈 수 있음
- 현재 요구사항 분석/설계 시 도메인 주도 설계(DDD)를 적용해서 업그레이드를 해나가고 있고, 공학실천법을 실제 적용하면서 코드의 안정성(소프트웨어를 안정적으로 배포하기 위한)에 대해 배워나갈 수 있음
6. 람다 개발실은 어떻게 일하나요?
- 즐겁게, 효율적으로, 정말 필요한 회의(애자일, 스크럼 방식)만 하고 있습니다.
- 배포 주기인 2주 단위 스프린트 회의 진행 (플래닝, 리뷰, 회고)
- 유트랙, 애자일 보드를 활용
- 아무리 바빠도 Test Code Review, Tech Talk는 진행 (우리 모두의 성장과 미래를 위해)
- 1주 1회 1시간 Test Code Review – 개발실 전체가 모여서 대표 테스트 코드를 가지고 리뷰, 개선사항 도출, 어떻게 하면 더 짤 수 있는지 논의!
- 1주 1회 1시간 Tech Talk! (블록체인, 공학실천법 등 관심있는 주제를 정해 돌아가면서 발표)
7. 현재 운영하고 있는 개발팀의 장기 목표는? (장기적으로 어떤 모습의 개발팀이 되고자 하는지?)
- 뛰어난 소프트 엔지니어링팀이 되는 것이죠. 회사라는 이익집단의 하늘 아래, Cost나 ROI(개발생산성)와 엮일 수 밖에 없는데, 이를 유지하면서 급변하는 요구사항에 맞게 지속적으로 feature를 추가하고 이를 고객에게 전달할 수 있는 능력을 가진 팀을 만들고자 합니다. 이를 위해서 앞서 언급한 훌륭한 개발자가 되기 위해 챙겨야 하는 것들(도메인 지식, 공학실천법 등)을 다 실천해야 하고, 분명 어려운 길인게 맞지만 이를 이루기 위해서 끊임없이 발전하고 나아가고자 하는 마음을 가지고 노력해야 한다고 생각합니다.
8. 마지막으로 하시고 싶은 말씀은?
- 모두가 예견할 수 있는 말이지만, 우리 개발자 채용합니다. 많은 관심 부탁드립니다.