본문 바로가기

개발자 취준

[신입 개발자로 서비스 회사 들어가기] 3편 신입으로써 꼭 갖추어야 할 3가지

반응형

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

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

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

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

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

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

 

3번째 주제는 신입 개발자로써 꼭 갖추어야 할 3가지 입니다.

1. 전공 기초역량
2. 코딩 테스트 역량
3. 프로젝트 경험

1. 전공 기초역량

전공 기초역량은 학교에서 배우는 전공 과목에 대한 역량을 말합니다.

왜 중요한가 ??
첫번째로는 회사 면접 때, 메인 질문으로 물어보기 때문입니다. 회사에서 신입 개발자의 역량을 파악하는 도구로써, 전공 기초역량을 활용 합니다.
왜 회사에서는 전공 기초역량을 중요시 여길까요? 현업에서 개발 업무를 하는데 있어서 직접적으로 활용되는 경우가 매우 많다고 보긴 힘들 것 같습니다. 하지만 간접적으로는 모든 분야를 막론하고 활용도, 관련도가 매우매우 높습니다. 잘 모르면 기본적인 업무대화도 힘들 가능성이 많습니다. 회사에서는 학교에서 배우는 전공 내용 정도는 기본으로 다 안다고 가정하고 업무를 진행하기 때문 입니다. 그래서 최소한의 기준으로 전공 기초역량은 갖춰진 신입 개발자를 찾는게 아닐까? 라고 저 개인적으로 생각합니다.

나의 전공 기초역량을 어떤 식으로 판단할 수 있는가?
1. 배운 내용을 나의 언어로 생각을 정리하여 설명할 수 있는가?
2. 배운 전공 내용에 대해서 깊이 있게 이해하고, 활용할 수 있는가?

상대적으로 누구 보다 잘해야한다고 생각하기 보다는, 내 전공 역량을 어떻게 키울 수 있는 지 고민해보면서,배운 전공 내용에 대해서 생각을 정리해서 말해보는 연습을 많이 해보세요. 블로그에 글로 남겨보아도 좋습니다
이런 식으로, 확인을 해보아야 하는 이유는 대개 사람들은 그냥 눈으로 보고 생각하는 것으로 이해했다고 생각하는데, 막상 나의 지식을 머리속에서 꺼내 보는 연습을 해본적이 많이 없기 때문에, 분명 아는데, 말로 혹은 글로는 정리가 안되는 상황이 발생하기 때문 입니다.

어떻게 준비하면 되는가?
1. 학교 수업을 열심히 듣고 공부하자
2. 수업을 통해서 아는 것과 모르는 것을 나눈다.
3. 아는 것은 더욱 심화적으로 공부해보고, 모르는 것은 쉬운 내용으로 다시 한번 공부한다.
4. 위의 사항들을 나의 언어로 블로그에 공부한 내용을 정리해본다.
5. 나중에 기억나지 않을 때 마다 블로그에 정리한 글을 읽고 다시 떠올려 본다.
6. 1~5를 반복한다.

잘하게되는 뭔가 특별한 방법론은 없습니다. 그냥 열심히 꾸준히 하는 방법 뿐 입니다. 조금씩 꾸준히 열심히 실천해보세요

이 글을 읽고 실천해 볼 Action Item
1. 내가 여태까지 배웠던 전공과목들의 책 혹은 강의 자료들의 목차를 보고, 얼마나 스스로 내용을 정리해서 말할 수 있는지 확인해보자.
2. 수업을 듣고 있다면, 아는 것과 모르는 것을 종이에 적어보고, 아는 것은 더 심화적으로, 모르는 것은 다시 책을 보고 공부하여 블로그에 남겨보자.
3. 이 링크의 레포에서 면접 문제들은 어떤 식으로 출제되는지 살펴보자
4. 시중에 공개되어있는 문제들을 풀어보자.(영어지만 그리 어렵지 않기 때문에, 테스트용으로 매우 좋다.) - 아래 링크 참고

2. 코딩 테스트 역량

코딩 테스트는 최근 4~5년 사이 부터 점점 생겨나서, 이제는 안보는 회사를 더 찾기 힘들어졌습니다.
신입 기준 코딩 테스트는 회사마다 전부 다르겠지만, 코딩 테스트로만 뽑겠다라고 하는 몇몇 회사를 제외하고는, 대부분은 서류 이후, 면접 전 후보자를 고르는 용도로 많이 사용이 됩니다.
현 상황은 일단 신입 개발자로 취직을 하기위해서 코딩테스트는 피할 수 없는 것이 되어버렸고, 코딩테스트를 패스하지 못하면, 대부분 면접까지 가보지도 못하게 됩니다. 최근 들어선 경력자 이직 면접에서도 필수 사항처럼 되어버렸습니다.

