프론트엔드 인턴을 하며 배운 4가지.

young_pallete·2022년 3월 9일
15

회고

목록 보기
1/5

시작하며

약 반 년을 블로그 게재를 하지 않았기에, 꽤나 오랜만이다.
물론 글을 쓰지 않은 것은 아니다. 좀 더 자유롭게 공부했던 것을 올리고자 TIL 형식으로 노션을 쓰기도 했고, 그래서인지 블로그를 다시 시작하는 데에는 용기가 필요했다.

그리고 오랜만의 글을 게재하는 데에는 역시 회고만한 것이 없지 않을까?
따라서 짧은 국내 여행도 마쳤겠다, 지난 1월부터 2월까지 2달간 스타트업에서 프론트엔드 개발 인턴으로 근무하고, 전환에 성공하면서 느꼈던 것들을 편하게 써보려 한다.

미리 말씀드리건대, 나는 일개 인턴이며 2개월간 짧은 시간 동안 느낀 것이기에, 정답이 아님을 조심스레 말씀드린다. 다만 누군가에게는 참고할 수 있는 글이 되기를 바라며.


본론

1. 회사는 학원이 아니다.

정말 아무리 강조해도 지나치지 않는 말이라 생각한다.
아무리 인턴이라지만 생각해보자. 회사가 인턴을 뽑으려는 이유는 무엇일까?
환경에 따라 다양한 답변이 나올 수 있으며 정답은 없지만, 내가 스타트업에서 2달간 근무하며 내린 결과는

어떤 최소한의 자원을 투입했을 때, 기대 이상으로 현재 기술 환경에 적응할 수 있는가

라고 생각한다.

회사는 학원이 아니다. 자원을 투입했다면, 그 이상의 리턴을 원하는 조직이다.
몇 사람들은 이렇게 반문할 수도 있겠다.

"그렇지만 인턴으로 뽑았잖아요? 우리는 배움이 필요한 사람들인 걸요."

맞다. 분명 우리는 현재 근무하고 있는 선배 개발자들에 비해 퍼포먼스를 낼 수 없다.
인정한다. 분명 우리는 아직 배워야 할 사람들이다.

그렇지만 내가 학원이 아니라고 말한 이유는,

누군가가 알려주기를 당연시하지 말아야 한다는 것이다.

회사는 누군가가 먹이를 물어다 줘야 하는 아기 새를 원하지 않는다. 비록 지금은 서투른 인턴일지라도,

  • 메타인지적으로 자신이 무엇이 문제이며,
  • 현재 어떠한 해결 방법들을 찾았으며
  • 어떻게 해결하는 것이 가장 바람직한지에 대해

그 전반적인 풀이 과정을 주체적으로 그릴 수 있는 사람을 원한다.

2. 질문할 거라면 제대로 질문해라.

어찌 보면 위랑 연관되는 글이다.
우리는 학원 학생이 아닌 실력을 주체적으로 보여줄 수 있는, 회사의 프로여야 한다. 따라서 어떻게 보면 형편 없는 질문은, 오히려 나라는 프로의 가치를 떨어뜨릴 수 있는 것이다.

나 역시 처음에는 문제가 발생하면 다음과 같이 선배 개발자분께 질문을 여쭤보았다.

"저 이거 현재 안되는데, 어떻게 해야 하죠?"

비록 친절히 알려주시기는 했지만, 해결하는 데 시간이 오래 걸렸기도 했고, 나 역시 바쁜 와중에 질문을 드려 죄송하다는 느낌이 들었다. (아마 기분이 좋으시진 않았을 것이다.)
그리고 한편으로는 '이런 상황이 며칠간 반복되면 엄청 귀찮으시지 않을까'라는 생각도 받았다.

아마 내가 저러한 '맥'없는 질문만 했다면, 정말 내가 도움을 요청하는 순간이 제법 두렵고 짜증나지 않았을까.

그렇다면 질문하지 말라는 이야기인가요?

대답은 아니다. 나는 홀로 실수를 저지르는 사람보다, 질문하는 사람이 되어야 한다고 생각한다.
우리는 하나의 애플리케이션을 만들기 위해 같이 협력해야 하는 관계이다. 만약 이 말이 부정되는 곳이라면, 나는 절대 그 회사를 가지 않을 것이다.

