개발을 잘 한다는 것은 무엇일까?
개발을 잘 한다는 것은 무엇일까요? 저는 생명정보학 연구원에서 생명정보학 엔지니어, 그리고 마침내 소프트웨어 엔지니어로 직무를 완전히 전환하기 전에 훌륭한 개발자에 대한 막연한 두려움이 있었습니다. 컴퓨터공학 전공자도 아니고 수학적인 두뇌도 뛰어나지 않은 내가 개발을 잘할 수 있을까라는 생각이었어요. 그래서 현재 포그리트에서 데이터 엔지니어로서 일을 시작할 때, 새로운 기회에 대한 기대감과 저에게 주어진 역할을 기대에 맞게 해내야 한다는 부담감이 동시에 있었습니다. 그랬던 저는 우려와 달리 새로운 직무에 잘 적응했고, 1년간 다양한 프로젝트에 참여하면서 아주 빠르게 성장했다는 것을 체감하고 있어요. 그리고 이 과정에서 개발을 잘 한다는 말을 다양한 관점에서 바라보기 시작했어요. 이전까지 저는 이 말이 단순히 ‘코드를 가독성이 높고 효율적으로 짠다’와 동의어로 생각했어요. 마치 코딩 테스트에서 주어지는 높은 난이도의 문제를 깔끔하게 잘 풀어내는 사람만이 곧 좋은 개발자라고 생각했죠. 조금 다르게 말해보자면 디테일에 강한 개발자 같아요. 지금도 이 말이 물론 맞다고 생각하지만, 이제는 또 다른 관점에서도 좋은 개발자를 정의하고 있어요. 그것은 바로 시스템 단위의 비즈니스 로직에 대한 이해도에요.
저는 뷰저블에서 사용자의 웹사이트 이용 여정을 시각화해서 보여주는 ‘Journey Map’ 서비스를 주로 담당하고 있어요. 사용자의 웹사이트 방문 로그를 가공하는 데이터 파이프라인을 운영하고, 가공된 데이터가 클라이언트의 요청에 맞게 응답을 줄 수 있도록 API 서버 내 스크립트를 개선하고 있습니다. 1년이라는 짧은 기간 안에 데이터 파이프라인부터 API 서버까지 커버하기 위해서 제가 가장 집중한 일은 저니맵의 서비스 처리 로직 그리고 데이터에 대한 이해였어요. 수집하고 있는 데이터의 특성과 보이지 않는 화면 뒷단에서 해당 데이터가 어떻게 처리되고 있는지에 관한 이해였죠. 이 이해를 기반으로 저는 데이터 가공 파이프라인을 Jenkins에서 Airflow로 변경하기도 하고, API 서버에서 클라이언트의 요청을 효율적으로 처리할 수 있도록 성능 개선을 이끌어 내기도 했어요. 그 과정에서 비즈니스 로직 관점에서 어떠한 Tool들이 효과적이고 적합한지 고민도 많이 했고, 그 관점에서 서비스 목적을 달성하기 위해서 도구를 적절히 선택하고 조합하는 것이 바로 엔지니어링이라는 생각을 하게 되었어요.
업무 외 시간에 자격증 공부도 하고 공학 서적도 읽으면서 조금씩 노력하고 있지만, 저는 여전히 컴퓨터 공학적 지식이 많이 부족해요. 그리고 번뜩이는 수학적 두뇌도 없습니다. 다만, 조금은 멀리서 서비스 로직에 대한 큰 그림을 파악하는 것 그리고 그 로직의 흐름 속에서 개선할 부분들을 찾고 적절한 도구를 사용하여 서비스 목적 달성을 돕는 것이 제 강점일 수 있겠다는 생각이 들어요. 앞으로도 제 강점은 살리고 단점은 보완하면서 더 좋은 개발자가 돼보려고 합니다.
이 일이 내게 즐거운 이유
저는 중학교 1학년 때, 우연히 생물 수업을 듣다가 단순히 재밌어서 생물 공부에 깊게 빠져들었어요. 서점에서 고등학교 학생들이 보는 하이탑 교재를 샀고, 고등학교 생물 1, 2를 공부한 다음에 이듬해 생물올림피아드에 나가서 은상이라는 큰 성취도 이룬 경험이 있습니다. 누가 시키지도 않았는데 여름 방학 내내 하루 종일 독서실에서 올림피아드 준비를 하는 것을 보고 제 가장 친한 친구는 아직도 저를 치켜세워줘요 😁 그렇게 생물에 관심 많았던 저는, 대학교에 들어가서도 생명과학을 전공했고 훌륭한 연구원, 교수를 꿈꾸면서 학부 생활을 했어요. 그리고 졸업할 때, 전체 수석이라는 아주 좋은 성적도 거두었습니다.
그렇게 승승장구하면서 대학원에 진학했는데, 그때부터 저는 방황의 시기를 겪었던 것 같아요. 연구가 제게 맞는지에 관한 의문도 들었고, 출신 학교, 학부 때 성적과는 상관없이 저보다 더 열의 넘치고 잘하는 선배, 동기들을 보면서 열등감도 느끼고 주눅도 들었어요. 이때부터 저는 점점 생명과학이라는 분야에서 멀어지기 시작했던 것 같아요.
빌드업이 길었는데요. 제가 이 이야기를 앞서 들려드린 이유는, 이 일련의 과정을 통해 저는 연구원이 아닌 엔지니어로서의 길을 택했고, 문득 생명과학을 공부한 게 엔지니어로서 일하는데 큰 도움을 주고 있다는 것을 깨달았기 때문이에요. 제가 생각하기에 연구는 의미 있는 새로운 인사이트 혹은 방법론을 도출할 때 그 의미가 생기는 것 같아요. 근데, 엔지니어링은 좀 달라요. 연구의 성격도 들어가 있지만, 새롭지 않더라도 기존의 방식들을 잘 활용하고 조합하여 원하는 목적을 달성하는데 방점이 있다고 생각하거든요.
두 분야를 모두 겪어보니, 저는 연구보다는 엔지니어링에 더 흥미를 느끼는 사람이구나 생각했어요. 저에게 주어진 도구가 무엇인지를 파악하고, 해결해야 하는 문제 그리고 이미 만들어진 거대한 비즈니스 로직을 파악해서 결국 문제를 해결하는 게 더 즐거운 거죠. 앞서도 언급했지만, 여기서 ‘이미 만들어진 거대한 비즈니스 로직을 파악하는 것’이 중요한 것 같아요. 우리는 이미 기반이 세워진 회사에 속하게 되는 경우가 많고 그렇지 않더라도 이미 어딘가에 만들어진 시스템을 참조하거나 가져오는 경우가 많을 테니까요. 그리고 저는 이 훈련을 아마 생명과학을 공부하면서 많이 겪어오지 않았을까라는 생각을 해요. 저에게 생명과학을 공부하는 것은 우주와도 비교되는 분자 단위의 복잡한 생명 시스템을 공부하는 것과 같았어요. 그 복잡한 시스템을 하나하나 이해해 가는 것이 저에겐 흥미로웠는데, 복잡한 생명 시스템은 곧 거대한 비즈니스 로직 혹은 시스템에 대응될 수 있는 것 같아요. 그렇게 자연스럽게 학부 과정 내내 거친 훈련이 지금의 제가 엔지니어링에 관심을 가지고 잘 해낼 수 있게 만들어주는 원동력이 아닌가 싶습니다.
글을 마치며
긴 글 읽어주셔서 감사합니다. 벌써 데이터 엔지니어로 직무를 전환하고 1년이라는 시간이 흘렀네요. 좋은 회사와 좋은 기회 그리고 좋은 동료들과 함께 할 수 있음에 정말 감사한 1년이었어요. 아직 식견도 실력도 많이 부족하지만, 제가 큰 변화를 겪어 오면서 들었던 생각들을 정리해서 공유해 보고 싶었습니다. 개발자로 직무 전환을 고민하고 계시는 분들에게 조금이라도 도움이 되었으면 좋겠습니다. 🙂
Ando 멀리서 응원합니다 재밌고 즐거운 일들 많이 하시고 늘 화이팅이에요 🙌
Ken!!! 응원해 주셔서 정말 감사합니다 🙂 켄이 응원해 주시니 저한테 정말 큰 힘이 되네요🏃♂️ 저도 켄 항상 응원하겠습니다 감사합니다🙇♂️
멋집니다. 본인들의 상품이 무엇인지를 이해하는 것이 당연하지만 쉽지않은 일이라는 생각이 자주 드는 요즘입니다. 응원해요!
감사합니다!!!🙇♂️ 비슷한 생각을 공유하고 있는 것 같아 정말 반갑고 즐겁네요 🙂 저도 늘 응원할게요!!!💪🏻
함께 일한 시간이 길지 않았지만 함께 일하는 동안 반짝이는 눈빛으로 얼마나 개발에 대한 야망(?)을 품고 잇는지 볼수 있어 좋았어. 앞으로, 난 다른거 보다 본인이 가진 두뇌와 열정이 얼마나 갑진 재산인지 감사하고 즐거운 맘으로 귀한 하루하루를 만끽하며 살길 바랄께!!!
즐거운 인생 살쟈!!
감사합니다 이사님!!!🙇♂️ 저한테 정말 중요한 말인데 이렇게 콕 집어주셔서 말해주셨네요🥹 명심하고 감사히, 즐거운 맘으로 살아가겠습니다. 좋은 말씀 감사합니다 🙂