물론 실무와 코딩 테스트의 연관성에 대해서는 논란이 적지 않습니다. 하지만 이제 국내 대개의 회사들의 인식은 연관성이 어느정도 있다고 판단하는 것 같습니다. 그래서 가장 많이 사용되는 방법이 온라인 코딩테스트로, 면접 전에 기초적인 코드작성 역량과, 알고리즘 활용, 자료구조의 이해 등을 평가합니다.

그리고 더 중요하다고 생각하는 회사들은 실제 지원자의 코드를 면밀하게 리뷰하여서, 코딩 스타일이 어떤지, 나쁜 습관은 없는지, 가독성이 좋게 코드를 작성하였는지 등등 매우 자세히 분석하여서 신입 개발자로써 역량과 앞으로 발전 가능성을 판단하는 회사들도 꽤나 많아진 것 같습니다.

코딩 테스트는 어떻게 준비하면 될까요?
저 개인적으로는 아래와 같이 연습하였고, 개발자로 채용이 된 이후에도 꾸준히 조금씩 하고 있습니다.

1. 습관 만들기
* 하루에 딱 1문제 만 푼다. 더 풀고 싶어도 1개만 푼다
* 대신에 매일매일 한다
* 모르는 문제가 나오면 고민을 해보고, 1시간이 넘어간다 싶으면 답을 본다
* 답을 보고 내 코드와 비교하며 반성해보고 블로그에 남긴다

2. 유형 분석 & 유형별 풀이
* 기본적인 규칙인 습관 만들기와 똑같이 가져간다
* 1번이 어느정도 익숙해지면, 유명 기업들의 코딩테스트 문제들을 살펴본다
* 자주 나오는 유형을 파악한다.
* 유형을 파악했다면, 해당 유형에 대해서 익숙해질 때까지 문제를 꾸준히 푼다.

3. 난이도 올리기
* 기본적인 규칙인 습관 만들기와 똑같이 가져간다
* 자주 나오는 유형을 파악했다면, 이제는 기존 보다 조금 난이도 있는 문제를 풀어본다.

4. 매일매일 꾸준히 계속 풀기
* 3번까지 되었다면, 이것을 매일매일 꾸준하게 하여 감을 유지한다.

이때 중요한 것은 답이 맞고 틀리고는 중요하지 않다고 생각합니다. 내가 문제를 풀어봤을 때, 맞으면 좋은 것이고, 틀리면 내 코드와 비교하고, 다음에 더 개선시켜 나가면 됩니다.

코딩 테스트를 잘보기 위한 방법은 오직 문제 많이 풀어보고, 다른 사람의 코드를 보고 배우고, 나의 코드를 개선해보는 것의 반복 밖에 없다고 생각합니다.

이 글을 읽고 실천해 볼 Action Item

1. 백준 온라인에 가입해서 오늘 당장 내 수준에 맞는 혹은 더 낮은 1문제를 푼다. 이걸 매일매일 실천해본다.
2. 자체 코딩테스트를 치루고, 문제도 공개되어있는 유명 회사들(카카오, 삼성)의 문제들을 보고 어떤 유형이 나오는지 파악해본다.
3. 코딩 테스트 관련된 공부법이 나와있는 아래 링크를 쭉 읽어보고 나만의 코딩테스트 학습전략을 짜본다.
4. 내가 푼 문제를 블로그에 남겨본다.

3. 프로젝트 경험(개인 or.팀)

왜 중요한가?
제가 꼭 필요한 역량 3가지 중에 프로젝트 경험를 뽑은 이유는 프로젝트의 결과 보다 준비하는 과정에서 배우는 점이 매우 많기 때문 입니다.

프로젝트 경험을 통해 배울 수 있는 것들

프로젝트는 우선 팀 or 개인으로 나눌 수 있습니다.

(1) 소프트 스킬 역량을 미리 키울 수 있다
팀프로젝트의 경우엔, 학교에서 팀프로젝트를 해보신 분들은 아시겠지만, 기술적으로도 힘들지만, 팀원 간의 소통도 힘들었던 경험이 있으셨을 것이고, 실패했던 경험도 혹은 성공하셨던 경험도 있으셨을 겁니다. 근데 회사들어오시면, 나 혼자 개발하는 것은 없습니다.(물론 예외도 있겠지만요..)

