반응형

프로그래밍을 배우게 되면 분야에 따라서 조금은 다르지만 크게 6가지 과정을 거치게 된다.

일단 기본기를 쌓고, 실무에 쓰이는 프레임워크 등을 배우며 개발을 맛보게 된다.

이 과정은 순서대로 이뤄지기는 하지만, 한번에 끝나는 건 아니다.

한번 진행되었다가, 이전 단계로 돌아가서 첨부터 시작하는 경우도 종종 있다.

그럼 큰 그림에서 이 단계를 이해해 보자.

1.기본 문법 배우기

프로그래밍 기본 문법을 배우는 기간이다. 변수, 클래스, 함수 등을 이해하는 시간이다 .

이 과정에서 프로그래밍 언어를 처음 설치해보고, 각종 개발 툴도 처음 써보게 된다.

어떤 언어를 쓰느냐에 따라 이 과정이 빨리 끝나기도 하고, 길게 걸리기도 한다.

파이썬의 경우 1주일이 안 걸리는 경우가 대부분이고, 자바의 경우 1달 넘게 걸리는 경우도 흔하다.

내가 빠르게 배울 수 있는 동적 타이핑 언어 (파이썬, 자바스크립트) 등 택했다면

좀 더 기본을 탄탄하게 하는 게 좋고,

