brunch

You can make anything
by writing

C.S.Lewis

by 최대표 Oct 08. 2016

비전공자의 프로그래밍 도전 -2

자바 웹 개발, 어디부터 무엇을 배워야 하는 것일까?

올 상반기를 프론트엔드 과정을 학습하고 (실제로 학습한건 3개월정도 뿐이지만) 현재는 자바 개발자 양성과정에 참여하여 학습하고 있다. 


현재 참여하고 있는 곳의 커리큘럼은 다음과 같다.


<주요교육과정>
1. Java SE (2주) 80시간
2. Java SE Advanced (2주) 80시간
3. Java Network Programming(1주) 40시간
4. Database SQL과 JDBC (2주) 80시간
5. HTML5/CSS3/JavaScript (1주) 40시간
6. Java Web Programming(Servlet &JSP)(2주) 80시간
7. Model2 Architecture(MVC Pattern)(1주) 40시간
8. jQuery와 Ajax(2주) 80시간
9. java OpenSource Framework(Spring DI,AOP,MVC,SecurityMyBatis,Tiles) (4주) 160시간
10. Android Programming (1주) 40시간
11. Hybrid App Programming(1주) 40시간
12. 객체지향분석설계와 데이터 모델링 (1주) 40시간 
13. Java Open Source 기반 Final Project(4주) 160시간 


이 순서대로 시간 정확히 지켜서 진행되는 것은 아니고 강사의 역량과 수업방향에 따라서 변동된다.

현재는 Java와 sql까지 학습한 상태이다.


이번 과정을 학습한지 2개월이 지났는데 많은 부분을 배웠고 진행중이다.

개발을 한다는 것은 단순히 코딩만을 의미하는게 아님을 배웠다. 수업시간에는 다루지 못하지만 비전공자가 배워야 할 기초적인 지식이 무엇인지 알려주어서 좋았다.


학습 로드맵은 다음과 같았다.


1. 소프트웨어 공학 학습을 통해 개발 프로세스를 이해하고, 비용 산정방법이나 요구 사항 분석법, 설계하는 법, 테스트와 품질에 대한 이해, 프로젝트 관리 등 기초적이고 필수적인 이론을 학습하길 요구하였다.

(추천 도서 : 쉽게 배우는 소프트웨어 공학 (한빛아카데미))


2. 개발은 혼자하는 것이 아니고 팀플을 해야하는 작업이다. 폭포수 개발 모델이 아닌 애자일 & 스크럼 프로젝트 관리법을 학습하고 프로젝트에 이를 반영하기를 요구하였다.

(추천 도서 : 애자일 & 스크럼 프로젝트 관리 (길벗), 스크럼 (프리랙))


3. 팀플을 하기에 버전관리나 소스공유가 중요하다. 그래서 github를 필수적으로 학습하고 적용하기를 요구하였다.

(추천 도서 : 소셜 코딩으로 이끄는 github 실천기술(제이펍))


4. 자바 코딩도 중요하지만 객체지향의 의미를 이해하고 적용해야 하고 디자인 패턴에 대한 이해도 있어야 한다고 한다. 마지막 책은 매우 쉽게 설명해 놓아서 처음에 개념을 잡을때 좋았다.

(추천 도서 : UML과 JAVA로 배우는 객체지향 설계 및 구현(인피니티북스), 자바 객체지향 디자인 패턴(한빛미디어), 스프링 입문을 위한 자바 객체지향의 원리와 이해(위키북스))


5. 자바에 대한 기본서는 개인적으로 자바의 정석이 자세하고 좋았다. 이것이 자바다 라는 책도 많이 본다.


6. DB의 경우 SQL도 중요하고, DB 설계에 대한 기초적 지식도 중요하여 SQL과 데이터 모델링 부분을 요구하였다.

(추천 도서 : 데이터베이스 개론과 실습 (한빛아카데미), 관계형 데이터베이스 실전 입문 (위키북스))


이번 자바 학습과정에서 처음엔 절차지향적으로 코딩하다가 바로 MVC를 적용하여 model 1, model 2 방식으로 배워나갔다. 처음엔 매우 번거롭고 어려운 작업이었지만 지금은 MVC model 2 방식이 익숙해졌다. 처음배우는 사람으로서 이것이 쉽고 어려운지 잘 몰랐는데 이미 배운 사람의 말을 들어보니 나중에 배울 때 MVC가 꽤나 어려운 개념이라고 했다. 


아직 2개월밖에 진행이 안되었고, 갈길은 멀었지만 간단한 게시판과 쇼핑몰 기능정도는 구현가능하게 되었다.

(지금까지 작업한 코드가 담겨있는 github)

https://github.com/choiwj1012


이제 곧 프론트와 지금까지 배운 코드를 연결하게 될 것이다. 예전에 배운 프론트를 드디어 기능까지 구현하는 단계로 나아갈 수 있다는 것이 매우 기대가 된다.


프론트 엔드를 할때는 혼자 작업을 해서 팀에 대한 개념이 없었는데, 여기서 팀으로 움직이는 것을 경험해보니 생각보다 상당히 어려웠다. 사람들간의 실력 차이, 하고자하는 의지의 차이, 소통의 어려움, 성향에 따른 성격차이 등 역시 모든 일은 사람에 관련된 일이 가장 어렵다는 것을 다시한번 느낀다.


앞으로 계속 배워나가면서 무엇을 배웠고, 어떻게 배워나갔으며, 어디까지 가능한지 기록해 나갈 생각이다.


마지막으로 추천 영상을 하나 소개하고자 한다.

https://www.youtube.com/watch?v=fHyTA-UIcqs

스타트업 얼라이언스 주최로 네이버 D2 스타트업 팩토리에서 열린 박종천 넥슨 플랫폼본부 부본부장의 "개발자가 갖추어야 할 9가지 기술" 강연 동영상이다


구글에서 10년 넘게 일하시다가 이번에 넥슨으로 오신 박종천 님이시다.

늦은 나이에 비전공자로 시작한 나와는 다른 매우 높은 레벨이지만 짧은 강의에 우리가 어떤 생각으로 배워야 할지, 무엇을 배워야 할지를 알 수 있는 좋은 강의라고 생각한다.


언젠가는 구글같은 곳에서 일하거나 혹은 내가 만든 소프트웨어로 의미있는 일을 할 수 있다면 참 좋겠다.


(모든 글은 아무것도 모르는 비전공자가 막 공부하기 시작할 때 느낀 점입니다. 수정사항이 있거나 좋은 의견이 있다면 댓글 부탁드려요!) 

매거진의 이전글 비전공자의 프로그래밍 도전 -1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari