안녕하세요 :) 프론트엔드 기본기는 무엇일까요? 개발을 시작했던 4-5년 전의 저를 되돌아보면 저는 유저의 문제를 해결해주고 싶었을 뿐 개발이 뭔지 프론트엔드 개발은 뭔지 하나도 몰랐던 것 같습니
안녕하세요 :) 프론트엔드 기본기는 무엇일까요? 개발을 시작했던 4-5년 전의 저를 되돌아보면 저는 유저의 문제를 해결해주고 싶었을 뿐 개발이 뭔지 프론트엔드 개발은 뭔지 하나도 몰랐던 것 같습니다. 운이 좋게도 프론트엔드 개발을 시작했고, 잘 맞았고 어느새 5년차 개발자가 되었네요. 기본기... 기본기가 무엇인지는 아직도 모르겠습니다. 분명한건 2018년 개발을 시작할 때엔 더 몰랐다는 것입니다. 그렇다면 어떻게 살아남을(?) 수 있었을까요? 프론트엔드 기술은 계속 발전합니다. 처음엔 vanilla js, jquery 로 개발했던 무질서의 시기를 지나 점점 type strict 해지고, 최적화된 웹 렌더링을 지원하고, functional programming의 개념을 도입하게 됩니다. 제 개인적으로 느끼기엔, 브라우저에서 고도화된 처리가 가능해지고 유저들이 더 인터랙티브한 서비스를 원하면서 frontend 기술 패러다임은 더 빠르게 발전하고 있는 것 같습니다. 그렇다고 해서 프론트에서 새로 나오는 개발 트렌드들이 완전히 새로운 것들은 아닙니다. 우리가 전공에서 배우는 CS 기초들에 의해 변형되어 적용된 것들이죠. 여기서 새로운 것을 더 빠르게 받아들이기 위해선 역시나 기초가 중요합니다. 예를들어 토익시험을 치기 위해 토익 학원을 통해 나오는 패턴을 익히고 토익 시험을 위한 영어공부를 통해 배운 사람과, 영어 그 자체를 기초부터 차근차근 공부한 사람이 있다고 해 봅시다. 앞으로도 멀리 봤을때 누가 영어를 더 잘 할까요? 프로그래밍 분야에서는 referencing을 잘 할 수 있는게 저는 오래 살아남기 위해 중요하다 생각합니다. 새로운 것을 보아도 새로 공부하는 게 아니라, 내가 알고 있던 기초 지식들을 통해 빠르게 컨셉을 이해하는 거죠. 기초 지식을 탄탄히 쌓는다는 것은 앞으로 새로운 것을 맞닿뜨릴 때 더 빠르게 이해할 수 있는 힘을 기른다는 것입니다. 프론트엔드 분야는 1-2년차 까진, 토익 학원만 다녀도 비빌 수 있습니다. 그렇지만 3년차 부터는, 더 복잡한 문제를 풀기 위해선 토익 점수만으로는 커버되지 않습니다. 진짜 실력이 있어야 되는 것이지요. 프론트엔드 기본기는 프로그래밍 기본기와 동일합니다. 그렇지만 제가 그 기본기를 정의드릴 수도 없고, 그 기본기를 외운다고 해서 학습되는 것도 아닌 것 같습니다. 그저 가장 처음에 배웠던 것들, 변수, 상수, 선언, 할당, 메모리, 참조, 함수, 파라미터, 타입 등등이 중요했고, 앞으로 프로그래밍을 업으로 삼기 위해 계속 중요할 것이라는 말씀밖에 드리지 못하겠습니다. 그러면 기본기는 어떻게 캐치할 수 있을까요? 저는 프로그래밍의 정수(essence)가 무엇인지 꾸준히 생각해보는 것이 도움이 되는 것 같습니다. 저 또한 완전히 통달한 것은 아니기 때문에 정리해서 답변드리지 못해 죄송합니다 🥲 디자인 패턴을 다 미리 알아놔야 할까요? 저는 디자인 패턴을 외우기도 어렵고, 안다고 해서 이해할수도 없더라구요. 그저 경험을 통해 패턴들을 이해하고, 다른 새로운 것을 볼 때 '아 이게 이전의 그것과 이런건 비슷하고 이런건 다르구나'를 생각하는 것 뿐입니다. 물론 미리 개념들을 경험하기 전에 알아 두는게, 첫 leanrning을 빠르게 해 줄수는 있겠지요. 하지만 이해하지 못하면 비슷한 것을 봐도 매번 새로운 것을 마주하는 게 됩니다. 프론트엔드 분야가 쉽기를 바라신다면, 네, 1-2년차까지 하고 한계 느껴 퍼불리셔로 전향하실거면 맞습니다. 하지만 너무 당연한 것들을 물어보셨기에 프론트엔드 개발자여도 프로그래밍 기본기가 너무나 중요하고, 경력이 쌓이면 쌓일수록 그 만큼 가치있는 사람이 되기 위해선 기본기가 더더욱 중요하며, 기본기는 특별하지 않고 컴퓨터를 이해하는 것부터 시작되며, 기본기를 정답처럼 알려드리기렌 아마 모든게 다 기본기라 쪽집게처럼 찝어드리긴 어렵다는 말씀밖에요. 쉬운 길은 없더라구요. 계속 스스로 질문을 던지세요. '왜 저런 결정을 했을까?' '왜 나는 이것을 선택할까?' '왜 요즘은 이걸 쓸까?' '왜?' 그렇다면 문제 유형별로 외워서 프로그래밍 하는, 매번 새롭게 배워야 하는 개발자가 아닌, 기초 체력이 탄탄한 똑똑하고 현명한 개발자가 되실 수 있으리라 생각합니다. - 공부는 퇴근하고도 하면 더 좋지만 저는 일 하는 시간에 최대한 배우려고는 합니다. 퇴근 이후의 삶도 중요하고, 또 다음 날 열심히 일 하는데 컨디션 관리도 중요하니까요. 필요하다면, 공부 하고 퇴근해야겠죠. 공부를 아끼지는 않습니다. - 신입과 시니어의 가장 큰 차이는 경험의 유무라고도 생각합니다. 그렇지만 경험 없이 프로그래밍 기초가 완벽한 신입이 들어온다면, 금방 따라잡을 수 있겠죠. 새로운 것도 빠르게 이해할테니까요. 그 다음은 나만의 강점으로 승부 봐야 하는 것 같아요. 새로운 것도 잘 수용하고, 머물러 있지 않으려고 하고, '일'을 잘하는 사람이 되어야죠. 대체불가능한 사람이 되기위해 강점을 살려 노력한다면 그저 그런 사람이 되지 않는 것 같아요. 그리고 꾸준히 노력한다면 모두의 시간은 동일하게 흐릅니다. 절대 그 시간들이 무용지물이 되지 않으니 스스로만 잘 하면 충분히 가치있는 일원이 될 수 있다고 생각합니다. 글이 길었네요 😅 최근 구직시장을 경험하다보니 느끼는 점이 많아 여러모로 긴 글을 남기게 되었습니다. 제 말이 다 정답은 아니지만, 이런 생각을 가지고 일하는 프론트엔드 개발자도 나름 잘 일하고 있다는 쪽으로 생각해주셔요 :) 프론트엔드 분야에 대한 작성자님의 고민에 조금이나마 도움이 되셨기를 바랍니다.