꾸준하고 깊게 개발하기

2022-06-26
Cover Image for 꾸준하고 깊게 개발하기

안녕하세요. 저는 토스뱅크에서 백엔드 개발자로 일하고 있는 김종엽이라고 합니다.

언제 처음 개발을 접하게 되었나요?

고등학생 때 수학을 좋아했는데 문과에 가게 되었어요. 처음에 문과를 선택할 때 많은 고민을 한 건 아니고, 이과보다 문과가 맞을 것 같아서 지원했는데 2학년이 되고 보니까 공부를 하면서 수학이 좋더라고요. 수학 쪽으로 가려면 수학과는 좀 아닌 것 같고 어디에 가야 수학을 할 수 있을지 고민하다가 이제 컴퓨터 공학과에 가게 되었어요. 그래도 저기에 가면 수학을 할 수 있겠다고 생각한 거죠. 그래서 컴퓨터 공학과에 가게 되면서 개발을 처음 접하게 되었어요.

컴퓨터 공학과에서 배운 전공 지식이 실제로 개발할 때 필요했나요?

많이 필요한 것 같아요. 예를 들어서 자료 구조나 알고리즘 운영체제, 네트워크와 같은 것들이 그때 당시에는 왜 배워야 하는지 잘 몰랐어요. 졸업 후에 실제로 실무에서 일을 하다 보니까 중요하다는 사실을 깨달았어요. 단순하게 코딩 한 글자를 쓰는 게 중요한 게 아니고 이걸 왜 이렇게 코딩해야 하는가를 알려면 기본기를 많이 알아야겠더라고요. 그런 기본적인 지식이 중요하다는 것을 이제 와서 좀 더 많이 느끼는 것 같아요. 그래서 대학교 때 더 열심히 했으면 지금 더 좋을 텐데라는 생각도 많이 들기도 해요. 그때 왜 필요한지 알았으면 좀 더 재밌게 할 수 있지 않았을까 싶어요.

개발자를 해야겠다고 결심하게 된 이유

사실 처음에는 컴퓨터 공학이 개발자를 하는 건지 몰랐어요. 컴퓨터 공학을 배우는데, '거기서 수학도 배울 수 있겠지'라는 생각을 가지고 가서 보니까 C언어나 C++을 배우는 거예요. 이건 수학이랑 상관없다라는 생각을 했어요. 물론 물리도 배우기는 하지만 메인은 프로그래밍이니까요. 개발자를 해야겠다고 결심한 이유는 우선 일단 주변 사람들이 다 전공을 살려서 취업을 해서 그런 부분에서 영향을 받기도 했어요. 또, 자료 구조를 공부하면서 Linked List가 과제로 나와서 했는데 그 문제를 며칠 동안 고민하고 해결했을 때의 쾌감을 통해서 프로그래밍 재미가 느껴져서 개발자를 해봐야겠다고 생각했어요.

개발자로 처음 일하게 된 곳은 어디인가요?

2018년 졸업을 하기 전에 임베디드 서비스 쪽에서 인턴 생활로 처음 일하게 되었어요. 실무적인 경험을 하고 싶어서 인턴을 하게 되었고, PHP를 사용해서 서버와 웹을 사용한 작업을 했어요. 거기서 나와서 면접을 보러 다니다가 "이카운트"라는 ERP(Enterprise Resource Planning) 회사에 다녔어요. ERP는 인사 관리 시스템이에요. 그곳에서는 3개월 정도만 다녔어요. 사실 그때는 개발이 무엇인지, 실무적인 개발을 어떻게 하는지는 잘 몰랐어요. 경험치가 부족해서 3개월 이후에 정규직 전환에서 떨어졌어요. 그래서 공부를 조금 더 해야겠다고 생각해서 "폴리텍 융합기술교육원"에 가게 되었습니다.

어떤 공부를 더 했는지 궁금해요

기본적인 C언어나 리눅스, 스프링 프레임워크에 대해 공부했어요. 전공 지식을 압축해서 배우고, 실무에서 쓰이는 것 기반으로 배웠어요. 연계된 기업이 있으면 해당 기업에서 와서 같이 프로젝트를 해요. 그 프로젝트를 통해서 발표도 하고, 지원도 해서 그 회사로 가기도 해요. 아무래도 기업 기반의 뭔가 교육을 받을 수 있으니까 좋았어요. 아침부터 저녁까지 고시원 살면서 정말 열심히 하다 보니까 이제 개발이 이런 거구나 더 이해하게 됐고, 내가 어떤 부분이 부족했는지를 알게 되었어요.

