긍정적인 면으로 보면 개발자가 되기 위한 본격적인 준비를 하면서 작년과 비교하면 정말 많은 성장을
했다고 생각합니다. 물론 그래봤자 아직 한참 부족하고 모자란 것들이 많은 취준생입니다.
길다고도 할 수 있고 돌아보면 짧게 느껴지는 1년이라는 길을 걷는 동안의 발자취를 돌아보려고 합니다.
회고는 KPT 방식으로 작성하고 올해의 업적은 순차적으로 리뷰해보겠습니다.
작년부터 비전공자로 독학으로 개발을 공부하면서 팀 프로젝트를 경험할 기회가 없었습니다.
부트캠프나 국비 학원을 다니지 않았기 때문에, 온라인에서 팀원을 구해야 했습니다.
그래서 1월에 에브리타임을 통해 같은 학교 컴퓨터공학과 재학생들을 대상으로 스터디 그룹을 모집했습니다. 덕분에 2월부터 약 3개월 동안 팀 프로젝트를 처음으로 진행하며 많은 새로운 경험을 할 수 있었습니다. 이를 통해 부족한 점을 파악하고, 다음에는 어떻게 협업해야 할지에 대한 밑그림을 그릴 수 있었습니다.
정보처리기사 필기도 준비했습니다. 한 달 반 정도 공부한 끝에 무난히 합격할 수 있었습니다.
이와 동시에 대학생 신분을 벗어나 취준생으로서의 새로운 시작을 하게 되었습니다.
알고리즘과 CS에 대한 전반적인 지식이 많이 부족한 상태였습니다.
비전공이라는 꼬리표를 조금이라도 옅게 하고 싶어 정보처리기사 자격증을 준비한 것도 그 이유 중 하나였습니다.
팀 프로젝트를 진행하면서 처음 구현하는 기능에 난관이 많았습니다.
특히 Authentication과 관련된 파트를 맡으며, 백엔드와의 HTTP 통신 과정에서 여러 번 에러에 막혔습니다. 몇 시간이고 문제를 해결하려 매달리며 해법을 찾아야 했던 경험도 많았습니다.
또한 팀원 간의 소통이 원활하지 않아 전체 프로젝트 일정이 지연되고, 진행에 차질이 생기는 일도 있었습니다.
기획 단계가 실제 개발을 코딩으로 구현하는 단계보다 훨씬 중요하다는 것을 깨달았습니다.
다음에 팀 프로젝트를 진행할 기회가 있다면, 커뮤니케이션, 일정 관리, 계획의 치밀함을 최우선으로 챙길 것입니다.
또한 알고리즘과 CS 공부를 게을리하지 않고 꾸준히 쌓아가려 합니다.
지금 이 글을 쓰는 와중에도 뜨끔하지만 개발자로 살아가기 위해 필요한 기본 교양을 충실히 챙겨야 한다고 느꼈습니다.
2월 말에 정보처리기사 필기를 합격한 후, 4월 말에 있을 실기를 준비하기 위해 3월 중순부터 실기 공부를 시작했습니다. 팀 프로젝트는 5월에 모든 기능 개발이 완료되었지만, 자잘한 버그와 팀원들의 기말고사 기간이 겹치면서 일정이 딜레이되었습니다. 결국 디버깅과 배포는 팀원들이 방학을 맞이한 이후에 진행하게 되었습니다.
그 사이에 저는 프로젝트의 관련 문서화 작업과 리드미 작성, 그리고 1차 리팩토링을 완료하며 프로젝트의 마무리에 기여했습니다.
실기 시험을 치고 이후에는 CS 공부와 코딩테스트 문제 풀이를 병행하며 시간을 보냈습니다.
그리고 5월부터는 새로운 프로젝트를 시작했습니다. 실기 결과 합격하여 정보처리기사를 취득했습니다.
프로젝트를 진행하면서 알고리즘 공부와 코딩테스트 문제 풀이를 소홀히 했습니다.
병행해야 한다는 것을 알면서도, 기능 개발에서 어려움이 생기면 시간을 프로젝트에 쏟은 뒤 의지가 약해지고 다른 공부를 미루는 경우가 많았습니다. 유능한 개발자가 되기 위해서는 여러 가지 업무를 병렬적으로 처리할 수 있는 능력이 필수적인데 이를 실행하려는 노력과 습관이 부족했습니다.
앞으로는 제 스타일과 루틴에 맞는 계획을 세워, 시간을 효율적으로 분배하며 꾸준히 실천하려 합니다.
개발, CS 공부, 트렌드 리딩, 알고리즘 공부를 적절히 병행할 수 있도록 세부 계획을 세우고 루틴화하는 데 집중할 것입니다.
매일 일정한 시간을 투자해 각 영역별로 목표를 설정하고, 실행 여부를 점검하며 기록으로 남기겠습니다. Pomodoro 기법과 같은 시간 관리 방법을 적용하여, 집중 시간과 휴식 시간을 구분하며 효율을 높여보려 합니다. 공부와 개발을 진행하면서 얻게 된 작은 성취나 배움을 기록하여 동기부여를 지속적으로 강화하겠습니다.
이외에도 매주나 매월 단위로 진행한 작업을 리뷰하고, 부족했던 부분을 개선해 나가겠습니다.
이러한 과정을 통해 점진적으로 성장하고, 병행 업무 능력을 키워가고자 합니다.
이전에 Next.js를 사용해 본 적이 없었지만, 진행 중이던 프로젝트에서 Next.js를 도입할 필요성이 생기면서 학습을 시작했습니다. 강의를 통해 Next.js를 익힌 뒤 처음으로 적용해보며, 백엔드 없이도 풀스택 개발이 가능한 강력한 프레임워크라는 점을 경험했습니다.
타입스크립트도 공부를 시작했습니다.이는 포트폴리오 프로젝트에 Supabase를 활용하면서, 데이터의 타입 안정성을 확보하고 에러를 줄이기 위함이었습니다.이 과정을 통해 타입스크립트가 개발 과정에서 코드의 가독성과 유지보수성을 크게 향상시킬 수 있음을 느꼈습니다.
또한, 이전에 1회독했던 컴퓨터 구조, 운영체제, 네트워크 도서를 다시 2회독하기 시작했습니다.
더불어 유데미의 자바스크립트 자료구조와 알고리즘 강의를 통해 CS 지식을 꾸준히 강화했습니다.
두 번째로 시작했던 프로젝트에서 기능 구현과 UI 개발이 예상보다 2주 이상 지연되었습니다.
7월 말에야 프로젝트가 완료되었으며, 이후 리팩토링이나 성능 최적화에 바로 착수하지 않고 나태했던 시간이 많았습니다.
특히, 코딩테스트 문제를 1~2문제 푼 뒤 CS 공부를 조금 하고 쉬는 등,
지금 돌이켜보면 시간을 비효율적으로 사용했던 순간들이 아쉽게 느껴집니다.
더 생산적인 활동을 할 수 있었음에도, 목표 의식 없이 흐지부지 보낸 시간이 많았습니다.
앞으로는 집중 시간과 휴식 시간을 명확히 구분하여,
의미 없이 소모되는 아까운 시간들을 줄이는 데 집중하려 합니다.
이도저도 아닌 모호한 시간들을 줄이기만 해도, 더 많은 생산적인 작업을 해낼 수 있을 것이라 믿습니다.
9월 말까지 포트폴리오의 메인 프로젝트로 사용할 아이디어를 구상하고, 기술 스택과 UI/애니메이션,
아키텍처 플랜을 고민하며 약 2주간 철저히 준비했습니다. 10월부터 본격적으로 개발을 시작했으며, 늦어도 3주 안에 완료하겠다는 목표로 작업해, 4주차에 프로젝트를 마무리할 수 있었습니다.
이 프로젝트는 새로운 기술들을 많이 적용하고, 처음으로 풀스택을 구현한 경험이었습니다.
포트폴리오로 사용할 계획이었기에 이전에 제작했던 프로젝트들의 문제점들을 모두 점검했습니다.
Lighthouse 점수, 네트워크 요청 지연 시간 등을 측정하며 성능 문제나 버그를 리팩토링을 통해 최적화했습니다. 컴포넌트 분리와 프로젝트 디렉토리 구조 개선 등 완성도를 높이기 위한 다양한 작업도 수행했습니다.
11월부터는 이력서와 포트폴리오를 작성하며 본격적으로 구직 활동을 시작했습니다.
다만 예상보다 시작 시점이 다소 늦어졌고, 차별화된 서류를 작성하는 데 고민이 많았습니다.
특히 지금같이 많은 지원자가 몰리는 시기에 경쟁력 있는 이력서를 작성하는 것이 쉽지 않음을 느꼈습니다.
성능 최적화 과정에서 아키텍처에 대한 이해도가 아직 부족하다는 것을 느꼈습니다.
타입스크립트 역시 제네릭이나 오버라이딩을 자유롭게 활용하지 못하는 단계입니다.
이력서와 포트폴리오 작성을 위해 프로젝트를 리뷰하면서 각 프로젝트의 불완전하거나 부족한 점들이 더 명확히 와닿았습니다.
특히 사용했던 기술들의 원리와 적절한 활용법에 대한 근거를 명확히 설명할 수 없는 경우도 있었기에,
기술적 깊이에 대한 보완이 필요함을 크게 느꼈습니다.
앞으로는 디자인 패턴과 아키텍처에 대한 체계적인 학습을 계획하고 있습니다.
단순히 기능 구현에 그치지 않고, 어떤 패턴이 왜 필요한지, 적절히 사용하는 방법을 명확히 이해하고 적용할 것입니다. 또한, 회사에 입사한 이후 요구되는 역할을 제대로 해내기 위해, 다음과 같은 점을 중점적으로 준비할 계획입니다.
개발을 하면서 처음으로 팀 프로젝트를 수행했습니다.
혼자서 개발을 하면서는 경험할 수 없는 피그마로 UI 계획, 백엔드와의 API 통신, 코드 컨벤션과
커밋 컨벤션 정하기와 같은 협업을 경험했습니다. 그리고 docker-compose와 docker hub로 EC2에서 완성된 앱을 컨테이너로 어떻게 실행하는지 직접 배포하면서 기획 -> 배포까지의 과정을 모두 경험할 수 있는 값진 시간이었습니다.
작년에 미리 따야했지만 올해가 되어서 취득하게 되었습니다.
자격증 취득보다는 프론트엔드 공부와 프로젝트에 더 시간을 쏟는게 좋지 않을까 생각했으나,
비전공자가 현재 채용 시장 분위기에서 요구하는 전공자의 4년을 개발 실력으로만 경쟁하는 것은
부족하지 않나 싶었습니다. 노력의 증거물로써, 그리고 실제로 CS와 관련있는 부분도 많다고 생각해
정보처리기사를 취급하자는 다짐을 했었습니다.
웹 개발에서 프론트엔드 엔지니어가 가져야 하는 전체적인 이해도, 이 직무가 할 수 있어야 하는 것들에 대한 밑그림을 그릴 수 있었습니다. 언어와 프레임워크 사용 숙련도만이 아니라 브라우저가 작동하는 과정과 원리, 자바스크립트 엔진의 동작 과정, 함수형 프로그래밍과 단일 책임 원칙, 렌더링 성능과 재사용성 높은 코드 베이스 등 급여를 받고 회사를 위해 일을 하는 엔지니어가 실무에서 녹여내야하는 것들을 말이죠. 프로젝트를 개발하고 리팩토링하고 성능 최적화를 진행하며 많은 생각들을 할 수 있던 계기가 되었습니다.
막연하게 프론트엔드 엔지니어가 되어야겠다는 추상화된 생각을 보다 선명하고 구체적인 계획으로 바꿨습니다. 그리고 제 스스로가 밀고 나갈 프론트엔드 엔지니어로서의 캐릭터는 성능 최적화와 유려한 UI에 진심인 개발자입니다.
남은 31일까지의 2024년도 해야할 일을 하면서 잘 마무리하고,
2025년을 본격적인 신입 개발자로서의 등극을 위한 해로 만들어보기 위해 더 열심히 살아보겠습니다.