프로젝트를 열심히 만들었는데 막상 누구에게 내가 만든 프로젝트를 설명하려면 어디서부터 어떻게 설명해야 할지 막막해 말을 못하는 경우가 많았다(특히 면접). 내가 만든 프로젝트이니 준비를 안해도 잘 대답할 수 있겠다는 막연한 자신감 때문에 프로젝트를 어떻게 설명하면 좋을지 고민하지 않았던 것이 주 문제였다.
이렇게 프로젝트에 대해 설명을 못해버렸을 땐 잠을 줄여가며 열심히 참여한 프로젝트인데 말을 못하는 바람에 무임승차한 사람이 되어버리는 것 같아 너무 슬펐다. 그래서 프로젝트 설명하는 방법을 한번 정리해보려고 한다.
프로젝트를 설명 할 때는 내가 어떤 언어를 사용할 수 있는지 알려주는 것이 중요하다. 앱을 개발하기 위해 사용할 수 있는 언어는 너무 많기에 내가 어떤 언어를 다룰 수 있는지 상대방에게 알려주자.
그리고 대략적으로 어떤 앱을 개발했는지 설명함으로써 어떤 기능이 있을지 추측할 수 있게 하자. 협업을 한 프로젝트라면 그 프로젝트에서 어떤 부분을 맡았는지(프론트엔드, 리더, 플래너, 디자인 등) 설명하고 어떤 기능을 주로 맡았는지 설명한다.
기술을 선택한 이유를 설명하는 목적은 내가 이 기술에 대한 이해도가 있다는 사실을 인식시켜주기 위함이다.
하나의 큰 예로 프로젝트를 구현할 때 React를 선택한 이유에 대해서 알아보자. 프론트엔드의 경우 React가 핫한 기술이기 때문에 기본적으로 React를 사용하여 프로젝트를 진행한다. 누군가 “왜 리액트를 사용했나요?”라고 물어봤을 때 “다들 리액트를 사용했어요.”라고 대답한다면 이 사람이 리액트를 알고 사용한것이 맞나?라는 의문이 들 수 있다. 때문에 리액트를 사용할 때 스스로 VanilaJS를 사용하지 않고 리액트를 사용한 이유를 생각하고 있어야 한다.
다음은 기술을 선택한 이유에 대해 어떤 식으로 말할 수 있는지 고민해볼 수 있는 몇가지를 적어보았다.
리액트를 사용한 이유
리액트는 싱글페이지앱(SPA)으로 프로그램을 구현할 수 있다는 점이 좋았는데 싱글페이지 앱의 경우 새로운 페이지를 요청 할 때 전체를 렌더링 하지 않고 변경되는 부분만 다시 로딩하기 때문에 전체적인 트래픽 감소와 렌더링을 효율적으로 할 수 있어 성능적인 측면에서 우수하기 때문이다.
리액트를 사용하면서 고민했던 부분
컴포넌트를 어떻게 나눌지 컴포넌트를 어떻게 구성할 지 고민을 했다. 고민한 부분을 말함으로써 리액트를 어떻게 활용하려고 노력했는지 상대방에게 전달해보자.
서비스의 목적 고려한 기술 선택 이유
내 서비스가 사람들에게 노출이 많이 되어야 한다면 SEO를 높여야 한다. 하지만 리액트는 CSR으로 SEO에 약하다. 그렇기 때문에 CSR을 사용하면서도 SEO를 높이기 위해 어떤 노력을 했는지 설명한다.
위와같은 질문에 대해 설명이 가능하다면 리액트의 특정을 잘 알고있고 상황에 따라 리액트를 자유자재로 사용할 수 있는 사람으로 비춰질 것이다. 그리고 보편적인 기술을 얼마나 심도있게 활용할 수 있는 사람인지 어필 할 수 있을 것이다.
로그인 기능을 설명해 보세요라는 질문이 들어왔을 때 어떤 리액트 훅을 사용해서 코드를 구성했는지 말해야 하나?라는 고민과 어떤식으로 설명해야하는지 시작점을 잡지 못해 설명을 하지 못한 경우가 있었다. 그래서 그때 면접관에게 이런 경우에는 어떤식으로 설명을 드렸으면 좋았을까요라고 물어본적이 있는데 다음과 같은 답변을 얻었다.
어떤 리액트 훅을 썼는지는 너무 디테일한 부분이라 설명할 필요는 없다. 기능을 설명해봐라고 했던 질문의 의도는 로그인이라는 기능을 구현할 때 프론트와 백에서 데이터를 어떤 식으로 주고받는지 흐름을 알고 있는지, 유효성검사의 필요성을 알고 있는지, 토큰에 대해 알고있는가 그래서 우리 회사에 일했을 때 그 지식을 베이스로 응용하여 프로젝트에 투입될 수 있는지 확인하기 위해서다. 그러니 전반적인 흐름을 말하면 된다.
프로젝트를 진행하면서 제한된 시간내에 구현해야하니 코드의 아쉬움이 굉장히 많을 것이다. 그 아쉬움이 무엇인지 아쉬운 이유가 뭔지 그리고 그 아쉬운점을 해결하기 위해 현재 어떤 노력을 하고 있는지 상대방에게 전달한다면 사고하고 성장하는 개발자의 모습을 보여줄 수 있을 것이다.
프로젝트를 진행하고 현직자분들과 대화를 나누면서 느낀점이 있다. 개발이라는 것은 그냥이라는 것이 없고 모든 것에 의미부여를 해야한다는 것이다. 개인적으로 개발에는 정도가 없다고 생각한다. 수많은 언어와 방법이 세상에 존재하고 수많은 방법 속에서 내가 ‘선택’하여 사용해야하기 때문이다. 선택을 해야하기에 항상 내 선택에 합당한 이유를 가지고 있어야 한다. 정답이 없으니 상대방을 설득하기위한 나만의 타당한 이유가 있어야하고 그렇기에 우리는 항상 이유를 찾아야 한다.
감사합니다!