IT 취업 컨설팅
[질문]
아래 3개 개발자 영역을 다 배우고 싶습니다
그런데 시간적 여유가 없고 정보가 부족하다 보니까
웹 개발자 취준생이긴 한데 실력이 안 늘어요.
1. 각 개발 별로 현업에서 알고 있어야 하는 정보나 이런 건 꼭 배웠으면 하는 것
2. 기술 스택을 업할 수 있는 가이드 (실력 쌓기 좋은 책 추천이나)
1) 자바 스프링 웹 개발자
- 스프링 부트도 배워야 하나요?
2) 안드로이드 코틀린 앱 개발자
3) 프런트엔드 개발자
- 리액트나 뷰 중에서 무엇이 현업에서 많이 쓰이고 배우길 추천하나요?
[답변]
개발 영역에 이제 막 뛰어드셔서 잘 모르시고 그래서 혼자 공부하기 위해 인터넷으로 검색을 하시는 분들 중에 90% 이상은 국비 지원 교육 사이트를 접하시게 됩니다. 그리고 또 생각보다 많은 분들이 이 교육을 수강하게 됩니다. 누구는 이게 좋다, 또 누구는 저게 좋다 해서 어떻게 시작해야 될지도 모르겠는데 이 교육은 뭔가 있어 보이는데 공짜(국비 지원해주니깐...)에 취업 연계까지 해준다고 하니 오히려 이 수업을 듣지 않는 게 이상하게 생각되니 당연한 선택입니다.
자! 그래서 이 교육을 어떤 기관에서 수강을 하는 것과는 관계없이 어쨌든 접수를 하시게 되면 배우게 되는 내용은 거의 정해져 있습니다
.
- 화면 개발 : HTML or JSP, JavaScript
- DB : 오라클 or MySQL, mybatis
- 스프링
- 웹앱/다이나믹/하이브리드 웹 or 앱
- 쇼핑몰 팀 프로젝트(주요 기능 : 회원관리, 게시판, 관리자 페이지, 댓글, 첨부파일 등)
그리고 학원을 다니시거나 혼자 공부하시는 분들은 스프링이라는 거에 굉장히 많은 시간을 할애하시는 경우가 많습니다. 그런데 개인적으로 시간과 돈이 여유가 있으시지 않으시다면 그럴 필요는 없다고 생각합니다. 스프링이 중요하지 않아서가 아닙니다. 정말 너무너무 중요하고 거의 모든 개발 영역에서 스프링 방식을 사용하고 있습니다. 그런데 거의 모든 개발 영역에서 스프링 방식으로 개발을 하고 있다는 점이 어떻게 보면 함정입니다. 무슨 말이냐면 이미 스프링은 너무나도 당연한 것이 되어 버려서 본인이 굳이 일부러 사용하지 않으려고 해도, 그리고 스프링을 아예 모른다고 해도 무조건 사용하게 되어 있기 때문입니다. 안드로이드 스튜디오를 설치해서 간단한 안드로이드 어플(가령 폰에 Hello world라는 글자를 띄우는 거...)을 만들어 보셨다면 이미 스프링 방식으로 개발을 해보신 겁니다.
스프링 관련 책 중에 토비의 스프링이라는 엄청난 두께의 책이 있는데 정말 엄청난 열정과 의지로 이 책을 사지만 완독은 기대도 하지 않고, 꾸준히 보시는 분이 얼마나 계실까요? 정말 내용 많은데 그 많은 내용 다 사용하지도 않고, 취업을 하게 되면 그 회사에 맞는 환경에 필요한 내용만 알아도 충분합니다. 스프링이라는 환경은 본인이 직접 구성해야 사용 가능한 환경이라기보다는 그냥 너무 당연해서 나도 인식하지 못한 사이에 사용하고 있는 거라고 생각하셔도 됩니다. 단지 내가 속한 팀/조직/회사에서 사용하고 있는 프로그램 혹은 기술에 따라서 약간의 선택이 필요할 뿐입니다. 우리가 자동차를 몰고 다니고 매일 스마트폰을 사용한다고 해서 자동차가 움직이는 원리나 스마트폰을 동작하게 만드는 모든 기술들을 알 필요가 없듯이 스프링이라는 것을 모두 이해할 필요는 없습니다. 물론 이해하면 당연히 좋고, 꾸준한 공부는 무조건 필수입니다. 단지 본인의 현재 상황이 이걸 다 공부하고 있을 만큼 시간/돈/나이적으로 여유가 없어서 말씀드리는 겁니다.
과연 누가 1년 동안 취업도 하지 않고, 취업 준비만 하려고 할 것이며, 한다고 해도 그동안의 비용은 어떻게 할 것이며, 그동안 흐르는 시간과 늘어나는 내 나이는 어떻게 할 겁니까? 뭐 다 감수하겠다고 하더라도 결국 혼자 혹은 학원에서 3개월, 6개월 공부해도 실제 회사에 가면 결국 다시 배워야 되고, 회사 가면 금방 배우는 기초적인 내용을 보는 시간만 늘어날 뿐입니다. 스프링 열심히 공부해도 결국 스프링이 뭔지 감도 안 잡히고, 혼자서는 프로젝트도 만들지 못하며, 검색 없이는 단 한 줄의 코딩도 못합니다.
스프링 필수이고, 필수를 넘어 그냥 표준이라고 생각하셔도 됩니다. 하지만 그렇다고 해서 목을 매고 배우려고 할 필요는 없다고 봅니다.
안드로이드 개발
안드로이드 스튜디오를 설치하시고 프로젝트를 만드시려고 하면 설정 중에 자바와 코틀린 중에 하나를 선택하셔야 됩니다. 저는 자바 개발자라서 실제 개발은 무조건 자바로 합니다. 그런데 종종 대학생 분들이 코틀린 관련 수업이나 세미나, 혹은 질문을 하시는 경우가 있어서 살짝 건드려는 봤습니다. 자바와 코틀린은 분명 문법적으로 다르기 때문에 공부가 필요하지만 둘 중에 하나라도 익숙한 언어가 있으시다면 다른 한쪽 언어로 안드로이드 개발은 시간이 좀 더 걸려서 그렇지 할 수 있습니다. 문제는 안드로이드 개발을 시작하시려고 할 때 자바와 코틀린 중에 무엇으로 시작을 해야 할지 선택을 해야 되는 겁니다.
정답은 없습니다. 어차피 취업을 하시려는 거잖아요?
그럼 어느 회사에 취업을 하시게 될 거고, 그 회사에서 자바로 안드로이드 어플을 개발하라고 하면 자바를 해야 되고, 코틀린으로 하라고 하면 코틀린으로 해야 됩니다. 본인이 가고 싶은 회사가 있다면 그 회사에서 코틀린을 요구하면 난 코틀린을 할 줄 알아야 되고, 자바를 요구하면 자바를 할 줄 알아야 됩니다. 신기술이 나온다고 모든 회사들이 바로 신기술로 넘어가지는 않습니다.
신제품이 나오면 소비자들은 새로 나온 것으로 재빠르게 이동합니다. 돈이 많이 들고 나중에 그 신제품에 가격은 지금보다는 떨어질 텐데도 말입니다. 하지만 회사는 더 좋은 기술이 나와도 그 기술을 바로 사용하지 않고, 혹은 아예 사용하지 않기도 합니다.
도대체 왜!?
이건 회사가 아닌 개인들도 마찬가지인데... 공부나 일이 아니라 내가 좋아하는 거(취미, 유흥, 놀이 등등)에 대해서는 누가 하라고 하지 않아도 열심히 하고, 돈이 많이 들어도 굳이 그 큰돈을 소비합니다. 하지만 내가 하고 싶지 않은 데도 억지로 하는 거(대표적으로 공부와 일)에 대해서는 기존에 하던 거에서 뭔가가 변해버리면 굉장한 반발과 짜증, 스트레스가 발생합니다. 예를 들어 내가 수험생이고, 고시생인데 교육 과정이 바뀌거나 지원 자격이 바뀌고, 공부할 내용이 바뀌거나 추가되면 막 여기저기에서 들고일어납니다.
회사도 마찬가지입니다. 회사가 유지되는 건 그 회사의 주력 분야와 기술, 인력이 있기 때문입니다. 그런데 갑자기 엄청나게 좋은 신기술이 나왔다고 해서 기존에 잘하는 걸 다 포기하고 갑자기 알지도 못하는 신기술로 넘어가려고 할까요? 할 수 있다면 기존 방식을 유지하려고 하고, 넘어가더라도 굉장히 많은 시간과 비용을 필요로 하기 때문에 진행이 더디거나 새로운 걸로 넘어가지 않는 겁니다.
그런 회사에 취업을 하려고 하는 취준생에 입장에서는 그들의 방식에 맞추는 거 말고는 방법이 없습니다. 자바? 코틀린? 정답은 없습니다. 본인이 어디로 가고, 뭘 하느냐에 따라 선택이 필요할 뿐입니다.
리액트나 스위프트, nodeJS 등도 마찬가지입니다.
새로운 기술 정말 많고, 계속 업데이트되어서 계속 공부하고 신경 쓰지 않으면 어느 순간 따라가기 버거울 수 있습니다. 그럼 다 공부해야 되나??? 절대 아닙니다. 일단 위에서 말한 것처럼 본인이 일하게 될 회사에서 하라는 걸 결국 하게 됩니다. 만약 이걸 논외로 한다면 본인이 무엇을 하고 싶은지 혹은 어떤 걸 할 계획인지에 따라서 선택을 하셔야 됩니다.
정말 극단적으로 간단한 예시를 들겠습니다
나는 웹 개발만 하고 싶다
나는 어플 개발만 하고 싶다
나는 웹과 어플 개발을 같이 하고 싶다
선택은 본인이 하시거나 관련 회사에 취업을 하시면 그 회사에 맞게 강제적으로 선택하게 될 겁니다.
그런데 전적으로 본인의 의사에 따라 선택을 하셔도 결국 또 선택의 연속일 뿐입니다.
[웹 개발만 하고 싶다]
HTML, JSP, PHP, ASP 등 어떤 걸로 개발할지 선택하셔야 되고, JavaScript나 CSS 등은 필수로 사용하게 되는 경우가 대부분입니다. 이때 부트스트랩을 많이 접하시게 되는데 이게 필수는 아닙니다. 단지 선택할 수 있는 여러 대안들 중에 많은 사람들이 사용하고 많은 교육 기관이나 회사에서 사용하고 있을 뿐입니다. 부트스트랩 사용하지 않아도 웹 개발 가능합니다.
이때 개념적으로 헷갈리는 게 있습니다.
프런트엔드? 백엔드?
웹 개발은 프런트 엔드라고 말씀하시는 분이 많이 계시고, 개인적인 생각으로는 틀린 말은 아닌데 100% 맞다고 생각하지도 않습니다. 프런트와 백엔드는 간단하게 눈에 보이는 것을 개발하는 것과 그렇지 않은 것을 개발하는 것으로 구분하시면 이해가 쉬울 겁니다.
웹 페이지를 만든다, 스마트폰에 나오는 화면을 만든다, 윈도/맥에 뜨는 프로그램의 GUI를 만든다...
이런 걸 프런트 엔드 개발이라고 말할 수 있는데 그럼 과연 이것만 만들면 될까요? 화면에 사진과 버튼, 글자만 있어서는 온전한 하나의 홈페이지, 앱, 프로그램이라고 말할 수 없습니다. '기능이 동작'을 해야죠...
로그인도 되고, 상품 검색도 되고, 저장도 되고, 수정, 삭제도 돼야 합니다. 이런 기능들의 구현이 백엔드 개발이 되는 겁니다. 즉, 프런트 개발을 주력으로 하시더라도 결국 백엔드 개발도 어느 정도느 할 줄 알아야 내가 편합니다.
[어플 개발만 하고 싶다]
당연하지만 또 선택이 필요합니다. 안드로이드 앱만 만들 건지 IOS 앱만 만들 건지 아니면 둘 다 만들 건지... 뭘 선택하느냐에 따라 내가 가지고 있는 노트북으로 개발을 할 수도 있고 그렇지 않을 수도 있습니다. 안드로이드는 윈도우와 맥에서 개발이 가능하지만 IOS 개발은 맥에서만 가능하니깐요...
만약 안드로이드 어플 개발만 하신다고 하면 또 선택이 필요합니다. 자바로 할지, 코틀린으로 할지... 뭐가 더 좋냐고요?? 그런 거 없습니다. 내가 다니는 회사에서 하라는 걸로 해야 할 뿐입니다. 내가 원하는 걸로 하고 싶으시다면?? 사업을 하시거나 평생 공부만 하시면 됩니다.
[앱과 웹 모두 개발하고 싶다]
앱은 스마트폰, 웹은 PC와 스마트폰, 게다가 앱은 또다시 안드로이드와 IOS에서 구동이 되어야 합니다. 외관은 같을 수 있지만 안을 까 보면 완전히 다른 구성과 내용들인데 이 모든 걸 하겠다고 하면 당연하지만 어떤 방식으로 할지 또 선택이 필요합니다.
가장 쉽게 생각할 수 있는 방법은 안드로이드 앱은 윈도에서 개발하고, IOS 앱은 맥에서 개발하고, 웹은 내가 편한 환경에서 개발하면 됩니다. 그러려면 나는 맥은 필수로 가지고 있어야 되고, 윈도우는 선택입니다. 돈 많고, 그럴 의향이 있으면 윈도우와 맥 모두 소유하는 건 어려운 일이 아닙니다.
아니면 하나의 OS에서(윈도우 or IOS)에서 앱(안드로이드 + IOS)과 웹에서 모두 동작할 수 있는 방식으로 개발하는 방법도 있습니다. 여기까지만 읽으면 무조건 이 방법이 좋다고 생각합니다. 하지만 그만큼의 공부도 필요하고 분명 이것도 만능은 아닙니다. 단점이 있어서 포기해야 되는 것들도 있습니다. 결국 답은 없고 내 상황에 맞는 선택이 필요할 뿐입니다.
말씀하신 리액트는 이 경우에 도움이 되는 선택들 중에 하나입니다. 리액트 말고도 스위프트도 있고, 다 무시하고 그냥 기존 웹 개발 방식으로 개발하는 방법도 있습니다.
그럼 그중에서 어떤 걸 추천하냐고요???
제가 오늘 결론적으로 말씀드리고 싶은 건 계속 말한 내용이지만 답은 없다입니다.
모든 상황에 퍼펙트하게 맞는 방식의 개발은 없습니다. 각각 장단점이 있어서 상황에 맞는 선택이 필요할 분입니다. 어떤 건 코드가 짧다고 하고, 어떤 건 속도가 느리다고도 하고, 어떤 건 뭐가 안된다고 합니다. 이런 모든 요소들을 파악하고 혹은 삽질해가면서 내가 돈을 벌 수 있게 해 줄 것들을 계속 익혀 나가야 됩니다.
책은 본인이 필요로 하는 분야의 기초 책이기만 하면 어떤 걸 사셔도 무방하고, 좀 익숙해지시면 책 구매하지 않아도 공부할 수 있습니다.
어차피 내용 거기서 거기이고, 책을 사서 공부한다고 해도 취업이 목적인 이상 그걸 내가 3개월, 6개월 뒤에도 사용할지 안 할지는 본인이 선택할 수 없습니다. 오히려 평생 사용 안 할 내용들이 더 많습니다. 그리고 책에 있는 내용은 인터넷에 다 있고, 오히려 인터넷에 있는 내용이 더 많고 나한테 더 많이 도움이 됩니다. 말씀드렸 듯이 책에는 내가 필요로 하지 않는 내용들이 더 많지만 인터넷에는 내가 필요로 하는 내용들만 찾아서 볼 수 있고, 검색을 못해서 못 찾는 거지 없지는 않기 때문입니다. 정말 감히 말씀드리는 데 기초 공부를 하시는 분들이 필요로로 하는 내용들은 인터넷에 99% 있습니다. 단지 검색을 못하시는 거고, 찾았다 해도 이게 내가 필요로 하는 건지 판단을 못하시고, 또 사용 방법을 모르실 뿐입니다.
물론 공부 방법이나 검색도 알아야 할 수 있는 거라서 그런 면에서는 책이나 학원이 도움이 될 수는 있습니다. 하지만 본인이 구매하게 될 책의 내용이나 학원의 수업 내용은 기초 중의 기초일 뿐입니다. 내가 완벽하게 이해하고 취업을 하실 생각은 안 하시는 게 좋습니다. 취업 전에 본인이 무엇을 아무리 많이 해봤든 회사 취업한 지 1~2개월 된 사람들보다 못합니다. 그래서 회사 들어가면 다시 배운다고 하는 겁니다. 내가 혼자서 무엇을 해봤고, 내가 학원에서 무엇을 배웠다고 말을 하셔도 면접관들 입장에서는 다 고만고만하고 거기서 거기입니다. 정말 잘하는 사람들은 더 좋은 회사에 간다는 거 다 알기 때문에 면접관들도 지원자들에게 큰 기대 안 합니다.