개발자로서 나는 어떤 사람일까
"나는 왜 개발을 하고 있을까?"라는 질문을 스스로에게 던져봤어요. 취업 준비를 하다 보면 어느새 '개발을 잘하고 싶다'는 마음보다 '취업을 해야 한다'는 압박감이 앞서는 순간들이 있더라고요. 그래서 이번 기회에 개발을 시작하게 된 계기부터, 제가 개발자로서 추구하는 가치까지 정리해보려고 해요.
개발과의 첫 만남
사실 어릴 때의 저는 컴퓨터와 거리가 먼 아이였어요. 초등학교 때 친구들과 타자 내기를 하면서 한컴 타자 연습을 열심히 했던 것 외에는 컴퓨터와 함께하는 시간이 거의 없었던 것 같아요.
고등학교 때 방송부 활동을 하면서 친해진 친구가 있었는데, 이 친구가 옆에서 맨날 무슨 책을 보고 있길래 같이 봤더니 C언어 책이었어요. 처음에는 "이런 걸 왜 보지?" 하고 넘겼는데, 이상하게 계속 눈에 밟히더라고요. 그래서 그 친구와 대화 거리를 만들어보려고 C언어 공부를 시작했어요.
나중에 이 친구가 웹 사이트도 만들길래 어깨너머로 훔쳐봤어요. 화면의 색깔도 바꿔달라고 하고, 폰트 크기도 키워달라고 요청하면서 질문을 엄청 했었는데요. 지금 생각해보면 이때부터 프론트엔드에 관심이 있었던 것 같아요.
이 친구 덕분에 멀게만 느껴졌던 컴퓨터에 한 걸음 가까워지게 되었고, 대학교에서 컴퓨터공학과에 진학하게 되었어요. 대학 1학년 때 노마드코더 강의를 보면서 처음으로 코딩을 했는데, 제가 작성한 코드가 화면을 통해 보이는 게 너무 신기했어요. 기숙사에서 룸메이트한테 제가 만든 작업물을 보여주면서 자랑도 했었던 기억이 나네요.
개발을 좋아하는 이유
문제를 해결하는 방식이 매력적이다
개발이 좋은 첫 번째 이유는 일상생활에서 발생하는 크고 작은 문제들을 코드로 해결하는 방식이 매력적이기 때문이에요. 문제를 관찰하고, 더 나은 방법을 위해 깊이 고민하는 과정이 즐겁고 행복하거든요.
개발자는 코드를 짜는 사람이 아닌 '문제를 해결하는 사람'이라고 생각해요.
문제를 잘 해결하기 위해서는 먼저 그 문제가 무엇인지 정의를 잘해야 한다고 생각해요. 그래서 저는 해결하고자 하는 하나의 큰 문제를 작은 여러 문제로 나누어서 바라보는 편이에요. 이렇게 작은 문제로 나누면 큰 문제를 해결하는 것이 훨씬 쉬워지더라고요.
개발에는 정답이 없다
두 번째로 개발을 좋아하는 이유는 '개발에 정답이 없다'고 느껴지기 때문이에요.
개발을 하면서 느낀 점은 같은 문제를 해결하더라도 개발자마다 접근 방식이 다르고, 사용하는 기술이나 도구도 다양하다는 거예요. 협업을 하다 보면 똑같은 기능을 구현하더라도 코드 스타일, 설계 방식, 데이터 처리 로직 등에서 다양한 의견이 나오거든요.
처음에는 무엇이 맞는 방법인지 고민하게 되지만, 서로의 이유를 듣다 보면 "정답은 하나가 아닐 수 있구나"라는 점을 다시금 느끼게 돼요. 그래서 중요한 건 단순히 결과를 맞추는 것이 아니라, 왜 그렇게 구현했는지에 대한 논리적인 근거와 맥락이 분명한가인 것 같아요.
개발자로서의 태도
개발을 잘하기 위해 끊임없이 고민하고 배우려는 노력을 하고 있어요.
코드를 짤 때에도 단순히 기능이 동작하게 만드는 것을 넘어서, 다른 사람과 함께 일할 때 얼마나 읽기 쉬운 코드인지, 유지보수가 용이한 구조인지 등을 고민하게 돼요. 특히 프론트엔드 개발자로서 디자이너, 백엔드 개발자와의 협업이 많기 때문에, 내 코드가 팀 전체의 흐름 안에서 어떤 역할을 하는지, 어떻게 하면 다른 사람이 내 코드를 더 쉽게 이해하고 사용할 수 있을지 항상 고민하고 있어요.
컴포넌트를 설계할 때도 혼자만의 기준이 아니라, 공통된 패턴을 따르고 명확한 네이밍을 사용하는 것, 협업하는 팀원이 쉽게 재사용하고 수정할 수 있도록 하는 것 등을 중요하게 생각해요.
때로는 코드 한 줄을 더 작성하더라도, 그게 팀 전체의 생산성과 커뮤니케이션에 도움이 된다면 그 선택이 더 옳다고 느껴요.
결국 개발을 잘한다는 것은 '코드를 잘 짠다'는 것을 넘어서, 함께 일하는 사람들과 좋은 흐름을 만들어가는 능력까지 포함된다고 생각해요.
지속가능한 개발자가 되기 위해
저는 지속가능한 개발자가 되고 싶어요. 그러기 위해 다음과 같은 노력을 하고 있어요.
기본기를 탄탄히
프론트엔드 개발자로서 사용자와 직접 맞닿는 영역을 다루다 보니, 사용자의 요구사항을 민감하게 읽고 그 변화에 유연하게 대응할 수 있어야 한다고 생각해요.
이러한 유연한 개발을 위해서는 기본기와 원리에 대한 깊은 이해, 즉 CS 지식을 바탕으로 사고하는 것이 중요하다고 생각해요. 그래서 컴퓨터 네트워크, 운영체제, 브라우저 렌더링 구조, 자바스크립트 실행 방식 등의 개념을 꾸준히 학습하고 있어요.
한 예로, 무한 스크롤 기능을 구현할 때 처음에는 scroll 이벤트를 사용했는데, 이벤트가 너무 자주 발생하면서 성능 저하 문제가 생겼어요. 브라우저의 이벤트 처리 방식과 렌더링 구조를 공부하면서 Intersection Observer API를 알게 되었고, 이를 적용해 성능을 개선할 수 있었어요. 단순히 기능을 구현하는 것을 넘어, 어떤 기술이 왜 적합한지 이해하고 설계하는 경험이었어요.
함께 성장하기
개발을 하면서 가장 크게 느낀 점 중 하나는, 혼자 공부하는 데에는 분명한 한계가 있다는 거예요. 내가 만든 코드나 문제 해결 방식이 올바른지 확인할 수 있는 피드백이 없다면, 잘못된 방향으로 오랜 시간을 보내게 될 수도 있거든요.
그래서 다양한 개발 동아리와 커뮤니티 활동에 참여하고 있어요. 학생 때 여러 개발 동아리에서 좋은 사람들을 만났고, 그 안에서 나눈 기술적인 대화나 협업 경험은 지금도 큰 자산이 되고 있어요.
혼자 공부할 땐 내가 아는 만큼만 성장하지만, 함께 공부하면 서로의 경험과 지식을 통해 시야를 훨씬 넓힐 수 있다고 생각해요. 같은 시간을 들이더라도 열 명이 함께 공부하면 열 배의 지식을 얻을 수 있다는 말에 깊이 공감해요.
앞으로도 혼자 고민에 갇히기보다는, 사람들과 함께 부딪히고 배우며 성장하는 개발자가 되고 싶어요.
깊이 있게 개발하기
개발을 처음 시작했을 땐 다양한 기술을 넓게 접해보고 싶은 욕심이 컸어요. 하지만 시간이 지날수록 하나를 깊이 있게 이해하는 것이 진짜 실력을 만든다는 사실을 알게 되었어요.
그래서 최근에는 JavaScript 딥다이브 스터디를 진행하고 있어요. React를 사용해 프로젝트를 만들고 있지만, 그 기반이 되는 자바스크립트를 제대로 이해하지 못한다면 문제의 원인을 정확히 분석하거나 성능을 최적화하는 데 한계가 있다는 걸 느꼈거든요.
제가 말하는 '깊이 있는 개발'은 단순히 코드를 잘 짜는 것을 의미하지 않아요. 사용자 경험을 고민하고, 성능을 고려하며, 문제의 본질을 파악하고 논리적으로 해결하려는 태도라고 생각해요.
"일단은 동작하게 만들고, 그 다음 제대로 만들고, 그 다음에 빠르게 작동하게 하라"
이 말처럼 기능을 넘어서 품질을 고민하는 개발자로 성장해 나가고 싶어요.
마무리하며
취업 준비를 하면서 "어떤 회사를 갈 것인가"보다 "어떤 개발자가 될 것인가"를 더 많이 고민하게 돼요. 결국, 내가 어떤 문제를 어떻게 해결해왔는지가 어디에서 일하느냐보다 훨씬 더 오래 나를 지탱해줄 것이라 믿거든요.
요즘 세상은 빠르게 바뀌는 것 같아요. 지금 눈에 보이는 '좋은 회사'가 영원하지 않을 수도 있고, 내가 만들고 싶은 무언가가 미래에는 더 중요한 가치를 지닐 수도 있다고 생각해요. 그래서 저는 외부의 조건보다, 제가 쌓아가는 실력과 태도에 집중하고 하려고 해요. 좋은 회사에 들어가는 것보다, 어떤 문제 앞에서도 꾸준히 배우고 성장할 수 있는 개발자로 살아가는 것이 지금의 제가, 그리고 앞으로의 제가 가장 중요하게 생각하는 방향이에요.