생활
백엔드 엔지니어 희망자입니다..
Django와 Node.js를 사용했는데 JAVA를 배우는게 좋을까요? 아니면 두 언어에 대한 역량을 키우는게 좋을까요? 배운다면 국비 교육이랑 온라인 강의 중에 뭐가 더 효율이 높을까요?
4개의 답변이 있어요!
흠.. 안녕하세요? 웹개발자입니다.
일단.. 조금씩은 다 해보는것은 매우 중요한 부분입니다. (그렇다고 이것저것 많이 알아야 된다는것은 아닙니다. 예를 들면, 서점에 가서 책을 골라서 구입하기전에 책에 어떤 내용이 있는지 빠르게 흘어보는 정도라고 생각하시면 됩니다.
Java 라고 생각하시면 Java 설치하고 helloWorld.java 만들어서 실행시켜서 원하는 결과가 나오도록 정도만 해도 됩니다. 하지만 Java 를 처음으로 배우는 개발자라면, 1부터 100까지 하나하나 배울 필요가 있지만, 다른 언어를 이미 알고 있는 사람은 적당한 선에 넘어가면 됩니다. 그러다 혹 Java 를 써봤는데 뭔가 괜찮은거 같고 좀더 알아보고 싶다면, 미니 프로젝트를 하나 만들면서 공부하면 됩니다. 또 좋은 방법은 본인이 이미 django / nodejs를 사용해서 만든 프로젝트를 똑같이 Java로 구현하는 것입니다. 그렇게 되면 일단, 이미 처리 로직 등에 대해서는 알고 있으니, 공부하는 목적인 Java 사용법에 집중할 수 있습니다.
지원하려는 회사의 사용 언어가 Java라면, 위의 단계로 만족하면 안됩니다. 저도 가끔 회사에서 개발자 면접을 보고있는데, 저는 면접자의 인적사항은 전혀 신경 쓰지 않습니다. 면접자가 제공하는 코드들 위주로 분석해서 파악하고, 그 사람의 수준을 바로 측정할수 있습니다. 뭔가 이력서에 프로젝트 이것저것 한것은 써있는데 코드확인 안되면 일단 저는 -50 부터 시작하는것 같습니다. (개발자는 코드 짜는 사람이고, 코드는 개발자의 전부라고 생각합니다.)
면접자가 얼마나 많은 언어를 사용할 수 있는지의 여부보다는, 면접자가 django 백엔드로 지원을 하였다면, django를 사용해서 얼마나 많은 프로젝트를 만들었는지 우선 확인합니다. 면접자의 github 에 방문했는데 Repositories 에 django-a-project, django-b-project, django-c-project, django-test-project, django-naver-api, django-kakao, django-load-test 이런식으로 리스트가 확인이 된다면 전 정말 이미 그 사람이 누군지도 모르겠지만, 75%는 이미 합격일것 같습니다. 그리고 코드리뷰를 통해서 좀더 확실하게 평가하고, 이에 대한 질문 등을 작성하여 면접시 질문하는경우도 있고, 안하는 경우도 있습니다.
"음.. 00씨, 제가 그 github 올리 A 프로젝트에서 이런걸 사용했던데 이것에 대해서 설명해주실수 있으세요? 또는 소셜 로그인을 사용하셨던데 혹시 소셜로그인 인증 절차가 어떻게 되는지 알고 계시나요? "
제 경험상 저렇게 1개의 언어로 이것저것 많이 만들어본 사람들은 이미 그 언어의 반 전문가라 거의 막힘없이 답변합니다.
그 후로는 면접자가 만든 프로젝트들을 리뷰할 때에는 코드들의 짜임새나 설계 등을 많이 확인합니다.
코드 분할은 적절한가
프로젝트의 설계에 특별한 부분이나 생각해서 만들었다는 느낌이 나는지
어떤어떤 라이브러리를 어떻게 사용했고, 변수나 함수, 파일이름 등의 Naming은 코드의 실제 동작에 어울리는지 등의 확인을 합니다.
제가 만약 지금 상태에서 다시 20대초반으로 돌아가서 개발자로 취업준비를 한다면, 잘 모르는 다른 언어에 공부보다는 내가 잘아는 언어로 1일에 1개 프로젝트 만들기나 너무 쉬우면 1주일 1프로젝트 만들기, 또는 유명한 서비스들 Clone 만들기(facebook, instagram, youtube 등) clone 만들기는 github 에 그냥 facebook_clone 이라고 치면 엄청나게 나옵니다. (제가 해보니 3700개 정도 나왔습니다.) 이 3700개가 나에게 리퍼런스가 되는것입니다. 별 많이 받은 repo 몇개 골라서 clone 받아서 하나씩 뜯어보고 실행해 보고, 거기서 사용하는 코드나 코드 구조, 파일 structure 등을 학습하거나 보고 자기의 facebook clone 에 적용하면 되는겁니다. (근데 복붙은 하지마세요.. 복붙하는 내용에 대해서 정말 많이 사용해서, 이건 그냥 보면 아는 코드라고 생각되시면 복붙하셔도 됩니다. 근데 그렇지 않고 좀 애매하게 안다고 생각되면 하나하나 쳐보는걸 추천드립니다. (현직에서도 개발자인데도 불구하고 영어 타자가 많이 빠르지 않은.. 오히려 좀.. 느린 분들이 간혹 있습니다.) 흠.. 모.. 여러가지 이유가 있겠지만(선척적 장애?), 저는 일단 일반 사람에 개발자라면 일단 타자가 빠르면 많이 유리하다고 생각됩니다. 어쨋든 직접 다른 사람의 코드를 하나하나 쳐보는것은 결코 시간낭비가 아니라는것을 말씀드리고 싶습니다. 그렇게 치고 사용하고 또 치다보면 어느세 코드는 제것이 됩니다. (그리고 일단 개발자들은 하루에 몇시간씩 키보드만 칩니다)
많이 많이 치세요.. 학교 다닐때 도서관 책에 있는 예제 일일히 다 치면서 익혔던것 같습니다. 언어마다 조금씩 다른언어에서는 사용하지 않는 키들이 있어서 쳐보는게 도움이 많이 됩니다. (PHP 를 처음 배웠을때 였는데, 전혀 하나도 모르는 상태에서 PHP 책을 3권정도 예제를 하나하나 치다보니, 이미 마지막 3권 째에는 대부분 코드도 그냥 눈으로 이해가 되고, 왠만한거 사용할 수 있겠다 싶어서 3권에서 끝내고 프로젝트 시작한 경험이 있습니다.
개발자는 키보드 치는 직업입니다. ctrl+c 나 ctrl+v 로 작업하는것이 아닙니다. ㅎㅎ 제가 회사의 다른 주니어 개발자들에게 어떤 코드 알려주고, 이거 한번 적용해보라고 하면, 정말 대부분이 그냥 긁어다가 붙여넣기 하는데.. 전 속으로 '저 정도면 그냥 치지...' 생각합니다. 모 이부분에 대해서는 개발자들마다 견해가 다를수도 있을것 같습니다.
주절주절 쓰다보니 내용이 길어졌는데,
혹시나, 취업 또는 이직 준비중이시라면, 사용하는 언어로 이것저것 많이 만들어 보세요...
백엔드면.. 꼭 알아야하는건 아니지만, AWS 같은 cloud 서비스에 대해서 아는것도 많이 도움이 됩니다.
그럼 화이팅하세요...
장고, node.js 를 하셨으므로 자바보다는 자바스크립트를 배우는 것을 추천드립니다. 그리고 두 기술에 대한 역량을 키우시는게 좋을 것 같습니다.
자바를 배우실 때는 스프링 부트를 공부하시는 것이 좋지만, 백엔드 관련해서 스프링 부트 대신 장고, node.js 를 선택하셨기 때문입니다.
그리고 강의는 온라인 강의를 추천드리며 인프런 이라는 사이트가 좋습니다. 인프런에 장고, node.js 강의 링크를 공유드립니다.
-장고
-node.js
https://www.inflearn.com/course/2017-node-js-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
Django나 Node.js도 많이 사용하는 프레임워크로 알고 있습니다.
하지만 국내에서는 자바 기반의 스프링 프레임워크가 더 많이 사용이 되는 것 같습니다.
빠른 취업을 원한다면 스프링 프레임워크를 배우는 것이 좋을 것 같습니다.
스프링에 비해서 상대적으로 적은 것이라 Django나 Node.js가 더 재미가 있다면 두 언어에 대한 역량을 키우는 것도 좋습니다.
JAVA 를 포함하여 전자정부프레임워크 정도는 해보시는게 좋습니다.
아무래도 가장 시장 점유율이 높은 프레임워크고 정부과제등은 대부분 전정부로 진행하기때문에 해두셔서 손해 볼게 없습니다.
원하시는 회사가 따로 있으신 경우, 그리고 그 회사가 공부하셨던 딩고나 노드를 사용하는 경우라면 굳이 다른 기술스택을 깊게 공부하실 필요는 없습니다만...
간단하게 맛보기라도 한두달 정도 토이 프로젝트로 해보시는건 큰 도움이 되실거고 아예 안해본것보다 조금 만져봤다 정도만 해도 포트폴리오나 이력서 용도로도 좋습니다.
이미 딩고나 노드를 사용해보셨다면 국비교육은 비추천드립니다. 국비 대부분은 아주 기초의 기초부터 가르쳐줍니다.
JAVA 기본 사용법부터 환경세팅 하나하나 까지 프로그램 기본지식 없는 인원들 진도에 맞춰 진행되는 경우가 많기때문에...
기초 과정은 어느정도 스킵이 가능한 온라인 강의에서 원하시는 강의회차만 들으시는게 속독하시기 좋습니다.