하지만 포인트는 어떻게 질문하는가이다.
개발자는 코드로 이야기한다고 생각한다. 그런데 여태까지 A라는 목표에 도달하기 위해 이야기를 쓴 사람에게 무작정 B라는 목표에 관한 이야기가 이상한가요?라고 묻는다면, 아무리 특출난 개발자라도, B라는 이야기를 다 읽어야 한다.

따라서 질문에는 항상 context를 공유해주어야 한다고 느꼈다. 따라서 나의 경우는 이번 인턴 과정을 겪은 뒤로는, 질문할 때 다음과 같이 준비하고, 실행하려 노력한다.

현재 A를 하려고 하는데, 그 과정에서 B한 동작을 수행할 때 C라는 문제가 발생하고 있어요. 아무래도 원인은 D한 이유 때문에 E라고 생각했고, F, G, H 등을 수행했는데, 잘 안되네요. 혹시 제가 놓친 부분이 있을까요?

어떻게 보면 참 긴 말이지만, 문제를 해결하기 위해서는 이정도의 정보는 주어야 한다고 생각한다.

  • 현재 A를 하려고 하는데 (현재 내 목표가 무엇인지를 알아야 도울 수 있다.)
  • B한 동작을 수행할 때 (어떤 사용자 로직에서 문제가 발생하는지를 알 수 있다)
  • C라는 문제가 발생하고 있다. (내가 닥친 문제가 무엇인지 알아야 한다)
  • 현재 D라는 이유 때문에 E라고 생각했고 (애초부터 원인을 잘못 파악할 수도 있다)
  • F, G, H라는 방안을 수행했다. (가장 적합한 방안이 아님을 확인했으며, 나의 질문이 현재의 능력에서는 간단하지 않음을 전달)

이게 무슨 말이 되는 소리냐 하겠지만 실제로 코드 리뷰를 받을 때 위와 같이 했었고, 그때부터는 좀 더 답변이 수월하게 오갔던 것 같다.

회사에 계신 선배 개발자분들은 정말 바쁜 상황이 아니라면 질문을 싫어하지 않는 듯하다. (오히려 조용한 인턴이 더 무섭지 않을까라는 생각이 든다.)
다만, 문맥이 없는 질문 때문에 자신이 판단하는 시간이 낭비된다고 느껴질 때 비로소 질문을 싫어하게 되지 않을까. 적어도 난 그렇게 생각한다.


3. 생각보다 다른 부서와의 커뮤니케이션, 엄청 많이 해야 한다.

이건 내가 정말 생각지 못했던 부분이었다. 기획한 대로 코드를 완성시키면 그만인 줄 알았다.
하지만 나는 인턴을 하면서, 개발자분들과의 대화보다 기획자, 디자이너분과 얘기를 더 많이 했던 듯하다. 거의 하루에 5~10번씩은 메시지나 찾아가서 질문을 드리던 게 일상이었다.
지금 다시 회고하면서 생각한다. 왜 그랬을까?

각자의 이해관계가 다르다.

학교에만 가도, 각자가 추구하는 철학이 있고, 각자가 생각하는 배경이 다르다.
그렇다면 회사는 어떨까? 수십년 간 배운 학문이 다르고, 수십년 간 겪은 회사 생활도 다르다. 각자가 가진 학문적인 배경이나 경험이 다르기에, 생각하는 최선이 다르다.

그렇기에 커뮤니케이션이 매우 중요하다. 우리의 입장에서는 최대한 간단하고 명확하면서도, UX가 좋은 로직을 택하겠지만, 누군가는 더 어려운 방안을 추구할 수 있다.

이럴 때에는 어떻게 해야할까? 솔직히 나는 이것에 대한 답변을 찾지는 못했다.
그래서 선배님들을 몰래 살펴 본 결과, 지금까지 내린 가장 나은 결론은 자신의 근거가 되는 원천을 찾아서 자료를 첨부하는 것이다.

예컨대 자료는 단순히 기술적인 소스가 담긴 글일 수도 있지만, 실제 운영 중인 애플리케이션이 될 수도 있다. 직접 입 아프게 백날 설명하는 것보다는, 직접 보여주고, 체험하며 비교하여 선택지를 찾는 게 가장 나은 결론이더라.

인턴이라고 결코 이야기를 안 할 거라는 생각을 하지 말자.
오히려 커뮤니케이션을 잘 하는 모습을 보여주려 노력하자. 단순히 인턴이 아니라 문제를 해결할 수 있는 사람으로서 인정 받기를 바라는 게 어썸한 개발자 아닐까.

