My Story
저는 사용자의 눈에 보이는 경험을 넘어, 전체 시스템의 안정성과 효율성을 최적화하는 과정에 깊은 매력을 느낍니다. 이는 프론트엔드와 백엔드를 아울러, 사용자에게 끊김 없고 신뢰할 수 있는 서비스를 제공하는 근간이 됩니다. 특히, 복잡한 비즈니스 로직을 효율적으로 처리하고 데이터를 안전하게 관리하며, 유연하게 확장 가능한 아키텍처를 설계하는 것에 집중하고 있습니다. 최근에는 MSA(Microservices Architecture) 환경에서 게이트웨이 솔루션을 개발하고 Redis, Jenkins, MariaDB 등의 인프라를 쿠버네티스(K8s) 환경에서 직접 구축하며 클라우드 네이티브 개발을 경험했습니다. 이러한 경험은 배포 자동화(GitOps, ArgoCD) 및 시스템 운영 환경에 대한 깊은 이해를 제공하여, 프론트엔드 개발 시에도 백엔드 API와의 효율적인 통신 구조 설계나 서비스 성능 저해 요소를 미리 파악하는 데 큰 도움이 됩니다. 단순히 기능을 구현하는 것을 넘어, 시스템 전반의 아키텍처를 이해하고 기여함으로써, 어떤 직무에서든 안정적이고 고품질의 서비스를 만들어낼 수 있는 엔지니어로 성장하고 싶습니다.
가장 기억에 남는 프로젝트는 트레이드코리아의 이노브랜치 고도화 프로젝트입니다. 이 프로젝트에서 저는 개발 전반을 리드하는 역할을 맡았습니다. 별도의 PL이 계셨었지만 디자이너 겸 퍼블리셔였기에, 실질적인 개발 총괄은 제가 담당할 수밖에 없는 상황이었습니다. 처음에는 상대적으로 낮은 연차임에도 프로젝트 전체를 이끌어야 한다는 부담감이 컸습니다. 하지만 이를 새로운 시도를 해볼 수 있는 기회로 삼았습니다. 반복되고 비효율적인 레거시 코드를 리팩토링 하는 과정에서 테스트 코드를 먼저 작성하고 점진적으로 기능을 개선해 나가는 방식으로, 안정성을 확보하면서도 과감한 리팩토링을 진행할 수 있었습니다. 또한 Jenkins를 활용한 CI/CD 파이프라인을 구축하여 배포 과정을 자동화했고, 이를 통해 팀의 생산성을 크게 향상시킬 수 있었습니다. 프로젝트를 마무리하고 돌아보니, 일반적으로는 경험하기 어려운 책임과 도전의 기회를 얻었다는 것을 깨 달았습니다. 두려움을 극복하고 프로젝트를 성공적으로 완수한 경험은 개발자로서 한 단계 성장하는 계기가 되었습니다. 이 프로젝트를 통해 배운 것은 '기술적 역량'만큼이나 '책임감'과 '주도성'이 중요하다는 점입니다. 앞으로도 새로운 기술을 적극적으로 도입하고, 팀의 개발 문화를 개선하는 데 기여하는 개발자가 되고자 합니다.
저는 좋은 코드가 갖춰야 할 조건을 세 가지로 정의합니다. 첫째, 버그 없이 정확하게 작동해야 합니다. 아무리 우아한 코드라도 요구사항을 충족하지 못하거나 예기치 않은 오류를 발생시킨다면 의미가 없습니다. 따라서 엣지 케이스를 고려하고, 테스트 코드를 통해 검증된 코드가 좋은 코드의 기본이라고 생각합니다. 둘째, 제3자가 짧은 시간 안에 이해할 수 있을 정도로 읽기 쉬워야 합니다. 코드는 작성하는 시간보다 읽히는 시간이 훨씬 깁니다. 우리 팀이 아닌 다른 개발자가 보더라도 직관적으로 이해할 수 있도록 명확한 네이밍, 적절한 주석, 일관된 코드 스타일을 유지하는 것이 중요합니다. 셋째, 변화에 유연하게 대처할 수 있도록 의존관계가 일관성 있게 구성되어야 합니다. 비즈니스 요구사항은 끊임없이 변화하기 때문에, 새로운 기능을 추가하거나 기존 기능을 수정할 때 최소한의 영향 범위로 변경이 가능한 구조가 좋은 코드라고 생각합니다. 이를 위해 SOLID 원칙을 고려하고, 적절한 디자인 패턴을 적용하여 결합도는 낮추고 응집도는 높이려고 노력합니다. 결국 좋은 코드란 '현재의 나'뿐만 아니라 '미래의 나'와 '함께 일하는 동료들'을 배려하는 코드라고 생각합니다.
저는 Springwolf(비동기 메시징 AsyncAPI 문서 자동생성 라이브러리) 프로젝트에 오픈소스 컨트리뷰터로 참여하며, 글로벌 개발 커뮤니티와 협업하고 실질적인 문제를 해결하는 경험을 쌓았습니다. Springwolf에서 AsyncAPI 문서 생성의 데이터 타입 명시 문제를 해결하였으며, 이 과정에서 가장 기억에 남는 것은 전 세계 개발자 들과의 협업이었습니다. 이슈를 논의하고, 코드 리뷰를 주고받으며, 다양한 관점을 접할 수 있었습니다. 특히, 처음에는 글로벌 커뮤니티에 기여한다는 것이 낯설고 부담스러웠지만, 문제를 하나씩 해결하며 점차 자신감을 얻었습니다. 또한, 오픈소스 활동은 저에게 책임감과 커뮤니케이션의 중요성을 일깨워주었습니다. 제가 작성한 코드가 전 세계 개발자들에게 영향을 미칠 수 있다는 점에서, 꼼꼼한 테스트와 문서화를 통해 품질을 보장해야 한다는 책임감을 느꼈습니다. 동시에, 영어로 이슈를 논의하고 피드백을 주고받으며 기술적 커뮤니케이션 능력을 크게 향상시킬 수 있었습니다.
저의 가장 큰 강점은 한번 시작한 일은 반드시 끝을 보는 끈기와 책임감입니다. 일을 시작하면 누구보다 열중하고 집중해서 완수하려고 노력하며, 이러한 태도는 팀원들에게 신뢰를 주는 원동력이 됩니다. 이노브랜치 프로젝트에서 개발팀의 리딩을 맡았을 때도, 프로젝트를 끝까지 성공적으로 완수하겠다는 책임감으로 어려운 상황을 헤쳐 나갈 수 있었습니다. 또한 저는 다른 의견을 적극적으로 검토하고 수용하는 것을 좋아합니다. 누군가가 제 코드에 대해 다른 관점을 제시하면, 그것 자체가 저를 발전시키는 과정이라고 생각합니다. 그래서 기술적인 논의를 나누는 것이 매우 즐겁고, 코드 리뷰를 통해 동료들과 지식을 공유하는 것을 선호합니다.
저의 단점은 문제에 직면했을 때 동료에게 도움을 청하기보다 혼자서 해결하려고 하는 경향이 있다는 점입니다. 책임감이 강한 성격 탓에 '내가 맡은 일은 내가 해결해야 한다'는 생각으로 혼자 끙끙대는 경우가 있습니다. 이는 때로는 문제 해결 시간을 불필요하게 길어지게 하고, 팀 전체의 효율성을 떨어뜨릴 수 있다는 것을 깨 달았습니다. 이를 보완하기 위해 '일정 시간 내에 해결되지 않으면 적극적으로 도움을 요청한다'는 원칙을 세웠습니다. 특히 막히는 부분을 동료와 공유하는 것이 단순히 도움을 받는 것을 넘어, 서로의 관점을 배우고 더 나은 해결책을 찾는 과정임을 이해하게 되었습니다. 최근에는 팀 내에서 정기 회의를 통해 진행 상황과 어려움을 공유하는 습관을 들이고 있으며, 이를 통해 협업의 가치를 더욱 체감하고 있습니다.
현재 저의 단기 목표는 '주도적으로 문제를 해결하고 팀에 안정감을 주는 핵심 멤버'로 자리매김하는 것입니다. 하지만 장기적으로는 동료들이 기술적으로 의지하고 심리적으로 신뢰할 수 있는 '리더'로 성장하고자 합니다. 최근 진행한 '현대/기아 영업현장지원시스템 고도화 프로젝트'의 팀장님께서는 어려운 상황에서도 기술적 깊이와 솔선수범하는 태도로 팀원들에게 확신을 주었습니다. 저는 이러한 리더십을 보며, '안정감과 신뢰'가 성과를 내는 팀의 가장 중요한 요소임을 깨달았습니다. 이를 위해 현재는 다방면의 기술 역량을 깊이 있게 다지고, 협업 과정에서 책임감과 능동적인 소통 능력을 발휘하여 미래의 역할을 준비하고 있습니다. 궁극적으로 10년 뒤에는, 기술 변화를 선도하는 전문가이자 팀원들의 성장을 지원하고 건강한 개발 문화를 구축하는 신뢰받는 리더로 기여하는 것이 저의 목표입니다.