렌딧 ENG 챕터 첫번째 토론 현장을 중계합니다
안녕하세요! 렌딧의 블로거L 입니다.
여러분, 얼마 전 렌딧맨 스토리에 공유되었던 참 좋은 우리팀, 너무 알리고 싶어서 인터뷰 해요! 라는 포스팅을 읽으셨나요? 렌딧 테크핀개발그룹에서 각각 팀장 역할을 맡고 있는 마크, 러스틴, 루카스가 렌딧 개발 조직의 문화에 대해서 너~~무 알리고 싶은 마음을 듬뿍 담아서 털어 놓았던 렌딧 개발자들에 대한 글이었는데요.
마침 3분과 이 이야기를 나눴던 그 날 바로 다음에 첫번째 렌딧 ENG 챕터가 열렸습니다. 아! 렌딧 ENG 챕터가 뭐냐고요?
렌딧에는 챕터라는 용어가 있어요. 여러 직군이 함께 한 팀에서 일하는 렌딧의 조직 문화 상, 다른 팀에 있지만 같은 직군인 렌딧맨들 간에 커뮤니케이션이 편안하게 이루어질 수 있도록 구성된 조직인데요. 예를 들어 프론트엔드 개발자들이 모여있는 프론트엔드 챕터, 백엔드 개발자들의 백엔드 챕터, PM들의 프로덕트 챕터 등이 있답니다. 렌딧 ENG 챕터는 프론트엔드와 백엔드 챕터가 함께 모여, 평소 나누고 싶었던 주제를 정해 토론도 하고 새로운 정보와 지식을 나누는 자리랍니다.
이 날 있었던 첫번째 렌딧 ENG 챕터의 주제는 ‘시니어 개발자’ 였는데요. 마크, 러스틴, 루카스 와 함께 벤,마일즈, 윤까지 6명의 렌딧 개발자들이 시니어 개발자라는 주제를 놓고 여러가지 이야기를 펼쳐내 주었어요. 각 세션이 끝날 때 마다 여러 개발자들의 질문도 이어졌는데요. 진지하지만, 모두가 활짝 마음을 열고 솔직한 이야기들을 쏟아내 주었던, 첫번째 렌딧 ENG 챕터 현장을 저! 블로거L 이 중계해 드리겠습니다. GO!
개발을 배울 수 있는 방법은 크게 2가지가 있어요. 이론을 공부하는 것과 실전을 쌓는 것이죠.
너무 당연해서 고리타분한 말일 수도 있지만, 이 2가지 모두가 중요합니다. (웃음) 각각에서 성장할 수 있는 영역이 달라요. 그래서 결국 이론 공부를 위한 시간과 실전으로 성장하는 시간 모두가 필요한거죠.
그런데 공부는 시간을 쏟아 부어서 빠르게 지식을 축적해 나갈 수 있는 반면, 실전은 조금 다르죠. 무조건 실전 경험을 통해서만 얻을 수 있기 때문이에요. 그렇기 때문에 시간이라는 요소에 대해 믿음을 갖고, ‘시간이 해결할 수 있다.’고 받아들일 수도 있어야 한다는 점을 이야기하고 싶어요.
실전에 대한 경험치도 빨리 당기고 싶다는 생각을 할 수 있지만, 제 생각에 그 방법은 없어요. 그래서 오히려 다양한 문제를 풀어 나가는 실전의 경험을 편안하게 겪어 나가야 한다는 것이죠. 중요한 건 처음 맞닥뜨리는 문제 앞에서 쫄지 않는 거예요. 전산이라는 학문은 정답이 없기 때문이죠. 그 순간순간마다 누군가의 필요에 의한 것을 개발해 나가는 것이니, 맞고 틀리고의 문제가 아니라 어떤 필요가 얼마나 크냐의 문제라고 생각해요. ‘중요한 건 쫄지않는 마인드, 하지만 공부도 필요하다.’는 이야기로 마치겠습니다.
저는 시야 넓히기, 그리고 자신감과 겸손이라는 2가지 토픽으로 이야기를 준비해 봤어요.
우선 이야기에 앞서 기본 전제가 있어요.
세상 속에서 우리는 너무나 조그만 존재라는 사실이에요. 이 진리가 우리 앞에서 되게 막막함으로 다가올 수 있죠. 하지만 저는 이 막막함을 해소해 나가는 과정과 여기에 타협해 가는 과정이 우리 커리어의 전반에 깔려 있다고 생각합니다.
두번째로 자신감과 겸손에 대한 이야기로 이어 볼게요.
앞의 이야기와 이어 본다면, 사실 이것 저것 해 볼 수록 그냥 다 모르는 것 투성이에요. 처음에는 사실 ‘내가 이 정도면 이거 마스터했지~’ 하면서 우쭐했던 시절도 있었죠~ (웃음) 그런데 조금 더 파다보면 깨달음의 순간이 오는거에요. ‘아~ 아니구나! 나는 그냥 허우적거리고 있었고, 나는 굉장히 조그마한 존재였구나.’ 그 때부터는 이제 막 겸손해지는거죠.
하지만 우리가 한없이 겸손해지기만 할 수는 없어요. 연차가 쌓이고 내가 시니어로서 어떤 역할을 담당하게 되면, 다른 동료들에게 무언가 도움을 드릴 수 있는 역할을 해야하기 때문이죠. 방향성을 제시할 수 있어야 하고, 조언을 해 줄 수도 있어야 하죠. 이제 자신감이라는 기제도 필요해 지는거죠.
그런데 여기에서 마냥 자신감만으로 점철되어서는 또 안된다고 생각돼요. 자칫 무조건 내가 맞고, 때로는 강요하는 느낌으로 잘못 전달될 수도 있기 때문이에요. 결국 ‘내가 틀릴 수도 있다.’는 전제를 깔면서, ‘하지만 경험적으로 봤을 때 이게 좀 더 맞는 방향인 것 같아.’ 라는 공감대를 잘 형성해 낼 수 있기 위해서는 자신감과 겸손이 수평이 되도록 저울질 할 수 있는 훈련이 필요하다고 생각하고요. 저의 현재는 이런 훈련을 하고 있는 과정이라고 말씀드리고 싶어요. 쉽지 않은 과정인 것 같지만, 매우 집중하고 있습니다.
마일즈가 발표를 위한 짤을 준비하라고 하셔서, 둘러보다가 이 짤을 발견했어요.
개발에 대한 현재 저의 심정을 정말 너무 잘 대변해 주는 짤인 것 같아요. 바로 이런 이야기죠.
그래서 저는 오늘 중요한 순간순간마다 제가 어떻게 성장했었는지를 키워드로 뽑아 보았습니다. 신기하게 모두 쭉 연결이 되더라고요? 차례대로 이야기해 보겠습니다.
무지에 대한 인정! 내가 아무것도 모른다는 걸 인정해야지, 알고자 하는 걸 알아갈 수가 있더라고요. 나는 모른다 하고 포기해 버리거나, 모르는데 아무런 액션도 취하지 않는다면 성장이 없었겠죠.
승부욕은 제 개인 성향이 어느 정도 반영된 키워드 같은데요. 같이 일하다 보면 나한테 영감을 주고 자극이 되는 그런 분들이 있잖아요. 그럼 내가 열심히 공부해서 저 사람을 한 번 넘어서 보겠다는 생각을 하는거죠. 렌딧 이전에 오래 다녔던 회사는 렌딧과 다르게 직급이 여러 단계 있는 조직이었는데요. 그러다 보니까 직급 순서대로 이겨 나갔던 것 같아요. (웃음) 대리님-과장님-차장님-부장님-이사님 이렇게 한 명씩 한 명씩 목표를 갖다 보니까, 거기에서 성장이 있었다고 생각해요.
도전은 이런거에요. 우리가 개발자로 일하다 보면, 지금 하고 있는 업무와는 딱 직접적으로 관련은 없는데 해 보고 싶은 것이 있을 때가 있거든요. 개인적으로 공부한 적이 있거나, 기술 블로그에서 봤는데 재미있을 것 같은 그런 것들이죠. 그런데 일을 하다 보면 언젠가는 이런 새로운 것들을 껴 넣어볼만한 조그마한 틈이 생길 때가 있어요. 그럴 때 그 기회를 놓치지 말고 도전들을 해 보셨으면 좋겠다는 거에요. 그래야 느껴볼 수 있다. 그리고 다른 사람의 코드를 볼 때 좀 다르게 시도해 볼 수 있을 것 같은 때도 있잖아요? 그럴 때도 그냥 가만히 있지 말고 하자!! 그리고 감당은 본인이 하면 됩니다. 두려워하지 말고 도전하자. (웃음)
마지막으로 성취감! 공부하고 승부욕을 불태우며 계속 도전하면서 새로운 걸 알았을 때, 아니면 내가 개선한 무언가가 반영되어 조금이라도 성과가 나왔을 때, 오늘 도전해서 성공했을 때 느껴지는 희열이 있었던 것 같아요. 이런 느낌들이 한 번 두 번 경험하면서 약간 중독이 되는데요. 그게 알고 보니 성취감이더라고요.
꼭 기술적으로 뛰어나고 실력이 2배, 3배 좋아야 시니어는 아니다. 경험! 경험이 중요하다는 이야기로 마치겠습니다.
이 이미지가 무엇인지 아시는 분?
좀 오래된 게임 이미지지만, 모두 아시겠죠? 삼국지죠. 무척 재미있는 게임이죠.
프로그래밍을 처음 시작했을 때를 떠올려보면, 재미있어서 했던 것 같아요. 즐겁고 지금도 여전히 재미있고, 결국 그 즐거움이 제가 프로그래밍을 잘하게 된 원천인 것 같아요.
이걸 내가 언제 시작하게 됐던가를 생각해 보니까 제 아들 나이 때였던 것 같아요. 10살 때! 삼국지를 정말 잘하고 싶은데, 그럴 수가 없잖아요? 에디팅을 해야했고, 당시에 게임위자드라고 치트오매틱 같은 프로그램을 사용하곤 했는데 그 때 당시에 너무 어려웠어요. 도스 환경에서 램에 올리고 게임실행중에 해당 프로그램에 들어가서 메모리 번지를 추적하고 어렵게 어렵게 각 장수의 능력치 메모리 번지를 특정해 냈습니다. ‘우와~ 나는 이제 조자룡을 최고로 만들 수 있다.’ 그리고 나서 데이터 값으로 999999 막 입력했죠. 그랬더니 당연히 안되죠. 그 땐 왜 안되는지도 몰랐죠. (웃음) 그러다가 200 넣었더니 ‘어, 되네?’ 300을 넣었더니 ‘어? 이건 안되네?’ 그래서 하나 하나 다 넣어봤죠. 그 땐 바이너리 서치(Binary Searh) 같은 개념도 없었으니까요. 200은 되고 300은 안되면 지금 같으면 250도 넣어볼만한데, 10살 땐 그렇지 않았어요. 201 넣자!!! (폭소)
255까지 되죠. 다들 아시죠? 이 게임은 256에서 죽습니다. 저는 그 때 몰랐어요. 10살이 뭘 알았겠습니까? 그렇지만 그 어떤 쾌감이 엄청나더라고요. 이렇게 숫자 하나씩 하나씩 넣어서 ‘이 게임에서의 만랩이라는 개념은 255구나.’라는 걸 알아냈고요. 모든 장비의 데이터를 255로 올렸어요. 그랬더니 정말 세지더라고요?
그리곤 좀 시간이 흘렀어요. 학교 수학 시간에 ‘컴퓨터는 2진법이다.’ 이런 것도 배우잖아요? 그래도 연결은 안됐어요. 그러다가 나중에 프로그래밍 공부를 시작하고 바이트(byte), 인티저(integer) 를 딱 보는 순간!!! 와~~ 그 10년의 궁금증이 일순간에 풀린거죠. ‘아~ 내가 10살 때 했던 그 삼국지에서의 255가 이거였구나~ 이 개발자들은 언사인드 바이트(unsigned byte)를 썼구나~ 그렇죠? 사인드 바이트(signed byte)였다면 167이었겠죠? 와~ 진짜 쾌감이 엄청났었어요.
남들은 주로 100, 200 같은 걸 보고 살지만, 나는 255, 167 같은 숫자를 계속 사용하고 있잖아요? 제가 무척 특별한 삶을 살고 있는 것 같은 느낌도 막 들고, 10년 동안 품고 있던 그 궁금증이 한 번에 풀렸던 그 쾌감과 호기심이 지금까지 저를 지탱해 주는 힘인 것 같아요.
이 기사가 뭔 줄 아세요? 2016년에 나온 실제 기사인데요. 제가 이 기사의 제목을 보고 혼자 엄청 크게 웃었어요.
왓츠앱 (WahtsApp)아시죠? 단톡방 최대 인원이 100명이었는데, 어느날 256명으로 늘린 거에요. 근데 신문 소제목을 보세요. ‘대체 왜 이렇게 이상한 특정 숫자로 정했는지 모르겠다.’고 써 있죠? 그런데 개발자인 우리들은 그게 무슨 의미인지를 비로 알죠? (웃음) 이 기사를 읽으면서도 10살 때 숫자 하나 하나 넣어보며 255와 256을 알게되었던 것이 생각났어요. ‘와~ 난 10살 때 이미 이 숫자의 의미를 알아냈는데, 많은 미국인들이 2016년에도 여전히 이 숫자들을 보며 어려움을 느끼는구나.’ 라는 생각을 하며 재미를 또 느꼈죠.
우리 모두 이런 호기심을 계속 잃지 않았으면, 놓지 말았으면 좋겠다는 이야기로 제 세션은 마무리하겠습니다.
제가 오래 개발자 생활을 하면서 희열을 느꼈던 부분은 주로 이런 것들이었어요. 동료들이 버그 때문에 디버깅하면서 어려움을 겪을 때 도움을 준다거나, 비개발 동료들이 일하는 다른 팀에서 일일이 수동 작업하는 일들을 자동화 시켜 주는 일들. 이렇게 개발자로서 다른 사람들에게 도움을 주는 일들에서 기쁨을 느끼면서 일해 왔어요.
그래서 그 때 그 때 필요한 지식들을 기술서적이나 아티클 등에서 발췌해서 문제 해결에 적용하는 방식으로 공부를 해 왔던 것 같아요. 공부를 통해 생각을 확장시켜 보거나 통찰을 얻는 것 보다는, 그 때 필요한 지식을 쏙 빼서 익힌 후 작업에 적용하는 식이었던거죠. 이렇게 습득한 지식은 활용 범위가 좁을 수 밖에 없어서 약간 다른 형태의 문제를 맞닥뜨렸을 때, 도움이 되지 않더라고요. 문제 해결은 빠르게 했어도 무언가 남는게 없다라는 생각이 들었고요, 관련 기술이 쓰인 프로젝트를 진행할 때에는 두려움이 생길 때도 있더라고요. 마침 추리소설의 여왕인 아가사 크리스티가 이런 이야기를 했더군요. 공포스러운 소설을 구상하는 근간이 되는 생각이었겠죠? (웃음)
그럼 어떻게 공부를 했어야 할까? 지금 우리가 작업하면서 공부해야 할 것들이 정말 많잖아요? 사실 그걸 모두 자세히 보기는 힘들텐데요. 그 중에 선택과 집중을 해서 깊게 파고 들어가서 공부하고 다른 사람들과 많이 이야기했으면 좋겠다는 생각이 들어요. 그래야 공부를 통해 남는 것들도 많고, 활용해 나갈 여지도 많을 것 같아요.
주어진 문제에 대한 어떠한 결정이 요구되는 상황이 되었을 때, 기술 지식과 경험을 바탕으로 논리적인 판단력을 더해야 좋은 결정을 내릴 수 있다고 생각되는데요. 그래서 기술적인 지식이 불완전한 상황에서는 좋은 결정을 내리기 어려운 거 같아요. 사실 제가 요즘 이런 부족함을 종종 느끼고 있습니다. (웃음)
그래서 기술적인 공부를 한다면 깊게 파고 들어서, 생각도 확장하고 성찰을 얻을 수 있는 배움의 자세를 우리 모두 가지면 좋겠다. 다시 한 번 ‘공포나 두려움은 불완전한 지식으로부터 온다.’는 아가사 크리스티의 명언을 남기며 마치겠습니다.
저는 제 주니어 시절이 어땠을지를 먼저 생각해 봤어요. 저는 렌딧처럼 서비스를 직접 개발하는 회사가 아니라, 외주 개발 업체로서 다른 회사에 가서 하는 프로젝트가 많은 주니어 시절을 보냈어요. 그러다보니 단발성 프로젝트도, 롱텀 프로젝트도 무척 많았습니다. 정말 계속 프로젝트가 연속되는 환경에서 일을 했던 것 같아요.
사실 누구는 좋은 프로젝트라고 말하고, 또 다른 누구는 피해야 되는 프로젝트라고 말하는 때도 있었고요. 같이 일하는 동료들 중에는 이런 고민을 스스로 하는 사람들도 있었겠죠? 하지만 저는 그냥 그런 고민없이 내게 오는 프로젝트는 다 받아 먹고 소화했던 것 같아요. 저는 그 때 그냥 막내였거든요. 그런 판단이 잘 되지 않았어요. 사람마다 의견이 모두 다를 때가 많고, 그러다 보면 결과적으로 알 수 없는 일들이라고 생각했고요. 주니어 시기는 그러한 판단이 불가능한 시기라고 여겼습니다.
이 슬라이드에 보이는 회사들은 모두 제가 그렇게 달려 들어서 받아 먹고 소화해 온 솔루션 개발사들이죠. (웃음) 오픈소스도 있고, 굉장히 다양한 벤더들이 취급해 온 여러 회사의 솔루션들을 모두 경험해 왔어요. 물론 현재 렌딧에서 제가 쓰고 있는 제품들은 아니에요.
결국 데브옵스 개발자로서 지난 시간을 되돌아보니, ‘어느 프로젝트 하나도 버릴 것은 없더라. 잘 된 프로젝트든, 그렇지 않았든 그 어느 하나도 내게 밑거름이 되지 않았던 프로젝트는 없었다.’라는 생각이 들고요. 만약에 제가 다시 주니어로 돌아가더라도, 저는 또 다시 무엇이든 주어지는 모든 프로젝트들에 다 달려 들어 보고 경험을 축적할 것 같습니다. 그래서 오늘 같이 이야기 나누고 있는 우리 회사의 주니어 개발자분들께도 이 이야기를 꼭 드리고 싶었습니다.
벤의 실전, 마크의 시야 넓히기, 윤의 도전,마일즈의 호기심, 러스틴의 새로운 것에 대한 공부, 루카스의 프로젝트 가리지 않고 일단 달려들기!
모두 표현은 조금씩 달랐지만, 이야기를 관통하는 하나의 키워드가 있다면 그것은 바로 도전인 것 같아요.
얼마 전 엘든과 효가 카프카(Kafka) 적용하면서 적용 이유와 효과에 대해 여러가지 의견을 제시했어요. 그런데 맨 마지막에 ‘근데 제가 써보고 싶었습니다.’ 라고 하셨잖아요? 저는 그게 되게 마음에 딱 와 닿더라고요. 아까 윤이 세션에서 이야기하셨던 것처럼 무언가 프로젝트 중에 어떤 틈을 비집고 들어간거죠. (웃음) 비집고 들어가서 썼고, 당연히 시도한 개인도 좋은 경험을 했고, 우리가 하고 있는 프로젝트 면에서도 좋은 효과가 있었다고 생각해요.
문제는 생길 수도 있죠. 무언가 새로운 시도를 했을 때 문제가 뒤따라 올 수도 있습니다. 아까 윤이 ‘시도하고 문제는 내가 감수하면 된다.’ 라고 말씀하셨는데요. 물론, 그런 책임감과 패기 필요하고 좋고 맞습니다. 다만, 시도한 사람의 잘못? 아니라고 생각합니다. 죄송하다고 할 상황도 아니라고 생각합니다. 함께 코드 리뷰한 동료도 있고, 그 제안에 동의한 관리자도 있죠. 결국 우리 공동체 모두가 함께 결정하고 참여한 일입니다.
우리는 공동체! 실패를 두려워 말고 부딪치고 도전하자는 이야기로 오늘 처음 진행했던 렌딧 ENG 챕터 마무리 하겠습니다. 준비하신 벤, 마크, 윤,러스틴, 루카스 너무 감사합니다. 다음번에 또 흥미로운 주제로 토론합시다!
여러분, 렌딧 개발자들의 시니어 개발자에 대한 이야기 어떠셨나요?
사실 이 날 여러가지 질문들도 쏟아져 나왔었는데요. 브런치에 모두 담아내진 못했습니다. 혹시 이 글을 읽으며 렌딧의 개발자들과 개발 이야기 나누고 싶어지는 개발자분 안 계신가요? 그렇다면 지금 곧 렌딧의 흥미진진 재미있는 개발 면접에 대한 이 글과 이 글을 꼭 읽어 보시고요. 렌딧 커리어 페이지도 방문해 보세요!
그럼, 저는 조만간 또 다른 렌딧맨들의 이야기를 들고 찾아오겠습니다. Bye!
준법감시인 심사필 제0299호(23.07.04.)