약 2년 8개월간 백엔드 개발자로 근무하면서 느낀 것이 있다면 지속 가능한 개발자가 되어야 한다는 것이다.
기능을 구현할 때 필요한 기술을 학습하기보다는 검색, 복사, 붙여 넣기 후에 ‘이렇게 하니까 되는구나~’ 하고 대충 넘겼다. 결국 이직할 때가 되어서 몇몇 회사에 이력서를 넣고, 면접을 보면서 나는 시장에서 가치 있는 개발자가 아니라는 것을 깨닫게 되었다.
내가 만든 결과물로 사람들에게 이로운 경험을 제공하고 싶어 개발자가 되었는데 당시 내 모습은 내가 되고 싶어 하는 개발자와는 거리가 멀었다. 뭔가 많이 했지만 깊게 아는 것은 딱히 없고, 내세울 만한 포트폴리오 하나 없었다.
이런저런 생각을 하다가 결국 퇴사를 결심했고, 이전과 같은 실수를 반복하지 않겠다고 다짐하며 프론트엔드 개발에 필요한 기술을 혼자서 학습해왔다.
혼자서 학습하는 것은 생각보다 어려웠다. 책이나 문서를 보고 필요한 기술을 학습한 뒤에 기능을 구현해도 내가 올바르게 이해했는지, 내가 작성한 코드에 문제는 없는지 확인할 방법이 없었다.
커뮤니케이션을 통한 학습의 필요성을 절실하게 느끼던 중 운 좋게 프로그래머스 프론트엔드 데브코스에 참여할 수 있었다.
1~2 주 차의 타이틀은 자바스크립트의 주요 문법이지만, 위 목록에 있는 내용을 폭넓게 학습할 수 있었다.
첫째, 둘째 날 ‘생각보다 학습할 내용이 많지 않은데?’라고 생각했지만, 셋째 날 자료구조와 알고리즘 파트를 들어가면서 ‘어..? 쉽지 않은데?’라고 생각했다.
2주 차가 됐을 때는 프로그래머스 코딩 테스트 레벨 3, 4 정도 문제를 손쉽게 푸는 강사님은 코딩 테스트의 신이 아닐까 생각했다. 나는 아직도 입국심사 문제를 어떻게 이진 탐색으로 풀 수 있던 것인지 감도 못 잡겠다.
그리고, 1주 차부터 과제가 있었다.
요구사항은 트리와 트라이 자료구조를 이용해 간단한 기능을 구현하는 것이었고, 첫 과제를 하면서 ‘꼭 코드 리뷰를 하는 회사를 가야겠다.’ 고 생각했다.
학습을 진행하면서 궁금한 내용이 있는 경우에는 강사님과 멘토님께서 친절하게 지식을 공유해주셨다. Map과 Object의 성능을 비교하면서 ‘왜 나는 테스트 결과가 이상하지?’ 라고 생각했는데 명쾌하게 해결해주셨다.
애플리케이션의 인터페이스를 추상화하여 독립적인 컴포넌트를 바닐라 자바스크립트로 작성하는 것이 3주차 학습의 주된 내용이었다.
성능 최적화를 위한 이벤트 위임같은 실제 현업에서 사용하는 패턴도 알 수 있었고, 상태를 기반으로 하는 동적인 UI를 만드는 것에 제법 익숙해졌다.
당연히, 과제는 있었다.
코멘트가 41개나 달린 과제 PR. 멘토님과 팀원들이 꼼꼼하게 리뷰해주셨다 👍
3주 차 주말에 프로그래머스 과제관에 있는 고양이 사진첩 과제를 응시해봤다. 예전에는 어려워서 손도 못 댈 것 같았는데 문제를 읽고 어느 정도 머릿속으로 스케치가 가능해져서 정말 놀라웠다. 이때 **‘데브코스에 참여하길 정말 잘했다.’**는 생각이 들었다.
4~5주 차는 그동안 학습한 내용들을 바탕으로 개인 프로젝트를 수행했다. 그리고, 지금 가장 후회되는 것은 프로젝트를 진행하면서 고민했던 내용과 진행사항을 남겨놓지 않은 것이다.
남아있는 몇몇 기억을 되돌아보며 작성했다.
문서들을 위 그림과 같이 렌더링 하고 싶었다. 조건은 두가지 정도였다.
float: left, clear: both
table 태그를 사용해볼까..?
display: flex
쉽게 정렬할 수 있는 display: flex 속성이 있었다는 걸 깨닫고 쉽게 해결할 수 있었다.
사이드바를 구현했는데 문제가 있었다. 제일 아래쪽 요소에 hover 이벤트가 발생하여 숨겨진 버튼 (삭제, 추가)이 나올 때 스크롤이 계속 변하는 것이었다. 이유가 뭔지 계속 찾아봤고 아래와 같은 패턴을 발견할 수 있었다.
발견한 패턴을 토대로 마지막 요소에서 숨겨진 버튼이 추가되면서 컨테이너 크기를 벗어나 height 값이 바뀌는 것 같다는 결론을 내렸다.
그렇다면, 요소의 height를 고정해야하는데..
위와 같은 스타일링들은 유효하지 않았다. 정확하게 말하자면 저 현상이 보이지 않더라도, 컴포넌트가 화면 밖을 침범하면서 렌더링 되거나 브라우저의 사이즈에 따라 보기 싫은 모양으로 렌더링 되었다.
한참을 고민하던 중, 위에서 문서를 정렬하면서 flex를 사용했을 때 width가 꽉 차는 것이 생각나서 flex로 수평 정렬이 가능하다면, height를 꽉 채우지 않을까? 라는 생각이 들었다.
그리고 그 방법은 유효했다!
{
display: flex;
flex-direction: column;
}
단 두줄로 완벽하게 문제를 해결할 수 있었다!
이번 과제를 중요하면서 테스트 코드의 중요성을 깨달았다. 특히 기존 기능을 개선했다고 생각했는데 원래의 기능이 제대로 작동하지 않아서 문제가 생기는 경우가 잦았다.
이제 6주 차에 접어들었다. 데브코스를 수료한 친구와 코딩 테스트 대비를 위한 스터디를 진행하고 있었는데 과제를 이유로 2주간 진행하지 않았다.
사실 친구한테 데브코스를 핑계로 스터디 잠정 보류를 제안했고, 친구는 데브코스를 진행하면서 시간이 없다는 핑계로 꾸준하게 문제를 풀지 않은 것이 자기가 지금 제일 후회되는 것이라고 말했다.
생각해보니 데브코스 결과를 기다릴 때는 ‘하루에 잠을 4시간 자더라도 정말 열심히 할 테니 저를 뽑아만 주십시오!’라고 생각했는데 5주 만에 너무 해이해진 것 같다. IT 업계 분위기도 계속 좋지 않다고 하니 이럴 때일수록 내 가치를 높일 수 있도록 집중해야 할 것 같다. 🔥🔥🔥