4. 괜히 '코어'에 집착하는 것이 아니다.

이건 예전에 취준하면서도 느꼈는데, 참 많은 사람들이 갖고 있는 고민이라고 생각한다.
단도직입적으로 말하자면, 코어는 유용한 도구라 생각한다.
도구가 없어도 우리는 문제를 해결할 수 있다. 예컨대 학교에서 집까지 갈 때, 우리는 버스를 타지 않고 걸어서 갈 수 있다.

하지만 회사에서 마주하는 문제는 그 크기가 불투명하다.
제주도까지 가라는 문제를 주면, 걸어서는 갈 수 없지 않겠는가.

좀 더 내 얘기를 곁들이자면 나의 경우 회사의 기술 스택과 전혀 달랐다.
나는 React, Next가 자신 있었는데 회사의 기술스택은 Vue, Quasar였다. 그 외에도 TailWindCSS, element UI 등을 쓰고 있었으며 레거시 코드 역시 많은 상태에서 일주일 동안 자유롭게 회사 애플리케이션을 살펴 볼 시간을 받았다.

이럴 때 가장 빛을 발하는 것이 바로 코어 지식이다. 실제로 Vue에 적응하고 코드를 짜는 데 불편함은 있었지만, 구현에 있어 큰 시간이 걸리지 않았다. 이유를 생각해보니 자바스크립트 지식을 열심히 쌓았던 결과였다.

나는 보통 라이브러리나 프레임워크를 쓸 때 해당 문법이나 제공하는 메서드들이 어떻게 자바스크립트로 동작하는지를 떠올려 본다. 나아가 그 라이브러리의 내부 동작들도 정확히는 아니더라도 포인트를 설명할 수 있어야 한다고 생각한다.

자원의 한계로 직접 구현하기 까다로운 기술을 라이브러리나 프레임워크에 위임하는 것이지, 기술적으로 완전히 무지한 채 특정 도구에 크게 의존하는 것은 이후 기술이 지원되지 않는 경우 등의 이슈가 발생할 때 위험하다고 생각하기 때문이다.

이러한 생각을 가지고 있어서인지 어느 순간 Vue의 문법으로 작성할 때 React를 공부했을 때처럼 자바스크립트 내부에서 어떻게 동작하는지를 머리 속으로 떠올렸고, 공통적인 부분들을 매칭해나갔다. 그 결과 Vue에 적응하고 빠르게 코드로 구현할 수 있었다.

새로우 기술에 적응해야 할 때, 기존 지식을 토대로 제대로 된 방향을 찾고 빠르게 다른 도구나 방법론들에 적응할 수 있도록 하는 것, 그것이 코어지식을 가진 강점이라 생각한다.


마치며

시작은 거창했지만, 막상 쭉 읊어보니 4가지 밖에 생각나지 않는다.
하지만 이 4가지만 제대로 하려 노력해도 어디 가서 충분히 매력 있는 프론트엔드 개발 인턴이 되지 않을까 싶다.

  • 배움에 대해 수동적이지 않은, 주체적인 마음가짐
  • 문제에 대한 명확한 인식과 해결 방법을 알고 이야기하는 것
  • 다양한 팀원들의 이해관계를 이해하고 좋은 커뮤니케이션을 찾아나가는 것
  • 코어지식을 이해하여 빠르게 변하는 기술 생태계에 적응할 수 있는 것

나 역시 참 많이 부족한 주니어 개발자지만, 누군가에게는 문제를 해결하는 데 큰 도움이 되었으면 좋겠다. 🌈

profile
People are scared of falling to the bottom but born from there. What they've lost is nth. 😉

3개의 댓글

comment-user-thumbnail
2022년 3월 29일

재영님 잘 지내시는군요! ㅎㅎ 너무 좋은 글 감사합니다

답글 달기
comment-user-thumbnail
2022년 4월 16일

재영님 안녕하세요~! 오랜만입니다:)
저도 곧 회사에 들어가게 될 것 같은데, 너무 도움이 될 것 같고, 좋은 글이 추천 누르고 갑니다앗
소중한 경험공유 감사드립니닷😀 ..총총

답글 달기
comment-user-thumbnail
2022년 8월 8일

좋은글 감사합니다~

답글 달기