IT/일본 IT 회사 생활

[IT 회사 생활] 신입 엔지니어가 1년간 익혔으면 하는 능력

개발자 두더지 2021. 2. 10. 23:23
728x90

일본 블로그 글을 번역한 글입니다. 오역 및 직역이 있을 수 있으며 내용 오류 지적 환영합니다. 

 

 이번 글을 6년차 서버 엔지니어가 3개월간 신입사원을 연수시키면서 신입사원이라면 1년간 이런 능력은 반드시 길렀으면 좋겠다고 생각한 내용을 정리한 글입니다.

 

1. 커뮤니케이션 스킬

 신입이 제일 익히길 바라는 것은 커뮤니케이션 스킬이다. 여기서 내가 생각하는 커뮤니케이션 스킬이란 상대의 의견을 올바르게 이해하고 자신의 의견을 정확히 상대에게 전달하는 능력으로, 이러한 능력이 없다면 선배가 도와줄 때 곤란해진다.

 

2. 질문 방법

 신입이라면 좋은 질문법을 익히길 바란다. 구체적으로는 다음과 같다.

1) 15분정도 안 풀리면 질문하기

 신입이 스스로 생각해보는 것은 중요하긴 하지만, 어느 적정선에서 고민을 끝내고 빠르게 질문하는 것이 필요하다고 느꼈다.  

 "막히면 바로 질문해주세요"라고 이야기해도, 반나절 정도 고민하고 있는 경우가 많아, "15분정도 고민해도 안풀리면 질문하세요"라는 룰을 정해 질문하는 것 자체를 익힐 수 있도록 하는 편이 좋은 것 같다.

2) 사실과 의견을 나누기

 "무엇을 확인했을 때, 이렇게 됐다"라는 사실을 정리해서 전달하는 것이 중요하다고 느꼈다. 신입들의 질문을 듣고 있노라면, "이렇게 되어 있는 것 같다"라고 본인의 의견을 말하기 보다는 "이렇게 되어있다!"하고 사실처럼 전달하는 경우가 다수 있었다. 

 예를 들어, 작성한 코드가 생각한대로 움직이기 않을 때 "이 메소드가 실행되고 있지 않습니다"라고 나에게 말해 그 메소드에 디버그 코드를 넣어서 확인하면 실상은 다른 곳에서 오류가 발생하는 경우가 많았다. 

3) 질문하게 된 경위를 명확히 밝히기

 질문의 경위를 밝히는 능력이 필요하다고 생각한다. "A라는 기능을 만들고, 다음 B라는 처리를 만들고 있습니다. 그 중에서 OO이라는 에러가 발생하였는데, 이 해결책을 잘 모르겠습니다. 시도해 본 것은 ...."과 같은 방식으로 질문하는 것이 좋을 것이라고 생각한다.

 신입 중에서는 "OO이라는 에러가 발생했는데, 그 해결책을 잘 모르겠습니다!"라고 질문하는 사람이 있다. 질문을 하게 된 경위를 미리 말해줘야 선배로부터 좋은 해결책을 이끌어 낼 수 있다. 

 

3. 문장력

 신입이라면 문장력을 익히길 바란다. 문장력에 대해 구체적인 내용은 다음과 같다.

1) 결론부터 쓰기

 문장뿐만 아니라 실제 대화를 주고 받을 때도 마찬가지이지만, 결론부터 쓰는 것(말하는 것)이 되면 좋다. "저는 지금부터 OO에 대해서 질문(보고)하겠습니다" 라고 결론을 전달해주면, 듣는 쪽도 뇌를 질문을 해결하기 위한 최적화된 방법을 모색하게 된다.

0부터 순서대로 스토리형식으로 설명하게 되면, 듣는 쪽은 한 문장 한 문장 신중하게 들어야 하므로 피곤해진다. 

2) 읽기 쉬운 문장으로 쓰기

 단락이나 개행을 의식하여 읽기 쉬운 문장을 쓰는 것이 중요하다. 모든 문장을 개행없이 쓰면 매우 읽기 어렵기 때문에, 단락이나 개행을 사용하여서 의미가 있는 단위로 문장을 분할하면 읽기 쉬워진다.

 특히 현시점에서 리모트 워크의 증가로 질문이나 보고를 문자로 하는 경우가 급증하였기 때문에, 읽기 쉬운 문장을 쓰는 것이 정말 중요한 스킬이 됐다.

 

