다시 개발을 하려고 합니다.

들어가며

개발과 관련된 마지막 의미 있는 커밋을 한 지 어느덧 9개월이 지났습니다. 개발자가 되고자 오랜 시간 취업에 매달렸던 시절도 있었지만, 쉽지 않았고 현재는 KTR에서 소프트웨어 품질인증(GS인증) 업무를 맡고 있습니다. 이 분야는 개발과는 조금 거리가 있고, 신청 기관의 제품을 테스트하고 개발자들과 소통하다 보면 개발이 그리워질 때가 종종 있었습니다. 그래서 저는 다시 개발을 시작하려고 합니다.

개발 시작하게 된 계기

개발 ‘흉내’를 내기 시작한 것은 그리 오래되지 않았습니다. 학부와 대학원에서 정보보안 분야를 전공하며 이론에만 집중한 공부를 해왔기 때문에, 프로그래밍 언어나 개발 관련 지식이 전무했습니다. 대학원에서 연구를 진행하다 보면 자연스럽게 프로그래밍을 익힐 줄 알았지만, 연구와 개발에는 큰 차이가 있었고, 개발은 별도로 시간을 내서 집중해서 공부해야 한다는 것을 배웠습니다.

개발 지식이 없으니 연구 아이디어를 구체화하고 실험을 통해 입증하는 데 큰 어려움을 느꼈습니다. 취업 면접에선 개발 직무로 지원하지 않았음에도 개발 관련 질문을 받았고, 대답을 잘 하지 못해 결국 떨어졌던 경험도 있습니다. 이러한 경험들로 인해 개발을 배우는 것을 더 이상 미룰 수 없었고, 2022년 11월부터 제대로 프로그래밍을 공부하기 시작했습니다. 약 9개월 동안 몰입하여 개인 프로젝트를 진행했고, 이론상으로만 알고 있던 내용을 직접 구현하는 것, 장기간 해결되지 않던 버그를 해결하는 것, 무언가 만들어 가고 그것을 개선해 나가는 것에 큰 기쁨을 느꼈습니다.

내가 필요한 앱을 나만의 독자적인 아이디어로 모든 부분을 사용자 입장에서 디자인하고, 디자인 패턴에 맞추어 설계하고, 연산 효율적으로 구현하고, 자동화된 배포 및 검증을 수행하는 과정들을 경험할 수 있었습니다. 당시에 배웠던 개발 지식은 현재 업무에서도 큰 도움이되고 있습니다. PipeTimer 앱은 비록 개인 프로젝트로 시작했지만, 프로그래밍은 이미 하나의 취미가 됐기 때문에 취업을 하고나서도 계속해서 업데이트를 진행하려 했습니다.

개발을 중단하게 된 이유

그러나, 취업 직후엔 회사 업무에 적응하는 것이 우선이라 생각했고 퇴근 후에는 그냥 쉬는 날이 반복되면서 자연스럽게 프로그래밍과 멀어지게 되었습니다. 요즘은 직장에 다니면서도 IT 관련 서적을 쓰거나, 오픈소스를 운영하는 분들이 정말 대단하다고 느낍니다.

개발을 다시 시작하려는 이유

프로그래밍을 다시 시작하려는 이유는 크게 4가지 정도가 있습니다.

지금까지 공부해온 개발 지식의 활용

프로그래밍을 하며 쌓았던 지식은 여러 소프트웨어를 시험하는 업무에서도 유용하게 활용하고있지만, 극히 일부만 사용하고 있습니다. 나름 혼신을 다해 공부했는데 이렇게 썪히기는 아깝다고 생각했습니다. 또한, 최근 GS인증을 받으려는 제품들 중에는 최신 트렌드를 반영하고 있는 제품들도 종종 있어, 이를 따라가기 위해서라도 개발을 놓으면 안된다는 생각이 들었습니다.

내가 만들던 앱의 필요성

프로그래밍을 시작할 때, 제가 필요로 하는 앱을 만들어야 오랫동안 진지하게 프로그래밍에 몰입할 수 있을 거로 생각했습니다. 그래서 만든 것이 PipeTimer라는 앱입니다. 이 앱은 타이머를 연결(Pipe)하여 패턴이 있는 알람을 만드는 앱입니다. 규칙적인 휴식을 취하거나 운동할 때 사용할 목적으로 개발하기 시작했습니다. 개발을 중단한 뒤론, 회사에서는 Workrave라는 앱을 사용하여 규칙적인 휴식을 취하고 있었지만, 운동할 때는 좀 더 복잡한 패턴의 알람이 필요하므로 PipeTimer의 필요성을 종종 느끼곤 합니다. 최근 운동을 다시 시작하면서 이 앱의 개발을 이어가고 싶어졌습니다.

개발하면서 얻는 성취감

회사에서 신청 기관의 제품을 시험하는 업무를 하고 있지만, 업무 자동화와 협업 툴 서버 운영 업무도 함께 맡고 있습니다. 업무 자동화를 위해 VBA로 개발하고, 협업 툴(Taiga)을 도입하기 위해 오픈소스를 설치하는 과정에서 오랜만에 개발할 때의 성취감을 느꼈습니다. 개인적으로 개발을 하며 이러한 성취감을 계속해서 느끼고 싶었습니다.

앞으로의 개발 계획

그래서, PipeTimer를 다시 개발하려고 합니다. 애초에 순수하게 나의 필요에 의해서 만들던 앱이었기 때문에 완성하고 싶습니다. 개발 환경은 포맷됐지만 .env 파일은 안전하게 보관되어 있어 앱을 로컬에서 실행하는 데 큰 문제가 없었습니다. 물론 여러 오류가 발생했지만, 과거의 경험 덕분에 금세 해결 방법이 떠올랐습니다.

이전에는 AWS에서 서버를 운영했지만, 비용 문제로 Oracle 서버를 알아보려고 합니다. 각 회사의 서버 특징을 비교해 보는 것도 재밌을 것 같습니다. 먼저 서버에 배포하여 도메인을 살리고, 모노레포로 합쳐놨던 레포지토리를 다시 분리하려고 합니다(개인적으론 모노레포를 도입했을 때 장점보다 단점이 더 많았습니다.). 이 작업을 마치면 Blue-Green 배포 구성을 갖추고, 앱의 기능을 추가 구현할 계획입니다.

맺음말

취업 준비생 시절에는 개인 프로젝트 결과물 만들기에 집중해 성급하게 개발을 진행했던 기억이 납니다. 이번에는 UI/UX까지 신경 써서 다른 사람들도 쓰고 싶어 하는 앱, 완성도 높은 앱을 만들고자 합니다. 취업 준비생 시절보다 더 재미있게 개발할 수 있을 거라는 기대감이 있습니다.