나는 19살에 개발자로 취업했다.
하지만 불과 몇 년 전까지만 해도
C언어 수업에서 아무것도 못 하던 학생이었다.
지금 돌이켜 보면
개발자가 되는 과정은 어떤 특별한 재능보다
작은 계기와 선택들,
그리고 일상의 불편함을 기술로 해결하고 싶다는 마음이 쌓여 만들어진 결과였던 것 같다.
오늘은 나 자신을 돌아보는 시간을 가지며
고등학생 시절 내가 어떻게 개발자의 길을 걷게 되었는지 이야기해보려 한다.
소프트웨어 마이스터고등학교에 입학하다
나는 초등학교 저학년 때부터 꿈이 로봇공학자였다.
초등학교부터 중학교까지 SW와 로봇 관련 활동을 하며
자연스럽게 꿈을 키워왔다.
부끄럽지만 중학교 때 목표 대학은 카이스트 / 유니스트 진학이었다.
막연히 좋은 공과대학에 진학해서 로봇공학자가 되고 싶었다.
중학교 3학년, 고등학교 진학을 앞두고 고민이 많아졌다.
내가 정말 인문계 고등학교에 진학해서 공부로 경쟁력을 가질 수 있을까?
이 시기에 소트트웨어 마이스터고등학교를 알게 되었고,
다행히 열심히 공부했던 덕분에 내신, 인적성 검사, 면접을 통과해
광주소프트웨어마이스터고등학교에 진학하게 되었다.
아무것도 하지 않던 1학년 초반
입학을 앞두고 코로나가 터졌다.
우리 학교는 전교생이 기숙사 생활을 해야 했지만
내 기억으로는 약 3개월 정도 원격 수업을 진행하다가 격주로 등교 했던 것으로 기억한다.
이 시기 동안 나는 사실상 아무것도 하지 않았다.
수업도 제대로 듣지 않았다.
선생님의 한마디
원격수업을 진행하다가 이후 격주 등교가 시작되었고
C언어 프로그래밍 수업에서 나는 거의 아무것도 하지 못했다.
원격 수업 중 어느 날,
수업이 끝난 후 남아 프로그래밍 선생님께 한 소리를 듣게 되었다.
그 말에 나는 크게 자극받았고,
밤낮과 주말을 가리지 않고 미친 듯이 C언어를 공부하기 시작했다.
그때는 단 하나였다.
“저 선생님께 인정받고 싶다.”
그렇게 공부하다 보니 어느 날부터는 수업을 따라갈 수 있게 되었고,
개인 진도가 수업보다 앞서면서 수업 시간에도 적극적으로 참여할 수 있게 되었다.
처음으로 느낀 개발의 재미
1학기 말, C언어 프로그래밍 과제가 시작되었다.
나는 키패드로 동작하는 두더지 게임을 만들기로 했다.
언제 어디서든 노트북을 들고 다니며
게임을 만들기 위한 공부와 개발을 진행했다.
두더지 게임을 키패드로 진행하는 기능,
제한 시간, 색상 변경, 효과음, 점수,
점수 기반 랭킹 기능까지 구현했다.
지금 생각해 보면 부족한 점도 많고
개발에 대해 아무것도 몰랐을 때지만
그 당시에는 무언가가 만들어지고 있다는 사실만으로도
엄청 재미있었다.
추가하고 싶은 기능 또한 계속 늘어갔지만
짧은 시간 내에 타협을 본 기능이 저 정도였다.
“아, 개발이 이렇게 재밌는 거구나.”
지금 생각해 보면 이 때 개발의 참 재미를 느꼈던 것 같다.
아이디어를 구상하고, 직접 구현하고,
문제를 해결하는 모든 과정이 즐거웠다.
발표 시간, 나는 성공적으로 발표를 마쳤고
나에게 한 소리를 했던 선생님께 인정받았다.
당시에는 어린 마음에 그 선생님이 미웠지만
시간이 지날수록 지금의 내가 있게 해 준 그 선생님께 감사하게 생각하고 있다.
샤라웃 투 프로그래밍 쌤...
백엔드와의 첫 만남
1학년 2학기에는 Java 프로그래밍 수업을 들었다.
TMI지만 당시 나는 Java를 정말 못 했다.
훗날 Java를 주력으로 취업하여 돈을 벌기 시작 할 줄은 정말 상상도 못 했다.
C언어에 자신감이 생긴 나는
원래 목표로 했던 로봇공학자 꿈과 맞았던
모바일 로보틱스 동아리에 들어갔다.
임베디드 관련 수업도 들었는데 이 때 전기 분야가 나와 맞지 않는다는 것을 깨달았다.
하지만 원래 꿈이었기에 “그냥 열심히 하면 된다”는 마음으로 계속했다.
그러던 중 학교에서 진행한 특강에서
HTML, CSS, JavaScript를 처음 접하게 되었다.
결과가 바로 눈에 보인다는 점은 좋고 뿌듯했지만
솔직히 크게 재미있지는 않았다.
그렇게 특강을 듣다 보니 DB와 통신하며 뒷 단에서 묵묵하게
자기 일을 열심히 수행하는 백엔드(서버)라는 분야를 알게 되었다.
그 순간 머릿속에서 전구가 켜진 것 같았다.
“이거다.”
그렇게 똘망똘망해진 눈으로 마지막까지 수업을 열심히 들었고
특강이 끝난 뒤 돌아가시려는 외부 강사님을 붙잡고
백엔드 분야에 대해 이것저것 질문했다.
그때 처음 알게 된 키워드가 Node.js였다.
그 이후 나는 로봇공학자의 꿈을 접어두고 동아리를 나오며
본격적으로 백엔드 개발에 대해 파고들기 시작했다.
개발에 빠져들다
정말 아무것도 모르고 시작했지만 브라우저가 무엇인지부터 시작해
JavaScript 문법, 서버 개념, 프론트엔드와 백엔드 구조,
어떻게 연동하는 건지 등을 미친 듯이 파고들었다.
처음으로 게시판 기능을 만들고 템플릿 엔진까지 붙여
친구들에게 보여주며 엄청 뿌듯해했던 기억이 난다.
이후 Go 언어를 알게 되었고 그 매력에 빠져 Go로 백엔드를 공부했다.
이 시기에 로그인(인증/인가) 기능도 처음 구현해 봤다.
이때 마주치는 모르는 것들을 하나씩 찾아보며 공부하면서
JWT가 뭔지 이해하는 데에만 꼬박 1달 정도 걸렸던 것 같다.
이 시기쯤부터 나는 평소 좋아하던 게임도 끊고 공부에 집중하기 시작했다.
개발을 배우며 게임 역시 결국 데이터 일 뿐이라는 사실을 깨달았고,
그 데이터에 감정이 좌우되는 스스로를 보며 묘한 거리감을 느꼈다.
내 감정이 무언가에 휘둘리는 것이 싫었고,
그 순간부터 자연스럽게 게임에 흥미를 잃게 되었다.
그리고 이 시기에 부모님의 도움을 받아
개발 및 개발 공부에 필요한 맥북을 구입하게 되었다.
제대로 개발 공부를 시작하니 학교에서 제공된 노트북만으로는 작업이 원활하지 않았다.
개발 환경에 적합한 노트북을 찾다 보니 맥북이었다.
그렇게 2학년을 앞두고 취업을 고민하기 시작했다.
취업을 하려면 내가 지금 공부하고 있는 이 방향에 대한 의문이 생겼고
백엔드 채용공고들을 찾아보니 Java/Spring 채용공고가 압도적으로 많았다.
1학년 2학기 때 다신 쳐다보지 않겠다던 Java를 혼자서 다시 공부하며 Spring Boot 공부를 같이 시작했다.
이 때 인프런과 김영한 님의 강의를 알게 되었고
김영한 님 강의가 그 때 4~5개 쯤 있었던 걸로 기억하는데
부모님의 도움으로 모두 구매하여 한 달 만에 전부 완강했다.
이 과정에서 목표가 생긴 나는 군대에 가는 시간이 아깝게 느껴졌고,
나중에 병역특례를 진행하기 위해 필요한 정보처리 기능사 자격증도 취득했다.
그때 저를 믿고 선뜻 투자해 주신 부모님께 감사드립니다... 🙇♂️
도토리🐿️ 프로젝트 - 실제 서비스를 만들다
그렇게 친구들과 간단한 토이프로젝트를 진행하며 공부를 계속했고
2학년 중순 즈음에 친구들과 나왔던 아이디어가
기숙사 관리 시스템이었고 개발을 진행하기로 결정했다.
기숙사 관리 시스템을 만들게 된 계기는
디스코드 메신저로 운영되던 기숙사 관리 방식의 한계에서 시작되었다.
기숙사 자치위원들은 자습을 신청한 학생이 실제로 참여했는지 여부를
따로 종이에 기록하며 관리해야 했고,
이에 따라 다음 자습 신청에 대한 적절한 패널티가 주어지는데
이 목록과 패널티를 기숙사 자치위원들이 별도로 관리하고 있었다.
사감 선생님이 관리하던 상·벌점 역시
별도의 수기 방식으로 운영되고 있었다.
게다가 하루에 1인당 1회만 신청할 수 있는
기상 음악 신청 규칙도 메신저만으로는 제대로 통제하기 어려웠다.
이러한 불편함은 모두가 알고 있었지만
이를 체계적으로 해결할 방법은 없었다.
만약 이 과정을 하나의 시스템으로 만들 수 있다면
모두에게 큰 도움이 될 것이라 생각했다.
또한 전교생이 매일 사용하는 서비스가 될 수 있다는 점에서
단순한 토이 프로젝트를 넘어
실제로 의미 있는 경험이 될 것이라는 확신이 들었다.
그렇게 우리는
직접 기숙사 관리 시스템을 만들어 보기로 했다.
그렇게 도토리 프로젝트가 시작되었다.
프로젝트 이름이 도토리인 이유는
전교생이 강제적으로 기숙사 생활을 진행해야 했기 때문에
기숙사(dormitory)에서 집에 가고 싶은 나(me -> mi)를 뺀 우리들의 마음을 담아
도토리로 짓게 되었다.
그렇게 나를 포함하여 프론트엔드 2명, 백엔드 2명으로 팀을 구성했고
우리는 나중에 서버 비용을 내기 위해 우리들의 용돈을 매달 조금씩 내면서 진행했다.
기존에 디스코드라는 메신저로 관리되던 기숙사 관련 기능부터
사감쌤과 기숙사 자치위원들이 필요하다는 기능들의
의견을 취합하여 기획과 기능 개발을 진행했다.
처음부터 실제 출시를 목표로
학교에서 실제로 사용하기 위한 서비스를 만들어야 했는데
이 때 전에 공부해 뒀던 인증/인가 내용이 정말 큰 도움이 되었다.
이 때 친구들에게 관련 개념을 설명해 주며 개발했던 기억이 있다.
그렇게 평일, 하교 후 기숙사에서, 그리고 주말 틈틈이 계속 공부하고
새로 나오는 김영한 님 강의도 들으며 열심히 개발했다.
그렇게 2학년 겨울이 다가왔고 3학년이 되던 해 1월,
겨울 + 봄방학 전을 목표로 전교생에게 베타 오픈을 하기로 결정했다.
그렇게 사감선생님과 자치위원들을 먼저 설득했다.
왜 사용해야 하는지, 사용하면 어떤 점이 더 좋은지를 이야기하며 설득했다.
그렇게 많은 이야기를 나누고
우여곡절 끝에 사용하기로 확정되었다.
사용하기로 확정된 이상 우리는 어떻게든 성공적으로 서비스를 출시해야 했고,
로컬에서 프론트/백엔드 개발과 연동을 모두 마치고 나서 배포하는 환경으로는 AWS를 선택했다.
학교에서 실제로 배포해서 사용하는 서비스가 없었을뿐더러
모두 어떻게 배포해야 하는지는 하나도 몰랐기에 모두 열심히 조사하며 배포 환경을 구축해 나갔다.
이 시점에 도메인도 구매하고
우여곡절 끝에 Amplify, Elastic Beanstalk 환경에 배포했다.
이 때 CORS 문제도 처음 경험해 봤다.
그렇게 잘 배포가 된 줄 알았지만
프론트와 백엔드가 통신이 잘 되지 않았다.
SSL handshake 문제로 인한 요청 pending 현상 발생으로
베타 오픈 2주를 앞두고 배포 환경을 마이그레이션 하기로 결정했다.
베타오픈 이후에 교내에 서비스를 홍보하며
전교생을 회원가입 시켜야 하는 숙제가 남아있었고,
배포 경험이 없던 우리에게 2주라는 시간은 굉장히 촉박한 시간이었다.
그렇게 밤을 새며 열심히 조사하고 구축한 끝에 베타 오픈일 며칠을 앞두고
Client : S3, CloudFront
Server : EC2, Route53, Elastic Load Balancer
환경으로 성공적으로 배포 환경 마이그레이션을 진행했다.
이 때 처음으로 서비스를 올려 접속한 순간,
내가 만든 것이 정말 누군가에게 사용될 수 있는 상태가 되었다는 사실이 믿기지 않았다.
그렇게 배포를 완료하고 우리는 밤새 테스트를 진행하고 고치며 발생하는 버그들을 모두 잡아냈고,
우리는 짬짬이 교내를 여기저기 다니며 서비스를 홍보하고 전교생을 가입시키는 데 성공했다.
실제 서비스를 운영해보다
그렇게 우리는 방학 전 일주일이라는 기간 동안 성공적으로 베타 서비스를 마쳤다.
베타 서비스를 진행하는 동안 받은 피드백으로 방학 동안 기능을 수정/보완하고 UI/UX를 개선했다.
그리고 개발과 적용을 쉽고 빠르게 하기 위해 Github Action 기반 CI/CD도 적용했다.
이 때 취업을 위한 준비도 같이 병행했다.
그렇게 개학을 하게 되고,
우리가 3학년이 되던 해 3월
약 250명의 유저를 대상으로
본격적으로 도토리 서비스가 시작됐다.
그렇게 우리는 고등학생 때
실제 서비스를 운영하며 실 서비스를 기준으로 성능도 측정하여 개선하고
MVP 단위 개발 프로세스를 참고하여
일주일 간격으로 재배포하며
사감선생님과 학생들의 피드백을 받아 서비스에 반영하여
더욱 사용자 친화적이고 완성도 높은 서비스를 위해
지속적인 수정, 유지보수를 진행해 나갔다.
이 때 친구들의 오토마우스, 매크로, 과도한 새로고침으로 인해 장애가 발생했던 적도 있고,
도토리에는 평일 오후 8시에 자습신청이 열리게 되는데 50명 제한이지만 51명이 신청되는 이슈도 발생한 적이 있었다.
실제 서비스를 운영해 보니 일반적인 토이프로젝트에선 경험할 수 없던 동시성 이슈도 발생하여
디버깅하고, 해결 방안을 모색하고 해결까지...
지금 생각해 보면 이 때 경험이 지금 보면 취업과 빠른 실력 성장에 정말 큰 도움이 됐던 것 같다.
이 때 처음으로
개발은 코드만 잘 짠다고 끝나는 일이 아니라,
사람들의 불편함을 실제로 해결 할 수 있는 수단이라는 것을 제대로 느끼게 되었다.
학생이 만든 서비스, 학교를 설득하다
그렇게 서비스를 잘 운영하던 중 서버 비용이 생각보다 많이 나와
서버 사양들을 조정하며 용돈을 조금씩 더 모아 서버 비용을 충당하기 시작했고
학생이었던 우리는 곧 있으면 우리 힘으로 서버 비용을 내지 못 할 수 있겠다는 생각을 했다.
그래서 우리는 친한 선생님들의 의견을 참고하여 화이트 페이퍼를 작성해 학교에서 발표를 진행하기로 결정했다.
선생님들을 설득하여 날을 잡고 우리가 작성한 화이트 페이퍼로 도토리 서비스에 대해 발표를 진행했다.
이 서비스의 가치와 이 서비스가 운영됨으로써 학교와 학생들에게 미치는 좋은 영향,
학교에서 최초로 운영하기 시작한 서비스로, 실제 학생들이 운영하면 기업들에서 어떤 시선으로 바라봐줄지 등
사실 이때 우리의 가장 큰 목표는 학교에서 서버 비용을 지원받는 것이었다.
하지만 이 과정을 통해 우리는 도토리 서비스에 대해 더 잘 알 수 있게 되었고
우리들이 바라보는 도토리 서비스에 대한 생각도 정리 할 수 있게 되었다.
우리의 발표는 성공적으로 끝이 났고,
선생님들은 이후 며칠 간의 논의 끝에 마침 남는 예산이 있어 서버 비용을 학교에서 부담해주기로 결정해주셨다.
그렇게 결정해주신 선생님들의 요청도 있었다.
전공동아리로 팀을 만들어 동아리원도 더 뽑고,
우리가 졸업하기 전에 후배들에게 잘 인수인계 해주어
후배들에게도 전달되어 서비스가 잘 운영되고, 이 경험들을 후배들도 지속 할 수 있도록 하는 것이었다.
그렇게 우리는 약 2년간의 AWS 서버 비용을 약속받았고,
그 이후에는 학교 예산 특성상 불규칙적인 비용이 발생하는 AWS 대신
학교에 물리서버를 구축하여 운영하기로 하였다.
그렇게 우리는 서버 비용 걱정 없이 마음껏 서비스를 운영하였고,
점점 후배들에게 인수인계 해주며 본격적인 취업준비를 시작하게 되었다.
19살, 취업
그렇게 학교에서 진행한 프로젝트 경험들을 토대로 이력서를 작성하고,
포트폴리오를 다듬으며 5월까지 취업에 성공하는 것이 내 목표였다.
취업을 위한 내 목표 설정은 다음과 같았다.
- 병역특례 가능
- 준비한 기술 스택과 일치
- 서울 소재 기업 (강남 희망)
먼저 병역특례를 바로 시작하고 싶었기 때문에 신청이 진행되는 6월 이전에 취업해야했다.
위치는 강남을 희망했던 이유는 이 때 왜 인지는 모르겠지만
강남에서 일하는 것에 대한 로망이 있었다.
그렇게 기업들에서 나를 괜찮게 봐 준 덕분에
5월까지 총 4개의 회사에 최종합격 했으며,
병역특례로 근무가 바로 시작이 가능한
명동에 있는 AI 회사의 백엔드 직무로 취업이 정해졌다.
학교에서 최소 수업일수를 채우고 졸업 전에 취업을 나갈 수 있는 상황이었고,
최소 수업일수를 채우면 9월 19일부터 첫 출근이 가능했다.
그 기간까지 나는 정말 학교에서 열심히 공부하고,
취업 준비하는 친구들을 도와주며
또 열심히 놀았다.
어떻게 보면 지금까지 가장 재밌고 마음 편하게 놀았던 기억이
취업 직후 회사에 출근하기 전까지 였던 것 같다.
그렇게 8월 생일이 지나고 서울에 가게되면 내가 따지 않을 것 같은 운전면허도 따고
집도 급하게 구하며 첫 출근을 준비했다.
그렇게 지금 다니고 있는 회사에 19살에 첫 출근을 하게 되는데…
끝내며
그때는 몰랐지만
그 시절의 시행착오와 선택들이
지금의 나를 만들었다고 생각한다.
돌이켜보면
내가 개발자가 된 순간은
취업을 했을 때가 아니라
처음으로 무언가를 만들며
즐거움을 느꼈던 그때가 아닐까 생각해본다.
결국 고등학생 때 나는 로봇공학자라는 꿈을 바꾼 것이 아니라
나에게 맞는 길을 찾은 것뿐이었다.
그리고 그 길은 생각보다 훨씬 빨리 나를 사회로 이끌었다.
벌써 취업한 회사에 다닌 지 어느덧 3년 6개월 정도 되었네요.
지금 이렇게 돌아보니 생각나는 일들도 많고 굉장히 추억돋네요.
LLM 없이 맨땅에 헤딩하면서 잘 헤쳐나갔구나 하는 뿌듯함도 있구요.
지금 생각해도 가슴 뛰는 경험을 했던 것 같아요.
회사에서의 이야기는 다음 글에서 이어서 써보겠습니다.
읽어주셔서 감사합니다. 😊
댓글