포스팅을 2주 가량 하지 않았다. 중간에 노드JS....라는 글을 쓰기는 썼지만 그건 논외로... 2주가량 정신이 없었고, 경황이 없었다. 배우는 개념들의 내용들이 비약적으로 어려워지는 바람에, 개념들을 어렴풋이 이해하는데도 많은 에너지를 쏟아야 했기 때문에, 개념들을 깊게 공부하고 충분히 내 것으로 만드는 작업을 수행하기란 솔직히 버거운 일이었다. (공부한 내용을 정리하는 블로깅일지라도 제3자가 볼 수 있는 글이기 때문에 개념을 충분히 검토하고 이해한 후 포스팅 하는 것이 이 블로그에 대한 내 개인적인 철학이기 때문이다.)
그래도 얼핏, 한 차례 커다란 폭풍우가 지나간 듯 하여, 그간의 경험들을 두서 없이 기록하고 앞으로의 계획을 수립해 보도록 하겠다. (지금 시간이 밤 12시를 넘은 시간이기 때문에, 최대한 머릿속에 생각나는 것들을 크게 정제하지 않고 적도록 하겠다!)
그동안 뭘 배웠지?
나는 지금 두 가지 경로로 공부를 하고 있다. 첫 번째는 국비지원 학원에서 자바 - DB - 스프링으로 이어지는 일종의 정규적인 공부, 그리고 두 번째는 개인적으로 진행하고 있는 프로젝트를 완성하기 위한 자바스크립트 - node.js 공부가 그것이다.
국비학원에서는 2주전 자바를 어느정도 갈무리 짓고 데이터베이스를 배우기 시작했었다. 데이터베이스 중에서 관계형 데이터베이스, 그리고 그 중에서도 oracle을 배웠다. 관계형 데이터베이스가 뭔지, 어떻게 사용자를 만들고, 권한을 부여하고, CRUD를 어떻게 하고 등등을 배우고 자바와 데이터베이스를 연결하는 공부를 했었다. 여기서는 JDBC를 배웠고 톰캣에 관해 배웠다.
국비학원에서 배운 것 중 어려웠던 부분은 단연 톰캣과 데이터베이스를 연결하는 부분이었다. 학원에서는 주로 기능적인 부분에 대한 수업이 주를 이뤘기 때문에 (강사님이 이론적인 설명을 해주시기는 하지만 기본적으로 학생들이 해당 개념을 어느정도 알고 있다는 수준에서 설명을 해 주신다. 강사님이 완전 비전공자를 신경 쓰지 않아서 그렇게 설명을 해 주신다기 보다는.. 그냥 강사님의 강의 스타일인 것 같다. 자바를 배울 때는 해당 개념을 어느정도 예습한 후에 수업을 들었기 때문에 그런 강사님의 강의 스타일에서 얻은 것이 많았는데, 데이터베이스를 넘어 서버 쪽으로 넘어오자 이론 수업을 이해하는게 나로서 상당히 좀 난해한 면이 있었다.. 당최 초보자를 대상으로 한 톰캣 관련 강의를 인터넷에서 찾을 수가 없었기 때문...) 도대체 톰캣이 뭔지, 아파치랑 톰캣을 왜 구분해서 쓰는지, 데이터베이스와 톰캣을 연결하는데 필요한 기능적인 로직들이 어떤 이유에서 어떻게 쓰이는 것인지 꽤 많이 헤맸던 것 같다. 결국에는 유튜브 얄팍한 코딩사전에서 톰캣 관련된 영상을 보고, 개인적으로 서버와 네트워크에 대한 공부를 하면서 꾸역꾸역 이해를 했던 것 같다. (그럼에도 불구하고 아직 완전히 이해했다고 하기에는 좀 난해한 느낌이 있다.)
개인적으로 하는 공부에서는, 특히... node.js에서 엄청나게 많이 힘들었었다. 프로젝트를 붙잡고 하루에 몇 시간째 씨름을 해도 진행이 안되는 상황이 며칠씩 이어졌었다. 지금 생각해보면 진짜 맨땅에 해딩을 한 것 같은데, 결국 어느 날 node.js를 좀 제대로 배워보자는 생각이 들어서 책을 사 공부하기 시작했었다.
프로젝트가 잘 풀리지 않았던 상황이 어지간히 답답했던 모양인지, 750페이지에 달하는 책의 절반을 이틀만에 공부했다. 물론 그랬기 때문에 엄청나게 빈틈이 많기는 하지만 말이다. 거짓말 조금 보태서, 아침에 일어나 책과 노트북을 피고 공부를 하기 시작해서, 자기 직전까지 공부를 했었던 것 같다. 덕분에, 프로젝트에 로컬서버를 구동하는데 성공했다.
우선, 개인적으로 하는 공부에서는 네트워크와 서버에 대한 이해를 좀 다졌던 것 같다. 인프런에서 김영한님의 네트워크 강의를 들었고(강추다 이거) 조현영님이 지은 node.js 교과서와 생활코딩의 node.js, express 강의를 보고 들으면서 HTTP가 뭔지, HTTP 메소드가 뭔지, TCP/IP, URI, URL, URN 등등 서버와 네트워크에 대한 기초적인 지식을 얻었다. 그리고 실 프로젝트에서는 node.js와 express를 이용해서 url을 설계하고 로컬서버를 구동했다.
이 과정에서 2주동안 내가 만난 수 많은 에러들... 프로그래밍이 에러와의 싸움이라고 하는 것이 무슨 의미인지 정말 분명히 알았던 2주 간의 경험이었다. 특히, 도저히 이해할 수 없는 에러들이 빵빵 터질 때의 공포는, 나로 하여금 개발자가 왜 끊임없이 공부해야 하는지 알려준 특별한 (그러나 당시로서는 상당히 괴로웠던) 경험이었던 것 같다. 개발자는 공부하지 않으면 살아남을 수 없다. 왜냐하면 이해하지 못하면 만들 수 없으니까. 코드를 통제하고, 코드 위에서 코드를 관리할 수 있는 상황과 코드에 끌려다니며 수시로 발생하는 수많은 에러들을 수습해야만 하는 상황 사이에는 분명 엄청난 차이가 있었다. 2주동안의 공부를 통해 난 그걸 알았다. (그리고 그런 에러들을 공부를 함으로써 극복을 한 이번 사례는, 당시로서는 분명 무지하게 괴로웠던 과정이었지만 지금 느끼기로는 상당히 좋은 경험이었던 것 같다. 앞으로의 과정에 훌륭한 자양분이 되겠지...)
그럼 앞으로는 무엇을 배울거야?
음.. 우선 이 부분도 두 갈래로 나누어 생각해봐야 할 것 같다. 국비 수업을 7주차까지 수강한 상태에서 느끼기론 국비학원을 전적으로 신뢰할 수 없을 것 같다. 이 워딩은 강사님과 학원이 제공하는 수업을 신뢰할 수 없다는 것이 아니라, 앞서 말했듯 수업에서 내가 따라가지 못했던 부분이 있었기 때문에 나 스스로, 예습과 복습을 보다 분명히, 그리고 철저히 해야할 것 같다는 의미이다. 만약 스스로 구글링을 해보고, 유튜브에 검색을 해보고 해서 톰캣이 무엇인지, 아파치가 무엇인지, 왜 데이터베이스와 톰캣을 연결할 때 톰캣이 제공하는 이해할 수 없는 로직(지금은 이해할 수 있다)들, 가령 xml 파일을 조작하는 등, 을 왜 해야하는지 찾아보지 않았다면 나는 지금도 그것들을 이해하지 못할 것이다. 그리고 그건 분명, 국비 후반으로 갈수록 더, 더 거대해져서 나를 짓누르겠지.
자바 국비학원의 도착지, 꽃..? 뭐라고 표현해야 할까, 자바 국비학원의 최종 목표는 스프링 프레임워크를 이용해서 자바로 웹을 서비스하는 것이기 때문에 언젠가는 스프링을 배울텐데, 스프링이 어렵다는 이야기를 하도 많이 들었기 때문에 학원에서 스프링 수업을 진행하기 전에 스프링 공부를 해야겠다는 생각을 하게 됐다. 그래서 사실, 며칠 전부터 인프런에서 김영한님의 스프링 강의를 듣고 있다.
두 번째로 개인적인 프로젝트. node.js에 욕심이 생겼다. 단순히 프론트엔드와 백엔드 사이의 프로세스가 어떠한지 알아보자, 는 의미에서 시작했던 프로젝트가 생각보다 나에게 많은 도전과제를 제시했고, 그걸 해결하는 과정에서 node.js를 비롯한 자바스크립트 진영에서의 프로그래밍이 얼마나 매력적인지 알게 되었다. 공부해야 할 것들이 다시 폭발적으로 늘어나게 될까 심히 걱정되어서, 일단 가까운 시일에서는 프로젝트를 완성하는데 거의 모든 에너지를 집중할 것이다. (국비학원에 쏟는 에너지를 빼면 전부 여기에 투자할 생각) 프로젝트를 진행하는 동안은 JSON, 그리고 템플릿 엔진인 pug를 공부해 볼 생각이다.
프로젝트가 끝나게 되면(지금으로서는 끝이 날지 모르겠지만 ㅎ) 자바스크립트를 조금 더 깊게 공부하고 싶다. 그리고 조현영님의 node.js 교과서에 해볼만 한 프로젝트들이 몇 개 있어서 그걸 클론코딩 해가며 node.js를 조금 더 깊게 공부할까 한다. 그리고 그 다음에, 만들고 싶은 프로젝트가 생기면, 그때는 지금보다 훨씬 더 준비된 상태로 프로젝트를 진행할 수 있게 되겠지.
그래서 결론은, 스프링 그리고 지금 하고 있는 프로젝트에 집중! 이다.
자, 고비 하나 넘겼으니 다시 한번 앞으로 나아가보즈아!!
'나를 향한 리펙토링' 카테고리의 다른 글
중간점검 [코딩공부 시작 33일차] (0) | 2021.08.17 |
---|---|
[개발노트] 2021. 07. 22_인생 첫 웹페이지 (0) | 2021.07.22 |