IT 개발자가되려면 총정리

IT 개발자가되려면 총정리. 13년 경력의 it 개발자가 말하는 it 분야 개발자 되는 방법. 현업에 있는 개발자다. 현재 약 13년정도 넘는 경력을 가지고 있다. 나 같은경우 Frontend 쪽에서 안드로이드, 웹앱을 하다Backend에서 서버를 개발 및 퍼블리싱하고,이후, 빅데이터 처리 및 MR 분야에 일을 하고 있다.

 

나름 직장에선 인정받고 적지않은 페이를 받고 있다. 현재 안정된 직장이 있고, 또는 자신의 분야와 가치관이 맞는 분들은 그리 맞지 않는 글이다. 다만 아직 취업을 못했거나, 또는 이분야에 관심이 있는 분들은 도움이 되길 바란다. 주제는 개발자가 되는방법, IT 자신의 테크를 타는 방법, 좋은회사 가는방법...이외에 잡다한 팁으로 구성하려고한다.

 

이 직업의 장점을 말하자면, 일단 이 직업군으로 편성된분이라면 일이 넘쳐흐른다. 시장에서 원하는 사람도 무척많고,그리고, 캐바캐지만 페이도 실력에따라 매우 높습다. 한마디로 굶어 죽지는 않는다... 다만 딱 굶어 죽지는 않을만큼만 준다. 그리고 큰돈을 만지려면 경험도 중요하지만, 어느정도의 재능이 필요하다. (이건 어떤분야든 비슷할것이다.)그래도 재능보단 경험이 더크게 작용하며(특히 대한민국에선), 일정 시간이 지나면, 많은 페이를 받을 수 있다.

 

먼저 개발자가 되는 방법에 가장 쉬운방법은 컴퓨터, 전산, 또는 IT관련 학과에 대학교를 입학하는 방법이다. 아무래도 대한민국에서 직업을 가장 빠르게 가지는 방법은 대학교에서 정해진 커리큘럼에 맞추어서 공부하고, 교수들에게 추천받아 입사하는게 지름길이다. 다만 이길은 너무도 많은 시간 [3~4년] 이 필요하고, 본인이 관심과 흥미가 깊지않으면, 교수님의 추천도 받기 힘들고, 자신의 직업에 대한 회의감도 많이 느낀다다.

 

다른 방법은 좀 힘들지만 독학하는 방법이 있다. (요즘 시대에 통한다.) 쿼리큘럼 이런거를 짜는거보단 자신이 무엇을 만들겠다 (ex- 테트리스, 채팅 프로그램, 또는 App) 결심하고 이것에 필요한 부분들을 구글링, 책을 통해 필요한 부분을 습득하고, 자신의 프로젝트를 만들어 어느곳이든 런칭을 하든 소개를 하든 일반 유저들이 쓰게끔 하고 계속 유지 보수성으로 일을 하다보면, 어느 순간 자신이 개발자가 된것을 알 수 있다.

 

물론 이후에 여러 스타트업이든 초창기회사에 면접을 통해 입사하여 좀더 자신의 실력을 갈고 닦을 수도 있다. 세번째 방법으로는 여러 교육기간 (나때는 IT교육이 꽤 많았는데 최근에 문과 학생들도 이런 기회를 통해 개발자가되는것을 확인 할 수 있었다) 를 통해 교육을 듣고, 취업을 한 후에 개발관련 업무를 하면서 개발자가 되는 방법이 있다. 개인적으로 이 방법도 나쁘지 않지만.. 단지 자신이 흥미가 있거나 재밌어하는일은 못할 가능성이 매우 크다.

 

개인적으로 두번째 독학 방법을 하되, 처음에는 정말 쉬운것부터 차근 차근 익혀보는게 나쁘지 않다. 예를들어 파이썬(개발언어)를 활용해서 계산기 만들기 또는 자바로 만드는 채팅프로그램 등을 프로젝트를 진행하면서, 개념을 천천히 익히 면서 재미를 붙여가는것을 추천한다.

 

