본문 바로가기

개발자 취준

[신입 개발자로 서비스 회사 들어가기] 5편 개발자로써 더 성장하기위해 해야할 것들

반응형

이 글은 올해 학교 에브리타임 졸업생 게시판에 적었던 글 입니다

취준과 관련해서는 전패에 1승 이었지만, 그래도 그 1승을 한 경험을 바탕으로 저의 뇌피셜적인 내용들을 가미해서 적어보았습니다.

절대로 정답이 아니고 그냥 제가 한 방법이오니 참고만 하시길 바랍니다 :)

제가 쓸 시리즈는 총 6편으로

1. 내가 갈 수 있는 회사들 알아보기
2. 내가 지원할 수 있는 분야는 어떤 것들이 있을까?
3. 신입으로써 꼭 갖추어야 할 3가지
4. 면접 준비는 어떻게 해야 하나?
5. 개발자로써 더 성장하기위해 해야할 것들
6. 개발자 필독서, 유투브 추천

으로 연재를 해볼까 합니다.

5번째 주제는 개발자로써 더 성장하기위해 해야할 것들 입니다.

이 주제는 단순히 신입 개발자를 위한 주제는 아닙니다. 하지만, 그렇다고 해서 신입 개발자들에게 해당되지 않는 내용은 아닙니다.
왜냐하면, 신입 개발자들 역시 '개발자' 이기 때문 입니다.

스포츠를 기준으로 생각을 해보겠습니다. 그중에서도 UFC 선수라고 해보겠습니다.
UFC 격투기 선수들 중에 막 데뷔 하는 선수들도 있을 것이고, 데뷔 이후 많은 전적을 쌓은 선수들이 있을 것 입니다.
현대 격투기에서는 주짓수와 레슬링은 필수과목 처럼 되어있다고들 합니다. 그런데 막 데뷔한 선수와, 오랜 경력을 가진 선수들 들이 배우고 수련해야할 내용이 다를까요?? 아니요 최고의 선수가 되기 위해선 막 데뷔한 선수도, 경력이 많은 선수도, 내가 주짓수, 레슬링 스페셜 리스트가 되기 위해서 노력해야 합니다. 아마추어가 아닌 프로이기 때문 입니다.

개발도 마찬가지 입니다. 개발자 앞에 '신입'이라는 글자가 붙어서 그렇지, 여러분은 '아마추어'가 아닌 '프로'가 된 것이고, '프로' 로써 더 좋은 개발자가 되기 위해서 노력해야만 합니다.
신입 개발자가 해야하는 것들이란 것은 없습니다. 신입 개발자도, 더 좋은 개발자가 되기 위한 노력들을 해야만 합니다.

그렇다면, 그런 노력들은 무엇이 있을까요?
이번 글에서, 더 좋은 개발자가 되기 위해서, 학생 때부터 꾸준히 연습했으면 좋은 것들 3가지를 공유드리고 꾸준히 연습하길 권장드리고 싶습니다.
저 개인적으로는 크게 '읽기 쉬운 코드 작성', '테스트 코드 작성 역량', '소프트 스킬' 3가지 정도로 나눌 수 있을 것 같습니다.

첫번째, '읽기 쉬운 코드 작성' 입니다.
흔히들 과제를 하면서, 본인이 작성한 코드를 나중에 보면서, "이 코드는 뭔 뜻인가??.." , "이걸 내가 짯다고??" 하면서, 주석을 찾아보고, 주석이 없는 것을 보고 "아우.. 코드 정말 머 같이 짰네.." 라고 한번쯤은 경험해본적이 있으셨을 겁니다.

'읽기 쉬운 코드는'는 무엇을 말하는 것 일까요? '읽기 쉬운 코드'는 '(사람이) 읽기 쉬운 코드' , '가독성이 좋은코드'를 의미합니다.
이것이 중요한 이유는 대개는 코드를 작성하는 시간보다, 읽는 시간이 훨씬 많기 때문 입니다. 대개 현업에서는 내가 작성한 코드를 나 이외의 동료들도 보게되고, 자연스레 작성한 시간 보다, 다른 사람들 혹은 내가 읽게되는 시간이 훨씬 깁니다.
오픈소스 프로젝트에서도 마찬가지 입니다. 대개는 남이 올린 코드를 분석하고 리뷰 하는 과정이 코드 작성하는 시간보다 훨씬 깁니다. 그런데 흔히 말하는 코드를 X판으로 짜게되면, 코드를 읽는데 많은 리소스를 사용하게 되고, 수 많은 사람들이 같은 과정을 겪게 되겠죠?