교육 계속 받던 와중에 학교 선배한테 연락이 왔어요. 지금 자기 회사에서 개발자 뽑는데 혹시 한번 지원해볼 생각이 있냐고요. 우선 밥이나 먹자고 해서 가게 되었는데 CTO분이랑 같이 오시더라고요. 같이 저녁을 먹으면서 이야기를 들어보니 재밌을 것 같아서 결국에는 중도에 그만두고 나왔어요. 총 10개월 과정인데 6개월을 하고 회사에 가게 된 거죠. 그렇게 증강 현실을 이용한 어린이 양치 교육 서비스인 "키튼 플래닛"에서 처음 일하게 되었어요.

키튼 플래닛의 어떤 점에 매력을 느꼈나요?

저는 이 서비스가 공감이 됐어요. 어린이들한테는 되게 중요한 거잖아요. 양치가 어릴 때부터 그 습관이 잘 들어야 나중까지 치아 건강을 유지할 수 있고, 아직은 이런 분야에 교육 서비스가 잘 되어 있지 않은 시기라서 재밌을 것 같았어요. 키튼 플래닛에서 일하면서 제대로 된 실무를 경험했습니다. 서비스도 내보내 보고, 서비스 이슈도 해결해보고, 기능 개발도 해보고요. 제대로 된 실무 개발은 처음이었으니까 같이 협업하는 것도 재밌고, 아이디어 회의하는 것도 재밌고, 제가 개발해서 배포한 거를 사람들이 쓰는 것도 재밌었어요.

힘들었던 점

힘들었던 점은 당시에 서버 개발자가 저 혼자였어요. 외주 서버 개발자가 있긴 했지만, 커뮤니케이션을 하는 것에서 한계가 있었어요. 옆에 사람을 보면서 성장을 하거나 서로 피드백을 주고받으면서도 성장을 할 수 있는데, 그런 게 안 되는 환경이어서 그게 제일 아쉬웠죠. 혼자 공부해서 적용은 할 수 있지만, 같이 하면 더 시너지 효과가 있잖아요. 제가 몰랐던 부분을 다른 사람들에게 피드백을 받으면서 적용해볼 수 없는 부분이 아쉬웠습니다. 그래서 '내가 여기서 계속 성장할 수 있나?' 하는 고민을 많이 했던 것 같아요. 그래서 그 당시에 세미나나 스터디를 많이 찾아 다녔어요. 제가 부족하기도 하고, 다른 사람들은 어떻게 하는지가 많이 궁금했어요. 그렇게 1년 반 정도를 다니다 보니 한번 다른 곳을 지원해보자는 생각이 들었어요. 다니면서 준비하는 건 아무래도 시간이 없으니 퇴사하고 나서 이직을 준비하게 되었습니다.

그래서 이직을 하게 되었군요

네. 그렇게 지원을 하다가 뱅크샐러드에 들어가게 되었어요. 뱅크샐러드에서 면접을 보는데, 그때 당시 면접 경험이 굉장히 좋았어요. 비전에 대해서 궁금한 부분을 물어봤는데, 데이터를 통해서 할 수 있는 것들이 많아 보여서 합류를 결정하게 되었습니다. 제가 세미나를 많이 들었다고 했잖아요. 한빛 미디어 주니어 세미나를 했었는데 ‘주니어 개발자 성장하기’라는 주제로 그때 당시에 뱅크샐러드에 다니던 이소영님이 연사로 왔어요. 그래서 뱅크샐러드의 개발 문화에 관해서 이야기를 듣고, 코드 리뷰 주니어가 성장할 수 있는 방법에 대해 듣게 되었는데 인상 깊었어요.

뱅크샐러드 송금팀으로 지원한 이유

저는 원래 핀테크를 하고 싶었어요. 처음 키튼 플래닛에 들어갈 때는 거의 양치 교육 서비스가 재밌어 보였고, 그걸 한번 좀 잘 만들어보고 싶다는 생각이 들었지만 나올 때는 결국엔 공감이 안 가는 거예요. 그때 당시에는 결혼도 안 했고 아이도 없었으니까요. 제가 공감을 하고 제가 써보고 싶은 서비스를 만들어야 하는데, 그게 안 돼서 좀 아쉬웠어요. 내가 가장 많이 쓰고 관심 있는 건 무엇인지 고민했을 때 핀테크를 한번 해보고 싶더라고요. 뱅크샐러드의 지원 공고에 보니까 송금팀에서는 자바를 사용하더라고요. 뱅크샐러드에 송금이 원래 있었나? 하면서 지원해봐야겠다 해서 물어보니 신설 팀으로 송금 기능 만들려고 한다고 하더라고요. 신설팀의 새로운 프로젝트로 들어가는 거니까 잘 된 거죠. 그렇게 들어가게 되었고, 엄청 좋은 기회였던 것 같아요. 거기서 핀테크 서비스 처음 하게 되었어요. 오랜 경험은 경력은 아니지만 가장 재밌었던 경험이에요. 아예 처음부터 만든 거랑 만들어져 있는 걸 하는 거랑 이해도가 다르기도 하고요.