그럼 처음은 어떻게 시작하는가? 이 부분은 여러분이 영어 또는 다른 언어를 처음 배우는 것과 똑같이 시작한다. 개발자는 자신이 언어를 선택해서 그 언어에 맞추어 개발을 할 수가 있다. 대표적으로 C,JAVA,PYTHON,NODE 등등이 있다. 아무 언어를 해도 상관은 없지만, 초심자는 파이썬을 추천한다.

 

처음부터 논리 그리고 복잡한 개념은 접근도 쉽지않고 어렵다. 파이썬은 간단하고, 배우기도 어렵지 않다. 강력추천한다. 또한 향후 취업 또는 스타트업에서 많이 쓰이는 언어다. (물론 대한민국의 대부분은 JAVA를 많이 씁지만 초반에 하기엔 그리 쉬운언어는 아니다.) 구글에 파이썬의 기초라고 검색만 해도 수십개의 포스팅된 글이 뜬다. 심심할때 처음은 10분 20분만 해보다가 (여기서 중요한건 꾸준히 해야 한다.) 나중에 점점 재미가 있다면 시간을 조금씩 늘리며, 하길 추천한다.

 

- 기본기와 프론트

 

알다싶이 어떤 분야든 기초는 필수다. 물론 기초없이 그냥 휙휙 넘겨가며 개발만 구글링으로 해도 사실 왠만한건 다 구현할수 있는 정보화 시대이지만, 실제 자신이 특정한 모듈(어딘가를 로그인 할때 인증하는 모듈)을 설계하거나 개발할때 이 기초가 있는 사람의 개발스킬이나 일 하는 자세가 매우 다르다. 또한 어떤 기업이든(스타트업 or 대기업 or 중견기업) 이 기초는 어디서든 본다. 무조건적으로 틈틈히 공부하길 바란다. 그럼 기초는 무엇이 있냐? 여러가지로 나뉘지만 내가 생각해본 기초는 일단

 

1. 자료구조

 

2. 알고리즘

 

3. 이산수학

 

4. OS에 대한 기초지식

 

5. 리눅스에 대한 기초지식 이다.

 

1번은 너가 쓰는 컴퓨터가 데이터를 저장할때 어떤 방식으로 저장하는가? 에 대해서 알려주며, 2번은 너가 개발을 할때 10가지의 방법이 있다면, 가장 효율적으로 개발하는 방법을 찾아주며, 3번은 2번을 구성할때 기초지식이 되며, 4번은 너가 개발한 내용이 실제 OS에 어떤 영향을 미치며, 어떻게 돌아가는지 알게되며, 5번은 개발자라면 피할수 없게 기본적으로 알게된다. 이 기본기중 가장 시급한 면은 1,2번이다.

 

특히 2번은 괜찮은 중소기업 이상부터는 모두 입사때부터 코딩(개발자)시험으로 체크하는 부분으로 입사를 위해선 필수적으로 공부해야 한다. 사실 1,2,3,4,5번 전부 글 하나로는 세세히 설명을 할 수가 없다. 수많은 석학들이 블로깅을 한 글도 많고, 서적도 많으니 직접찾아가면서 챙기면된다. 이 기초는 게속 주기적으로 공부해야 한다. 개발자가 되서도 끊임 없이 되새김질하며, 배워야한다. 자 기본기는 이정도로 정리하고, 이제 테크에 대해서 이야기를 해볼까?? 이 분야는 크게 두가지 테크가 존재한다.

 

1. 프론트엔드

 

2. 백엔드

 

1번은 웹사이트의 외형을 만들고 앞단에 너가 실제로 보는 모든것들을 개발하는것을 의미 한다. 또한 클라이언트 프로그램을 의미 하는 바로 많이 쓰이기도 한다. 직업적으로 웹개발자, 자바 웹 프로그래머, 웹사이트 개발자, 웹앱 개발자 등등으로 세분화 된다. 최근 이 분야는 다양한 프레임워크가 등장하며, 효율적으로 개발하고, 커리어를 만들어가 용이하게 시장이 변경되고 있다. 물론 이 분야는 정말 핵핵 힘들다. 특히 초반에는 익히기 쉽지만, 향후 프레임워크단까지 공부해서 점점 세부화 되가다보면 너무도 많은 view단과 컨트롤러단은 머리가 뽀개지는 고통을 동반하기도한다. 그래도 테크를 보자면..

 

 

