Tech
실용주의 프로그래머를 지향합니다
2022. 10. 13
안녕하세요. 대한민국 1등 뷰티 앱 화해입니다. 실용주의 프로그래머를 지향합니다 교보문고 리드잇zine 실용주의 프로그래머
화해 개발팀 백엔드 개발자 이현재님의 기고가 교보문고 리드잇zine에 소개되어 전문을 화해 블로그에도 공개합니다.
간단하게 자기 소개 부탁드립니다.
모바일 뷰티 플랫폼 ‘화해’ 서비스를 만드는 7년차 Back-end 개발자입니다. 지금은 버드뷰에서 커머스 도메인을 맡아 개발해요. 개발 언어에 국한되지 않고 다양하게 활용하는 편입니다.
‘내가 찾는 모든 뷰티’ 화해
지금 계신 곳에서 개발을 하기 전까지 어떤 일을 하셨나요? 개발자가 되고 싶게 만든 특별한 동기가 있으셨나요?
고등학생 시절, 오픈소스 기반으로 만들어진 텍스트형 웹게임 사이트를 물려받았습니다. 2004년부터 비영리로 운영된 곳으로 Perl과 CGI로 이루어졌어요. 처음부터 직접 개발하지는 않았어요. 합류할 당시만 해도 개발하는 사람은 따로 존재했습니다. 저는 데이터를 기반으로 벨런스를 맞추는 게 주력 업무였어요. 운영에 참여하는 모두가 학생이었죠. 자발적으로 대가 없이 활동하다보니 하나둘 취업하면서 어느날 개발 인력에 공백이 생겼습니다. 운영진 사이에서 종종 어뷰징도 발생했기에 신뢰할 수 있는 인물을 찾기도 힘들었습니다.
아무도 시키지 않았던 일이지만, 제 욕심에 스스로 개발을 시작했습니다. 만들고 싶은 기능이 많았어요. 아무런 제반 지식 없이 시작하였기에 삽질의 연속이었죠. 개발을 하던 분이 자리를 비우기 전에 알려준거라고는 변수와 조건문 뿐이었습니다. 나머지는 코드를 보며 익혔어요. 늘상 밤새면서 시행착오를 겪었지만, 하나씩 개선되는 걸 보며 어느샌가 개발에 빠져버렸습니다. 수능도 뒷전이었고, 대학교를 진학하고나서도 전공보다 재밌었어요. 중복 코드를 제거하고 구조를 바꿀수록 효율적으로 변해가는 모습을 보니 즐거웠습니다. 나중에서야 알고보니 이게 리팩터링이었어요. 저에게 리팩터링은 자연스러운 과정 중 하나였습니다.
흘러가는대로 살다보니 어느덧 진로 결정을 미룰 수 없는 시기가 다가왔습니다. 다양한 선택지를 고민하다가 웹게임을 운영하면서 알음알음 도와주던 개발자 분께 면담을 신청했어요. 몇 년 간 사이트를 관리하던 모습을 지켜본 분이라 객관적으로 이야기해주리라 믿었죠. 직접 찾아가서 조언을 구했습니다. 지금과 달리 당시 IT업계 분위기는 좋지 않았어요. 어느 누구도 꽃길이라 이야기하지 않았던 길이죠. 조언도 마찬가지였습니다. 가벼운 마음으로 도전하지 말라는 게 첫 번째 조언이었습니다. 척박한 개발자 생태계의 현실을 알려주었죠. 그럼에도 불구하고 진심이라면 잘 해내리라 믿는다면서 공부할 방향성을 잡아주셨습니다.
조언을 듣고나서 다방면으로 고민해봐도 기회비용을 계산해보니 개발이 제일 나은 선택지였어요. 임용고시는 위험부담이 너무 컸고, 그 외는 보수적인 집단에 속할 가능성이 농후했습니다. 누군가에게 잘 보이고 싶은 마음도 없고 아부는 더더욱 싫어하다보니 성격에 맞지 않았어요. 반면 개발은 오롯이 열중했던 일이기도 했고, 밤을 세더라도 구현된 기능을 보면 즐거웠습니다. 일 자체가 스트레스로 다가오면 스스로 버티지 못한다는 걸 알기에 개발자를 선택했습니다. 마음을 다잡고나서 시작한 일은 컴퓨터공학 강의를 들으며 개발 커뮤니티를 쫒아다니는 거였어요. 교생실습과 병행하다보니 빠진 날도 있었데, 교수님께서 좋게 봐주셨던 기억이 있네요. 졸업 후에는 ‘모르는 게 무엇인지도 모르던 상태’라 하나라도 주워들으려고 개발자 오프라인 모임을 참석하였습니다. 개발 생태계에서 살아남기 위한 전략이었죠.
첫 직장으로 SI 중소기업을 다니면서도 개발자 모임을 꾸준히 참여했습니다. 많은 달에는 한 달에 네 개가 넘었어요. 전공이 아니다보니 주변에 개발자가 없어서 그들이 모이는 곳이라면 어디든 쫒아다녔습니다. 이 모습을 좋게 바라보신 분께서 사람인에이치알 입사를 제의하셨고, 운이 따라주어 경력 7개월만에 서비스 기업으로 이직하였습니다. 사람인에서 사수의 지도 아래 기초를 다졌어요. 한 해 두 해가 흐르다보니 까마득해보였던 언덕에 올라선 저를 발견할 수 있었습니다. 물론 아직 부족한 게 많아요. 이제 시작입니다. 고지는 멀었어요. 스스로 선택한 길인 만큼 최고는 되지 못 하더라도 제가 가진 역량을 최대한 끌어내고 싶어요. 버드뷰에 계신 좋은 개발자 분들과 함께 더욱 더 나아갈 겁니다.
개발자로 일하면서 관찰자의 눈으로 IT 업계에서 목격한 최근의 가장 중요한 변화는 무엇인가요?
개발자를 바라보는 사회 분위기가 달라졌습니다. 아무도 거들떠 보지 않았던 IT개발이 화두로 올라섰죠. 디지털트랜스포메이션을 꿈꾸는 제조업과 포스트 코로나 환경, 그리고 대형 게임사 3N(netmarble, NEXON, NCSOFT)에서 시작한 개발자 연봉 일괄 인상을 토대로 시장 가치가 변했어요. 이제서야 정상화되었다고 여기지만, 다른 사람에게는 커다란 파장이었나봐요. 몇 년 사이에 이처럼 극적인 변화를 겪은 직종이 흔하지 않잖아요. 제가 신입이던 시절만 하더라도 개발자라 하면 별다른 반응이 없던 사람들이 이제는 부럽다는 듯이 바라보더군요. 실상 많은 개발자들이 체감하는 건 크게 달라지지 않았을 거라 언론이 가진 힘을 느꼈습니다. 개발자 간 격차가 더 커졌어요. 이 외에 가장 큰 변화라면 단연코 재택 근무입니다. 코로나로 인하여 외출을 자제해야 하는 풍조가 사회 전반적으로 퍼졌어요. 정부 방침에 따라 혹은 직원들을 아끼는 마음으로 재택 근무를 시행하는 기업들이 늘어났습니다. 네트워크 보안만 확실하다면 어디에 있든 컴퓨터 한 대로 업무가 가능한 IT기업이 재택근무 수혜를 받았어요. 당연히 버드뷰도 전사재택을 시행하는 중입니다.
이현재님의 하루가 궁금합니다.
재택근무를 하지 않는 분들에게는 생소한 이야기일 수도 있어요. 버드뷰 개발자들은 게더타운에서 하루를 시작합니다. 플랫폼 혹은 밴드라 불리는 목적 조직이 머무는 사무 공간이 게더타운에 마련되어 있습니다. 티타임이나 가벼운 미팅은 게더타운을 통해 이루어져요.
격주로 월요일은 구글밋(Google Meet)을 활용한 전사주간회의로 시작합니다. 다른 회사는 분기 별 혹은 반기나 일 년 단위 이벤트로 타운홀 미팅을 하잖아요? 버드뷰는 타운홀 미팅이 필요치 않아요. 전사주간회의에 참여하면 회사가 어떻게 나아가는지 파악할 수 있거든요. 직원들에게 투명하게 정보를 공개하는 기업이라 신선하게 느껴졌습니다. 자유롭게 질문을 하면서 궁금증을 즉각 해소할 수 있어요. 서로 피드백을 주고 받는 게 자연스러운 문화입니다.
업무를 하면서 새롭게 알게 된 정보나 지식이 있다면 TIL(Today I Learned)을 작성하여 동료와 공유합니다. 동료를 위한 사내 기술블로그라 여겨도 될만큼 다양한 자료가 모여있어요. 정말 많은 분들께서 동료를 위하는 마음이 진심이라는 게 느껴졌습니다. 태그로 분류해놓아서 원하는 정보를 찾기도 수월합니다. 일상적으로 개발을 진행할 때는 테크스펙을 먼저 작성해요. 처리해야 할 업무에 대하여 사전 요건을 정의하고 개발에 대한 설계 방향성을 잡습니다. 시간이 흐르면 기억은 흐릿해지지만, 문서는 유지되잖아요? 개발하다보면 기존 코드에 대한 요구조건이나 정책에 대해 찾아봐야 할 일이 생기는데, 버드뷰는 테크스펙 문서라는 또다른 히스토리가 남아 이를 수월하게 파악할 수 있습니다. 테크스펙을 작성하면 리뷰를 거쳐요. 설계 시 누락 사항을 사전에 보완해야 예상치 못한 일을 미연에 방지하거든요. 테크스팩 리뷰를 마치면 본격적으로 개발을 시작합니다. 개발 중 요건이 변경되면 테크스펙도 갱신하죠. 개발 후에는 당연히 코드리뷰를 거치고, QA를 진행합니다. 문제가 발견되지 않으면 배포 후 모니터링하는 일상이 반복됩니다.
개발자로서 자신만의 원칙, 신념은 무엇인가요? 개발할 때 가장 중요한 가치는 무엇이라고 생각하시나요?
GitHub, 구글 계정 등 아이디로 쓰는 Devellany는 개발development과 수필miscellany의 합성어입니다. 코드도 사실 개발자와 기계가 읽는 글일 뿐이거든요. 코드를 직접 실행하지 않더라도 어떻게 동작할지 예상 되잖아요? 코드가 글이니 가능한 일입니다. 실제로 코드와 글은 큰 차이가 없어요. 아래 도표를 보면 무슨 이야기인지 아실 겁니다.
개발 | 글 |
기획, 분석 | 주제 선정 |
설계 | 플롯, 구상 |
개발 | 초고 |
디버깅 | 퇴고 |
코드리뷰 | 교열, 윤문 |
QA | 교정 |
물론 이는 표면적인 의미예요. 아이디인 Devellany는 개발을 하면서 겪은 경험을 기록해야 한다는 철학을 담았어요. 기억에 의존하는 건 좋지 않습니다. 시간이 흐르면 잊혀지기도 하고, 혼자 안다는 건 협업을 어렵게 만드는 요인입니다. 개개인 기억에 의존하다보면 시간이 흐를수록 오래 재직한 사람들에게 의존하게 돼요. 문서가 없다면 아는 사람에게 찾아가 물어봐야 하잖아요? 만약 혼자만 아는 히스토리를 가진 사람이 퇴사한다면 남은 사람들은 고생할 게 불 보듯 뻔합니다.
저는 동료들이 겪어야 할 무의미한 시간을 줄이고자 제가 아는 걸 글이라는 매체를 통해 공유해요. 사실 동료를 위한 일이기도 하지만, 스스로 공부하는 방식이기도 합니다. 직접 글로 정리하면 머릿속에 각인되거든요. 타인이 보더라도 무리없는 방식으로 정리하다보니 이보다 훌륭한 공부 방법도 없습니다. 동료와 함께 경험을 나누는 수단으로 글만큼 기록하기 쉬운 게 없기도 해요. 다시금 말하자면 코드도 글이니까요. 개발자라면 글을 통해 자신의 생각을 담을 줄 알아야 합니다. 제가 버드뷰로 온 이유이기도 해요. 이러한 활동이 자연스러운 기업입니다.
앞서 말한 철학은 개발 그 자체 대한 이야기지만, 서비스 개발자가 잊으면 안 되는 게 존재합니다. ‘서비스는 고객이 없으면 존재하지 않는다.’라는 아주 간단한 사실이죠. 서비스 개발자인 만큼 고객을 위한 개발이 기본입니다. 매몰비용만 포기하면 고객은 언제든 다른 서비스로 이동할 수 있어요. 고객을 저버린 서비스는 몰락합니다. 이렇게 말하면 사용자만 고객처럼 느껴질지도 모르겠네요. 서비스를 실제로 이용하는 사용자 뿐만 아니라 Frond-end 개발자, 기획자 등 함께 일하는 동료도 고객입니다. 서로 동일한 목적으로 모인 만큼 협업에 지장을 주면 안 돼요. 대가를 받는 프로라면 당연한 이야기입니다.
지금 계신 그 곳의 개발 문화는 어떤가요? 좋은 개발 문화라는 것은 무엇일까요?
버드뷰에서 금요일은 개발팀에게 중요한 ‘컬처데이’입니다. 업무를 하다보면 평소에 관심있는 기술에 대해 찾아보기도 힘들고, 동료들과 이야기를 나눌 시간이 부족한데요. 일주일동안 업무가 어땠는지 회고하면서 헬스체크를 진행해요. 일주일 간 못 했던 이야기를 하면서 서로가 처한 상황을 이해할 수 있죠. 큰 프로젝트라면 중간 회고를 거치면서 프로젝트가 잘 흘러가는 중인지 파악하기도 합니다. 헬스체크를 마치면 Back-end 플랫폼은 밋업을 통해 다양한 활동을 진행해요. 컨퍼런스 영상을 보며 의견을 나누기도 하고, TIL에 작성한 내용을 공유합니다. 최근에는 API 설계 백일장을 하면서 서로 다른 방식으로 접근하는 걸 다시금 깨닫는 시간도 가졌어요. 이 외에도 다양한 방식을 시도해보면서 문화를 가꾸어 나갑니다.
금요일 하루를 이렇게 쓰면 개발 일정은 어떡하나 싶죠? 테크 스펙 문서 가이드에도 적힌 내용으로, 일주일 중 월화수목, 4일 기준으로 개발 일정을 산정합니다. 때로는 다소 느리다고 여길지도 모르지만, 중요한 활동으로 인정 받습니다. 버드뷰는 개인의 성장이 회사의 성장이라는 철학을 가졌고, 우리는 함께 성장하기를 바랍니다. ‘개발문화를 혼자서 바꿀 수 없다며 포기하기엔 이릅니다’라는 글을 쓸만큼 개인적으로 개발 문화를 중요시 여기는데, 버드뷰는 이에 진심입니다. 좋은 개발 문화는 함께 나아가는 게 중요합니다. 동료를 위하는 방식은 각기각색이지만, 서로를 위하는 마음을 잊어서는 안 됩니다. 혼자 걸어가면 빨리 가지만 함께 걸어야 멀리 갈 수 있습니다.
개발자의 기본기, 혹은 좋은 프로그래머의 자질은 무엇이라고 생각하시나요?
‘코드를 많이 작성하는 것보다 코드를 많이 지울 수 있는 사람이 잘하는 소프트웨어 엔지니어’라는 말을 한 개발자를 보았습니다. 코드 작성이야 실력 여하와 관계 없이 얼마든지 가능하죠. 하지만 레거시를 없애면서 그에 대한 리스크를 충분히 감내할 개발자는 많지 않습니다. 자신이 겪을 위험부담보다 조직 전체 생산성을 바라봐야 시도할 수 있는 게 바로 코드를 지우는 일이니 당연하겠죠. 개발자라면 무조건 들어볼 수밖에 없는 인물인 켄트 백Kent Beck은 다음과 같은 이야기를 꺼냈습니다.
“소프트웨어의 모든 것은 변한다. 요구사항은 변한다. 설계도 변한다. 비즈니스도 변한다. 기술도 변한다. 팀도 변한다. 팀 구성원도 변한다. 변화는 반드시 일어나기 때문에 문제가 되는 것은 변화가 아니다. 변화를 극복하지 못하는 우리의 무능력이 문제다.”
프로그래머라면 언제든지 변화에 대응할 수 있어야한다는 의미입니다. 유독 기술 변화가 빠르다보니 꾸준히 학습하는 자세도 중요해요. 개발이 재미없다면 이만큼 중노동인 것도 없거든요. 스스로 즐거워야 공부가 생활 속에 스며들 수 있어요. 이와 더불어 호기심을 가진다면 금상첨화죠. 개발자가 적성을 탄다는 이야기가 여기서 나옵니다. 개발자는 코드를 통해 삶에 변화를 주는 직업입니다. 사람들이 느끼는 문제를 기술로 풀어내죠. 우리는 이를 즐길 줄 알아야 해요. 주어진 환경 속에서 더 나은 서비스를 만들기 위해 다양한 방식으로 접근해야 합니다. 무작정 코드로 풀고자 하는 게 정답이 아닐 때도 있어요. 기술에 매몰되지 않도록 주의합시다.
개발 관련해서 기술부채의 해결이나 자기계발은 어떻게 하고 계신가요?
소프트웨어 설계는 경험적 연구 기반입니다. 지속적으로 접하지 않으면 숙달되기 전까지 자연스레 코드로 녹이기 힘들죠. 개인시간을 쪼개어 꾸준히 다양한 개발자들과 이야기를 나누는 건 지속 가능한 소프트웨어 개발 방법론을 머릿속에 각인하기 위함입니다. 심리학의 대가, 피아제Piaget는 인지발달이론을 통해 ‘스키마를 구성해나간다’고 표현하죠. 데이터베이스에서 사용하는 스키마가 바로 여기에서 나온 단어입니다. 오프라인 커뮤니티 활동은 이를 위한 초석이에요. 시간을 아끼기 위해 간접 경험을 바탕으로 부족한 지식을 하나씩 채워나갔습니다. 그들이 겪었던 경험 속에서 저만의 해답을 찾았습니다.
페이스북 뉴스피드는 개발 이야기로 가득 채워놓았어요. 평소 이동 중에 자주 살펴보니 자연스레 개발 뉴스를 접합니다. 매 번 찾아보기에는 저도 사람인지라 힘들 거든요. 주변 환경을 개발에 맞춰놓았어요. 끊임없이 들어오는 정보 중에서 유의미한 걸 추려내고, 관심 갖는 건 따로 공부했습니다. 공식 문서를 살펴보기도 하고, 다른 사람들이 정리한 글을 읽기도 해요. 공부하면서 동료에게 공유할 내용은 따로 모았습니다. 하루 아침에 이런 환경을 만드는 건 어렵습니다. 생각날 때마다 자신만의 소식통을 가꾸면 큰 도움이 됩니다.
그동안 읽었던 책 중에서 개발하는데 가장 도움을 준 책 또는 가장 좋았던 책은 어떤 책인가요?
개발에 정해진 정답은 없습니다. 언제나 트레이드오프죠. 우리는 혼자 개발하지도 않고, 프로인 만큼 전체 비용을 계산할 줄 알아야 해요. 이를 잊어버리면 오버엔지니어링하기 일쑤죠. 이런 개발 철학을 다룬 책이 있습니다. 인사이트에서 번역 출간한 『실용주의 프로그래머』로 올해 2월 개정판이 나왔어요. 연구원이 아닌 이상에야 우리는 언제나 실용적으로 문제를 접근하는 습관을 길러야 합니다. 한정된 시간 속에서 최적의 결과물을 만들어야 하거든요. 이 책은 개발자들이 간과하기 쉬운 이야기를 이해하기 수월하도록 풀어냈습니다. 개인적으로 『클린 코드』보다 앞서 읽어야 할 책이고 생각합니다.
주변의 개발자 동료 혹은 후배에게 권하고 싶은 다른 책이 있나요?
주니어에게 『실용주의 프로그래머』(인사이트)를 추천한다면 그 이상으로는 제럴드 와인버그Gerald M. Weinberg 책을 추천합니다. 『프로그래밍 심리학』(인사이트)과 『테크니컬 리더』(인사이트)는 개발하면서 겪을 다양한 상황에 부합한 소프트 스킬을 다룹니다. 혹시 구하기 힘들다면 이와 비슷한 이야기를 다룬 『멀티플라이어』(한국경제신문)를 추천해요. 프로그래밍 언어와 관련된 기술 서적은 한정적인 상황에서 유용하고 오래될수록 녹슬기 마련이지만, 소프트 스킬을 다룬 책은 10년, 20년이 흘러도 그 가치가 변치 않습니다. 오래도록 개발하려면 변치 않는 게 무엇인지 고민해봐야 합니다. 제가 볼 때 변치 않는 건 언제나 동료와 함께 일한다는 거에요.
올해의 계획을 들려주세요.
버드뷰로 올해 이직한 만큼 버드뷰에 자연스럽게 스며들고 싶습니다. 새로운 환경과 더불어서 바라디 바랐던 개발문화를 갖춘 곳이니 만큼 *버디즈Birdies로 자리 잡길 바랍니다. 또한 좋은 개발자들이 버드뷰에 합류하기를 기대해요. 이를 위해 다양한 방식으로 접근하여 버드뷰를 개발자들에게 알릴 계획입니다. 사실 이렇게 알린다고 해도 저에게 보상이 돌아오진 않아요. 그저 좋은 개발자들과 함께 개발 문화를 가꾸고 싶을 따름입니다. 이처럼 개발 문화를 챙기는 기업을 찾는 건 어렵거든요. 개발 문화에 목마른 사람이라면 충분히 만족할 회사입니다. 우리 함께 할래요?
*버디즈(Birdies)는 버드뷰 구성원을 일컫는 말이다.
버드뷰에 대해 자세히 알고 싶다면 화해 테크 블로그나 유튜브를 한 번 살펴보세요. 보다 많은 이야기가 그곳에 담겨 있습니다. 테크 블로그에 제 글도 올라가니 많은 관심 부탁드립니다!
*해당 글은 교보문고측으로 부터 업로드 확인을 받은 후 게시한 글임을 밝힙니다.
이 콘텐츠가 마음에 드셨다면 화해 백엔드 플랫폼의 다른 글도 확인해보세요!