미리보기
기본 정보
기술 스택
경력
(주)코드팜
주임 • 개발팀
SI 개발 전문업체
대학 실습학기제 인턴 4개월 근무 후 정규직 전환
개발팀 소속으로 자사 포털의 풀스택 개발 업무 수행
(11개월 | 정규직)
프로젝트
코드팜
CHM 사의 FMS(건물관리시스템) 프로토타입 개발
목적
사업성 검토를 위한 프로토타입 프로젝트 진행
주요역할
프로젝트 리더로서 팀을 이끌며 고객 요구사항을 분석하여 아키텍처 및 API 설계
퍼블리싱을 제외한 자산 관리 및 시설 관리 화면 설계서 작성 및 기능 개발
프로젝트 일정 및 팀원 관리
Skills
Java, Spring, JPA, Vue.js, MariaDB
코드팜
자사 XPortal MSA 연구개발
목적
자사 XPortal의 멀티 모듈 기반 프레임워크를 MSA 구조로 전환
주요역할
As-Is Mybatis를 To-Be인 JPA로 전환하는 작업 수행
Skills
Java, Spring, JPA, Vue.js, MariaDB
코드팜
(재)한국교육전산망협의회 홈페이지 재구축 용역 (대학정보화 포털)
목적
한국교육전산망협의회(현:한국교육정보화재단, KREN) 홈페이지 재구축
주요역할
홈페이지 및 커뮤니티 기능 개발
지역협의회 관리 기능 개발
대학정보관리 기능 개발
Skills
Java, Spring, Vue.js, MySQL
교육
동명대학교
대학교(학사) | 컴퓨터공학과
2015.03. ~ 2022.08.
졸업
자격증
OPIc 영어
IH (Intermediate High) | ACTFL
2024.02.
외국어
영어
일상 회화 가능
대외활동
동명대학교/캘리포니아 주립대
해외 SW교육
2020년, 2021년 두 차례에 걸쳐 캘리포니아 주립대 학생들과 함께하는 SW 교육 프로그램에 참여 (코로나19로 인해 ZOOM 미팅을 통해 진행)
2020년 겨울 (1차 참여)
SPA 프레임워크인 Angular를 활용한 프론트엔드 교육 참여
2021년 여름 (2차 참여)
백엔드 역할로 교육 및 프로젝트 참여
백엔드 교육과 PMS(프로젝트 관리 시스템) 제작을 통해 웹 개발에 대한 전반적인 교육 제공
2021
자기소개
안녕하세요, 저는 백엔드 개발자 박언규입니다.
저는 백엔드 개발자로서 기술적 도전에 대한 열정과 효과적인 협업 및 유연한 소통을 중요하게 여기고 있습니다. 복잡한 문제를 해결하는 과정에서 다양한 기술을 빠르게 학습하고 적용하는 경험을 쌓았으며, 특히 서비스 개선에 대한 책임감을 가지고 프로젝트에 임해왔습니다.
이러한 경험들을 통해 기술적 역량뿐만 아니라 팀워크와 소통 능력도 발전시킬 수 있었습니다. 앞으로도 지속적으로 배우고 성장해 나가며, 더욱 가치 있는 개발자가 되기 위해 노력할 것입니다.
실무 기간은 총 10개월로, 대학생 신분의 인턴십으로 시작하여 졸업 후 정규직으로 전환되어 아래와 같은 경험을 할 수 있었습니다.
ㅤ
환경에 따른 최적의 기술: MyBatis에서 JPA로의 전환
ㅤ
사내 포털 시스템의 MSA 구조 전환을 위한 연구개발 프로젝트에 참여하게 되었습니다. 저는 프로젝트 내에서 MyBatis 기반의 솔루션을 JPA로 전환하는 업무를 맡았습니다.
ㅤ
업무를 수행하면서, 기존 MyBatis로 작성된 복잡한 쿼리를 JPA로 변환하는 과정에서 어려움을 겪었습니다. JPA는 러닝 커브가 높고 복잡한 쿼리의 구현이 어렵다는 단점이 있지만, 이 프로젝트에서 JPA를 도입해야 하는 이유와 가져올 이점에 대한 궁금증을 품고 탐구하였습니다. 그 결과 JPA는 객체 지향 프로그래밍의 장점을 극대화하고, 생산성, 유지 보수성, 확장성 측면에서 강력한 이점을 제공한다는 것을 확인할 수 있었습니다.
ㅤ
특히, 당사에서 지향하는 프로젝트 구조는 MSA 방식으로 모든 마이크로서비스를 분리하여 구동시키는 것이었습니다. 이에 JPA는 데이터베이스와의 의존성을 최소화하고, 서비스 간의 독립성을 보장하며, 객체 지향적인 데이터 접근 방식을 통해 각 마이크로서비스의 확장성과 유지보수성을 크게 향상시킬 수 있기 때문에 이 프로젝트에 적용시 이점이 더욱 두드러진다는 점도 알게 되었습니다. 이러한 이점들이 있는 JPA를 안정적으로 적용하기 위해 JPA 환경에서 복잡한 쿼리를 작성할 수 있는 방법들을 학습하고 탐구하였습니다.
ㅤ
처음으로 적용한 방법은 Criteria API로, 동적 쿼리와 복잡한 쿼리 생성이 가능했으나 코드 작성이 복잡해지고 가독성이 떨어지는 문제가 있었습니다. 그다음으로 QueryDSL을 적용하였고, SQL-like 구문을 사용하면서도 동적 쿼리 및 복잡한 쿼리 작성이 가능해졌습니다. QueryDSL은 Criteria API의 가독성 문제를 해결하고 러닝 커브를 낮추는 효과가 있어 최종적으로 프로젝트에 적용하였으며, 이를 통해 기존 MyBatis 쿼리들을 JPA로 성공적으로 전환할 수 있었습니다.
ㅤ
과거에는 최신 기술을 무조건적으로 따라가야 한다는 막연한 생각을 가지고 있었으나, 실무 경험을 통해 MyBatis와 JPA는 각기 고유한 장점과 단점이 있으며, 기술의 선택은 환경에 따라 달라져야 한다는 것을 깨달았습니다. 이 경험을 통해 어떤 새로운 기술도 모든 상황에 완벽하게 맞는 것은 아니며, 최적의 기술은 환경에 맞는 기술이라는 중요한 교훈을 얻었습니다.
ㅤ
리더십과 협업: 실전에서 경험한 애자일과 TDD
ㅤ
자사 솔루션을 기반으로 고객 요구에 맞춘 소규모 SI 프로젝트를 주도하며 진행하는 경험을 하였습니다. 해당 프로젝트의 리더로서 저는 고객과의 미팅을 통해 도메인 구조를 확립하고, API 설계, 화면 설계, 일정 관리를 주도적으로 진행하였습니다.
ㅤ
가장 큰 고민은 리더로서 느껴지는 막중한 책임감이었습니다.
이전에는 지시받은 업무를 단순히 수행하는 것이 주된 역할이었으나, 이번 프로젝트에서는 분석과 설계를 주도하며 제 판단이 팀 전체와 프로젝트의 성공 여부에 큰 영향을 미친다는 것을 실감했습니다. 그러나 팀원들의 적극적인 협조와 PM님의 조언 덕분에 부담감은 점차 자신감으로 바뀌었고, 실무 프로젝트 전반에 걸쳐 모든 단계에 참여하면서 결정하는 경험은 저에게 매우 소중한 자산이 될 것이라고 확신했습니다.
ㅤ
일정 계획을 수립할 때, 저는 팀원들의 능력에 맞춰 단위별로 작업 시간을 배분하려 하였으나 예상치 못한 이슈들이 발생하며 초기 계획이 차질을 빚었습니다. 이에 따라, 프로젝트의 촉박한 일정을 해결하기 위해 짧고 반복적인 스프린트 방식의 애자일 방법론을 적용하고, TDD 방식을 도입하여 개발의 시행착오를 줄이는 데 성공했습니다. 그러나 연쇄적인 요구사항 추가로 인해 다른 팀원의 지원을 받아 프로젝트를 마무리할 수 있었습니다.
ㅤ
프로젝트에 예상보다 많은 인력과 시간이 필요했던 점은 아쉬움으로 남았지만, 일정이 여유롭게 잡혀 있었더라도 계획대로 진행되지 않을 수 있다는 점을 배웠으며, 이론으로만 접했던 애자일과 TDD 방법론이 프로젝트의 원활한 진행에 큰 도움이 될 수 있다는 점을 몸소 체험했습니다. 또한 팀원들과 지속적으로 소통하고 협력함으로써 어려운 상황을 극복한 이 경험은 저에게 매우 귀중한 자산이 되었습니다. 특히, 어려운 상황일수록 팀원들과의 협업과 소통이 프로젝트 성공을 위해 얼마나 중요한지를 깊이 깨닫게 되었습니다.
ㅤ
비록 아직은 경험이 많지 않지만, 빠르게 배우고 성장하며 더 나은 결과를 만들어내기 위해 항상 최선을 다하겠습니다.
읽어주셔서 감사합니다.