백엔드 개발자라고 하였을 때, 서비스 하나 만들기 위해서, 기획, 디자이너, 프론트 개발자 모두와 소통하면서 개발을 해야함은 물론이고, 다른 백엔드 개발자분들과도 항상 소통해야합니다. 이런 팀원끼리 소통하고 협업하는 능력을 전문용어로 '소프트 스킬' 이라고 합니다.

현업 개발자들도 소프트 스킬에 대해서 어려움을 많이 느끼고 더 잘하고 싶어합니다. 여러분도 프로젝트를 많이 시도해보고, 실패도 해보고 성공도 해보면서 소프트 스킬 역량을 키울 있습니다. 이런 경험을 미리 해보시고 회사에 와서도 같은 어려움을 겪었을 때, 잘 헤쳐 나가실 수 있을 것이라고 생각합니다.

(2) 개발 사이클을 한바퀴 돌면서 전체적인 역량 향상을 할 수 있다.

두번째로는 개인 프로젝트의 경우 모든 것을 나의 기준에서 나만의 서비스를 만들어볼 수 있기 때문입니다. 기획부터 ~. 디자인까지 모두 내 생각과 내가 하고 싶은대로 정하여서 진행할 수 있습니다. 이 과정에서 기획의 어려움, 디자인의 어려움, 나의 개발 역량의 부족(ㅠㅠ) 다 안다고 생각했는데, 내가 생각보다 아는게 별로 없구나 라는 생각 등등, 서비스 하나를 최초 깃헙레포 생성부터 배포까지 진행하면서, 소프트웨어 개발을 한 사이클을 경험해볼 수 있습니다.

프로젝트는 어떻게 시작하면 좋을까?
그렇다면, 프로젝트는 어떻게 시작하면 좋을까요?? 저는 아래와 같이 하였습니다.


1. 주변 친구들을 모아서, 나와 친구들이 관련된 불편사항을 개선하는 아주 간단한 서비스를 만들어보고 배포해본다.
2. 대학생들이 많이 나가는 해커톤을 신청해서 나가본다.
3. 팀 프로젝트를 진행하는 프로그램(국가 or 기업)에 신청하고 직접 참가해본다

개인
1. 내가 가장 관심있는 언어 or 프레임워크를 정하고, 그것으로 무엇을 만드는 책 or 유투브 or유료인강 등등 한가지를 정하고 그대로 따라치면서 개발한다. 모르는 부분이 나오면, 모른다고 체크하고 일단 그냥 넘어간다
2. 1번이 완성되면, 평소에 내가 무엇이 불편했는지를 생각해보고 그걸 가장 간단하게 만들 수 있는 방식으로 만들어 보는데, 1번에서 그대로 따라친 내용들을 활용해서 만들어본다.
3. 2번을 하면서, 따라친 내용들은 금방 구현을 하는데, 내가 구현하고 싶은 기능이 따라친 내용에 없을 때는, 활용할 수 있는 모든 레퍼런스를 활용하여 해결책을 찾고 개선한다.(책, 구글, 스택오버플로우, 유투브 등등)
4. 아무리 서비스가 허접해도 무조건 배포까지 경험해보고, 사용자의 피드백을 받아본다.

이 글을 읽고 실천해 볼 Action Item

1. 따라하면서 무언가 만들 수 있는 유투브나 영상 강의를 정하고, 일단 따라서 만들어보자
2. 내가 평소에 무엇이 불편했는지 생각해보고, 그걸 개선할 수 있는 나만의 봇을 만들어보자(슬랙 봇, 라인 봇 등등)(봇 관련 개발기, 코드 등은 구글에 매우 많으니 참고하세요) -> 개인적으론 난이도 관점에서, 학교홈페이지 공지사항 봇 or 학식 메뉴 봇 같은 것을 한번 만들어보셨으면 좋겠네요~
3. 소프트웨어 마에스트로, 스마일게이트 서버개발캠프, 우아한 테크캠프 등등 국가 기업 등에서 운영하는 코딩 교육 프로그램을 찾아보고 알아보자

네 여기까지 해서 신입 개발자가 꼭 갖추어야 할 3가지에 대해서 저의 경험을 바탕으로 하여서 언급 드려 보았습니다. 음.. 하고 싶은 말이 너무 많다보니.. 글이 너무 길어졌네요 감안해서 봐주시면 좋을 것 같습니다.

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

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

 

반응형