본문 바로가기
개발자 취업성공패키지

[개발자 취업성공패키지] 성공할수밖에 없는 실전 전략!

by 성장하는 마인드 2022. 10. 23.

안녕하세요. 현업에서 소프트웨어 엔지니어로 근무하고 있는 개발자입니다.

요즘 비전공자분들의 개발자 취업 비율이 늘고 있는데, 개발자 취업을 도와주는 부트캠프를 참여하지 않는다면 막상 어떤 것들을 어디서 공부해야하는지 감이 안 올때가 있습니다. 저도 비전공자 출신으로 개발자 부트캠프 없이 공부했습니다. 이번 포스트에서는 제가 그동안 취업을 준비하면서, 그리고 현업에서 필요한 기술을 익힐 때 사용했던 전략과 플랫폼에 대해서 공유드리고자 합니다.

 

개발자 취업

 

본 포스트는 저의 개인적인 의견을 담고 있으며, 특정 분야를 정한 것이 아니므로 분야에 따라 전략이 달라질 수도 있습니다.

 

취업을 뽀개는 공부 전략

전략 1: 프로그래밍 언어는 하나만 잘해도 충분하다.

보통 구인 글에 보면 회사에서 요구하는 스킬셋(Skill set)이 적혀있을 때가 많은데, 잘 보시면 최사는 언어 여러 개 중에 하나 이상에 능숙한 사람을 뽑습니다. 하나의 언어에 능숙한 사람은 보통 다른 언어를 배우더라도 금방 배웁니다. 언어의 특성이 다르다면, 다른 점을 유의하면서 공부하기 때문에 이해하기도 수월합니다. 그 언어가 회사에서 주로 사용하는 언어라고 하면 금상첨화이지만, 그렇지 않은 경우도 많이 있습니다. 그래서 코딩 면접을 보실 때도 주로 면접자가 익숙한 언어를 선택하도록 합니다. 그 언어에 대한 능숙도가 실력을 나타내주기 때문입니다.

 

실제로 저는 파이썬을 사용하는 회사에서 일할때,  새로 시니어 엔지니어를 채용한 적이 있습니다. 10년 넘게 개발직군에 계셨는데, 주로 Java 를 사용하셨고, 파이썬은 기초만 알 뿐 파이썬으로 실제 비즈니스 로직을 짜보신 적은 없다고 하셨습니다. 그래서 처음에는 파이썬에 대해서 물어보시기도 하셨습니다. 그런데 그 기간이 얼마 가지 않았습니다. 그 분은 한 달도 안되어서 저보다 훨씬 깔끔하고 효율적인 코드를 작성했습니다.

 

프로그래밍 언어를 공부하실 때는 문법만 공부하셔서는 안됩니다. 주로 회사에서는 서비스를 구현하기 위한 프레임워크 들을 많이 사용합니다. 예를 들어 파이썬은 Django나 Flask, 자바나 코틀린은 Spring boot가 있습니다. 이렇게 유명한 프레임워크들을 함께 공부하시는 것이 좋습니다. 프레임워크를 공부하다보면 자연스럽게 문법에 익숙해지게 되니 문법을 익히는데 너무 많은 시간을 할애하지 않으셔도 됩니다.

 

플랫폼

프로그래밍 언어를 배울 수 있는 플랫폼은 상당히 많습니다. 제가 개인적으로 강의를 들었던 경험을 기반으로 적어보면 아래와 같은 플랫폼들이 있습니다.

 

인프런(Inflearn)

- 무료 강의가 많고 커리큘럼에 따라 강의를 순차적으로 들을 수 있는 코스가 많습니다.

 

개발자 취업

 

패스트캠퍼스(Fastcampus)

- 프리미엄 강의(The Red)가 있어서 고급 주제에 대한 강의도 수강하실 수 있습니다.

개발자 취업

 

유데미(Udemy)

- 영어 강의가 많으므로 영어가 익숙하신 분들에게 추천드립니다.

개발자 취업

 

전략 2: 알고리즘과 자료구조를 공부한다.

알고리즘과 자료구조는 코딩에 가장 기본이 되는 개념입니다. 알고리즘과 자료구조를 모르고는 올바른 코딩을 하기 힘듭니다. 따라서 개발자로 취업을 하기 위해서는 반드시 알고리즘과 자료구조를 공부하셔야 합니다. 대부분의 기업들이 면접을 보기 전에 코딩테스트를 보는 이유도 바로 알고리즘과 자료구조가 필수이기 때문입니다.

 

