Overview


개발자로서 갖춰야 할 역량은 무엇이 있을까요? 흔히 업무에 필요한 역량을 말할 때 업무를 수행하는데 필요한 지식과 기술을 의미하는 “하드 스킬”과 업무 효율성을 극대화 하기 필요한 능력인 “소프트 스킬"로 구분지어서 말하곤 합니다. 개발자는 개발을 하는 사람이기에 당연히 기술적인 역량이 필요할 것입니다. 기술적인 역량은 개발자의 핵심이 되는 역량이므로 “하드 스킬” 이라고 할 수 있습니다. 그렇다면 그 외에 개발자에게 필요한 역량은 무엇이 있을까요? 실제 개발자들에게 업무를 할 때 중요한 역량을 물어보면 오히려 개발 능력 외에 커뮤니케이션 능력, 소통 능력, 협업 능력, 팀워크를 강조하는 경우가 많습니다. 이러한 것들이 개발자로서 갖춰야 할 **“소프트 스킬”**이라고 할 수 있습니다.

개발자에게 협업과 커뮤니케이션이 강조되는 이유는 개발자 혼자서는 하나의 프로덕트를 만들 수 없기 때문입니다. 흔히 개발을 통해서 무언가를 만들 수 있기에 “개발자는 혼자서 프로덕트를 만들 수 있을 것이다”라고 생각하지만 어느정도 규모가 있는 프로덕트의 경우에는 개발자뿐만 아니라 수많은 직군들과의 협업을 통해서만 만들어 낼 수 있습니다. 그리고 특히 프론트엔드 개발자는 업무 특성 상 흔히 기획자, 디자이너, FE 개발자, BE 개발자로 구성되어 있는 제품팀에서 모든 직군들과 가장 많이 소통을 해야 하는 포지션입니다. 심지어 마케팅 부서와도 협력이 많이 이루어지는 포지션이 FE 개발자입니다. 그리고 개발자가 다루는 영역은 타 직군 사람들에게는 생소한 부분이 많습니다. 따라서 이런 생소한 영역을 청자를 고려해서 알아들을 수 있게 쉽게 풀어서 설명할 수 있는 능력을 갖추는 것이 굉장히 중요합니다.

타직군과 개발자와의 소통 외에도 개발자간에도 소통은 굉장히 중요하면서도 어려운 요소입니다. 내가 구현한 로직을 다른 사람에게 설명해 보신 적이 있으신가요?, 아니면 다른 사람의 설명을 듣고 그것을 코드로 옮겨본 적이 있으신가요? 이런 경험이 있으신 분들은 생각과는 다르게 내가 생각한 것을 남에게 설명하고 이해시키는 것, 남의 설명을 듣고 이해하는 것이 쉽지 않다는 것을 느껴보셨을 것입니다. 같은 업무를 하는 프론트엔드 개발자끼리도 소통하기가 힘든데, 백엔드 개발자와 함께 소통하기 위해서는 더더욱 많은 노력이 필요할 것입니다. 그렇다면 소통을 잘 하려면 어떻게 해야 할까요?

소통은 크게 말로 하는 소통과, 문서로 하는 소통으로 나눌 수 있습니다. 구두로 소통을 할 때는 내가 말하는 목적은 ‘상대방을 이해시키기 위함'임을 명심해야 합니다. 그렇기에 내가 알고있는 것, 말하고자 하는 것을 쏟아내듯이 말하는 것이 아니라 나의 생각을 잘 정리해서 말하는 것이 중요합니다. 그리고 일반적으로 복잡한 요구사항과 코드, 로직 등을 설명할 경우가 많기 때문에 상황에 맞춰 미리 내용을 정리해둔 문서를 활용한다던지, 실시간으로 노트에 적어가면서 설명을 하는 등의 시각화를 동반해서 소통하는것도 좋은 방법입니다. 다음은 문서로 하는 소통입니다. 일반적으로 개발자는 구두로 하는 소통보다는 문서로 하는 비동기적 소통을 더 많이 하고 선호합니다. 문서라는 단어를 들었을때는 일반적으로 구글 시트, PDF, PPT, 노션 등의 툴을 떠올릴 수도 있습니다. 하지만 개발자가 주로 작성하는 문서는 commit, PR, 그리고 코드입니다. 이러한 문서를 통해서 개발자들은 서로 의도를 표현하고, 피드백을 주고받고, 팀의 능률을 올리기 위해 노력합니다. 따라서 이러한 문서들의 중요성을 인식하고 이를 잘 작성하고자 노력하는 것은 굉장히 중요한 일입니다.

이번시간에는 이와 연관해서 Git과 GitHub을 문서의 관점에서 알아보고, 협업 능력, 효율적인 소통을 위해서 어떤 부분들을 시도할 수 있는지 그리고 개발자는 어떻게 팀으로 일하는지에 대해 좀 더 자세히 배워보겠습니다.

<aside> 🙅‍♂️ 흔히 개발자의 스테레오 타입이라고 생각하면 혼자 고독하게 모니터만 쳐다보면서 일하고, 왠지 사회성과 커뮤니케이션 능력은 다소 떨어지지만 뛰어난 지적 능력으로 인정받는 것을 생각합니다. 하지만 이러한 사람은 실존하지 않습니다. 과거에는 있을 수도 있었겠지만 최소한 현재 유능하다고 인정받는 개발자중에 저런 타입은 더이상 존재하지 않습니다. 물론, 개발능력은 정말 뛰어나지만 소프트스킬이 뒷받쳐주지 않아 이를 발휘하기 힘든 사람은 있을 수 있습니다. 하지만 발휘하지 못하는 능력이 쓸모가 있을까요? 나아가서 발휘하지 못하는 능력을 실제 능력이라고 말할 수 있을까요? 실제로 잘하고 인정받는 개발자가 되기 위해서는 개발 능력은 당연히 갖춰야 하는 것이고 여기에 덧붙여 뛰어난 소프트스킬까지 보유하고 있어야합니다. 여러분들도 하드스킬과 소프트스킬을 골고루 발전시켜 스스로를 증명할 수 있는 개발자가 되기를 바랍니다.

</aside>

Git & GitHub을 사용하면서 지켜야 할 것


Git & GitHub의 정의

Commit Message

과제를 수행하시고 통과하셨다면 위의 사항들은 이미 이해하고 있거나, 아니면 어렴풋이라도 알고 있는 사항들일 것입니다. 하지만 Git & GitHub은 이제는 버전 관리 시스템을 넘어서서 문서와 협업 툴의 역할 또한 수행하고 있습니다. 개발자가 다른 개발자의 코드를 분석할 때 이 코드가 어떤 목적을 가지고 언제 작성되었는가를 확인하기 위해서 가장 먼저 확인하는 것은 Git의 Commit Message입니다. 실제로 이를 위해서 git blame 이란 명령어도 git에 존재하고 있습니다. 저 명렁어를 통해서 특정 코드를 누가 언제, 어느 커밋에서 수정했는지 알 수 있습니다. 그런데 만약 이때 commit message가 제대로 작성되어 있지 않다면, “작업중”, “커밋", “시작", “수정" 이런 커밋 메세지들로만 이루어져 있다면 이 코드의 히스토리를 파악하기가 힘들어집니다. 따라서 커밋 메세지를 올바르게 작성하는 기본적으로 지켜져야 할 사항입니다. 여기에 덧붙여 개발자는 팀을 이루어서 함께 작업을 합니다.