어느덧 2023년을 마무리하는 시기가 되었습니다.
대학 생활을 마치고 저의 삶을 주도해볼 수 있는 첫해였는데 저를 되돌아보고 새로운 인식과 경험을 할수있던 한해였던것 같습니다.
저의 2023년은 4가지 키워드로 요약 할 수 있고 이를 위주로 회고를 진행해보겠습니다,
웹개발아웃소싱, 대학졸업, 취업준비, 회사신입
2022년 여름부터 진행해오던 웹개발 외주 프로젝트를 마무리하였습니다. ReactJS와 ExpressJS 를 이용해서 프론트엔드 및 풀스택 프로젝트를 경험하였습니다. 해당 기간이 방학이여서 다른 활동 없이 프로젝트에만 집중할 수 있었는데 아침에 일어나서 밥먹는 시간을 제외하고는 잠에 들때까지 일을 했었습니다. 그래도 제가 돈을 주고 배우던 코딩을 반대로 페이를 받으면서 성장할 수 있다는 점이 정말 행복하였고 시간 가는줄 모르게 일했던 것 같습니다. 아래는 관련 회고록입니다.
그러나 본 프로젝트에서는 같은 분야의 개발자와 협업을 해보는 경험을 할 수는 없었습니다. 프론트엔드 프로젝트는 디자이너와 백엔드 개발자와, 풀스택 프로젝트에서는 디자이너와 소통을 할 수 있었지만 제가 속한 분야에서는 저 혼자 고민하고 스스로 결론을 지으며 프로젝트를 완성시켜나갔습니다.
이때문에 프로젝트 Git 저장소를 운영하고 나름대로 Git flow 를 지키기위해 커밋 메시지를 작성해보고 기능에 따라서 기능 브런치를 나누고 병합해보기도하였으나 이 모든 것을 혼자하다보니 Pull Request 기능을 활용하여 타인과 의견을 교류하는 경험을 할 수 없었고 제가 만든 코드가 실제로도 사용되는 방식인지에 대한 고민도 있었습니다.
그리하여 저혼자만 이해할 수 있는 코드가 작성되었으며 실제로 다른 사람들은 이코드를 어떻게 생각하는지 알 수 없었고 무엇보다 제가 중요하게 생각하는 개발자 덕목인 커뮤니케이션 능력을 키우지 못했다는점이 아쉬웠습니다.
본 외주는 MVP 모델을 구현하는 것으로 짧은 기간내에 기능을 구현해내는 것이 중요했습니다. 따라서 프론트엔드는 디자인 시안에 맞게 CSS를 구현하고 적절한 페이지 라우팅과 상태 관리자와 React Hook을 통해 백엔드 서버상에 있는 데이터를 동기화 시키려하였고 백엔드는 DB 데이터를 모델링하고 MVC 패턴에 따라 CRUD를 구성하였습니다.
그 과정은 "과연 내가 이것을 어떻게 구현할 수 있을까" 고민하며 다른 사람이 사용한 코드를 찾아보고 참고하여 기능을 구현해보려했고 기능이 동작한다면 오류를 표현하지 않을때까지 코드를 작성하였고 그 이상으로 코드를 더 개선시킬지 고민하지는 못했습니다.
그래서 다음 프로젝트에서 제가 원하는 점은 기능 구현 이상으로 더 나아가는 것입니다. 테스트 코드를 만들어 체계적으로 코드의 숨은 결함을 찾아내고 리팩토링을 통해 누구나 이해할 수 있는 좋은 코드를 만들어보고싶습니다.
대학교에 입학하면서 가장 배우기를 기대한점은 사람과 좋은 관계를 맺는법과 리더십이였습니다.
어렸을때부터 저는 내향적인 성격을 타고나서 사람을 대하는 것이 어려웠습니다. 내향 성향은 외부보다 자신에게 집중하는것에 특화된 사람으로 그자체를 나쁘다고 생각하지는 않지만 사람과 사람이 밀접하게 만나있는 현대 사회를 살아가기위해서는 사람들과 어울리는 방법을 배우는 것 또한 매우 중요하다고 생각했습니다.
따라서 다양한 사람들이 학업이라는 공통 목적으로 묶여있는 대학교에서는 사람들과 어떻게 어울릴 수 있는지 배우고 싶었습니다. 그리고 그런 경험을 가장 강하게 할 수 있는 역할이 리더라고 생각했기 때문에 과대나 학회장을 하기도 했습니다.
대학생활을 마치고 되돌아보면 후회없는 경험이였다고 생각합니다. 운이 좋게도 좋은 사람들을 만난 부분도 있었지만 저를 좋은 사람으로 생각해주셨습니다.
이곳에서 얻은 경험은 나중에 회사와 같이 성격이 다른 집단에 속하여서도 큰 도움이 될 것으로 기대됩니다.
대학에서 다양한 경험을 하면서 내가 좋아하는 일이 뭘지 내가 하고 싶은 분야는 무엇이지 찾고 싶었습니다. 이부분은 아쉽게도 결론을 짓지 못하고 졸업을 하였습니다.
처음 대학에 입학하였을때는 막연히 보안학과에 왔으니 컴퓨터 보안을 해야겠다고 생각했습니다. 학과에 학술동아리가 활성화되어서 이곳에서 리버싱, 웹해킹, 포너블을 기초를 배울 수 있었는데 뭔가 생소한 것들이 신기하긴 했지만 무언가 확 와닿는 재미를 느낄 수는 없었습니다.
그리고 개인적으로 웹개발 프로젝트를 진행하면서 제가 생각했던것이 웹브라우저상에서 구현되는 모습을 보면서 흥미를 크게 느꼈습니다. 그때부터 저는 이미 구현된 시스템의 보안 위협을 찾는 일보다는 세상에 없는 것을 창작해 내는 것에 흥미를 느끼는 것을 알게되었습니다.
그러나 개발에서도 매우 다양한 분야가 있었는데 백엔드, 프론트엔드, 앱개발등이 있었습니다. 저는 만들기만하면 다 좋았으나 서버 개발자에 대한 환상이 있어 백엔드 개발을 초반에는 선호하였습니다. 그러나 경험을 쌓기위해서 주위 사람들과 프로젝트 인원을 모집하려고하면 보안학과 특성상 프론트엔드는 디자인 감각이 있어야한다고 생각하여 기피하여 대부분 백엔드로 몰리는 현상이 있었습니다. (저 또한 그랬던것 같습니다)
그래서 프로젝트를 하기위해서 저는 분야가 상관이 없었으니 프론트엔드 분야에도 도전해보자는 마음으로 시작하였고 그것이 지금까지 프론트엔드를 주분야로 공부하게되는 계기가 되었습니다.
그러나 특정 분야보다는 개발자체에 흥미를 가지고 있기 때문에 백엔드 개발도 필요하다면 하는편이고 어느 분야를 저의 주 커리어로 정해야할지는 아직도 고민중입니다.
외주프로젝트를 진행하느라 이력서와 포트폴리오를 이때 처음 준비했습니다. 이부분이 매우 아쉬웠는데 대학교 3학년부터 서류 준비를 해보았으면 어땠을까라는 생각이 들었습니다. 이력서를 작성하면서 제가 부족했던 부분이 무엇인지 뼈저리게 느꼈기 때문입니다.
또한 외주프로젝트를 진행한것도 나름 기업이 좋게 생각하는 경험이라고 생각하고 진행해왔으나 이력서를 준비하고 관련 정보를 공부하다보니 기업 입장에서는 기능 구현을 잘하는 개발자보다 코드에 대해 고민하고 내가 왜 이것을 사용했는지, 해당 기술 스택을 높은 이해를 가지고 사용하였는지 그리고 코드를 개선을 해보는 경험을 가졌는지를 중요하게 본다는 것이였습니다.
제가 경험한 외주 프로젝트는 아무래도 보수를 이미 받았기 때문에 코드를 공개하기가 어려웠고 기업에서 원하는 경험은 하지 못한 것으로 생각되어 매우 아쉬웠습니다.
그래도 취업에 대한 희망을 잃지 않고 병역특례를 가고싶었기 때문에 제가 좋아하고 자신있다고 생각하는 프론트엔드 분야 모집 공고를 찾아보고 지원했습니다. 그러나 생각보다 병역특례 프론트엔드 모집공고가 많이 없었습니다.
제 기억으로 신입 기준 20군데가 있었고 저는 10군데를 지원하였습니다. 다른 개발 직군분들의 지원 양상을 보면 100개가 넘는 곳에 지원하시는 것으로 알고있는데 저도 그렇게 할수 있으면 하고 싶었으나 아무래도 병역특례 특성상 TO가 적어 공고 하나하나가 너무 소중했기때문에 공고 하나를 넣어도 일주일 이상 고민하여 자기소개서를 작성하고 지원하였습니다.
그럼에도 대부분 서류탈락이였고 이후 운이 좋게 강남 소재의 프론트엔드 직군의 기업에서 서류를 통과하고 코딩테스트를 진행하였습니다. 코딩테스트 또한 우테코 이후로 오랜만이여서 떨렸지만 생각외로 기초수준으로 쉽게 나와서 기분좋게 제출하였고 면접단계까지 갈 수 있었습니다.
제가 작업한 프로젝트의 예상 질문과 답변을 준비했고 프론트엔드 직무 면접에 맞추어 자바스크립트의 특성과 동작원리 그리고 브라우저 및 리액트의 특성을 준비하여 면접에 들어갔습니다.
면접에서 질문 주셨던 내용은 다음과 같았습니다.
- 시맨틱태그를 알고있고 사용해본적이 있나요?
- 웹접근성을 이해하고 브라우저호환성때문에 어려움을 겪었던적이 있나요?
- 자바스크립트 작동원리를 sudo 코드로 설명해줄수있나요?
- useMemo useCallback을 이해하고 사용해본적이 있나요?
- 리덕스를 선택한 이유
- 리액트를 선택하고 해당 버전을 선택한 이유
- 스타일 컴포넌트 사용이유와 다른 css 프레임워크를 사용한다면?
- 리액트는 가상DOM을 사용하는데 그렇다면 DOM을 총 몇개 생성할까요?
지금와서 보면 정말 기본적인 질문들이었고 제 나름대로 설명을 하였으나 답변이 부족해었던것 같습니다.
특히 6번째 질문에서 많은 것을 느꼈는데 저는 막연히 리액트가 좋다고해서 최신 릴리즈를 다운받아 사용했었습니다. 그러나 생각보다 현업에서는 리액트 버전에 따라 지원되는 기능들도 다르고 그런 선택에 정당한 이유가 있음을 중요하게 생각하는구나를 알게되었습니다.
또 마지막 가상DOM 질문 또한 정말 중요한 질문인데 저는 SPA에서는 DOM 변경이 빈번히 일어나지만 기존 DOM은 변경이 발생할경우 모든 돔을 삭제하고 재구축하기 때문에 이에 많은 작업이 소요되기 때문에 리액트에서는 이를 Diff 알고리즘과 가상DOM 통해 필요한 DOM 요소만 변경을 하는 것으로 알고있었습니다. 다만 이를 위해 몇개의 DOM 브라우저에서 동작하는지는 생각해보지 못했습니다.
면접 결과는 탈락이였지만 면접을 끝내고나서 느낀점은 정말 꼼꼼히 공부해야겠다는 것이였습니다. 자바스크립트부터 리액트까지 왜 이것들이 만들어졌고 기존의 어떤점을 개선하기 위해 내부적으로 어떤 구조로 개발되었는지를 관심을 가지고 공부를 해야겠다고 생각했습니다.
또 기술을 선택할때 그 기술이 타기술 대비 어떤 장단점이 있고 나의 현 프로젝트 특성을 생각해보았을때 가장 적합한 기술이 무엇인지 즉, 그 기술을 선택한 정당한 이유가 있어야함이 중요하다는 점 또한 배웠습니다.
해당 면접 이후로는 지원할 수 있는 모집공고도 없고 지원한 기업에서 좋은 결과가 없어 점점 조급한 마음이 생겼습니다.
그래도 하루종일 이력서만 쓸수는 없었기에 틈틈히 자바스크립트와 HTML, CSS 공부를 하였고 (인프런의 얄코님 강의가 도움이 많이 되었습니다.) 도서관에서 이제껏 읽고 싶었지만 읽지 못했던 책들을 읽었습니다.
저는 본래 철학을 좋아하며 인간의 존재에 대해 고민하고 세계란 무엇일까에 대해 고민하는 것을 좋아합니다. 그래서 세상의 구성원리를 설명하는 물리에 대해서도 흥미가 많습니다.
취업을 준비하면서 뜻하는대로 되지않아 우울한 마음도 많았지만 실존주의 철학으로부터 많은 깨달음과 위로를 받았습니다.
실존주의는 인간에 한해서 실존이 본질을 앞선다고 말합니다. 사물들은 본래 창조 목적이 있습니다. 바이올린은 연주하기 위해서, 식칼을 식재료를 손질하기위해서와 같이, 그러나 인간은 그런것들이 정해지지 않았다는 것입니다. 인간은 그저 존재할뿐이며 삶의 목적이 주어지지 않고 태어났다는 것입니다.
어떻게 보면 슬프고 방황할 수도 있는 주제이지만 빈도화지이기 때문에 나만의 그림을 채울수있는 것처럼 주어지고 정해진 것이 없기 때문에 내가 원하는 의미로 삶을 채워나갈수 있습니다.
이것이 실존주의 주장인데 저는 여기서 많은 영감을 받았습니다. 나의 삶에 정해진 목적과 의미가 없다면 무엇을 채워야하지, 그러면 우선은 제가 좋아하고 제가 잘할 수 있는 행위를 해야겠다고 생각했습니다. 그리고 그게 무엇일지는 아직 모르니 다양한 경험을 통해서 그런것들을 찾아야겠다고 생각했습니다. 그리고 지금 취업을 준비하는 과정 또한 나를 찾아가는 과정이라고 생각하였습니다.
우울하고 힘든 시기일수도 있는 취준기간이였지만 책속에서 만난 인생 선배들과 함께하여 삶의 방향을 잃지 않았던 것 같습니다.
개발직군에 지원할 수 있는 공고가 더이상 없으니 저의 전공인 보안분야를 살려서 보안관련 직군에도 지원하기로했습니다.
그렇게 개인정보접속기록관련 보안 솔루션회사를 알게 되었고 시스템 엔지니어라는 직무로 지원하여 면접을 통해 좋은 결과를 받게되어 현재까지도 함께하고 있습니다.
현재 제가 하고있는 일을 요약하자면 다음과 같습니다.
- 회사 보안 솔루션을 고객사 WAS 환경에 맞추어 구축하고 장애 발생시 대응
- 온프레미스 하드웨어 서버 시스템, 리눅스, 관계형데이터베이스, NoSQL 에 대한 이해
시스템 엔지니어를 5개월째하고 있으면서 느끼는점은 공공기관부터 대형 사기업 고객사까지 실제 운영중인 웹 서버와 데이터베이스 환경을 볼수있는 기회가 많아 현업의 인프라 구조를 경험해볼 수 있다는 장점이 있다는 것입니다.
또 보안 솔루션이 자체 서버와 데이터베이스를 가지고 있어 리눅스와 RDB와 NDB를 정말 많이 다루다보니 관련 지식을 쌓을 수 있었습니다. 그리고 시스템을 구축하다보면 반복 작업이 많기도 하였는데 이를 Shell Script를 최대한 활용하여 업무 프로세스를 개선하려고 노력하고있습니다.
어떻게보면 제가 생각해보지 못한 전혀 다른 일을 하고있다고 생각할 수도 있습니다. 그러나 저는 저의 인식이 확장되는 경험을 매우 중요하게 생각합니다. 제가 만나보지 못했던 다양한 인프라 환경과 이를 유지하고 있는 다양한 엔지니어와 PM분들을 만날 수 있었고 이는 훗날 제가 원하는 일을하고 싶을때에 큰 도움이 될것입니다.
그렇지만 다양한 경험을 하는 것과 저의 인생의 주커리어 분야를 정하는 것은 논외라고 생각합니다. 우선은 감사하게도 저에게 기회를 주신 본회사에서 주어진 일에 최선을 다하면서 제가 좋아하고 잘할 수 있는 분야를 찾아보려고합니다.
2024년에 대한 기대가 큽니다. 학생을 벗어나 경제 활동을 시작하였으므로 이전보다는 제가 원하는 활동을 주체적으로 할 수 있을 것이라 생각하기 때문입니다.
또 제가 부족한 부분들을 2023년에 인지를 한 부분들이 있기 때문에 이것들을 채우기 위해서 노력해보려합니다.
다음 제가 2024년에 이루고 싶은 목록입니다.
현재는 회사를 다니며 정기적으로 글을 작성하는 커뮤니티인 글또에 활동중이며 React Deep Dive 를 구입해서 정독중입니다. 그리고 대학 동기들과 하루에 한문제씩 백준 실버 등급 이상 알고리즘 문제 풀기를 진행중이며 현재 22일차 진행중입니다.
행복하고 뜻깊은 2023년이였고 다가올 2024년이 기대됩니다. 그리고 나중에 시간이 흘러서 미래의 제가 본 회고를 보며서 이때 나는 이러한 생각을 했었구나를 생각하며 미래의 저에게도 좋은 영향을 끼쳤으면 좋겠습니다.