일하면서 기억에 남는 경험이 있나요?

가장 재밌었던 기억은 사실 처음에 딱 송금이 된다. 진짜로 우리가 만든 거로 다른 은행에서 돈을 뽑아서 다른 은행으로 보낸다. 라는 사실이에요. 이게 정말 단순해 보이지만 사실은 거기에 큰 노력이 들어가잖아요. 딱 기능만 보면 진짜 뭐 없어요. 돈 뽑아서 돈 넣고인데, 내부적으로 보면 엄청나게 많은 것들이 들어가 있고, 정책도 굉장히 복잡하고 고려해야 할 것도 많고. 그런 예외 케이스들이 많은데 이런 기능을 만들어냈다는 게 굉장히 재밌었어요. 그걸 처음부터 해서 DB 테이블 설계부터 해서 시작을 했다는 게 잊지 못할 경험이라고 생각해요.

토스로 이직하게 된 이유

뱅크샐러드도 그 당시에 1년 5개월 정도 다니니까, 또 시장에 나를 던졌을 때 내가 어느 정도 평가받는지 궁금했어요. 그리고 그 당시에 송금 기능 출시 후 고도화해야 하는데, 그에 대한 지식이 부족하다고 느꼈어요. 다른 회사들 다른 서비스는 어떻게 하고 있을까를 좀 궁금해하던 시기이기도 했고요. 한 단계 또 도약해야 할 필요를 느껴서 지원만 해보자는 생각이었습니다. 당시에 토스뱅크를 다니시던 분과 커피챗을 했는데 관심이 가더라고요. 그렇게 관심 있다고 얘기를 했더니 계속 추천을 한 거죠. 처음에 연락해 왔을 때는 아직은 준비가 안 됐다 거절했는데 한 번 더 연락이 오더라고요. 그래서 지원하게 되었고, 2주 정도 후에 합격했어요.

토스에서는 어떤 일을 하고 계신가요

커먼스쿼드(Common Squad)라는 곳에서 일을 하는데, 뭐가 공통이냐 하면 결국에는 이제 하나의 서비스에 유저가 존재하고 회원가입을 할 때 인증을 하는 과정들이 있잖아요. 서비스할 때 각 스쿼드에 필요한 공통적인 기능을 제공하는 거예요. 예를 들면 유저 유저 아니면 회원가입 할 때 인증. FDS, AML도 하고 지금은 마이데이터 정보 제공 서비스 쪽 작업을 하고 있어요. 솔직히 말하면 제품 만드는 게 제일 재밌어요. 왜냐하면 사용자 피드백이 바로 오니까. 공통은 사실 재밌진 않아요. 근데 없으면 안 돼요. 왜냐하면 그 제품이 잘 돌아가기 위해서는 공통이 잘 되어 있어야 하니까요.

협업하기 좋은 동료란

뱅크샐러드에서 같이 일한 동료를 통해서 많이 배웠어요. 서로를 비난하지 않고, 설령 상대방이 얘기한 게 틀렸을지라도 존중해주고 조금 더 나은 해법을 찾을 수 있게 도와주는 그런 동료면은 좋지 않을까 싶어요. 공격적인 사람보다는 서로 좀 더 도와주면서 잘할 수 있는 동료요.

토스에 기대한 바가 있었다면?

인터넷 전문은행이 하고 싶었고 은행 시스템을 개발하고 싶었는데, 출범 그러니까 공식 오픈까지 같이했다는 것에 의의를 두고 있어요. 토스에서는 업무를 할 때 막히는 부분이 없다고 생각해요. 내가 진짜 하고 싶은 게 있고 의견을 내고 싶으면 그냥 하면 돼요. 내가 연차가 낮으니까 아니면 저 사람 롤이 나보다 리더니까 이런 게 아예 없어요. 다른 사람한테 수직적 구조로 가는 게 아니고, 업무를 하는 사람이 최종 결정을 할 수 있는 권리가 있죠.

일을 처리하는 방식에 대해서

요즘도 어떻게 하면 더 일을 잘할 수 있을지 고민하고 있어요. 더군다나 이제 토스라는 조직은 업무의 영역이 굉장히 넓고 그 업무 영역을 구분하지 않아요. 그래서 제 업무가 아니더라도 최대한 많이 보려고 해요. 그렇게 들어오는 일들은 우선순위를 잘 나눠서 처리하는 게 중요하다고 생각해요. 컨텍스트 스위칭은 저도 어려워요. 노력하고 있고, 주변에 그렇게 잘하는 사람들이 많으니까 저 사람들 어떻게 하지 관찰하고 있어요. 그런데 그런 사람들은 그냥 타고난 것 같기도 해요.

