많은 분들이 개발자로 전향을 생각하고 있으나 가지고있는 고민과 궁금증에 비해 도움을 받을곳이 많지 않습니다. 저도 비전공 출신으로 28살의 나이에 개발을 배우기 시작했으나 처음 개발을 배워볼까 고민하던 순간 부터 취업하기까지 많은 고민과 문제가 있었고 도움을 받을곳은 없었습니다. 아직 현업에서 2년째 일하고있는 부족한 개발자지만 아직까지 생생하게 기억하고 있는 경험과 지식이 3년전의 저같은 사람에게 큰 도움이 될거라 생각합니다.
앞으로 개발자 전향을 고민하는시점부터 취업까지 모든 경험과 생각을 연재합니다.
본격적으로 코딩을 한지 3개월이 지나고 프로젝트도 경험해 보면 이제 어느정도 개발에 대한 이해와 나름 어느 정도의 개발에 대한 자신감과 실력이 생겼을 것이다. 축하할 일이지만 반대로 앞으로 더 힘든 과정이 기다리고 있다. 기초적인 프로그래밍을 배우는 학원 수업은 중요하며 앞으로도 배울것들이 많이 있을것이다. 하지만 그것이 다가 아니고 그외에도 반드시 공부 해야 할것들이 있다. 학원에서 모든것을 이해하고 잘한다 해도 나중에 수료후 취업시장에 던져질때 더 공부해야 할것이 산더미처럼 쌓여 있을것이다.
그렇다면 어떤것들을 공부해야할까? 어떤것들을 공부해야할지 방향성을 잡고 가는것이 좋다. 나중에 해야할것들이지만 미리 준비를 해놓는게 더 빨리 성장할수있는 방법일것이다.
국비 학원교육 과정을 밟고있다면 학원에서 배우는 교육이 비슷 하기에 대부분 JAVA 를 다루는 개발자 일것이다. 그렇다면 앞으로 JAVA 개발자가 될것인지 아니면 JS를 더 공부하여 프론트엔드 개발자가 될것인지 앱개발자가 될지 등등 어떤 개발을 할지에 따라 공부 해야할 것들이 달라질 것이다. 만약 교육 이후 창업을 해서 스스로 모든것을 만들 계획이 아니라면 우선 풀스택 개발자는 추천하지는 않는다. 풀스택 개발자를 고용하는 곳은 많지 않으며 그만큼 공부 해야할 양이 어마할것이다. 그리고 또 JAVA를 다룰줄 안다고 JAVA 개발자가 되어야만 한다는 생각도 하지않는게 좋다. 학원에서는 기초적인 프로그래밍을 배운것이고 현업에서 쓸만한 JAVA 개발자가 되려면 더 많이 공부해야 할것이다. 다른 언어를 공부해서 다른 개발자가 되어도 크게 다르지않다.
그러면 무엇을 공부해야할까? 개발자로서 성장하기 위함도 있겠지만 중요한것은 결국 취업을하기 위한 공부이다. 그렇다면 채용공고를 한번 쭉 훑어보기를 권한다. 채용공고를 보기 위해서는 잡코리아,사람인도 있고 스타트업이 많은 로켓펀치나 원티드도 있다. 여기서는 비교적 회사 퀄리티가 괜찮은 원티드를 기준으로 한번 찾아보자
위 링크에서는 개발자 채용공고가 쭉 나와있다. 위에 어떤 개발자인지 한번더 필터링 할수있으니 선택해서 찾아보자. 그리고 경력은 신입으로 고르면 된다. 신입 이어도 채용공고가 꽤나온다. 많은 회사에서 많은 개발자들을 찾고있다 그중 하나가 내 자리가 될수 있으니 공고들을 열심히 쭉 보기를 바란다.
채용공고를 보면 자격요건과 우대사항이 있다. 그것을 보고 취업을 하기 위해 앞으로 어떤 공부를 해야할지 참고하면 된다. 그러나 나도 3~4개월 이 되던시절에 채용공고를 보면서 느꼇던 것이지만 도대체 이게 무슨 말인지 이해 할수 없었다. 그래서 채용공고를 읽는에 이해에 도움을 주려한다. 우선 자바 개발자 기준이다.
어마어마한 스펙이다. 하나하나 살펴 보도록 하자.
2년 이상 API 개발 경험, 쉽게 2년이상의 JAVA 개발 경험 , 백엔드 개발 경험 이라고 보면된다. 그런데 신입 채용공고로 올려놓고 이렇게 2년 이상이라고 적어놨다. 그렇다면 사실 내가 신입이어도 지원할 자격은 있다. 그러나 2년 이상 경험은 있어야한다. 컴퓨터 공학을 전공 했다면 가능했을 일이다. 자격요건에 있는 저 모든 경험을 하려면 사실 2년도 부족해 보인다.
Java에 익숙하고 Spring boot,JPA 대한 경험, spring boot는 JAVA의 최신 프레임워크이며 java 개발을 편하게 하는 도구이다. 교육과정에서도 후반에 spring을 사용한다. 그때 Spring을 경험을 할수있지만 JPA, spring boot는 그 보다 최신이다. 따로 공부해야한다.
RDBMS에대한 이해와 설계&개발 경험, 학원 교육에서 배웠던 ORACLE 같은 것이다. 그러나 아쉽게도 ORACLE은 예시에 없다. ORACLE을 쓰는곳이 많지는 않다. 다른 RDBMS(특히 Mysql) 을 경험 해봐야 할것이다. 그리고 이해와 모델 설계, 개발 경험을 묻고있다. 데이터 구조를 어떻게 짤것인지 모델들과 모델들의 관계 등 설계에 대한 공부도 역시 중요하다.
AWS의 각종 기능들과 Docker , 서버 구축, 관리를 위한 도구들이다. 대부분의 회사에서 Docker 와 AWS를 사용중이다. 이또한 서버 개발자라면 필수로 알아야 할듯하다.
이거만해도 벅차고 우대사항은 사실 나도 잘 모르겠으니 다음 채용공고로 패스 하도록하자.
여긴 더 길어보인다. 그러나 다행히 2년이상 경험은 없다. 그러나 2년 이상의 스펙은 여전하다.
하나의 프로그래밍언어를 능숙하게 사용, JAVA를 잘하면 된다 라는말이다. 내가 어떤 개발자가 될지에 따라 다르지만 결국 그 언어를 잘하면 된다. 난 이부분이 가장 필수적이고 제일 중요하다고 판단 하고있다. 이것은 또 나중에 설명하도록 하겠다.
자료구조,알고리즘,데이터베이스,네트워크 기초지식, 이게 컴퓨터 공학에서 배우는 내용들이다. 이 부분이 두번째로 중요하다고 생각한다. 컴퓨터 공학 지식은 중요하지만 비전공자 출신들은 이런 컴퓨터 공학에 대한 기초가 없다. 그리고 면접자들은 그것을 알고있다. 면접자들이 이미 알고있는 약점은 어쩔수없이 보완해야한다. 이것 역시 나중에 설명을 더하려한다.
그외 3가지 자격요건들은 이력서 혹은 면접 자리에서 나를 잘 포장하면 되는것들이다.
그러나 사용하는 도구들과 우대사항에 있는 내용들을 보니 아까와 어느정도 비슷한부분이있다.
우선 Spring boot 를 사용하고 AWS 를 사용한다. 그리고 관계형 데이터베이스(RDBMS) 얘기가 또 나온다. 이것들은 서버개발자로서 필수로 공부해야할 내용이 아닌가 싶다.
마지막으로 하나를 더 보자면 2년 이상의 java 경험 or 지식을 요구하고
또 OS,Network 의 "컴퓨터 공학 지식"이 나온다.
그리고 또 AWS , Docker 경험이 나오고 DB에대한 이해와 경험이나온다.
지금까지 3군데의 공고를 살펴본결과 가장 필수적인것들만 정리하자면
1. JAVA를 2년 수준으로 잘해야한다. + Spring boot,JPA 를 다뤄야 한다.
2. 컴퓨터 공학 지식이 있어야한다.
3. AWS ,Docker 를 쓸줄 알아야한다.
4. DB 설계에 대한 기본적 이해와 경험이 있어야한다.
이 많은것들이 다 필수적인 스펙이고 그외로도 필요로 하는 스펙이 있으니 공부 할 분량이 어마어마 할것이다. 아무래도 중요한 데이터를 다루는게 서버,백엔드 개발자이기 때문에 그만한 경력과 경험을 필요로 하는것같다. 이모든것을 언제 다하지? 하는 막막함이 느껴질것이라 생각한다. 하지만 현실을 받아들이고 차근 차근 하나하나 습득해 가는 목표를 가지길 바란다.