걱정하지 않으셔도 되는건, 회사에서는 알고리즘 대회 수준까지 요구하지 않는다는 점입니다. 신입을 채용할때, Google, Facebook과 같이 글로벌 기업에 취직하는 거라면 어려운 수준까지 요구하는 경우가 있지만, 보통은 중간정도 난이도에서 채용하는 경우가 많습니다. 다만, 회사의 상품 자체가 높은 수준의 알고리즘을 요구한다면 더 어려운 난이도까지 준비해야할 수도 있습니다. 하지만 일반적인 기업들은 자사의 제품을 만들기 위한 기본적인 수준만 체크합니다. 상식적으로, 쓰이지도 않는 어려운 알고리즘을 모른다고 떨어뜨릴 필요는 없는 겁니다.

 

알고리즘과 자료구조를 공부하실 때는 꼭 알고리즘을 직접 구현하면서 공부하시기 바랍니다. 각 언어마다 기본적으로 제공해주는 함수들이 있는데, 문제를 많이 풀게 되면 자주 사용되는 편한 함수를 외우는 경우가 많습니다. 그런데 그 패턴에서 사용되는 알고리즘과 자료구조의 특성을 모르면 인터뷰에서 난처한 상황을 겪으실 수 있습니다. 일례로, Quick Sort를 사용해서 푸는 문제는 잘 푸시는 분들 중에 Quick sort 자체를 구현하라고 하면 못 푸시는 분들이 있습니다. 왜냐하면 sort() 함수를 써서 정렬하는데 익숙하기 때문입니다. 

 

언어는 본인이 익숙한 언어로 하는 것이 좋습니다. 왜냐하면, 전략 1에서 정한 언어로 알고리즘을  공부하다보면 문법이나 자료구조를 사용하는 것이 익숙해지기 때문입니다. 알고리즘을 풀면서 사용하는 자료구조나 문법은 실제로 현업에서 많이 쓰입니다. 취업을 위한 알고리즘 문제를 푸는데 언어에 따른 속도 차이로 손해보는 경우는 없습니다. 만약 TLE가 나오면 보통 알고리즘 자체가 느린겁니다. 가끔 언어별로 같은 자료구조가 서로 다른 속도를 낼 때가 있지만 면접을 통과하거나 코딩테스트를 통과하는데는 크게 무리가 없습니다.

 

플랫폼

알고리즘을 무료로 풀 수 있는 대표적인 사이트는 아래와 같습니다.(역시 제가 경험해본 것들만 넣었습니다)

 

Leetcode

- 문제가 영어로 되어 있긴 하지만, 문제 수가 많고 카테고리가 잘 붙어 있어서 원하는 문제를 수준에 맞게 연습하실 수 있습니다. 프리미엄 구독을 하면 솔루션도 볼 수 있습니다.

 

개발자 취업

 

프로그래머스

- 한국어로 된 문제가 많습니다. 국내 유명한 기업들이 코딩테스트를 할 때 프로그래머스를 많이 사용하기 때문에 기출문제들을 풀어볼 수 있어서 좋습니다. 프로그래밍 강의도 제공하고 있기 때문에 필요하시면 강의도 같이 들으실 수 있습니다.

 

개발자 취업

 

백준 온라인 저지

- 문제가 한국어로 되어 있고, 알고리즘 대회 문제까지 수록되어 있어서 양이 방대합니다. 별도로 강의도 구매해서 들으실 수 있습니다.

개발자 취업

GeeksforGeeks

- 문제가 영어로 제공되긴 하지만, 무료로 풀이까지 볼 수 있다는 장점이 있습니다.

개발자 취업

 

관심 있으시다면 제가 정리하고 있는 [Leetcode Top Interview Question]을 보시기 바랍니다.

2022.09.14 - [[Leetcode Top Interview Question]] - 1. Remove Duplicates from Sorted Array

 

전략 3: 클라우드 및 CS 기본 배경 지식을 공부합니다.

