개발자란?
개발자는 보통 소프트웨어 개발자(Software Developer)를 말한다.
아직 현업에서 일해보지 않았기 때문에 지금 당장은 어디서 주워들은 지식으로 아래 5개의 분야만 떠오른다.
- 프런트엔드 : 서비스에서 눈에 보이는 화면을 만드는 분야
- 백엔드 : 서비스에서 눈에 보이지 않는 부분에서 여러 가지 정보를 처리하는 분야
(아래 3개는 사실 잘 모른다.)
- Data Engineer : 데이터를 다루거나, 빅데이터를 이용해 머신러닝, 딥러닝, 인공지능 등을 다루는 분야
- 임베디드 : 하드웨어와 가까운 운영체제나, 실제 사용하는 기계(전자레인지) 등을 동작하게 하는 분야..?
- 보안 : 정보 보호의 관점에서 정보유출을 막는 방법을 연구하여 코드를 짜는 분야..?
이외에도 수많은 분야들이 있는 것으로 알고 있다.
그중, 가장 일반적인 프런트엔드, 백엔드 웹 개발자에 대해 알아보려고 한다.
FrontEnd와 BackEnd의 차이
우리가 컴퓨터를 켜서 인터넷 브라우저를 더블클릭 하는 순간 보이는 여러 가지 이미지와 정보들은 모두 웹개발자가 만든 것들이다. 웹 개발자가 하는 일은 크게 두 가지로 나뉜다. 첫 번째는 이용자가 직접 눈으로 마주하는 화면을 개발하는 일이고, 두 번째는 이용자는 눈으로 볼 수 없는 안 보이는 부분을 개발하는 일이다.
첫 번째, 이용자가 직접 눈으로 마주하는 화면을 개발하는 일은 프런트엔드 개발자의 일이다. 프론트엔드 개발자는 이용자가 이용하기 편리하고 예쁘게 화면을 구성해야한다. 여러분이 보고있는 지금이 블로그의 이 글에 보이는 모든것(이미지)들은 누군지 모를 프론트엔드 개발자가 열심히 만든 결과이다.
글자 크기와 폰트, 화면 왼쪽에 보이는 블로그 전체 카테고리의 모양과 구성, 스크롤을 내렸을 때 Fade-in 되며 나타나는 오른쪽의 글 목차 등 화면이 예쁘게, 효율적으로, 이용자가 원하는 기능을 적재적소에 배치하는 일은 프런트엔드 개발자의 몫이다.
두 번째, 이용자는 눈으로 볼 수 없는 안 보이는 부분을 개발하는 일은 백엔드 개발자의 몫이다. 백엔드 개발자는 이용자가 원하는 행위를 막힘없이, 빠르게 실행되도록 보이지 않는 곳(서버)에서 좋은 로직을 개발하는 일을 한다. 위에서 프런트엔드 개발자는 화면을 개발한다고 했다. 그러나 이 화면 구성에 필요한 여러 가지 데이터들을 전달하는 일은 백엔드 개발자가 한다.
다시 한번 여러분이 지금 보고 있는 이 글의 웹페이지를 예로 들어보자. 만약에 여러분이 가장 아래쪽의 댓글 창에 글을 입력하고 전송 버튼을 눌렀다고 생각해 보자. 그럼 순식간에 화면이 변경되고 댓글기록이 보이게 되며, 전송 버튼을 누르는 순간 이 블로그를 이용하는 모든 사람이 당신이 쓴 댓글을 볼 수 있게 된다. 잘은 모르지만 여러분이 전송 버튼을 누르는 순간 이 tistory블로그를 서비스하는 기업의 어떤 백엔드 개발자들이 만든 로직에 따라 화면이 새로고침되며 이후에 이 블로그에 접근하는 모든 사람들은 댓글을 확인할 수 있게 된다.
FrontEnd 언어
프런트엔드 개발자는 반드시 아래의 3가지 언어를 기본으로 사용한다.
HTML, CSS, JavaScript
HTML
HTML은 웹페이지의 전체적인 틀을 구성하는 뼈대를 만드는 역할을 한다.
여러분이 지금 웹페이지의 빈 공간에 우클릭을 한 뒤 "페이지 소스 보기"를 클릭하면 이 웹페이지의 HTML 문서를 볼 수 있다.
CSS
CSS는 HTML로 만든 뼈대에 시각적인 부분을 덧입혀서 이용자가 보기 좋게 만들어주는 역할을 한다.
CSS는 Cascading Style Sheets의 약자이다. 말 그대로 HTML에 Style을 입혀주기 위한 언어이다.
JavaScript
HTML, CSS만으로는 움직이는 웹페이지를 만들 수 없다. JavaScript는 HTML, CSS로 만든 정적인 페이지를 동적으로 움직이게 바꿔준다. 예를 들면 네이버의 메인화면에 가면 광고들이 옆으로 스크롤되며 바뀌고, 한 줄 뉴스가 다른 뉴스로 바뀔 때 부드럽게 움직이도록 하는 역할 등을 한다.
BackEnd 언어
백엔드 개발자는 여러 가지 언어 중 한 가지 언어를 사용한다.
대표적으로 Java, Phthon, PHP 등이 있다. JavaScript와 Node.js를 함께 사용하여 백엔드 개발을 하기도 한다.
Java
한국에서 백엔드에서 사용하는 언어 1위이다. 객체지향 프로그래밍 언어라는 큰 장점이 있고, 보안에 강하다.
무엇보다 아주 오래된 언어이기 때문에 안정적이고, 마찬가지로 나온 지 20년이 다되어가며 꾸준히 발전해 가는
Spring Framework와 함께 수많은 검증된 오픈소스 라이브러리들을 이용하여 빠르고 효율적인 개발을 할 수 있다는 장점이 있다.
Python
파이썬은 인터프리터 방식의 프로그래밍 언어로, 가독성이 좋고 배우기 쉽다고 한다.
그러나 속도가 느리다는 단점이 있어서 빠른 속도를 요구하는 프로그램에는 적합하지 않고, data engineering 분야에서 많이 사용하는 것으로 알고 있다.
JavaScript - Node.js
위에서 JavaScript는 프런트엔드 언어라고 했었다. 그러나 Node.js는 JavaScript를 서버에서도 사용할 수 있도록 만든 프로그램이다. JavaScript와 Node.js를 함께 사용하면 CPU부하가 큰 작업보다는 간단한 I/O요청이 빈번한 서버를 구성하기에 효과적이라고 한다.
내가 백엔드 언어를 선택한 이유
결론부터 말하자면 그냥 "재밌어서"이다.
나는 전공자는 아니지만 좀 애매한 위치에 있는 것 같다. 전자정보통신공학을 전공했는데, 전자(반도체)와 정보통신(통신 / 컴공) 이 결합된 전공이다. 4학년이 될 때까지 반도체 쪽 공부를 했다. 그런데 학과 커리큘럼상 C언어, C++, JAVA, MATLAB, 디지털논리회로, 컴퓨터구조론, 여러 가지 설계 강의 등으로 직, 간접적으로 프로그래밍이라는 분야를 접하고 있었다. 그러다 4학년 때 타 과(인공지능 관련과)의 JAVA프로그래밍 강의를 재수강으로 들었는데, 너무 재미있었다. 간단한 구구단 출력부터, 복잡한 과제들 까지 JAVA 한 학기 강의를 듣고 나니 개발자가 되어야겠다고 마음을 먹게 되었다.
처음에는 무턱대고 JAVA 공부를 했다. 그러다가 눈에 즉각적으로 보이는 게 재밌는 것 같아서 잠시 프런트엔드 공부도 병행했었다. 이후에 JAVA와 Spring을 배우고, 배운 내용을 바탕으로 조금 더 복잡한 프로그램을 직접 만들어봤다. 여기서 여러 가지 클래스와 메서드를 만들고, 그것들을 조합해서 하나의 결과를 만들어내는 과정에 큰 재미를 느껴서 본격적으로 백엔드 개발자가 되기 위한 공부를 시작했다.
4개월 정도 공부하던 차에 SpringMVC를 이용해서 간단한 게시판 프로그램을 완성했다. 솔직히 여기서부터는 뭘 어떻게 공부해야 되는지 방향을 잃었던 것 같다. 이전부터 부트캠프에 대한 생각은 계속 있었지만, 독학도 잘 되어가고 있었고, 학원이나 어디밖에 나가서 공부하는 것보다 방구석에 틀어박혀서 공부하는 것이 내 성향에 더 맞아서 독학을 계속하고 있었다.
그러던 중 "부트텐트"라는 부트캠프 정보를 모아서 제공하는 사이트에서 "제로베이스"라는 회사의 부트캠프를 발견했고, 온라인 강의 위주로 구성된 프로그램이라는 점과 커리큘럼이 괜찮아 보여서 결국 부트캠프에 들어가게 되었다.
백엔드 공부의 방향을 잃어가던 차에 부트캠프의 커리큘럼에 따라가며 공부를 하니 다시 방향성을 찾은 느낌이다.
난 코딩테스트에 대한 막연한 두려움이 있었는데, 그걸 떨쳐내기 위해 부트캠프에 들어간 것도 있다 ㅋㅋ..
여기선 과제도 내주고 '이거 풀어봐라 저거 풀어봐라' 하니까 나름 해결해 가는 재미도 있고 그래서 만족 중이다.
그리고, 나는 좀 대세를 따르는 성격이라 Python, Node.js, Java 중에 자바를 그냥 골랐다.
'기타 > 끄적끄적...' 카테고리의 다른 글
[끄적끄적] 코딩주짓수와 구글 코딩 가이드 (0) | 2024.12.30 |
---|---|
[부트캠프] 제로베이스 백엔드 취업 스쿨 수강 후기 / 회고 (4) | 2024.02.03 |
벡엔드 신입 개발자가 자료구조, 알고리즘 공부를 해야하는 이유 (0) | 2023.07.04 |
앞으로의 백엔드 공부 계획 (백엔드 공부 로드맵) (2) | 2023.06.26 |
어떤 백엔드 개발자가 되고싶은가? (0) | 2023.06.20 |