회사에서 잘 성장하는 법

잘하는 사람은 굉장히 많고 그런 사람들을 보다 보면 비교하게 되기도 해요. 나는 왜 저 사람처럼 못하지? 나도 잘하고 싶은데, 그러다 보니까 사람이 더 조급해지더라고요. 그런 생각을 하지 않으려고 하고, 저 사람들도 열심히 해서 저렇게 됐을 테니까 나도 그냥 꾸준히만 하면 되지 않을까? 라고 생각하는 거죠. 그런데 그 꾸준히가 진짜 어려운 것 같아요. 내가 또 잠시 쉬게 되면 이 템포가 끊겨서 또 하기 힘들어져요. 그래서 꾸준히 매일 30분, 1시간이라도 공부를 하려고 해요.

요즘은 어떤 공부를 하고 있나요?

요즘은 디자인 패턴을 공부하고 있어요. 결국에는 개발을 할 때 설계를 해야 하잖아요. 설계를 사실 저만 고민하는 게 아니라 지금까지 많은 개발자가 고민했을 테고 그 설계에 대해서 몇 가지 규칙들이 나왔는데, 그런 규칙들을 디자인 패턴으로 정의를 해놓은 거예요. 설계에 대해서 효율적인 패턴으로 이런 구조에서 이런 개발을 할 때는 이 설계를 사용하는 게 좋다고 알려줘요. 개발이라는 게 사실 쉽게 쓰면 쉽게 쓰는 거고, 어렵게 쓰면 그러니까 잘 쓰려면 어렵다고 생각해요. 근데 잘 쓰려면 알아야 잘 쓰잖아요. 잘 쓰려면 더 공부해야겠다는 생각을 하고 있어요.

넓고 얕게 vs 좁고 깊게

지금은 깊게 알고 싶어요. 왜냐하면 그게 되면 결국에는 넓고 얇게 알 수 있을 것 같아요. 저는 파이썬도 해보고 싶고 사실 프론트도 해보고 싶고, DevOps도 해보고 싶어요. 나중에는 작은 스타트업에 가서 하나하나 닦아보고 싶어요.

개발과 관련된 생각

궁금증을 많이 가져야 한다고 생각해요. 궁금증을 가지고 여러 가지 다른 방법으로 시도해보는 거죠. 한 방법만 계속 적용해서 쓰면 훨씬 편하긴 해요. 익숙하니까. 근데 그게 개발자는 아닌 것 같다고 생각해요. 저도 노력하고 있지만 잘 안되는 부분이에요. 공부하고 새로운 적용 하려면 바로 이해가 안 되거든요.

앞으로 어떤 걸 하고 싶나요?

토스 내에서 사람들이 가장 쓰기 편한 쓰기 좋고 쓰기 편한 금융 서비스를 만들고 싶어요. 은행하면 토스뱅크가 생각나도록. 그 이후에는 뭐라도 상관없을 것 같아요. 어떤 도메인이 되었건 작은 스타트업 소규모 스타트업 가서 작은 것부터 만드는 재미를 한번 느껴보고 싶어요.

쉬는 시간에는 무엇을 하나요

쉬는 시간이 생기면 아기를 보고, 아기 자면 시간이 나니까 그때는 부동산 공부나 개발 공부를 해요.

이제 막 개발을 시작하는 사람들에게 해주고 싶은 말이 있다면?

개발을 잘하고 싶고 성장하고 싶으면 꾸준히 노력 해야 한다고 생각해요. 조급하지 않았으면 좋겠어요. 그리고 혼자 하기보다는 같이 스터디하면서 공부하고 성장하는 게 더 좋아요.

구애받지 않고 직업 한 가지를 더 가질 수 있다면?

헤어 디자이너요. 제가 이발병을 했었는데 재밌었어요. 어떻게 하면 더 잘 자를 수 있을지, 신경 써서 어떻게 하면 이 사람들을 더 내가 머리 예쁘게 자를 수 있을까를 계속 생각해야 해요. 그래서 재미있을 것 같다는 생각이 들었어요.

종엽님에게 개발이란?

나를 되돌아보게 되는 것. 매 순간 고민을 많이 하게 되잖아요. '이렇게 하는 게 맞는 건가?' '이게 좋은 건가?' 그리고 '이걸 잘하려면 난 어떻게 해야 하지?' '어떤 삶을 살아야 하지?'와 같은 고민을 하면서 계속해서 되돌아보게 되는 것 같아요. 아까 이야기한 것처럼 궁금증을 많이 던져야 한다고 했는데, 이는 꼭 개발뿐만 아니라 삶을 살면서 모든 부분에 적용이 된다고 생각해요.

공유하고 싶은것

Github 계정, 그리고 가족 사진입니다.

family

baby