Computer Science(CS)에는 여러가지 분야와 그에 따른 개념들이 존재합니다. 취업을 준비하면서 이 모든 것을 다 볼 수는 없지만 기본적인 것들은 어느정도 알고 가시는 것이 좋습니다. 만약 컴퓨터공학을 전공하셨다면 대학교에서 배웠을만한 지식들입니다. 다만 여기에 추가로 최근에 자주 사용되는 클라우드와 DevOps에 대한 공부도 곁들이시기 바랍니다.

 

대표적인 CS 지식들은 아래와 같습니다.

세부 질문들은 여러가지 중에 일부를 적은 것입니다. 혹시나 아래 질문에 답변하기 힘드시다면 공부를 꾸준히 계속해주시는 것이 좋습니다. 물론 모든 것을 다 알 수는 없습니다. 계속 공부하는 것만이 방법입니다.

 

 

Operating System(운영체제)

  • 프로세스란 무엇인가?
  • 프로세스와 쓰레드의 차이는 무엇인가?
  • 멀티쓰레드는 무엇이고, 어떻게 작동하는가?
  • 물리 메모리와 가상 메모리의 차이는 무엇인가?
  • 스택과 힙의 차이는 무엇인가?
  • OS는 파일 권한을 어떻게 관리하는가?
  • 소켓이란 무엇인가?

 

System & Application Architecture(시스템 및 어플리케이션 아키텍쳐)

  • 로드 밸런서란 무엇인가?
  • HTTP API 설계에서 사용되는 주요 Method는 무엇이 있는가?
  • 분산 아키텍쳐를 설계할때 고려해야하는 것들은 어떤 것들이 있는가?
  • CAP Theorem이란 무엇인가?
  • 컨테이너란 무엇인가?
  • 동기와 비동기 구현의 차이는 무엇인가?

 

Network(네트워크)

  • 실제 HTTP 요청을 보내면 클라이언트와 서버 사이에는 어떤 작업이 발생하는가? 
  • TCP와 UDP는 무엇이고, 어떻게 다른가?
  • IP protocol은 무엇인가?
  • ICMP란 무엇인가?
  • Websocket이란 무엇인가?
  • OSI 7 layer에 대해서 설명할 수 있는가?
  • Public IP와 Private IP의 다른점은 무엇인가?

 

Database(데이터베이스)

  • 관계형 데이터베이스와 비관계형 데이터베이스는 어떤 점이 다른가?
  • 관계형 데이터베이스(ex. MySQL)에서 쿼리를 구현할 수 있는가?
  • 인덱스란 무엇인가?
  • Primary key와 foreign key는 어떻게 다른가?
  • 스키마란 무엇인가?
  • 샤딩이란 무엇인가?

 

Security(보안)

  • Symmetric encryption과 Asymmetric encryption의 차이는 무엇인가?
  • 암호화와 Hashing은 무엇이 다른가?
  • 인증서와 CA의 차이는 무엇인가?
  • SQL Injection이란 무엇인가?

 

클라우드(Cloud) 및 DevOps

  • AWS/GCP/Azure등을 사용해본 경험이 있는가?
  • 클라우드와 온프레미스의 장단점은 무엇인가?
  • Continuous Integration & Continuous Delivery란 무엇인가?
  • Load test와 Unit test의 차이는 무엇인가?
  • 제품이 개발되어 실제 서비스로 배포될 때까지의 Flow는 어떻게 되는가?

 

기타 알아주면 좋은 기술들

  • 쿠버네티스란 무엇인가?
  • Git의 원리와 사용 방식을 이해하고 있는가?
  • 리눅스 명령어 중에 다음 명령어들의 용도를 말할 수 있는가?
    • ls, cat, ssh, cp, mv, rm, top, free, sudo

 

 

마지막 꿀팁!

혹시나 개발자 로드맵이 궁금하시거나, 각 분야별로 어떤 기술들을 더 공부하면 좋은지 궁금하실 때는 아래 링크를 참고하시면 좋습니다.

https://roadmap.sh/

 

Developer Roadmaps

Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don't know, find out the knowledge gaps, learn and improve.

roadmap.sh


지금까지 제 개인적인 경험에 의한 개발자 취업 전략 세 가지를 다뤄보았습니다.  앞으로의 포스트에서는 위의 내용들에 대한 상세한 내용들을 주제별로 다뤄볼까 합니다. 많은 조언과 공유 부탁드립니다 :) 

 

 

 

댓글