안녕하세요. 저는 고졸 27살에 국비지원 웹 개발 6개월 과정을 수료하고 웹 개발 회사에 취업한지 이제 세 달 됐습니다.
학원 수료하고 팀프로젝트 두개 그리고 개인 포트폴리오 사이트 하나 만들어서 취업을 하긴 했습니다만...
취업을 하기 전보다 고민이 더 늘었습니다.
우선 제가 취업을 한 곳은 7인 개발자가 일하는 작은 웹개발 회사 입니다. 작은 회사라 그런지 교육이나 수습없이 바로 실무에
투입이 됐고 다들 외근이나 출장을 가는일이 많아 막히는 부분이나 궁금한점이 있어도 물어볼 사람이 없습니다. 또 어쩌다 시간이 되서
물어봐도 이것도 모르냐는식 아니면 짜증섞인 목소리로 알려주거나 구글링을 하라고 합니다...
제일 큰 문제는 제가 기본기도 약한데 배우지도 않은 업무를 받은게 문제입니다. 처음본 프로젝트 코드 수정,추가 아니면 새로운 걸 찾아서
만들거나 아니면 아에 배우지 않은 다른 언어의 개발,수정을 시킵니다.
업무를 받으면 혼자 야근을 해서라도 얼추 비슷하게는 만들려고 노력은 하는데 이게 맞는건지 모르겠네요.
취업을 하기전에는 취업을 하게 되면 어떻게든 버티겠다고 다짐을 했었는데... 이것도 못하냐는 무시와 눈치에 점점 자신감도 없어지고
계속 된 야근에도 지칩니다. 얼마전에는 다같이 점심을 먹는데 이 일이 맞지 않으면 빠르게 관두는게 좋다고 저를 겨냥한 말도 듣고,,,
개발이 재미있긴한데 부족한게 너무 많은거 같아서 퇴사를 하고 공부를 더 해야하나 싶기도 하고 아니면 대표 말대로 다른 직종으로
이직을 해야할지 고민되네요... 그것도 아니면 퇴사하고 공부를 더 해야할지, 아니면 현 직장에서 어떻게든 버텨야 할지 모르겠네요.
뭐가 좋은 선택일까요?ㅠㅠ
시스템 갖춰진 곳은 들어가기가 쉽지 않고, 석달 다닌 이력으로는 뽑히지도 않습니다.
선임들이 봐주지 않는 것은 본인들 할일도 많기 때문이고, 나중에 문제 터지면 봐주거나 그 사람들이 짠 코드 얻어서 베껴가며 배우는게 그나마 최선 입니다.
대표던 누구던 면박을 주는 것은 답답하니까 그렇겠죠. 돈은 주는데 썩 몫을 다하는 것 같지도 않고... 작은 회사들이 그런 식 입니다. 시간/돈도 적게 주면서 원하는건 더 많죠.
그냥 생각을 바꾸셔서 버티세요. 야근이고 배움이고 면박이고, 되는대로 시간, 체력, 정신력 쏟아가며 무식하게, 될 때까지 한다. 그러다가 방통대 다니고 경력 3년 쌓이면 이직하고... 그거말고 개발자로 남는 방법 없다고 보시면 됩니다.
일단 자바도 그렇고 다른 언어와 관련된 프로젝트도 그렇고 디버거만 잘 쓰셔도 이전보다 시간을 절반 이하로 줄이실 수 있으실 거예요.
안 배운 언어가 어떤 언어인지 모르겠지만 일단 C, C++이 아니라면 자바만 잘 하셨어도 큰 어려움은 없어야 정상인 것이 맞고요. 프레임워크를 잘 알아야 하는 부분이면 oqvca님에게 맡기지는 않았을 것 같고, 아마 기본 언어기능만 알면 적용시킬 수 있는 부분에 대해서 수정 및 추가를 하라고 하지 않았을까 짐작해봅니다.
기본기에 대해서는 다음의 항목들에 대해서 스스로가 어느 정도인지 파악을 해보셔야 할 것 같아요.
1. 기본적인 알고리즘 구현 능력
https://programmers.co.kr 들어가셔서 스킬체크 한 번 해보세요. 레벨 2 문제까지 푸는데 아무런 어려움이 없어야 정상입니다. 이 부분에서 막힌다면 레벨2정도까지는 반드시 쉽게 풀 수 있도록 훈련을 하셔야 하고요.
2. 자료구조
코딩을 할 때 특정 자료구조를 선택을 했다면 왜 그것을 선택했는지 명확하게 설명할 수 있어야 합니다. 이를 위해서는 각 자료구조별로 공간복잡도, 시간복잡도를 계산할 수 있어야 하는데 이 부분도 약하시다면 프로그래머스 문제 풀면서 동시에 훈련하셔야 합니다. 가능하다면 자바의 LinkedList, ArrayList, HashMap 은 스스로 한 번 구현해보시는 것을 추천드립니다.
3. 자바 기본기
1. pass by value, pass by reference 의 차이. 그리고 자바 언어에서 언제 일어나는가
2. 상속의 개념과 사용하는 이유
3. 다형성과 가상함수
4. 스택 메모리와 힙 메모리
5. 접근제어자 관리
6. 상속과 인터페이스의 차이
7. 런타임 에러와 컴파일 에러의 차이
8. 좋은 예외 처리가 어떤 것인가에 대한 본인의 기준을 설명할 수 있는가
9. 상속과 컴포지션의 차이와 장단점
마지막으로 CLOKINYU님 말씀처럼 다른 회사를 알아보시는 게 좋을 것 같습니다. 기본기 개념이 부족하다고 느끼시는데 야근하면서 땜빵하다보면 기본기 확보하는 시간이 너무 길어집니다. 아니면 피치 못하게 지금 회사에서 계속 버티면서 성장하고 싶으시다면 코드를 짤 때 한 줄 한 줄 내가 왜 이렇게 짰는지 설명을 하겠다는 마음가짐으로 하셔야 할 것 같아요.
저도 비전공 출신에 이제 막 만 2년 조금넘은 사람이라 주제넘은 조언일 수도 있지만 저도 기본기 기를려고 이 악물고 공부했던 부분이라서 좀 길게 남겨봤어요.
건승을 기원합니다 파이팅!
제가 위에서 쓸까말까 하다 못 쓴것을 적어 주셨네요.
일 빠르게 진행하는 노하우가 정말 중요하고, 첫 반년~1년은 그런거 배우는데 쓰게 됩니다. OS, 프레임웍, IDE, 디버거 세팅 제대로 하고, 파일들 위치나 명령어 좋은 것들, 깃 플로우 등등... 이런거 정리/문서화 된 회사가 생각 보다 많지 않더군요. 이런거는 테크 리드가 작정하고 키운다 생각하고 배려해줘야 하는 건데, 작은 회사에서 그런 개념 없는 사람들이 있는 팀이면 증진 되지 않더군요.
제가 oqvca님이라면 일단은 저런거 혼자서라도 정리 해가며 어디서든 빨리 적응하는 법을 익힐 것 같습니다. 알고리즘이나 아키텍쳐 등도 중요하지만 회사에서 초급 개발자에게 그런거 맡기지 않거든요.
6개월 학원 경력이면 보통 그렇게 잘 못하는 게 정상이라 보고요...
이 쪽이 맘에 드셨으면 야근도 야근이지만 기본기 공부 채워서 이직하시는 게 좋을 것 같습니다..
그래도 질문을 했을 때 간략하게나마 대답해 주는 상사나 팀원이 있을 때 실력도 더 빨리 올라갔던 것 같습니다.
아마 그 분들도 그렇게 배워와서 그러는 걸 수도 있고 글쓴 분도 그런 문화에 적응 안되어서 그럴 수도 있습니다.
적어도 저는 그런 분위기보다는 가르쳐주는 분들이 있었을 때 일도 더 재밌게 했던 것 같네요.
(질문하는 방법도 그 분들이 가르쳐주셨... 업무 외적으로도 많이 배웠던 것 같습니다)
바빠서 가르쳐 주는 것에 한계가 있을 순 있습니다. 하나도 안 가르쳐 주는 건 윗 사람도 잘못이 어느 정도 있다고 생각해요
다른 사람이 한걸 보고, 대화를 통해, 같이 일하면서 습득하게 된다가 더 맞는 말인것 같습니다.
결국 스스로 공부하는거예요
아예 배우지 않은 언어의 수정을 시킨다..
신입이니까 그때부터 그 언어를 보시면 됩니다; 많은걸 기대하지 않아요.
다만 이 과정에서 본인스스로 스트레스를 많이 받을텐데, 스트레스를 잘 극복하는 방법을 먼저 알아보세요.
나중에는 안해본 업무에 대한 스트레스 받기 싫어서 새로운걸 미리 따로 공부해보고 개발해보고 하는 자신을 보게 될것입니다;
제가 신입 개발자로 입사했을 때 iPhoneOS 앱 개발 열풍이 불어서(그 당시는 iOS 가 아니라 iPhoneOS) 신입중에서 누군가 해보라고 했고 제가 지원하여 하게 되었습니다.
JAVA 개발자로 입사했는데 처음 본 MacOS 와(스노우 레오파드였네요) Objective-C 는 오우 쉣이었습니다.
첫 프로젝트는 외주 개발자를 비상주로 고용해서 저는 백엔드를 담당하는 와중에 그 사람이 만든 프로젝트를 가지고 스터디 하려고 했습니다. 하지만 너무 어려운 과정이었습니다. 2010년 초에 당연히 회사 내에서 iPhoneOS 앱 개발 경험이 있는 사람도 없었지요. 그 회사에서는 제가 최초였습니다. (주임 이상은 프로젝트 나가서 돈을 벌어야 하기 때문에 싼 인턴보고 먼저 해보라고 한거죠)
하지만 그 사람도 제대로 만드는건 아니다보니(그 당시엔 다들...) 고생은 고생대로 하다가 2주짜리 교육을 받고 나니 그 이후는 걱정이 없어졌습니다.
그 2주동안의 교육으로 기초를 다졌거든요. 뭐 엄청 대단한것을 배운건 아니었고 상당 부분은 제가 책에서 봤던 내용이긴 했습니다. 하지만 책으로 보고, 다른 개발자의 (별로 좋지는 않은) 코드를 보면서 뭘 하는것보다 제대로 과정을 거치면서 2주 교육(10일)을 받고 나니 이후에는 무언가를 만들 때 문제가 생겼을 때 어떻게 해결해야할지를 스스로 길을 찾아 갈 수 있게 되었습니다.
당연히 지금도 모르는게 있으면 검색을 하지만, 사람에게 도움을 받거나 물어보지 않아도 해결할 길을 찾을 수 있다는것은 신입사원 으로서는 큰 발전이었습니다.
웹 개발 6개월과정이면 그래도 부족한 공부가 있을 수도 있습니다. 저는 자료구조나 컴퓨터 언어론, 알고리즘 수업이 괜히 있는게 아니고 나름 업무에 도움이 되었고 그게 기초가 되어 계속 올라올 수 있었다고 생각하거든요.
웹 개발 스터디 모임을 나가시거나 시시때때로 Github 에서 다른 사람의 코드를 보면서 어떻게 만드는지 보시면 될 것 같습니다.
당연히 한 번에 되지는 않지요. 저도 머리가 좋은 편은 아니라서 뭐 하나 새로 공부하려면 감 잡히기까지 오래 걸리지만 한 번 감이 잡히면 그 이후에는 알아서 할 수 있게 됩니다.
결국 공부밖에 없습니다. 스택오버 플로우와 github 의 코드를 보고 보고 또 봐야죠.
그 어떤 벽을 넘기까지는 힘든 과정이지만 벽을 한 번 넘으면 어지간한 업무는 마치 레고 조립과도 같습니다.
무언갈 생각하고 있다는거 자체가 좋은 팩트라 봅니다.
나와 관련된 업무의 오픈 소스 프레임워크의 샘플 코드를 참고 하는것도 큰 도움이 됩니다.