대학생들이 흔히하는 가독성을 해치는 개발 습관의 예를 들어보겠습니다.
1. 변수명이 a, b, c ... z 등등 a,b,c 가 무엇인지 전혀 알 수 가 없다.
2. 1번 같이 변수명을 지정한 후, 주석을 주저리주저리 달아 놓는다.
3. 함수명과 함수가 실제 하는 내용이 다르다(set_name 인데, 이름을 세팅하고, 하고 리턴 까지 한다던지..)
4. 한 메소드 혹은 클래스의 길이가 너무 길다
5. 해당 언어에서 지정된 혹은 많이 쓰여서 약속된 컨벤션을 지키지 않는다
6. if문 중첩 지옥
7. 기타 등등..

위의 1~7번의 경우에 대해서, 대부분의 컴퓨터 전공 학생들이 겪고 있는 문제라고 생각합니다. 이런 습관이 들게된 이유는 어찌보면 당연합니다. 학생들은 학교 수업 대부분 의존하는데, 학교 수업에서는 이론과 구현에 집중이 되어있기 때문 입니다. 그래서 우리가 읽기 좋은 코드 작성을 위해서는 스스로 알아서 노력해야 합니다.

그렇다면, 어떻게 하면 가독성 해치는 개발 습관을 버리고, 읽기 좋은 코드를 작성하는 방법을 배울 수 있을까요?
아래 2가지 책을 졸업 전까지는 반드시 꼭 읽어보시고, 더 읽을 수 있다면 읽을 수 있을 만큼 계속 읽으세요.
1. 클린 코드 - 로버트 C 마틴
2. 리팩토링 - 마틴 파울러

위 두 책 말고도 정말 좋은 책들이 많지만, 가장 중요도 높은 책 2권을 고르라면 전 위의 두개의 책을 고를 것 같습니다.
위 책들은 제가 위에서 계속적으로 말한 '읽기 좋은 코드' 작성을 위한 개발자 필독서 같은 책 입니다. 이 책의 장점은 구글에 검색해도 나오니 자세한 설명은 생략하도록 하겠습니다.
어찌 되었던, 우리는 '읽기 좋은 코드'를 작성하기 위해 노력해야 합니다.

두번째는 '테스트 코드 작성 역량' 입니다.
여러분은 테스트 코드에 대해서 들어보신 적이 있나요? 아니면 혹시 작성해본적이 있나요?
제가 학교를 다녔을 때는, 테스트 코드에 대해선 전혀 들어보지도, 꼭 해야하는 중요한 것이라고 말하는 사람을 단 한명도 본적이 없습니다. 사실 저는 테스트 코드에 대해서 알고있긴 했습니다. 책 같은데 보면, 테스트 관련된 내용이 있긴 있었거든요. 그런데 누구하나 신경쓰지 않으니, 저도 별 신경 쓰지 않고 넘어갔습니다.
그런데, 회사에 들어오니, 테스트 코드는 절대적으로 작성 해야만 하는 것 이였습니다. 너도나도 너무나도 자연스럽고 당연하다는 듯이 테스트를 작성 하는 것이 신기하였습니다. 우린 대학생 때 전혀 듣도 보도 못한 것이 사실 기업에서는 매우 당연하고 필수적으로 활용이 되고 있습니다.
이 테스트 코드라는 것은 내가 작성한 코드가 나의 '의도'에 맞게 작성되었는지를 확인하는 코드를 말합니다.
쉽게 설명드리자면, 과제 제출 후에, 테스트 케이스 몇개 통과 못했다라는 말 들어보신적 있나요? 아니면, 백준이나 프로그래머스 문제를 풀 때, 테스트 케이스 통과 못한 것을 경험해 본적이 있으신가요? 여기서 말하는 테스트 케이스가 제가 말씀드리는 일종의 테스트 코드 입니다. 근데 그것을 남이 짜준 테스트케이스가 아닌, 내가 내 코드를 내 의도에 맞게 짰는지 확인하기 위해서 작성한다는 점이 다른 것 입니다.

그렇다면, 이 테스트 코드라는 것은 도대체 왜 작성해야만 하는 것일까요?
1. 테스트는 내 코드가 의도에 맞게 작성되었는지를 빠르게 확인해 준다.
2. 기능 추가 및 수정으로 인한 side effect를 줄여준다.
3. 리팩토링을 마음편히 할 수 있게 된다. -> 위의 추천 도서를 읽으시면 이 말은 문맥적의미를 이해하실 수 있습니다.
4. 테스트는 동작가능한 문서의 역할을 한다.
5. 기타 등등..

같은 이유들이 있습니다. 각각 이유들에 대해서 설명하기엔 너무 길어서, 문서, 책, 유투브 링크로 제공해 드리겠습니다~(아래 참고)

어찌 되었던, 테스트 코드 작성은 중요하고, 본인 스스로 공부해야만 하는 것 입니다. 저의 개인적인 연습 방법을 추천드려보자면, 백준 온라인, 프로그래머스 문제를 풀 때, 테스트 코드 작성하는 연습을 해보세요. 문제의 구현 규모가 크지 않고, 조건이 확실한 알고리즘 문제를 풀 때, 테스트 코드를 작성하는 연습을 꾸준히 해보시면, 나중에 더 큰 규모의 프로젝트 코드를 작성할 때도, 비교적 쉽게 작성하실 수 있을 겁니다

