뭘 공부해야 하나요?
목적에 따라 다를 것 같습니다. 본인이 어떤 목적에 따라 개발자가 되고 싶은지 부터 명확하게 하면 어떤 공부를 할지 판단하기 쉬울것 같습니다.
- 나는 잘 모르겠고 취업이 하고싶다
- 취미로 개발을 배워보고 잘 맞는다 싶으면 취업도 해보려한다
- 회사에서 개발할 사람이 없어서 배워보고 싶다
나는 잘 모르겠고 취업이 하고싶다.
이전 글에서도 언급 드렸지만 혹자는 “자바언어만 할 줄 알면 먹고는 산다”라고 합니다. 틀린말은 아니라고 생각합니다. 자바 언어 수요가 많아서 어떻게 해서든 걸리기 쉽다고 생각합니다. 대기업부터 스타트업까지 두루두루 사용하는 언어입니다. 안쓰는 회사를 가리는게 더 쉬울것 같습니다. 자 그럼 자바 개발자가 되는게 목표다 라고 설정 했다면, Java의 정석 이나 Do it 자바 프로그래밍 입문 책을 추천드립니다. 이해가 잘 안된다면 생활코딩 페이스북 페이지에 물어보시거나 저한테 개인적으로 물어보셔도 좋습니다. 저는 물어볼 사람이 없어서 읽다보면 언젠간 이해 하겠지 라는 마음으로 읽었는데, 모를때는 물어보는게 더 좋습니다.
취미로 개발을 배워보고 잘 맞는다 싶으면 취업도 해보려한다.
취미는 쉽고 재밌어야 오래 할 수 있습니다. 그렇기 때문에 파이썬을 추천드립니다. 파이썬은 제가 사용해본 언어 중에 배우기 가장 쉬운 언어입니다. 자바는 컴파일이라는 과정을 계속 하면서 내가 작성한 코드에 오류가 없는지 확인해야 하지만 파이썬은 스크립팅이 가능한 언어이기 때문에 한 블록 작성 후 엔터만 치면 확인할 수 있는 Repl기능이 잘 되어있습니다. 무슨 말인고? 쉽게 말해서 엔터치면 결과가 바로바로 나오는 언어라고 이해하시면 됩니다. 자바 같은 컴파일 언어들은 프로그램 전체를 컴퓨터가 이해하기 쉬운 언어로 한번에 변환하는 과정을 거치는데 스크립팅 언어들은 한 줄 한 줄 엔터를 치면 바로 컴퓨터가 이해하도록 변경하는 방법입니다. 코드를 여러줄 만든 다음 한번에 실행시키는건 안정적이지만, 한 줄 한 줄 결과가 바로바로 나온다면 좀 더 직관적이겠죠. 또한 구글링을 조금만 해도 코드 예제들이 잘 나오기 때문에 사용하기 쉽습니다. 어떻게 보면 답변이 없는걸 찾는게 더 어려우실수도 있습니다. 저는 파이썬 위키(https://wikidocs.net/book/1)만 공부한 후 바로 업무에 들어갔었는데 언어 사용에 큰 어려움은 없었을 정도로 초반에 배우긴 쉽습니다. 다만 모든것이 그러하듯 심화되면 어려운건 마찬가지겠죠.
회사에서 개발할 사람이 없어서 배워보고 싶다.
이런 경우에는 개발 언어가 정해진 경우들이 있습니다. 그렇다면 언어를 정하는 재미는 없으니 재미있는 부분이 한단계 사라졌다고 할 수도 있겠습니다. 하지만 배워야할게 정해져있다는 뜻이기도 합니다. 이런 경우 끈기있게 하면 되지 않을까 싶네요. 기본적으로 모르는게 당연하다는 자세로 구글링을 차근차근 해가면 실력 향상을 느끼실 수 있을것 같습니다. 말은 쉽지만 도와줄 사람이 없는 경우 굉장히 많은 좌절을 하게 됩니다. 하지만 뭘 배우듯 그러지 않나싶습니다. 멘탈 관리 잘하는게 가장 중요하다고 봅니다. 대신 업무를 배워서 처음부터 해야하는 경우이기 때문에 빠르게 습득하지 못한다면 회사에 피해를 줄 수도 있을것 같습니다. 회사가 경제적인 여유가 있는 경우에는 (극히 드물지만) 외부 컨설팅 업체에게 자문을 구하면서 급 실력상승을 꾀하는것도 방법일것 같습니다.
한국에서는 SI나 외주를 하등시 하는 문화가 있는데, Give and take만 확실한 협업관계라면 굳이 꺼려야할 이유도 없지 않나 싶습니다. 좋은 외부업체를 어떻게 찾냐? 라는 질문을 하실수도 있습니다. 대부분 외부 업체에 대해 좋지 않은 기억들이 많으셔서 그러리라 이해하고 있습니다. 하지만 제가본 대부분의 케이스는, 서비스를 요청하는 측에서 본인들이 정확히 뭘 원하는지 명확히 하지 않았거나 명확하다고 잘못이해하고 있는 경우가 대부분이었습니다. 비즈니스 관계에서는 개떡같이 말하면 개떡같이 알아들을수밖에 없으니 최대한 서비스를 해주는 주체가 상세하게 알아들을 수 있도록 뭘 원하는지 사전에 잘 정의하는게 중요합니다. 이미 계약을 채결한 후에는 추가 비용을 발생시킬수 있으니까요.
공통적으로,
파이썬이나 자바나 노드나 이상하게 가장 많이 사용되는 언어들의 초기 세팅이 초보자들에게는 어렵다는 점이 있습니다. 자바는 JDK를 설치해야하고 파이썬은 Virtual Environment, 노드는 Yarn이나 Npm 페키지 관리툴을 사용하는게 햇갈립니다. 본인만 그런게 아니니 너무 좌절하지 않으셨으면 합니다. “인터넷에 나온대로 했는데 왜 안되?!” 라고 성을 내실것 같은데, 본인의 컴퓨터와 운영체제가 인터넷에 나온 것과 다르기 때문일것이고 그게 아니라면 아마 잘못 따라하셨을것 같습니다. 기계는 거짓말을 하지 않으니까요. (정말임)
초기 세팅부터 어려워서 많이들 포기하시는데, 이부분만 지나가면 쉬워지니 포기하지 마시고 난관을 극복해보시기 바랍니다. 개발의 대부분은 문제를 발견했을 때 이걸 어떻게 해결하지에 대한 과정입니다. 개발자가 되기 위한 첫걸음이니 화이팅 하시기 바랍니다.
한두달만에 언어를 마스터하고 개발자가 될 순 없습니다. 시간적 여유를 갖고 조금 길게 공부하시는걸 추천드립니다. 일단 언어에 조금 숙달 된다 하더라도 개발자에게 언어 사용 능력은 10% 이지 모든것은 아닙니다.
사용하는 언어에 조금 익숙해지셨다면, 네크워킹과 운영체제 공부를 시작하시는게 좋습니다. 네트워킹과 운영체제는 언어를 막론하고 개발전역에 사용되니 꼭꼭 공부하셔야합니다. 저는 후니가 쉽게쓴 네트워킹 이란 책과 운영체제 공룡책으로 공부했었는데 두 개 다 만점짜리 책들입니다. 워낙 인기가 많은 책들이라 개정판이 계속해서 나오고 있고, 왠만한 도서관에는 구비되어 있을테니 빌려보셔도 좋습니다.
어떤 분들은 이 시점에서 디자인 패턴이나 테스트 주도개발을 추천하시는데, 제 생각에는 혼자 공부하시는 과정에서는 적용이 어렵기 때문에 팀에 조인해서 다른 개발자분들과 협업 할 때 시작하시는걸 추천드립니다. 다들 좋다는건 알고있지만 다들 잘 안쓰는 미스테리..
네트워킹과 운영체제에 대해 조금 감이 잡히셨다면 깃과 프레임워크들에 대해 조금 알아가는 시간을 갖는게 좋습니다. 자바를 공부하셨다면 스프링을 활용해서 이것저것 구현해보시고, 파이썬을 공부하셨다면 장고를 사용해보시는걸 추천드립니다. 딱히 만들만한게 없다 싶으시면 호텔 예약 시스템을 한번 만들어 보시거나 채팅 서비스를 만들어보세요. 아마 처음 만드시기에는 난이도가 있을텐데 하다가 막히는 부분을 질문하시면 좋을것 같습니다. 처음 질문하는게 어려운데 한번 해보시면 다음 질문은 어렵지 않습니다.
프레임워크도 익숙해졌다 싶으시면 데이터베이스도 사용해보셔야 합니다. 전 꼬꼬마 개발자 당시에 데이터베이스는 DBA가 하고 인프라 관리는 DevOps가 맞아서 하는 줄 알았는데, 사실 개발자라면 두루두루 다 알아야 합니다. 데이터베이스는 MySQL을 사용해 보시고, 본인 컴퓨터에서 잘 돌아간다 싶으시면 이제 클라우드에 올려서 작동시켜보세요. AWS Free tier를 사용하시면 컴퓨터 1대 + MySQL 1 개 가 공짜이니 클라우드까지 한번 올려보는 경험까지 해보셔야 이제 정말 기초적인 것들은 해봤다 라고 할 수 있습니다.
어떻게 취업 하면 되나요?
가장 직관적인 방법은 알고리즘 테스트를 거쳐서 신입으로 입사입니다. 이런 경우 데이터 구조와 알고리즘을 공부하셔야 합니다. 알고리즘의 개념들은 개발 언어에 상관 없이 구현이 가능하니 자신에게 편한 언어를 사용해서 공부하시면 됩니다. 저는 스칼라 개발자이지만, 알고리즘을 풀때는 파이썬이을 사용합니다. 알고리즘을 머릿속으로 잘 이해하는것도 좋지만 많이 풀어보고 다른 사람은 어떻게 구현했는지 보다보면 더 나은 방법들을 계속 배우게 되니 꾸준히 풀어보는게 가장 좋은 방법입니다. 다만 언어마다 기본적으로 제공하는 기능들이 조금은 다르기 때문에 한가지 언어만 사용해서 풀어보시는게 좋습니다.
알고리즘 공부가 충분하다 싶으시면 원하시는 회사에 입사지원을 하시면 됩니다. 예전에는 1년에 한번씩 공채를 진행했었는데 요즘은 수시로 뽑기 때문에 준비가 됫다 싶으시면 바로바로 지원하시는걸 추천드립니다. 회사마다 다르겠지만, 어떤 분들은 자기소개서에 초점을 많이 두시는데 개발자 포시션에서는 자기소개서를 까다롭게 보진 않는것 같습니다. 제가 면접관일 때도 그랬고, 제가 지원 했었던 한국 회사들도 그랬습니다.
알고리즘에 자신이 없으신 분들은 일손이 항상 귀한 스타트업에 지원하시는걸 추천드립니다. 기본적으로 스타트업은 누구를 가르칠 시간이 없기 때문에 경력자만 선호하는데, 현실적으로 경력자들은 스타트업을 선호하지 않습니다. (우량 스타트업 제외) 그렇기 때문에 채용에 지친 담당자들은 어쩔수 없이 신입도 후보에 올릴 수밖에 없습니다. 대신 어떤 신입을 뽑을 것이냐는 명확합니다. “내가 시간이 없으니 알아서 잘 배울 수 있는 사람" 이면 됩니다. 그렇기 때문에 내가 얼마나 빨리 잘 배우고 유연한지에 대해 이력서로 잘 표출한다면 분명히 기회가 주어질 겁니다. 인터뷰에서는 어차피 이사람이 잘 모를거라고 생각하기 때문에 횡설 수설하다가는 점수를 잃고 맙니다. 모르는건 모른다고 확실히 말하고 아는것을 토대로 가설을 새워보았다고 명확히 말하는게 중요합니다. 개발자는 개발을 잘하는건 당연하지만 커뮤니케이션까지 잘하긴 어렵기 때문에 이부분을 잘 살려보시면 좋은 모습을 돋보일 수 있습니다.
이것도 저것도 정 안된다 싶으시면, 팀을 꾸려서 경진대회나 해커톤에 나가시는걸 추천드립니다. 이런 이력은 취업에 정말 큰 도움이 됩니다. 그것도 안된다면 1인 창업으로 프로덕트를 만들어보면서 혼자서 경력을 만들어가는것도 좋겠습니다. 기획은 또 다른 영역이니 혼자 하시는 것 보다 기획을 해보고 싶어하시는 분을 찾아보시는 걸 추천드립니다.
학원가면 되나요?
학원에 가는 친구들이 많기에 뭐라고 언급하기 조심스럽습니다. 제 느낌상 학원은 잘하는 사람이 가면 더 잘해지는 곳이고, 잘 모르겠어서 일단 학원이라도 다녀보자 한 사람들은 시간을 유용하게 쓰지 못하는 것 같습니다. 그렇기 때문에 주변에서 많이들 하는 말 중 하나인 “학원 3개월 다니고 취업해보려고"는 보통 맞지 않는 것 같습니다. 몇 명은 정말 취업한 경우도 있지만 수습을 끝마치지 못했습니다.
학원에서 모든걸 다 해줄 것 처럼 광고하지만 현실은 그렇지 않습니다. 내가 공부하고 내가 코드로 구현해서 내가 이력서를 제출해서 입사해야 합니다. 어떤 학원들은 포트폴리오를 이렇게 만들어라 저렇게 만들어라 코칭해주지만, 이력서를 보면 90% 비슷한 포트폴리오들이기에 걸러낼 수밖에 없습니다. 학원에 너무 의존하지 마세요.
그 밖에
전공자 친구들이라고 특별하지 않습니다. 이건 정말 사람마다 다른 것 같습니다. 어떤 친구들은 타고난 친구들이 있고, 어떤 친구들은 잘못 선택한 전공을 후회하기도 합니다. 솔직히 주니어로 딱 입사하면 전공자나 비전공자나 똑같습니다. 이력서에 전공한 이력이 있으면 한번 더 보겠으나 비전공자가 만든 뭔가가 깃헙에 있다면 훨씬 더 좋은 점수를 줄 수 있습니다. “오 이 사람은 전공한것도 아닌데 이런걸 만들었네?!”
개발자에게 개발이 전부가 아닙니다. 개발은 더이상 어두운 방안에서 모니터만 보면서 혼자 일하는 직무가 아닙니다. 다른 개발 팀원들과 혹은 디자이너나 혹은 개발에 완전 무지한 팀원들과도 소통해야하는 직무입니다. 그렇기 때문에 커뮤니케이션 능력은 너무나도 중요합니다. 회사에서는 개발만 120 잘하기 보다는 개발 80에 커뮤니케이션 100을 하는 친구들을 더 선호할 수도 있습니다. 아이러니하게 요즘은 개발 잘하는 친구들은 많지만 커뮤니케이션까지 되는 친구들은 많이 없습니다. 역시 신은 공평한가 봅니다.
연봉이 생각보다 적은데 왜그럴까요? 네이버, 쿠팡, 직방 등등 요즘은 신입도 5000천만원 이상 연봉을 책정해 준다고들 난리죠. 하지만 완전 탑노치 회사들을 제외하면 꼭 그렇지만도 않습니다. 중소기업 개발자 연봉은 정말 케이스마다 다르기 때문에 본인 연봉이 적다고해서 부당 대우를 받고 있다고 생각할 필요도 없습니다. 가장 좋은 방법은 연봉은 적더라도 그만큼 더 배우면 되고, 배울게 없다면 얼른 퇴사하는게 좋습니다. 초기에는 본인의 역량을 높이기에 집중하세요. 연봉은 정말 금방 따라옵니다. 저도 주요한 이직때마다 두 배씩 올랐던 것 같습니다. 물론 최저임금보단 더 받으셔야겠지만 말이죠.
컨퍼런스나 커뮤니티에서 배우는게 없는것 같은데 계속 나가야 할까요? 네. 커뮤니티에서 활동을 지속적으로 하셔야 커리어에 좋습니다. 스터디도 계속 참가하고 이것 저것 활동도 해야 사람들에게 인지도도 높아지고 혹시라도 좋은 오픈소스 개발에 참여하기도 수월합니다. 인터넷 상으로 아는 개발자도 좋지만 얼굴을 맞대고 얘기해본 개발자가 향후 더 좋은 인맥이 될 가능성이 큽니다. 저는 이직 때 커뮤니티 덕을 본 경우도 있습니다. 커뮤니티는 꼭 뭘 배우기 보단 다른 개발자들과 수다떨기 위해 간다고 생각하시면 더 편하실 거에요.
이런것도 물어봐도 될까요? 개인적으로 한국 개발자들은 까질한 편이라고 생각합니다. 가끔 찾아보지도 않고 물어보기부터 한다고 말이죠. 본인이 상처를 잘 받는 편이라고 생각하시면 먼저 찾아보시고 질문하시는것도 좋고 완전 털털한 성격이시라면 중복된 질문이라도 그냥 질문해보는 걸 추천드립니다. 어떻게하지 싶을땐 그냥 물어보세요. 커뮤니티도 좋고 아는 사람에게도 좋습니다. 개발자들은 보통 뭐 물어봐주면 좋아해요. 질문을 할 때 컨텍스트를 함께 설명해주면 더 좋은 답변을 받을 수도 있겠습니다. 가령, “개발자 어떻게 하면 될 수 있나요?” 보다는 “나는 학교에서 뭘 공부했고, 앱 개발하면 돈 많이 번다던데 어떤 방법으로 개발자 하면 되나요?” 정도가 더 적합하겠습니다.
'취업이야기' 카테고리의 다른 글
실무와 첫이직 (0) | 2022.04.28 |
---|---|
개발자 취업 (2) | 2022.04.13 |
개발자 하고 싶은데 어떻게 하면 될까요? (0) | 2022.04.04 |
개발에 관심을 갖게된 우연 (0) | 2022.03.30 |
고졸 백수가 개발자 된 사연 시리즈 - 서문 (0) | 2022.03.30 |