ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 뛰어난 업무 성과를 내는 프론트엔드 개발자의 특징
    IT 이야기 2023. 7. 7. 17:00

    프로그래머스에서 시니어 개발자분들과 인터뷰한 내용의 일부를 재편집한 글입니다.
    각 분야의 전문가가 생각하는 '뛰어난 업무 성과를 내는 프론트엔드 개발자의 특징'은 무엇일까요?
    프론트엔드 개발자를 준비하고 있거나, 내용이 궁금하신 분들은 인터뷰를 끝까지 살펴보세요.


     

    뛰어난 업무성과를 내는 개발자들의 차별점은 무엇인가요?

     

    💬 박○ 님 (Front-end Engineer )

    프론트엔드 분야는 주니어, 시니어가 가장 극명하게 갈려 있습니다. 진입장벽이 낮아 쉽게 들어올 수 있는데 반해, 회사에서 원하는 눈높이에 맞는 사람은 적습니다. 백엔드는 오래 하면서 생기는 노하우가 있지만, 프론트엔드는 시간이 지난다고 자연스럽게 성장하지 않습니다.

    계속 똑같은 화면만 만들어내는 사람들이 있어요. 이런 사람들은 로우레벨 프론트엔드 개발자입니다. 역량이 뛰어나려면, 생산성을 높이면서 빠른 시간에 에러 없이 만들어내는 능력이 필요합니다. 디자이너가 화면을 줬을 때, 설계에 필요한 항목을 미리 공용화된 컴포넌트로 만들어놓고, 그걸 조합해서 빠른 시간 내에 만들어낼 수 있는 능력이 중요합니다. 반복적으로 만드는 것이 아니라, 공통 요소를 만들어놓고 따로 개발 시간을 내지 않고도 만들어낼 수 있는 능력. 부트스트랩, 머터리얼 ui 등을 사용하는 것처럼. 잘하는 사람들은 화면 레이아웃까지도 미리 만들어진 것을 가져다 구성할 수 있습니다.

    백엔드 데이터 요소를 미리 캐치해서 생길 수 있는 문제점을 먼저 제시할 수 있어야 합니다. 프론트엔드에서는 백엔드에 요청을 보내고 받아온 데이터를 출력하는 작업을 반복하게 되는데, 화면이 지연될 수 있는 요소를 미리 파악해서 그걸 어떻게 필요할 때에 보여줄 것인지 등에 대한 판단을 잘할 수 있어야 해요. 결국 성능 최적화, 개발 최적화가 되어 있는 친구들이 잘하는 것이고, 자신의 개발 산출물이 공유해서 사용할 수 있는 산출물이 되도록 하는 사람들이죠.

    📌Summary
    · 생산성을 높이면서 빠른 시간에 에러 없이 만들어내는 능력
    · 공통 요소를 만들어놓고 따로 개발 시간을 내지 않고도 만들어내는 능력
    · 백엔드 데이터 요소를 미리 캐치하여 생길 수 있는 문제점을 먼저 제시할 수 있는 능력

     

    💬 마 님 (Front-end Engineer)

    뛰어난 업무 성과는 2가지로 볼 수 있을 것 같습니다.
    1) 기술적으로 훌륭해서, 과제든 설계든 큰 방향에서 기술적으로 잘 협업하고 잘 구현할 수 있게, 그리고 나중에도 쓸 수 있게 라이브러리적으로 만드는 것 (셋업을 잘해놔서 같이 일하는 사람들이 잘못된 방향으로 가지 못하게 함)
    2) 개발을 하다 보면 인프라도 만지게 되는데, 자신의 열정을 이용해서 회사 내의 불편한 것을 효율적으로 할 수 있게 해주는 것

    공통점은 커뮤니케이션을 잘합니다. 문제점을 찾고 도출하는 능력이 탁월합니다.
    프론트엔드 쪽에서 접근하자면, 현재 트렌드나 기술적 이해가 뛰어난 사람들이죠. 자바스크립트의 근본을 잘 안다거나요. 이벤트 루프 등을 당연하게 생각하는데 그 안에서 근본적으로 어떻게 동작하는지는 모르는 경우가 있습니다. 리액트 라이프 사이클이 복잡하게 얽혀 있는 상황에서 이벤트루프를 활용해 비동기 처리 프로세스가 왜 이렇게 꼬였는지 그런 상황을 파악해서 해결한 사례가 있었어요. 결국 근본 원리를 이해하고 사용하는 사람들이죠.

    기술적 이해가 뛰어난 사람을 알아볼 수 있는 방법은 무엇일까요?

    어떤 기술이 나왔을 때 '그 안에 있는 기술은 뭘까?'라는 질문을 계속 던집니다. 잘하는 친구가 리액트 렌더링과 관련해서 어떤 엔진을 사용하고, 그 내용을 잘 알고 문제를 해결한 경우가 있었는데요. 어떻게 공부해서 이렇게 해오는 거냐? 물어보니 자기가 신입이었을 때부터 이런 성향(기술이 나오면 가 안의 기술에 질문을 많이 함)을 가지고 있다고 얘기하더라고요. 그 친구의 유튜브를 보니까 기술에 대한 딥한 영상들이 나옵니다. 애초부터 파고드는 것에 관심을 가지고 있는 사람들인 것이죠.

    📌Summary
    · 기술적으로 뛰어나서 잘 협업하고 구현할 수 있도록 셋업을 잘해놓음
    · 자신의 열정을 통해 불편한 사내 인프라를 효율적으로 바꾸는 능력
    · 커뮤니케이션 (문제점을 찾고 도출하는 능력이 탁월함)

     

    💬 조 님 (Front-end Engineer )

    일단 단순하게 생각하면 그 분야에 대해서 전문적인 지식을 많이 갖고 있다는 차이점이 있는 것 같습니다. 팀에서는 주니어 개발자들이나 다른 개발자들이 테크니컬한 문제점에 봉착했을 때, 딱 저 사람들에게 가서 물어봐야겠다 하는 사람들이 있지 않나요? 그런 분들은 대부분 그런 기술적인 전문지식을 많이 쌓아오신 분들이라는 생각을 평소에 많이 했습니다.

    또 하나는 전문적인 지식이 아니더라도 리더십이 있는 것 같습니다. 리더십이라고 하면, 하나의 예로 저희 회사에서 사용하고 있는 프론트엔드 기술 같은 것들을, 누군가는 정해서 우리 회사에 적용시키자고 행동을 해야 하잖아요. 아무도 안 하면 계속 그 자리에 머물러 있는 거고요. 지금 현재에 머물고 있으면 다른 기술들은 계속 개발되고, 매년 새로운 프레임워크도 나오고 새로운 툴들도 나오고 있는데, 거기에 못 따라가면 회사는 기술적인 면에서 뒤처지게 되니까요. 누군가는 그걸 연구하고, 계속 어떤 기술이 있는지도 관심 있게 봐야 하고, 그걸 어떻게 우리 회사에 적용시킬 수 있을지도 생각하고, 플랜을 세워서 사람들하고 같이 협업하여 그걸 회사에 적용해야 하는 부분이 있습니다. 그런 부분에서 리더십이 굉장히 큰 역할을 하지 않나 하는 생각을 평소에 많이 합니다.

    📌Summary
    · 분야에 대한 전문지식을 많이 갖고 있음
    · 기술을 연구하고, 관심있게 살펴보고, 회사에 적용시키는 리더십

     

    💬 (Front-end Engineer)

    현업과 함께 일하던 신입이 있었는데요. 먼저 현업자들이 불편해하는 점들을 개선해 주고, 힘들어하는 부분을 먼저 해결해 주는 케이스였어요. 또 개인적으로 프로젝트를 진행하면서 새롭게 배우게 된 기술적 내용을 팀 내에 전파해 가면서 일했던 케이스도 있었구요. 그런 부분들이 고평가를 받았습니다. 정리해 보면 실제로 어려움을 겪는 사람들에게 먼저 다가가는 성향, 팀 전체를 성장시키려는 모습, 새롭게 배운 것들을 정제해서 공개하는 역량이라고 할 수 있겠네요.

    코드 부면에서의 차별점이 있다면?

    오버 엔지니어링도 있고, 유연하게 짜는 케이스도 있습니다. 읽기 쉽게 짠 경우도 있고, 확장이 쉬운 경우도 있어요. 남들이 알아보기 힘들게 짜는 코드도 있죠. 예전에는 메모리 등의 제한이 많았기 때문에 최대한 적은 코드로 짜는 것이 잘 짠 코드라고 한 적도 있었지만, 지금은 다른 사람이 읽기 쉽게 만드는 것이 좋은 것 같습니다. 마치 글을 쓰는 것과 같아요. 처음부터 끝까지 코드를 쭉 읽었을 때 뭘 하려고 했는지가 바로 드러나는 코드가 읽기 쉬운 코드.

    설계 능력도 중요합니다. 데이터를 어떻게 다룰 것인지, 어떤 흐름으로 그릴 것인지, 연동을 어떻게 할 것인지. 지금 당장 100개 정도밖에 데이터가 안 나오는 것과 뒷단 데이터가 10억 개가 되는 것은 다릅니다. 설계는 아는 만큼 보여요. 그래서 중요한 것은 뒷단의 인프라, 데이터베이스에 대한 지식도 있어야 합니다. 예를 들어 트위터를 쓴다고 할 때 계속 읽고 쓰고 해야 하는데, 데이터가 많으면 어떻게 처리할 것인지가 어려운 문제죠.

    📌Summary
    · 어려움을 겪는 협업자에게 먼저 다가가는 성향
    · 새롭게 배우게 된 기술적 내용을 팀 내에 전파하여 성장시키고, 배운 내용을 정제하여 공개하는 역량

     

    💬 김 님 (Front-end Engineer)

    기본적인 CS지식이 있는 것 같습니다. 아무리 프론트엔드라고 해도 서버와 통신을 해야 하는 등 기본적인 컴퓨터 사이언스에 대한 이해도가 있어야 합니다. 그리고 알고리즘에 대한 이해도 필요하고, 설계 능력도 있어야 해요. 프론트엔드는 새로운 기술이 매우 빠르게 나옵니다. 그럼 새로운 버전에 대해서 이전과 차이점이 뭐가 있는지 등을 알아야 합니다. 그리고 프론트엔드는 정적 리소스를 빠른 성능으로 제공해야 하는데 그런 것들에 대한 고민을 계속하시는 분들, 빠르게 학습해 보고 토이 프로젝트에 적용해 보는 분들이 정말 잘하시는 것 같습니다.

    그리고 인프라적인 요소에 대해 인사이트를 가진 분들이 잘하세요. 서버사이드 렌더링의 경우 AWS에 있는 인프라를 어떻게 구성하는지에 따라서도 잘하시는 분들은 차이가 있는 것 같습니다. 백엔드에 대한 이해나 API에 대한 이해도 필요하구요.  개발 능력 외에 커뮤니케이션이 잘 되는 분들이 잘하시는 분들입니다. 최신 기술을 맹신해서도 안 되겠지만 잘 습득해서 바로 실무에 적용하시는 분들, 그러니까 기존 기술과의 차이점, 어떤 이점이 있는지 잘 캐치하시는 분들이 잘하시는 것 같습니다.

    일단 기본기가 가장 중요하겠죠. 바닐라 자바스크립트에 대한 내용과 리액트에 대한 이해 모두 필요합니다. 회사에서 바닐라 JS로 짜는 코딩 테스트도 있었는데, DOM에 대해 이해하고 있는지 검증하는 목적이었습니다. 지금도 바닐라로 짜게끔 하는 과제들도 많습니다. 하지만 리액트나 뷰나 앵귤러가 가지고 있는 특징이 있기 때문에 사용 시 주의점들이 다릅니다. 그걸 가지고 설계하는 능력 등이 다르기 때문에 그런 언어들에 대한 경험과 이해도가 있어야 된다고 생각합니다.

    📌Summary
    · CS지식이 뛰어남
    · 새로운 기술이 나오면 전 버전과의 차이점을 파악하는 능력
    · 정적 리소스를 빠른 성능으로 제공하기 위해 계속 고민함
    · 빠르게 학습하고 토이 프로젝트에 적용시킴
    · 인프라적인 요소에 대해 인사이트를 가지고 있음
    · 기본기가 뛰어남

     


    이 글이 도움 되었다면, 프론트엔드 개발자를 위한 다양한 주제도 함께 살펴보세요!
    👉 프론트엔드 개발자가 갖춰야 할 핵심 역량은?

    댓글

Programmers