4. 작업의 진행방식

 신입에 대해서는 작업의 진행법에 대해서 선배로 부터 지도를 받을 것이라고 생각되지만, 들은 대로 작업을 진행하는 것만으로는 충분하지 않다. 즉, 보다 효율적으로 일을 진행하는 방법이 없을까를 생각하는 능력이 굉장히 중요하다.

1) 작업의 목표에 대해 의식을 공유하기

 작업 목표에 대해 의식을 공유하지 않은 상태에서 진행하면 작업을 다시 해야하는 경우가 있기 때문에 사전에 목표를 공유하는 것이 좋다.

 예를 들어, 코드 작성을 할 때의 목표는 다음과 같이 여러 가지가 될 수 있으며, 기간을 제시하지 않으면 작업 지연으로 이어진다.

① 프로그램이 잘 움직이면 끝나는 것.

② 소스 리뷰를 통과했으면 끝나는 것.

③ 유닛 테스트를 문제없이 마치면 끝나는 것.

 다른 조사하는 업무인 경우도 마찬가지로 다음과 같이 목표가 여러가지이고, 골에 따라 조사 관점이나 정리 방법도 달라진다.

①고객에게 설명해야하는 것.

②사내에 설명해야하는 것.

2) 작업을 이미지화하기

 목표의 합의와 비슷하지만, 실제 진행하는 작업을 이미지화한 후에 작업에 착수하는 것이 좋다. 우선 착수한 후에 잘 모르면 질문하는 사람이 신입중에는 많다. 처음에는 실제로 실행하는 작업에 대해 구체적으로 이미지를 떠올리는 것은 어렵지만, 매일 매일 연습하면 금방 익힐 수 있을 것이다.

3) 올바른 툴을 사용하기

 의지로만 어떻게든 하려는 신입이 많지만, 올바른 툴을 사용하는 즐거움을 아는 것이 중요하다. 예를 들어, 코드 리뷰시에 코딩 규약 위반으로 지적을 받게 된다면 에디터의 오토 포맷 기능을 사용하던가, 작업에 전념하여 질문이 늦어질 것 같으면 알람을 세팅하는 것이 있겠다.

  "최선을 다해 신경쓰겠습니다!"라고 생각한다면 정신적으로 핍박해져 실수를 유발하게 되면 위험하므로 편하고 효율적인 작업을 위해 적당한 툴을 찾아보고 쓰는 것이 좋다.

 

5. 프로그래밍 스킬

 개인적인 의견이지만, 신입에게는 그렇게 프로그래밍 스킬을 기대하지 않는다. 따라서 위에 언급한 스킬을 적당히 익히며 일을 진행하면 큰 문제가 없을 것이라고 생각한다. 그러나 물론 최소한의 프로그래밍 스킬은 필요하다.

1) 기본적인 프로그래밍 스킬

 if문, for문, 변수, 배열 등을 이해하고 어떻게든 프로그램을 움직이도록 하는 정도면 충분하다고 생각한다. 또한 최근의 프로젝트에서는 프레임 워크를 사용하는 경우가 많으므로 오브젝트 지향에 대해 깊이 이해할 필요는 없다고 본다. 

 다만, 다른 사람이 쓴 소스 코드를 읽을 기회가 많으므로 그 코드를 읽기 위한 "서비스 클래스로부터 메소드를 호출하는 방법" 정도의 지식은 필요하다.

 이렇게 말한다고 해도, 연수 기간을 포함한 1년간 프로그래밍 업무를 하면서 자연스럽게 익히게 될 것이므로 큰 문제는 없다고 생각한다.

2) 알고리즘에 대한 이해

 다양한 알고리즘이 존재한다는 것을 알고 있는 것이 좋다. 예를 들어 배열로부터 값을 검색하기 위해서는 선형 검색뿐만 아니라 이분 검색이나 삼분 검색 알고리즘이 있으므로, 상황에 따라 선택해야 마땅한 알고리즘을 알고 있길 바란다.

 상황에 따라 선택해야할 알고리즘이 다르다는 것을 알고 있다면, 보다 좋은 알고리즘이나 보다 간단한 알고리즘을 조사할 수 있다. 또한 조사해도 잘 모르겠다면, 선배에게 상담해가면서 구현해보는 것도 가능하다.

 우수한 신입사원은 자력으로 알고리즘을 만드는데 도전해보길 바라지만, 보통의 신입도 다양한 알고리즘이 있고 상황에 따라 선택해야할 알고리즘이 다르다는 것은 최소한 이해하고 있길 바란다.


참고자료

qiita.com/Megane-kazuma/items/8724b4da563516733c1b

728x90