국비 교육 과정을 수강중인 사람들에게
개발 이야기주위에 국비 교육 과정을 듣고 있는 비전공자분들이 참 많은 편이다.
- 강의 난이도가 전공자들에게 맞춰져 있다. 나는 아무것도 모르는데.. 아니 전공자들은 국비 왜 들음?
- 강사가 용어 설명을 너무 안한다. (난수를 만들어보세요, 난수가 뭐지, 난자는 아는데)
- 진도 따라가는게 너무 어렵다. 나는 다 이해하지 못했는데 진도는 계속 나가고 문제만 던져준다.
- 옆에 어떤놈은 대놓고 그냥 잔다.
- 옆에 전공자 놈은 쏘 이지를 외치면서 짜증나게 한다.
- 이런 식이면 그냥 나는 내 공부 하고 수업 안듣는게 나을것 같다.
- 풀스택 과정이라고 프론트엔드, 백엔드, AI 까지 다 하라 하네. 이거 맞나?
- 강사도 자기가 강의 하면서 이게 아닌가? 하는 식..
대충 어떤 절망 느끼는지, 얼마나 막막할지 공감이 된다.
일단은 학원 수업만으로 한명의 신입 개발자로 성장하는건 거의 불가능에 가깝다. 필수적으로 예습과 복습이 필요하고, 이건 정말 새벽 네시까지 해도 충분하지 않다.
내가 할 수 있는 조언.
주위에 아는 사람이 있으면 최대한 물어보라.
너희들이 1시간 3시간 고민할것을, 현업 개발자들은 "뭐 이런걸 갖고 고민해 ㅎㅎ" 식으로 바로 답을 알려줄 수 있다. 물론 뭘 모르는지 조차 파악이 안될 수 있다. 상관 없다. 그냥 물어봐라. 인간에게는 하루 24시간의 시간이 균일하게 주어지지만 별 답도 안나오는걸 갖고 안돌아가는 머리에 빈약한 지식으로 고민해봐야 고통만 받는다. 아는 사람에게 물어보면 학습 속도를 100배 1000배 빠르게 올릴 수 있다. 혹시 모든걸 다 자신이 직접 연구하고 터득해야 머릿속에 남을것 같다고? 대학교 연구소 같은데 가는게 좋을것 같다. 개발의 특성상 산 하나 넘으면 더 높은 산이 나오기 마련이다. 그걸 수백 수천 수만 수백만번 반복해서 개발자가 된다.
국비 과정에서 자기가 제일 잘 한다고 깝치지 마라.
증언들을 들어보면 그 과정 안에서 사람 실력들은 정말 도토리 키재기로 고만고만하다. 그 과정에서 제일 잘하는건 매우 당연한거고, 수많은 국비 수업 중에 제일 잘하는 사람들 + 현직자들과 경쟁하여 신입으로 겨우 입사할 수 있다. 또한 신입을 뽑는 회사는 매우 적고, 열악한 환경의 회사들이 대부분이다. 치열한 경쟁과 바늘구멍을 뚫을 각오를 하고 있어야 한다.
모든 드래곤은 분해할 수 있다.
입에서 불을 뿜는 드래곤 같은 난제를 만났는가? 그 문제를 이해가 될 때 까지 쪼개고 또 쪼개라. 원자 단위로 쪼개가면 해결하지 못할 문제가 없다. 가령 "정수의 배열을 입력 받아 큰 것부터 작은 것 까지 차례로 정렬한 배열을 출력하는 함수를 구현하시오" 라면
- 정수가 뭐지
- 배열은 뭐지
- 입력을 받는다고?
- 큰거 앞에 오게 정렬? 어떻게 하지?
- 출력하는 함수??
이렇게 쪼개고 키워드로 검색하자.
그러면 이제 정수, 배열, 입력, 출력, 함수, 정렬에 대해 알 수 있을 것이다.
이 여섯가지 개념을 알아야 저 문제를 온전히 이해할 수 있다.
그러면 당신이 만들 것은 배열을 입력 받고 배열을 출력하는 함수가 된다.
function something(arr) {
return arr;
}
... 혹시 이해 안되었어? function은 뭐지? arr은 왜 적은거지? return은 뭐지? 검색해!
이렇게 배열을 입력 받고 배열을 출력하는 함수가 나왔으면, 이제 정렬 해야지?
function something(arr) {
return arr.sort();
}
어 오름차순이네? 반대 방향 어떻게 함... 검색 해봐야지..
이런 식으로 사고가 진행되는 것이다. 이런게 되어야
"라이브러리 없이 무한 스크롤을 구현하시오" / "사용자가 수정중인 게시글을 다른 사용자가 수정모드에 들어갈 수 없도록 하시오" 등의 훨씬 난해한 문제도 풀 수 있다.
지금 업계에서 일하고 있는 개발자들은 다들 이런 과정들을 수백 수천 수백만번 경험하고 몇년 동안 묵은 사람들이다. 좌절을 하는 이유는 막막해서다. 막막한 이유는 끝이 안보여서 그렇겠지. 다시 생각해보자. 모든 문제는 해결 가능한 작은 단위로 분해하면 해결할 수 있다.
신입 개발자에게 로그인 화면을 구현하라고 요청하면 한달은 낑낑대며 겨우겨우 만든다. 이들이 로그인 화면을 한번 더 구현할 때는 그때 고생한 짬이 남아 2주 안에 해결한다. 세번째로 만들때는 상대적으로 편한 마음에 1주 안에 해결한다. 네번째로 만들때는 기존 코드를 복붙 한 다음 새로운 기능들을 수월하게 추가해서 3일 안에 만들게 된다. 한 열번째로 만들때는 그냥 점심 메뉴와 다이어트의 상관 관계에 대해서만 고민하게 된다. 이런 과정을 거치면서 레벨업이 되는 것이다.
당신이 지금 못하는거? 매우 당연한거다. 누구나 다 할 수 있으면 개발자가 왜 돈을 받는 직군이 되었겠는가. 당신이 천재인가? 나는 천재를 만나본 적이 있지만 천재도 갑자기 집어던져서 무지막지한 문제를 해결하라고 하면 버벅일 수 밖에 없다. 준비시간을 가지고, 차분하게, 내가 해결할 수 있는 사이즈로 쪼개서 계획을 세워보자.