자기소개

안녕하세요 “깊은 생각과 고민을 통해 공유하는 것을 좋아하는” 서버 개발자 배종진입니다. 저는 객체지향과 자바를 가장 좋아하고 잘 다룰 수 있으며 관련 프로젝트 경험으로는 Pinpoint batch 모듈에 webhook 기능을 개발한 경험과 Spring Boot 기반의 api 서버를 개발해본 경험이 있습니다. 이 외에도 다양한 프로젝트 및 스터디를 통해서 코드의 품질에 대해서도 항상 고민하고 있으며 더 나은 코드를 위해 토론하는 과정 자체를 좋아합니다. 전남대학교 소프트웨어 개발 동아리 회장과 교내 최초 온라인 해커톤 운영을 통해 전남대학교 개발 생태계에 이바지한 경험이 있으며 주어진 환경에서 최선의 변화를 항상 시도하고 즐겨하는 편입니다.

저의 이러한 역량을 바탕으로 네이버 예약&주문 플랫폼 팀에 입사하여 최고의 글로벌 예약&주문 서비스 플랫폼을 만들고 싶습니다.


좋은 품질의 코드

좋은 품질의 코드에 대해서 말씀 하셨는데 종진님이 생각하시는 좋은 품질의 코드란 무엇일까요??

코드란 특정 문제를 해결하기 위해서 작성하는 것이라고 생각합니다. 이러한 문제들은 대부분 요구사항 등을 통해서 발생하기 마련이기 때문에 현재의 요구사항을 만족하면서 불확실한 미래의 요구사항까지 유연하게 대처할 수 있는 코드를 좋은 품질의 코드라고 생각합니다.

그렇다면 종진님이 좋아하시는 객체 지향에서 좋은 품질의 코드란 무엇일까요??

객체 지향에서 좋은 품질의 코드란, 관련 도메인 지식들을 깊게 이해하고 이를 객체들의 협력으로 잘 녹여낸 코드를 의미합니다. 즉, 깊은 도메인 지식을 기반으로 코드를 작성 했을 때 도메인 구조가 완전히 바뀌지 않는 이상 추후 변경에 유연하게 대처할 수 있다고 생각합니다.

품질이 좋지 않는 코드를 어떻게 좋은 품질의 코드로 바꿀 수 있을까요?

여러 관점에서 다양한 방법이 있을 것 같습니다. 내부 로직에서 병목이 발생한다면 모니터링을 통해 특정 로직을 추적해서 리팩토링을 할 수도 있겠구요 만약 설계 자체에서 모듈간의 결합도가 높아 코드 수정만으로는 도저히 안되겠는 경우에는 재설계를 하는 등 다양한 방법으로 품질을 올릴 수 있을 것 같습니다.

그렇다면 방금 Refactoring에 대해서 말씀해 주셨는데 Refactoring 이란 무엇인가요?

외부동작을 바꾸지 않으면서 내부 구조를 개선하는 방법이라고 생각합니다. 이에 앞서서 어디까지가 외부 동작인지 bound를 먼저 설정할 필요가 있고 관련 테스트를 작성을 해서 리팩토링 후에도 동일한 동작을 한다는 것을 검증할 필요가 있을 것 같습니다.


소프트웨어 개발 동아리 회장

종진님이 소프트웨어 개발 동아리 회장을 하시면서 얻은 부분이 있나요??

동아리 회장을 하면서 책임감이나 리더쉽 등의 부분에서도 많이 배우고 느꼈지만 가장 가치있게 얻었던 점은 지식 공유의 힘에 대해서 많이 배울 수 있어서 좋았다고 생각합니다. 저희 동아리는 일주일에 한번 주간발표를 진행합니다. 이 발표는 각 팀별로 프로젝트 진행 과정에서 문제를 해결한 경험이나, 기술을 학습하고 적용하면서 일어난 이슈 및 경험들에 대해서 발표하는 시간입니다.

이 행사에서 저는 다른 사람 발표를 통해 시야를 넓힐 수 있었고 직접 발표를 준비하면서 제 지식의 깊이도 늘릴 수 있었습니다. 이러한 지식의 선순환 구조에서 지식 공유의 힘을 느꼈고 현재에도 지식의 선순환 구조를 구축하기위해 열심히 노력하고 있습니다.

종진님이 소프트웨어 개발 동아리 회장을 하시면서 가장 힘들었던 부분이 무엇이었나요?