배우는 데 시간이 걸리는 정적 타이핑 언어(자바, C, C#, C++, 코틀린, 다트 등)를 골랐다면

클래스 정도까지 배운 뒤 프레임워크를 익혔다가 다시 문법 공부하는 게 나을 수 있다.

보통 정적 언어 문법 배우다 지치는 경우가 많기 때문이다.

2. 프레임 워크 사용 방법 배우기

컴퓨터 공학과를 간다면, 프레임워크 대신에 알고리즘이나 자료구조를 배우겠지만

독학하거나 학원을 가는 경우 여기로 오게 된다.

자바의 스프링이니, 스위프트의 iOS, 모바일의 안드로이드니, 자바스크립트의 리액트니 하는 것들은 모두 다 프레임워크다.

프레임워크는 프로그래밍 언어 문법을 쓰기는 하지만 나름의 규칙이 있다.

이 규칙들은 개발 환경( 모바일이냐 웹이냐, 급히 만들어야 했냐 따위 )이나 프레임 워크 개발사의 입맛에 따라 만들어진 경우가 대부분이다.

환경에 대한 지식은 물론, 프레임워크 자체에 대해서도 배워야되는 순간이다.

대게는 프레임워크 개발사 홈페이지에 들어가서 공식 문서를 보는 게 제일 확실하다.

하지만 처음에 공식 문서를 보는 건 정말 난감하다. 공식 문서가 있다는 것 정도만 기억하고 '강의'를 보는 걸 추천한다.

책도 좋지만, 책은 처음에는 너무 오래걸린다.

특히 UI를 쓰는 프레임워크 ( 리액트, 안드로이드, ios, 플러터 등 )은 화면을 보면서 따라하는 게 효과적이다.

보통 프레임워크를 훑어보는데 1~2달 정도 걸리는 편이다.

여기서는 훑어본다는 말을 했는데, 처음에는 따라하느라 급급해 배우긴 배웠지만

실제로 이해는 못하고 있는 상황이기 때문이다. 꼭 내가 시간을 들여서 따로 프로젝트를 해보아야한다.

프레임워크를 배우는 과정에서 중간 중간에 문제 풀이를 많이 해보는 것도 중요하다.

따로 문제가 있는 수업이면 더 좋고, 없다면 오늘 들은 수업을 내 마믐대로 바꿔보는 걸 추천한다.

예컨데 오늘 화면을 그리는 수업을 했다면, 화면을 내 생각대로 조금씩 바꿔보는 것이다. 함수 이름을 바꿔도 되고, UI의 위치를 수정해 보아도 좋다. 그 과정에서 검색도 조금씩 해보게 되는데 이게 실제 개발에 가까워지는 과정이다.

3. 프레임 워크 사용해서 간단한 포트폴리오 만들기

보통 프레임워크를 강의 등을 통해 배웠더라도 실제로 못 써먹는 경우가 상당히 많다.

이건 지식을 완전히 내것으로 하지 못했기 때문이다.

보통 들어서 아는 지식과 내 것인 지식은 큰 차이가 있는데,

들어서 아는 지식은 내가 떠올리려고 하면 잘 생각이 안나지만, 누가 말하면 이야기할 수 있다.

내 것인 지식은 누가 말안해도 쉽게 꺼내서 쓸 수 있는 걸 말한다.

한마디로 책이나 강의를 보지 않고 웹사이트, 앱, 서버를 만들 수 있는 단계를 말한다.

처음부터 이 단계에 도달하는 것은 어렵다. 따라서 아주 작은 프로젝트 (포트폴리오)부터 만드는 게 필요하다.

내가 웹을 배운다면 3페이지짜리 간단한 웹을 만들어보겠다. 로그인도 없고, 회원가입도 없다.

이 첫 웹페이지를 만들면 일단 아무데라도 호스팅을 해서 올려보겠다.

첫 웹사이트가 어떻게든 돌아가는 상태가 되면, 프로젝트 규모를 키워보자.

지도 기능을 넣어볼 수도 있고, 회원 가입 기능을 넣어볼 수도 있다.

이전에 3페이지를 만들었다면 이번에는 5~6페이지정도 만들어보자.

두번째 사이트가 만들어지면 세번째 사이트를 만들어보자.

이번에는 좀 더 과감하게 글쓰기나 검색 기능을 넣어볼 수 있다.

아니면 게시판 같은 걸 만들어보아도 좋다.

여기서 포인트는 작게 만들되 완성을 하고, 좀 더 크게 만드는 것이다.

이 과정을 통해 자연스럽게 지식이 내것이 되고, 개발 숙련도가 올라간다.

이 때 괜히 스케일을 엄청 크게 해서 좌절하지 말자.

여러분이 보는 서비스는 대게 많은 개발자들이 몇년씩 만든 것이다.

너무 기획에 힘주지 말고, 기존에 있는 디자인이나 서비스를 따라하는 걸 권한다.

보통 이 과정이 1~3개월 정도 걸린다. 컴퓨터 학원들은 여기까지 하고 끝나는 경우가 대부분이다.

혹은 2번째 단계에서 끝나기도 한다. 일반적으로 3번째 단계까지 하면 취업은 그럭저럭 하는 편이다.

빠른 취업이 목표라면 3단계까지 빠르게 마무리하는 걸 권한다.

4.컴퓨터 공학 기초 지식 채우기

보통 프레임워크를 배우다보면 전반적인 컴퓨터 공학 지식을 얕게 배우게 된다.

프레임워크는 모두 다 컴퓨터 공학에 기초를 두고 있기 떄문이다.

프레임워크로 개발을 시작한 사람들은 2부류로 나뉘는데 하나는 적당히 돌아가는 코드에 만족하고, 막히면 스택 오버플로우를 뒤지는 스타일이다. 다른 하나는 원리까지 알고 해결하려는 스타일이다.

대게는 후자가 시간이 갈수록 개발을 잘하는 편이다.

전체 컴퓨터 공학을 다 배우는 건 시간이 없는 상태에서는 어려운 일이다.

컴퓨터 공학을 전반적으로 빠르게 훑어볼 수 있는 '컴퓨터 과학 입문' 개통을 읽어보기를 권한다. 보통 대학교 1학년 필수 과목으로 지정되어 있다.

시간이 있다면 컴퓨터 공학 전공 과목을 10개 정도 다 보는 것도 좋다.

알고리즘, 자료구조, 데이터베이스, 운영체제, 이산수학, 네트워크, 컴퓨터 구조 등의 전공서적을 다 보는 것이다.

보통 이 과정에 1개월 ~ 1년 정도 걸리는데, 프로젝트 하기와 병행하기를 권한다. 이것에만 집중하기에는 시간이 너무 오래걸리기 때문이다.

대게의 컴퓨터 공학과 출신들은 4단계까지 하고 취업을 한다.

일부 기업에서 불평을 하는 컴퓨터 공학과 학생들은 1단계와 4단계만 하고 일자리를 구한다.

5. 다른 사람의 소스 많이 보면서, 패턴 배우기

남의 소스를 많이 보다보면, 많이 배운다.

내가 무작정 코드를 작성하는 것도 좋지만, 이게 맞는 게 틀린건이 확신하기 어렵다.

다행히도 온라인 상에 제대로 짜인 코드가 엄청나게 많다.

구글 같은 거대 IT 기업이 친절하게도 최상급의 코드를 공개해놓고 있다.

여기에 오픈소스는 말할 것도 없다.

이 소스들을 내가 이해할 수 있는 선에서 읽어보며 분석해보자.

따라해보는 것도 나쁘진 않지만 너무 많은 시간이 드니 읽어보면서

이 사람들은 패키지를 이렇게 나누었고, 클래스는 여떤 식으로 나누었는지 읽어보기를 권한다.

내가 본 코드들이 바로 내 코드에 적용은 안되겠지만 어느정도 큰 그림은 잡을 수 있을 것이다.

틈틈히 디자인 패턴 등을 보아도 좋다. 하지만 너무 깊게 들어가지는 말자.

보통 패턴이란 건, 어떤 문제를 계속 경험하다보면 눈에 들어오게 되는 것이다. 그 문제들의 해결책을 모은 게 패턴이다.

그렇기에 패턴은 경험 있는 사람들이 보면 훌륭한 해결책이지만 초보들이 보기에는 이해가 잘 안될 수가 있다.

왜 써야되는지 크게 와 닿지 않을수가 있다. 나중에 봐야겠다는 생각정도만 가져도 충분하다.

6. 프로젝트 많이 하기 (출시 등)

실무를 하는게, 공부만 하는 것보다 낫다는 말을 한다.

대게는 맞는 말이다. 실무를 하다보면 공부할 때는 적당히 넘어가는 일들도

다 해결하고 넘어가야 되기에 문제 해결 능력이 좋아질 수 밖에 없다.

또한 깊은 실용적 지식일수록 책이나 강의에는 안 적혀 있을 가능성이 높다.

직접 일 하면서 배우는 게 중요하다. 직접 일을 하는 게 힘든 상황이라면 최대한 실제 상황과 유사하게 만들어가야한다.

실제 제품에 근접하게 코드를 만들수록, 의외의 문제를 만나고 그 문제를 해결하는 과정에서 실력이 좋아지기 때문이다.

마냥 프로젝트만 많이 한다고 실력이 늘지는 않는데, 기본이 없는 상태로 프로젝트의 양만 늘리거나

동일한 난이도의 프로젝트만 반복하는 경우가 많기 때문이다.

이 때는 의도적으로라도 자신의 프로젝트의 난이도를 조절하면은 좋다.

안 쓰던 라이브러리를 써본다든지, 안 써본 언어를 써본다든지, 한 언어로 짜인 코드를 다른 언어로 바꿔본다든지, 프론트 엔드 개발자인데 백엔드쪽을 해본다는지 하는 식으로 말이다.

난이도를 높였다가 낮추는 과정에서 내 원래 분야의 이해도도 올라가게 된다.

세부적으로는 다른 면이 있더라도, 각각의 분야들은 하나의 뿌리에서 나왔기 때문이다.

이 과정은 끝이 없기에 따로 기간은 적지 않겠다.

기타. 더 깊게 배우기

이 단계가 되면 특별히 정형화된 공부방법은 없다.

개발 방법론을 찾아볼 수도 있고, 각종 개발도구를 추가적으로 배워볼 수도 있다.

혹은 일반 개발원리 ( 클린코드나 아키텍처) 같은 걸 보면서

더 나은 개발은 무엇인지 연구해볼 수도 있다.

예전에는 잘 모르고 넘어갔던 프레임워크를 더 깊이 공부하기도 하고

적당히 쓰기만 했던 프레임워크 내부나 리눅스 커널을 뜯어보기도 하고

테스팅을 배워볼 수도 있겠다.

이 글을 쓰게 된 건 수업을 하다가 어디까지 공부해야

개발자로 취업할 수 있나요란 질문을 받아서이다.

예전부터 많이 듣던 질문이라 글로 한번 정리해보았다.

큰 그림을 잡는 데 도움이 되었으면 하며, 글을 마친다.

반응형

+ Recent posts