- 개발자 하기 잘했다 느끼신 적이 있다면 언제였나요? - 많은 순간에서 느끼고 있습니다. 개발자를 하게 되면 문제를 해결하는 일을 하게 되는데 해결에서 오는 성취감의 주기가 짧고 자주 있습니다. 예를 들어, ‘이렇게 하면 동작하는구나’ 라는 재미에 대한 업무 만족도가 높기도 하고, 노트북만 있으면 개발을 할 수 있는 워케이션도 직업적 특성도 영향을 미치네요.
- 상상하던 개발자의 모습과 현실과의 공통점과 차이점이 있다면 무엇이셨나요? - 상상하던 개발자의 모습은 내가 ‘현업’ 이라는 두 글자에서 오는 환상이 컸습니다. ‘저 사람은 뭐든 잘하고 다 해낼 것 같아’ 라는 느낌도 있었구요. 일하는 입장에서는 주 40시간이라는 한정적인 시간 자원 내 문제를 최대한 많이 해결해야 합니다. 이는 기술적으로 딥다이브하여 해결할 수도 있지만, 내가 아는 것을 바탕으로 빠르게 해결하거나, 라이브러리를 가져다 쓰는 경우도 많아요. 어떤 프로덕트를 개발하느냐에 따라 다르겠지만 이게 가장 큰 차이점 같습니다. 공부할 시간이 더 적기도 합니다. 프론트엔드 개발자는 커뮤니케이션할 일이 정말 많습니다. 모두가 개발 중 문제가 발생하면 프론트엔드에 문의를 할 정도로 상상이상으로 중요하고 많은 시간을 쓰게 되거든요. 공통점이라면 내가 개발자를 해도 계속 공부를 해야겠다는 마음가짐 같습니다. 실제로도 계속 공부를 하고 있고, 사내 내부 스터디도 열리며 적극적으로 참여하는 모습도 많습니다. 다만 이 열정을 계속 유지할 수 있을지 걱정스럽기도 합니다. 회바회지만 핀잔을 주는 회사도 있고, 분위기가 같이 신기술을 공부하고, 적용하는 회사도 있습니다.
- 회사업무 외의 개인 공부도 병행하시나요? 하신다면 어떻게 시간을 확보하시는지 궁금합니다. - 개인 공부는 진행하고 있습니다. 필요에 따라 하는 경우도 많습니다. ‘이것을 공부하고, 어디에 쓸까’보다 ‘어디에 무엇이 필요한데, 무엇을 공부해야겠다’ 라는 것이 집중하기도 지속하기도 좋았습니다. 업무 중 마주친 문제에 따라 분야가 달라지고 스터디를 이용하기도 해요. 스터디는 강제성이 부여되어 신경 쓰게 되는 것 같습니다. 정기적으로 열리면 따로 시간을 빼두고, 이외에는 유동적으로 시간을 만드는 것 같아요.
- 과거와 비교하여 현재의 취업시장 상황에 대한 솔직한 의견이 궁금합니다. - 많이 안 좋은 것 같습니다. 개인적 견해지만 주위를 봐도, 다른 회사를 봐도 lay-off 하는 곳도 많고 인원 감축이 많은 추세입니다. 복지나 근무제도 역시 시장 상황이 안좋으니 빠르게 변화하는 것 같습니다. 이 외에도 각 회사에서 내부 TO가 발생해도 인원 충원을 하지 않는 경우도 있습니다. 처음 프로그래밍 공부를 시작할 때보다 부트캠프가 많아져 더 경쟁이 치열해지기도 하는 것 같아요. 신입 개발자 양성이 주 목적이다 보니 지원자 수도 늘어 경쟁이 높아지는 것 같습니다.
- 신입 개발자가 갖춰야 할 요소가 있다면 무엇일까요? (학습량, 태도 등) - 최소한의 업무 수행 능력이 갖춰졌단 전제 하에 빠르게 익히면 좋은 것은 ‘일정 산정 능력’ 일 것 같습니다. 리소스 계산법을 빠르게 익힐수록 좋아요. 회사에서는 많은 일을 한정적인 시간 내 처리해야 하는데 예측할 수 없는 일이 많은 것이 어려웠습니다. 간단한 일이 오랜 시간이 걸릴 수도, 오래 걸릴 것이라 생각한 일이 쉽게 끝날 수도 있으니까요. 추가 시간도 고려해야 하구요. 계산하는 일이 쉽지는 않습니다. 예측을 해도 예측을 따르지도 않구요. 요구 사항을 잘게 쪼개고 이에 대한 예상 시간을 적어둔 뒤, 실제 업무를 마친 뒤 소요된 시간과 비교해보시길 바랍니다. 익숙해지면 현업에서도 도움이 되실 것 같습니다.
- API 처리를 백에서 처리할 수도, 프론트에서 처리할 수도 있는데 멘토님 회사에서는 어떻게 처리하는지 궁금합니다. - 프로덕트를 운영할 때 프론트엔드는 유저 환경에서 운영하는데 보안상으로 취약한 경우도 존재합니다. 비즈니스 로직은 백엔드에서 하는 것이 가장 많고 프론트에서 연산을 수행한다면 모든 로직을 열어볼 수 있어 민감한 정보 혹은 연산 방식도 열람할 수 있게 되겠죠. 대부분은 서버에서 진행합니다. 예외적인 케이스로는 프론트엔드 개발자 수가 더 많아 비즈니스 로직을 넣기에 시간이 부족하고 프론트에서는 시간적 여유가 있을 때 대신 처리해주는 경우도 존재합니다.
- 잘하는 프론트엔드 개발자는 무엇인지, 어떤 방향으로 나아가야할지가 궁금합니다. - ‘잘하는 프론트엔드’의 기준이 명확하지는 않지만 일하기 좋은 개발자를 본다면 기술적으로 어려운 문제에 봉착할 때, 적절한 대처를 하는 개발자일 것 같습니다. JS만 알 경우 해결할 수 없는 경우도 많으니까요. 기본적으로 브라우저, 네트워크 등을 잘 아는 사람일 것 같구요. 대부분의 업무는 데이터를 받아 디자인 시안에 맞게 보여주기인데, 이 과정에서 발생하는 트러블 슈팅을 원활하게 하는 사람일 것 같습니다. 하나에 딥다이브 하는 것도 좋지만 프론트엔드 개발자는 HTML, CSS, JS, 브라우저 동작원리에 대해 잘 아는 것이 좋을 것 같습니다. 소홀히 하는 부분이 있다면 같이 챙기고, 다같이 챙기면서 공부하는 것도 좋을 것 같습니다.
- 백엔드의 프로젝트 목표가 보통 API를 깔끔하게 구축하자, 클린코드를 구현하자 등의 이야기를 할때 프론트엔드는 프로젝트 목표를 어떻게 잡아야 할까요? - 클린코드의 경우 모두가 필요한 영역입니다. 유저와 가장 맞닿은 프론트엔드 개발자의 시점으로는 유저에 대한 관점에서 바라보는 것을 많이 생각해 보도록 하세요. ‘내가 이용자라면?’ 이라는 생각으로 편리한지, 남이 만든 이 프로젝트를 내가 사용하고 있다면 잘 만들었다 평가할 수 있을까? 같은 생각 말이죠. 회사에서는 디자이너, 기획자가 있을 수도 없을 수도 있습니다. 프론트엔드 개발자의 재량이 많이 들어가는 부분이기 때문에 요구 사항 해결도 좋지만 유저의 관점에서 생각을 많이 해보시기를 바랍니다.
- 스타트업, SI 신입으로 들어가는 것에 대한 비관적인 시선이 많습니다. 서비스 기업의 채용시장이 안좋은데 이에 대한 절충안이 있다면 무엇일까요? - 스타트업일수록 바쁜 곳이 많아 보입니다. 바쁘면 리팩토링을 안시키기 보다는 당장의 퀄리티보다 신규 개발에 더 많은 시간을 쓰게 되는 경향이 있습니다. 스타트업이어도 이끌어주는 시니어 개발자의 유무 혹은 같이 목소리를 내어줄 사람이 있는지가 중요할 것 같습니다. 신뢰자본이 큰 사람이 같이 목소리를 내어주면 기술적으로 함께 고민할 수 있는 가능성이 높아지죠. 프론트엔드 개발자는 혼자 개발하는 경우도 많습니다. 혼자 개발을 하다보면 대기업에서도 사내 규모보다 환경이 중요한 경우도 있습니다. 링크드인을 통해 커피챗 제안을 하여 실제 분위기를 알고 들어가는 것을 추천드립니다.
- 대기업에 들어가지 못하면 전문성을 키워 이직을 고려하는 것이 가장 좋을텐데, 전문성을 기를 수 있는 방법이 궁금한데 시니어 개발자를 통해 알아가는 것도 좋을 것 같습니다. - 시니어 개발자보다는 기존 개발 팀에 대한 분위기가 더 중요할 것 같습니다. 빠르게 프로덕트를 만드는 것이 우선인지, 개발자의 이야기를 듣고 반영해주는지 역시 중요합니다. 시니어 개발자의 유무보다는 분위기를 더 중요시 여기면 좋을 것 같네요.
- 내가 필요한 새로운 개념과 요소를 알아가는 과정과 어떻게 공부해야할지가 궁금합니다. - 기본적으로는 부트캠프의 커리큘럼을 믿고 따라 갔습니다. 모르는게 무엇인지를 아는 메타인지가 필요한데 당장 웹이라 하면 분야가 넓어 고민하게 되죠. 이 커리큘럼을 따라 미션을 진행하며 마주치는 새로운 이론이 있다면 이에 대해 찾아보고 연결된 개념을 찾아가며 현재 개념과 다른 개념에서는 진행 과정이 어떻게 다른지 찾아갈 수도 있겠죠. 미션을 받은 뒤에도 이를 구현하고 끝이 아닌 코드를 PR하여 리뷰를 받을 수도 있고, 리뷰어가 던져준 키워드를 따라 또 연결되는 공부도 진행 될 수 있습니다. 다독다작다상량이란 말 처럼 모두가 같은 미션을 받아도 구현하는 코드가 조금씩 다릅니다. 어떤 요구 사항을 위함을 보며 모르는 것을 계속 찾아가는 과정도 좋을 것 같습니다. 긴 시간동안 조급하기 보다 하나씩 완성해나간다 생각하면 좋을 것 같아요.
- 추천하는 개발서적이 있다면 무엇이 있을까요? - 모던 자바스크립트 Deep Dive - 러닝 자바스크립트 - 쏙쏙 들어오는 함수형 코딩 (기초, 기본적인 프로그램을 잘 작동하는 방법 설명 추천) - 이펙티브 타입스크립트 - 러닝 타입스크립트 - Clean Code 클린 코드 (논란의 여지가 있으나 전반적인 내용을 추천) - 리팩터링 2판