가장 힘들었던 부분은 많은 규칙과 규정 속에서 발생했던 예외케이스 때문에 힘들었던 것 같습니다. 나름 저희가 많은 부분을 고려해서 규칙과 규정을 세웠지만 항상 예외적인 케이스들이 생겼고 이 중심에 회원들이 있었기 때문에 “이걸 어떻게 처리해야하지?”, “동아리 뿐만 아니라 회원들에게 도움이 될 수 있는 방향은 무엇일까?” 에 대해서 매번 고민하고 결정하는 과정이 리더로써 가장 힘들었던 것 같습니다.

어떻게 그러한 문제를 해결하셨나요?

관련 당사자와 수 많은 대화를 통해서 동아리의 본질을 보려고 노력했더니 해결할 수 있었습니다. 저희 동아리의 본질은 조직의 성장과 개인의 성장 모두를 목표로 하는 동아리 입니다.

즉, 조직의 성장을 위해서 개인의 성장을 방해하면 안됬었고, 개인의 성장을 위해서 조직의 성장을 방해하면 안됬었습니다. 이러한 본질을 보는 시각을 통해서 동아리 뿐만 아니라 개인의 성장까지 함께 이룰 수 있는 대안들을 매번 찾았고 이에 대한 결과로써 (제 입으로 말하긴 창피하지만) 저희 동아리는 전남대학교 최고의 IT 개발동아리가 되었고, 회원들은 네이버, 카카오, 배민, 쿠팡 등 IT 서비스 업계에 많이 진출할 수 있었습니다.

오프라인으로 동아리를 운영하시면서 어려운 점은 없었나요?

가장 어려웠던 점은 한 순간에 오프라인 행사를 온라인으로 전체 전환하는 것이 가장 어려웠던 것 같습니다. 동아리 원들에게 Slack, Google Meets, Git등 온라인 협업 도구등을 더 자세히 교육 시켜야만했고 비대면으로 행사로 인해 약해진 동아리원들간의 유대감과 친목 형성을 위해 새롭고 재미있는 행사들을 매번 운영해야하는 부담감이 조금 있었던 것 같습니다. (동아리 원들이 직접 만든 게임으로 행사를 진행하기도 했었구요!)


해커톤 운영 경험

주제: 비대면 환경에서 빅데이터/클라우드 자원을 활용한 서비스 아이디어

온라인 해커톤을 왜 운영 하시게 되었나요??

교내 온라인 해커톤을 운영하게 된 이유는 지방에 위치한 저희 학교 학생들에게 다양한 경험 제공하고 전남대학교 개발 생태계를 활성화 시키기 위해서 해커톤을 처음으로 시작하였습니다. 지방에 거주하는 학생들은 상대적으로 수도권에 비해서 해커톤과 같은 대회에 대한 정보가 많이 부족합니다. 혹여 정보를 얻어 대회에 참여하더라도 거의 모든 경우 수도권까지 올라가야하거나 온라인으로 참여해야 했었습니다. 이러한 학생들에게 해커톤이 무엇인지에 대해서 알려주고 교내에서 직접 대회까지 열어 이를 기반으로 학생들 사이에서 IT 지식들이 잘 공유되어지는 개발 생태계를 만드는 것이 저희의 목적이었습니다.

해커톤을 운영하시면서 뭘 얻을 수 있었나요??

코로나와 같이 주어진 환경에 굴복하지 않고 항상 도전하고 변화할 수 있다는 자신감과 즐거음울 얻게 해준 것이 가장 인상적이었습니다.

이걸 하면서 팀원들과의 불화는 없었던가?

불화라고 할 정도의 팀 내부 갈등은 없었구요 제가 의사결정 방식을 다수결 보다는 명확한 이유와 근거를 통해서 항상 결정했기 떄문에 매번 회의 시간이 길어져서 팀 내에서 불만이 좀 많았던점 이게 가장 큰 불화였던 것 같습니다.

기술을 도입한 경험은 없나요??

해커톤도 일종의 프로젝트라고 할 수 있는데 저희가 어떻게 하면 해커톤 프로젝트를 생산성 있게 관리할 수 있을까? 에 대해서 깊게 고민하고 논의 한 결과 칸반 기반의 소프트웨어로 프로젝트를 진행상황을 관리하고 공유하면 생산성 향상 측면에서 많은 장점을 얻을 수 있겠다 싶어 Trello를 해커톤 팀에 도입하게 되었습니다.

오프라인 환경에서 운영하시느라 불편한 점은 없었나요?

당연히 불편한점은 많았습니다. 매번 저희는 오프라인으로 회의를 진행했는데 회의실을 구하는 것도 너무 어려웠구요. 해커톤 관련 행사들을 모두 온라인으로 진행 해야 되었기 때문에 예외 상황들이 많이 발생해서 이를 미리 예측하고 시나리오를 작성하고 거의 모든 행사에 이러한 작업들을 수차례 반복하는 것이 좀 불편했던 것 같습니다.