Purpose
잠깐 놓았던 블로그와 깃허브를 활용하여 웹개발 공부를 시작해보려고 한다.
공부일지처럼 앞으로의 공부 계획, 과정, 결과, 느낀 점 등을 모두 적을 예정이다.
오늘은 시작하기 전 웹개발에 대한 내가 했던 생각과 고민, 앞으로의 방향성을 포스트하겠다.
Front - End VS Back - End
내가 개발 공부를 시작하기 앞서 수도 없이 많이 본 단어이다.
웹 개발은 크게 프론트엔드, 백엔드 두 분야로 나눌 수 있다.
단순하게 프론트엔드는 웹 서비스에서 사용자가 볼 수 있는 부분, 클라이언트를 의미하고
백엔드는 사용자가 볼 수 없는 서버와 같은 서비스의 뒷부분을 의미한다.
어디선가 이런 얘기를 들었다. 공부를 하기 전에 프론트엔드를 할 것인지, 백엔드를 할 것인지
선택하고 공부를 하면 좀 더 수월해질 것이라고.
말이 쉽지 미래에 내 밥줄이 될 수도 있기 때문에 섣불리 정하는 것은 정말 쉽지 않았다.
나는 컴퓨터를 전공한 것도 아닌 사실상 비전공자이기 때문에 갈피를 잡기도 어려웠다.
우선 우리가 프론트엔드, 백엔드의 의미를 좀 더 자세히 보자.
프론트엔드 (Front - End)
우리가 사용하는 웹 어플리케이션 혹은 웹 사이트에서 사용자가 볼 수 있는 인터페이스 (UI)를
'프론트엔드'라고 한다. 사용되는 언어는 정말 다양하지만, 주로 HTML, CSS, JavaScript 등을 사용한다.
'HTML' 이라는 마크업 랭귀지를 통해 웹의 뼈대를 설계하고, 'CSS' 로 꾸미고 장식한다.
이후 'JavaScript' 라는 객체 기반의 언어를 통해 웹의 동작을 구현한다.
전에 잠깐 HTML과 CSS를 공부해보았지만, 개념을 익히는 것은 크게 어렵지 않았다.
내가 직접 웹 사이트를 만들고, 꾸미는 일을 처음 해보았을 때 정말 흥미로웠다.
백엔드 (Back - End)
다음으로 백엔드는 서비스를 이용하는 사용자가 직접적으로 접하지 않는 영역인 서버 ,데이터베이스를
다루는 분야이다. 프론트엔드에서 사용자와 상호작용을 한다면 백엔드에서 이 작업들을 처리하는 것이다.
따라서 백엔드는 시스템 컴포넌트 작업, 라이브러리 생성, API 작성, 서버 관리, 데이터베이스 관리 등의
업무를 수행한다. 주로 'Java' 나 'PHP' 등의 언어를 사용한다.
현재 Java는 웹 개발 뿐만 아니라 서버, 모바일 등 정말 다양한 분야에서 사용되고 있기에 백엔드를
생각한다면 필수적으로 공부해야 하는 언어일 것이다.
방향성
학교에서 직접적으로 배운 언어는 많지 않았다. 나는 컴퓨터만 공부하는 학과가 아니다.
Python, C, C++, Java, R 을 깊게 배운 것이 아니라 표면적인 부분만 공부했기 때문에 더 깊게 파야한다.
현재 나의 컴퓨터에 있는 프로그램들이다. 제대로 된 공부를 하기도 전에 이것 저것 해보겠다고 막 다운받았다.
실질적으로 사용해본 프로그램은 많이 없다. 그나마 Visual이나 Python, Eclipse, IntelliJ 정도?
Oracle VM VirtualBox는 예전에 해킹 공부해보겠다고 칼리리눅스를 써보기 위해 다운받아놓고 루트계정 비밀번호도 잊어버려 사용하려면 다시 깔고 진행해야한다. 아무튼 그만큼 중구난방으로 하고싶은 것만 찍먹해봤다.
이외에도 DB 프로그램들과 Node.js 등 조금 만지다가 금방 그만 두었다.
앞으로의 공부 방향성에 대해 지속적으로 고민하고 있다. 인터넷에 떠돌아다니는 개발자 로드맵을 보면서 조금씩 갈피를 잡고있다. 아래는 현재 내가 공부하려는 방향이다.
1. 컴퓨터 공학 기초
나는 컴공과가 아니기에 자격증을 공부할 때 아니면 접할 기회가 없다. 하지만 필수적으로 알아야 하기 때문에 인터넷의 작동 원리, HTTP가 무엇인지, DNS, 도메인이 무엇인지 등 이론적인 부분을 조금씩 공부할 생각이다.
2. HTML, CSS, JavaScript
프론트엔드, 백엔드 모두 알고 있으면 좋은 언어들이다. 아직 확실한 목표가 있는 것이 아니기에 HTML과 CSS는 기본적인 부분만 공부하며 JavaScript도 틈틈이 공부할 것이다.
3. Java, Java Spring
굳이 분야를 고르자면 아직까진 백엔드 쪽에 흥미가 더 있다. 따라서 Java와 Java Spring을 공부하며,필요하다면 인강을 결제하여 깊이 파볼 생각이다. 얼마 전 Spring 개발 환경을 맞추기 위해 꼬박 이틀을 고생했다. 버전 오류 등 한 번에 되는 것이 없었다. 이는 추후에 포스팅하며 다뤄보겠다.
4. Algorithm
위에서 언급한 내용들도 중요하지만 문제 해결 능력을 키우고 효율적인 개발을 하기 위해 알고리즘 공부도 필수이다.
이는 '백준' 이나 '프로그래머스' 등 알고리즘 사이트에 있는 문제들을 풀어보며 중요한 부분부터 지식을 넓혀야겠다.
이외에도 데이터베이스나 서버 등 공부해야 할 분야가 많지만, 아직 학생이기에 기초적인 부분부터 꼭 필요한 분야까지 공부하는 것이 일차적인 목표이다.
어느 정도 기반이 잡히면 토이 프로젝트나 팀 프로젝트도 진행하며포트폴리오를 차곡차곡 쌓을 생각이다.
블로그와 더불어 깃헙에도 꾸준히 커밋하며 지속성 있는 공부를 해야겠다.
마치며
오랜만에 글을 쓰다보니 너무 두서없이 적은 것 같다. 생각을 글로 옮기는 것도 연습을 많이 해야겠다.
그래도 책은 죽어도 읽기 싫음.
왜인지 모르겠지만 데이터 분석쪽엔 흥미가 없나보다. 대학원을 가야하기도 하고 중학생때부터 꾸준히 개발자의 꿈을 가져서 그런가 많은 경험을 해보는게 중요한 것 같다. 그냥 일기처럼 꾸준히 포스팅 해야겠다. 끗.