세번째는 '소프트 스킬' 입니다.
'소프트 스킬'은 개발 스킬 이외의 나머지를 말합니다. 대인 관계, 커뮤니케이션, 팀워크 등등을 말합니다. 반댓말로 '하드 스킬'이 있는데, 위에서 말한 첫번째, 두번째는 하드스킬이라고 말할 수 있습니다.
자소서를 쓸 때, 본인이 협업 했던 경험에 대해서 써본적이 있으신가요? 혹은 면접 때 본인이 팀프로젝트 했던 경험에 대한 질문을 받으신 적이 있으신가요? 이런 것들이 바로 소프트 스킬과 관련된 평가를 위해서 던저진 자소서 항목, 면접 질문들 입니다.
개발자는 대개 혼자 일하지 않습니다. 물론, 개발자가 1명이 기획, UX/UI, 개발, 배포, 영업, 마케팅을 다하는 1인 기업이라면 혼자겠지만, 그 이외의 경우는 무조건 나 이외의 사람과 일을 하게 되어있습니다.
하나의 서비스를 만들기 위해서, 개발자 1명이 함께 소통해야할 사람들이, 개발자 뿐만 아니라 기획, 디자인, 상황에 따라 마케팅과 영업 가지도 포함되다보니, 기업에서는 동료 간 단순 커뮤니케이션이 아닌 오버 커뮤니케이션을 권장하고 있는 현실 입니다.
그렇기 때문에,하드 스킬과는 별개로 소프트 스킬 역량도 매우 중요합니다.

그렇다면, 학생 입장에서 '소프트 스킬' 향상을 위해 할 수 있는 방법은 어떤 것들이 있을까요?
제 개인적으로는 팀 프로젝트 혹은 스터디, 해커톤 등등 을 많이 해보시고, 많이 실패해보시길 추천드립니다. 꼭 학교 수업이 아니더라도 외부 프로그래밍 동아리, 외부 해커톤 등등 나 이외에 다른 사람과 소통이 필요한 경우라면 어떤 것도 좋습니다.
저의 경우는 팀으로 하는 프로젝트, 스터디, 해커톤 등등을 많이는 아니지만 적지 않게 경험을 해보았습니다.
이 과정속에서 실패도 많이해보고, 소통의 부재와 커뮤니케이션 오해를 통해 발생할 수 있는 다양한 문제를 겪어보면서, 어떻게 다른 사람들과 소통해야하고, 커뮤니케이션 오해가 없이 대화하는 방법들에 대해서 스스로 고민해보고, 개선 시킬 수 있었던 것 같습니다(부수적으로, 자소서 혹은 면접 때 할 얘기 가 많아서(쌓인게 많아서...) 좋았습니다..ㅎㅎ)

아무튼 간에 '소프트 스킬' 도 매우매우 중요합니다. 개발자는 회사에서 절대 혼자 일할 수 없다는 것을 명심하시고 다양한 팀프로젝트에 참가해보세요!

마지막으로 Action Item도 정리해 보겠습니다.

개발자로써 더 성장하기위해 해야할 것들 Action Items
1. 읽기 쉬운 코드 작성 연습
2. 리팩토링, 클린코드 책을 읽고, 실제 내 과제 코드에 적용해 본다.
3. Before & After 를 준비하여서, 가독성이 향상 되었는지를 주변 사람들에게 피드백 받아본다.
4. 테스트 코드 작성 연습
5. 백준 온라인, 코드 워즈, 프로그래머스 등등 알고리즘 사이트를 활용하여서, 테스트 코드 작성을 연습해 본다.
6. 내가 사용하는 언어의 테스트 라이브러리를 검색해보고 적용해보자.
7. 테스트 작성에 익숙해 졌다면, TDD도 도전해 보자
8. 소프트 스킬 향상 노력
9. 나 혼자 말고, 2명 이상의 사람이 하는 프로젝트 , 해커톤, 스터디 등등에 참여한다.
10. 관련 도서 읽고 직접 적용해보기
11. 피플웨어
12. 프로그래머 철학을 만나다
13. 이외 모든 개발자 처세 관련 책 등등

네 여기까지 '개발자로써 더 성장하기위해 해야할 것들' 에 대해 저의 경험을 바탕으로 개인적인 생각을 언급 드려 보았습니다.

위 글은 저의 개인적인 경험에 의해서 정한 기준이기 때문에, 무조건 정답이 아님을 말씀드리고 방향을 잡기 힘드실 때, 참고용을 활용하시길 바랍니다~

궁금한 점이나, 잘 이해가 안되시는 부분은 댓글로 남겨주세요. 그리고 제 글에서 혹시 잘못된 내용이 있거나 다른 의견이시라면, 댓글로 피드백 부탁 드리겠습니다~ 감사합니다

 

반응형