로 나뉠수 있습니다. 먼저 저기에서 베이직에 시작하는 부분은 제가 말씀드린 내용으로 충분하다.시작은 HTML, CSS, Javascript 3가지를 배우는 것으로 시작한다. 개인적으로 한국에서 공부하기에 가장 쉽고 안정적으로 배울 수 있는 방법으로는 생활코딩이라는 홈페이지를 소개한다. (https://opentutorials.org/course/1)

 

간단하게 생활 코딩은  일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업이다.

 

HTML은 (https://opentutorials.org/course/3)

 

CSS은 (https://opentutorials.org/course/4)

 

JavaScript는 (https://opentutorials.org/course/743

 

- 백엔드

 

백엔드에 테크에 대해 설명 하겠다. Back-end는 영어 해석과 같이 뒤쪽에서 일어나는 모든일을 의미한다. 간단하게 웹사이트에서 글쓰기 또는 클릭등 모든 행동(이벤트)들은 뒤쪽 백엔드 서버에서 반응하고, 그에 따른 응답값을 내려주고 프론트에서 그 응답값에 맞추어 웹사이트에서 프론트엔드 개발자가 만든 개발 형식에 맞게 그려 주게된다.

 

그리고 현재 나는 이 테크 스택(빅데이터 - 현재는 Spark와 Kinesis를 합니다)에 머물러있다. 기본적으로 프론트 보단 많은 직업이 존재한다. 웹서버 개발자(restful,webserver), 모듈 개발자(미들웨어), 데이터 베이스 관련 직종(sql,리뷰어), 빅데이터(하둡전문가, 스파크전문가), 프레임워크 개발자 등등 다양한 직종이 있다. 여러분들이 Pay가 쎄다고 느끼는 개발자들은 이쪽 분야에 통달한 전문가들이 대부분이다.

 

Back-end는 기본적으로 국내에서는 신입에게 해당일을 맡기지 않는다. 또한 업무를 하더라도 곁다리 위주만하지 코어적인 업무를 하지 않는다. 이유는 이쪽은 거의 경험의 유무와 기존 커리어가 얼마나 탄탄한지가 굉장히 중요하기 때문에 깊이있게 배우기 쉽지않다.

 

또한 배우더라도 멘토의 유무가 절대적인 분야이기도 하다. 좀 돌려 말하자면 좋은 회사에서 기본기부터 차근히 배우면서 기회가 생겼을때 꼭 지원해서 좋은 멘토 아래에서 탄탄하게 배우길 권장한다. 그래도 혼자서 해당 기술를 공부하는건 매우매우 중요하다. 사실 내가 시니어에 해당하는 엔지니어이기 때문에 쥬니어가 이쪽 분야에 관심도 높고 혼자서라도 공부하면 뭐라도 가르쳐 주고 싶은게 거의 대부분 시니어들의 공통점이다. 일단 그림을 보면 테크는 아래와 같다.(이 그림에 모든 스택이 나온건아니다.)

조금 자세히 설명하겠다. 처음 Back-end 아래로 가면, 파란색 동그라미가 보일거고 갈래길이 나뉘는걸 볼수 있다. 기본적으로 이때가 언어를 통한 공부라고 보면된다. 해당그림은 Ruby,Node,Python,Php만 스택이 자세히 나왔고, C#, JAVA, GO는 좀 간단하게만 나온것을 알수 있다. 

 

내가 파이썬을 추천한 이유는 많은 스타트업 또는 프로토타입을 만들고 간단하게 무언가를 만들때 이보다 접근성있는 언어가 많지 않기 때문에 추천했지만, (초반에 개념에 질리지 않게 하기위해서) 사실 대한민국은 JAVA 세상이다. 아니 사실 대규모 외국계 기업 또한 JAVA를 많이 쓰는 편이다. 정말 요걸로 대한민국에서 먹고 살겠다하면, 자바 기초부터 공부하길 추천한다.

 

자바는 (https://opentutorials.org/course/1223) 요기서 일단 배우길 추천하며, 이후 기본기를 어느정도 익힌후에 스프링 프레임워크를 배우길 추천한다. 대한민국의 모든 자바로 만들어진 웹서비스, 또는 프로그램 또는 게임 등등 대부분 스프링 프레임워크를 쓴다. (여기서 프레임워크를 모르겠다면...

 https://terms.naver.com/entry.nhn?docId=2837536&cid=40942&categoryId=32837)

 

스프링은 정말 정말 어렵더라도 토비 스프링 책(http://book.naver.com/bookdb/book_detail.nhn?bid=7006516) 으로 공부하길 바란다.

 

시간이 정말 오래걸려도 상관없으니(정말 어려워서) 정독을 하길 권장한다. 3.1 기준으로 되어있어서 현재 버전이랑 많이 안맞지만. 상관없다. 토비의 스프링은 이 프레임워크가 어떻게 탄생했고, 왜 개발자들이 이런걸 개발했으며, 어떤 철학으로 프레임워크가 진행됬는지 알 수 있다.

 

반드시 놓치지말고 꼭 정독하길 추천한다. 이외에 추천언어는 Node,Python를 추천한다다. 쉽고 개념을 이해하기가 JAVA보다는 쉽다. 이렇게 언어에 대해 어느정도(WAS를 만들정도)로 공부했다면, 다음 스택인 동그라미를 보면 Web Server,Restful APIS,MVC등 공부해서 뒷단에 데이터가 반응(리스폰스) 되는 부분들을 배우고 이후, 스토리지(DB쪽)에 대해 딥하게 배우면된다.

 

다음 동그라미는 서치엔진에 관한건데 배워도 되고 안배워도 무관일거같다. 사실 여기까지 기술 스택을 쌓은분이 데이터 베이스쪽 전문가로 좀더 deep하게 커리어를 선택할 수 있고 또는 Web Gateway쪽 또는 빅데이터 처리, 또는 빅데이터 전문가등의 길로 커리어를 선택할 수 있다고 생각한다. 

 

내가 위의 스택을 쌓는데 걸린 기간은 약 6년 정도다. 이후 로깅을 하는 모듈을 건드려보다 빅데이터 쪽에 관심이 생겼고, 데이터를 어떻게 처리하고, 어떻게 흘러가고 어떻게 하면 저비용은 고효율을 뽑아낼수 있을지에 대해 개발하게 되었다.

 

또한 개발이후 충분한보상(PAY)를 얻게 되었고, 이 커리어 스택을 밟고 있다. 분명 이글은 그리 쉽지많은 않은 글이다. 향후 너가 이길에서 백엔드로 갈때 참고는 될만한 선배의 경험담같은 글이라고 보면된다.(내길이 정답이 아니며, 수많은 길이 있다.)

 

- IT 좋은 회사 가는 방법

 

IT 분야에서 좋은 회사란 무엇일까? 높은연봉?, 좋은복지?, 회사문화? 물론 셋다 정말 중요하지만, 내가 1순위로 보는건 회사의 진행되는 프로젝트라고 본다. 진행되는 프로젝트가 중요한 이유는 해당 프로젝트에 투입되어 겪었던 모든 경험들이 나 자신의 포트폴리오[이직시]와 스킬의 업그레이드로 치환되며, 일을 하며 얻는 유무형의 자산(인맥, 코드...)도 너무도 크다.

 

이 때문에 나는 미래를 봤을때 프로젝트에서 내가 무엇을 얻을지 각을 재는 것이 굉장히 중요하다고 본다. 물론 사회 초년생은 어떤 프로젝트가 좋은지 전혀 판단을 할수도 없기 때문에, 몇가지 기준점을 주려고 한다. 내 말이 정답은 아니지만 최대한 기준에 상응 하는 회사는 들어가서 힘들지라도 남는것은 많을것이다.

 

1. 트랜드

무슨 트랜드를 말하는걸까? 이 업계는 트랜드가 너무나도 빠르게 변하기 때문에 이말은 어찌보면 어불성설이긴하지만 이 트랜드가 너무 뒤쳐진 회사는 피하라는 이야기를 하고 싶다. 예를들어 너무도 오래된 솔루션을 유지보수하는 기업, 클라우드 환경이아닌 온프레미스 환경의 소규모 기업 생소한 언어나 생소한 프레임워크를 쓰는기업 등은 내 기준으로는 미래가치를 따져봤을때 돈을 많이 줘도 가기 싫은 회사일거 같다.

 

반대로 이야기하자면 현재 기준으로 크게 뒤쳐지지 않은 트랜드(리뉴얼)의 솔루션을 보유한기업, 클라우드 환경의 인서비스를 제공하는 기업, 레퍼런스가 많은 언어나 프레임워크를 사용하는기업 (Java-Spring, Node-Express,react 등) 은 그래도 배울점이 많은 프로젝트라고 보면될거같다.

 

그렇다면 트랜드는 어디서보는가? 홈페이지에 있는 보유기술? 아니다. 구인란에 보면 필요한 기술스택등이 나와있는데 그것으로 판단하는 기술을 가져야 한다. 물론 처음엔 안되지만 많은 기업의 구인란과 인터뷰를 보면 결국은 교집합으로 묶이는 기술들과 솔루션 그리고 프레임워크가 있다. 이것은 경험적인 측면이라 게속 본인이 원하는 트랜드를 찾아 탐색하는 자세가 필요하다.

 

2. 적당한 규모

프로젝트의 규모는 작으면 작을수록 너와 같이 개발할 개발자가 적으며, 혼자 개고생을 도맡기 때문에 비추중에 비추다. 심지어 규모가 작은데 풀스택을 가르켜준다하는 회사도 있는데 내가 봤을때 회사에 막상들어가면, 풀스택으로 들어오신거죠? 이거이거 다해주세요 할가능성이 농후 그자체다.

 

(정작 아무것도 모르는데) 적당한 규모는 7~9명의 선임 개발자들이 프로젝트를 진행하며, 특정 모듈 또는 특정 파트를 개발지원하는 부분의 채용이라면 Best일거같다. 천리길도 한걸음 부터죠다 천천히 해보자.

 

3. 대기업

사실 1,2번은 대기업이 아닌 중소기업 또는 중견기업을 바라보는 입장이라면, 3번 대기업은 1,2번의 해당하는 프로젝트가 왠만해선 있다.(사실 많다.) 대기업은 SAMSUNG, LG, SKT, KT 등을 이야기하며, 또는 다른관점으론 Naver,카카오 등을 볼수도 있다.

 

이곳에 공채로 가는게 어찌보면 Best Of Best다. 대기업에서는 기본적으로 수백 수천개의 프로젝트가 동시에 진행되며, 자신의 역량에 맞는 프로젝트에 포함되기가 그래도 쉬운편이다. 

 

4. 몇가지 Tip

 

인터뷰는 그냥 겁내지말고 본다. (떨어지면 떨어지는대로 경험이 된다.) 알고리즘 공부 많이한다. (대부분 코딩테스트을 알고리즘으로 보는 회사가 많다. 대기업도 마찬가지다.) 뻥치지말기. (경력 뻥치기, 포트폴리오 뻥치기 면접관들 다안다. 뻥카 쳐봤자 손해니 뻥치지말고 진실되게 현재 실력만 이야기하면서 인터뷰 보자.) 자신감은 좋지만 겸손하기. (면접관입장에선 신입의 자신감은 과하지만 않으면 좋게보는편이 꽤 많지만, 그래도 항상 겸손하게 이야기한다.)

 

5. 어느 정도의 결론

 

1,2번에 최대한 근접한 회사이며, 자신이 원하는 분야와 교집합이 상당히 많다면 지원해봐도 나쁘지 않을거 같다. 또한 3번의 공채들은 되든 안되든 한번 지원해보고 어떤점이 부족한지 반드시 느껴보길 바란다. 그 경험 또한 매우 소중하다. 4번은 내가 이직을 준비하거나 또는 인터뷰를 하면서 느낀점을 적었으며, 특히 뻥치지말자는(자신이 한것도 아닌데 한척, 또는 기술스택이 엄청나게 많게 부풀리기) 반드시 지키면 좋은 결과가 있을거라고 본다.

댓글

Designed by JB FACTORY