만으로 한 달이 되지 않은 지금의 소감 먼저

어렵다.. 점점 나는 이해하지 못하는 게 한둘이 아닌데 진도는 나아간다.

필기하고 코드를 따라 치고.. 하다 보면 이해가 안 가는데도 해야 한다.

그러다 실전에 돌입하면(코딩테스트 등) 살기 위해 더 공부가 되는 듯하다.

 

단어 자체도 익숙지 않은데 단어들이 또 평소 쓸 일도 없는 영어로 돼 있지 않은가..

첩첩산중이다.

 

앞으로는

어차피 한번 듣는다고 이해는 못한다. 실전에 부딪혀 살려고 하는 공부가 더 기억에 오래 남았던 것을 기억하자.

1. 수업은 이해가 안 돼도 따라 듣자.

2. 스터디 등에서 함께 하는 코딩테스트 등은 무조건 빠지지 말고 참여하자.

3. 코딩테스트에서 도움이 됐던 문제들은 지금과 같이 블로그에 리뷰 형식으로 작성하자.

(면접에서 코드를 리뷰하는 형식으로 진행하는 곳들도 있다. 도움이 될 거라 생각한다.)

4. 코딩테스트에서 내가 진행했던 방식 외에 다른 사람의 풀이도 꼭 참고하여 1석2조 실력 향상을 노리자.

5. 남는 시간을 활용해서 강의를 따라 코드를 작성해서 최대한 이해하려고 노력해 보자.

(연습 코딩테스트 때야 보고 공부하면 되지만 실전에서 모르던 게 나온다면 공부하다 시간 다 까먹을 거다)

 

마음가짐

나만 모르랴? 남들도 모를 거다!!

https://roadmap.sh/backend

 

Backend Developer Roadmap: What is Backend Development?

Learn what backend development is, what backend developers do and how to become one using our community-driven roadmap.

roadmap.sh

위의 사이트에서 개발자 커리어 로드맵을 확인할 수 있다.

백엔드 개발자에게 필요한 역량들에 대해 말로만 들었을 때와 또 다른 압박감? 이 보이는 듯하다.

 

나는 이 로드맵을 보고 생각했다. "아 내가 시작하기 전에 저 로드맵을 못 봐서 참 다행이다"라고..
아마 또 이것부터 보고 시작했으면 시작을 할 수 있었을지 조차 의문이 든다.

 

까마득하다... 저 까마득한 로드맵의 스크롤을 끝까지 내리면

이러한 문구가 보인다. 내가 하고 싶은 질문이다.

 

그에 대한 대답은 아래와 같다.

이제 막 시작하는 완전 초보자라면 Python, Ruby, Java, Go 등의 백엔드 프로그래밍 언어를 학습하는 것으로 시작할 수 있습니다.

 

살면서 이게 맞는 말인진 모르겠지만 누구나 수도 없이 들어봤을 것이다. 시작이 반이다.

나도 모르겠다. 그렇지만 어찌 됐건 나는 시작했고 로드맵의 만든 이도 친절히 답변해주고 있다. 처음엔 Python, Ruby, Java, Go 등 프로그래밍 언어부터 학습하라고. 그럼 어찌 됐건 지금 난 제대로 하고 있는 게 맞을 것이다.

(그렇게 믿고 나아가야지 안 그럼 어우.. 막막하다 막막해..)

 

그래서 로드맵은 그러하고 되고 싶은 개발자는 무엇이 있으려나?

 

그에 대한 답은 나도 아직 모르겠다.

적지 않은 나이에 다시 새로 시작하는 일이 당연히 돈을 많이 벌 수 있었으면 좋겠다.

그럴 수 있는 직종엔 교육, 전자상거래, 금융등이 있을 수 있겠다.

 

무조건 적으로 비례하지는 않겠지만 돈을 많이 벌 수 있는 직종이려면 그만큼의 실력이 있어야 할 거라 생각한다.

물론 하고 싶은 목표를 뚜렷하게 하고 나아가는 게 좋을 수도 있겠다. 그렇지만 조금은 현실적인 타협점을 찾고 있는 나로서는 열심히 하다 내가 하고 싶은 분야가 분명 생길 거라 믿고 나아가고 있다.

 

우리는 살아가면서 하루하루 무언가에 부딪히며 살아가야 할 텐데. 그게 개발이 됐건, 동료와의 커뮤니케이션이 됐건. 나는 긍정적으로 부딪힐 수 있는 개발자가 되고 싶다.

 

하루 24시간 중에 주말을 제외하곤(제외할 수 있겠지??) 내가 가장 많이 하게 되는 행위가 '일' 일 텐데, 그렇게 큰 비중을 차지하는 일이 내가 하고 싶지 않은 일이라면? 생각하기도 싫다 벌써 문장 자체로도 부정적이다.

부정적이 되는 순간 사람의 개발은 멈춘다고 생각한다. 더 무서운 건 그걸 알면서도 사람은 부정적이게 된다는 것이다.

부정적이고 싶지 않은 나이기에 계속해서 나를 개발해 나갈 수 있는 개발자가 되고자 한다.

 

먼 미래에 이 글이 나에게 다시 한번 원동력이 돼 준다면 나는 다시 한번 긍정적이 될 수 있지 않을까 생각한다.

 

우선 프론트엔드와 백엔드의 차이는 뭘까?  (결국 버튼 하나로 이어지는 우리)


가장 간단하게는 프론트엔드 개발자는 눈에 보이는 것을 개발,

백엔드 개발자는 눈에 보이지 않는 것을 개발한다고 생각하면 쉽다.

 

요즘의 우리는 매일같이 핸드폰이나 컴퓨터를 통해 인터넷에 접속해 많은 작업을 한다. (노는 것도 작업이라고 쳐두자)

인터넷이나 앱을 통해 (인스타그램, 페이스북, 유브 등등) 쇼츠를 보고 서핑을 하고 하는 눈에 보이는 모든 작업의 결과물들이 프론트엔드 개발과 백엔드 개발이 합쳐져 탄생하게 된다.

 

가령 유튜브 쇼츠를 보다 보면 쇼츠가 아닌 원본의 영상으로 보고 싶을 때가 있다. 홍보를 더 똑똑하고 열심히 하는 채널 주인이라면 하단부에 있는 세모 버튼을 추가해 두었을 것이다. 

요런 버튼(몰랐으면 알아가시라)

우린 그 표시를 눌러 원하는 영상의 원본으로 들어가 즐길 수 있는데, 이렇게 버튼을 누를 수 있는 틀을 잡아주는 게 프론트엔드 개발자가 하는 일이라면 백엔드 개발자는 그 버튼을 눌렀을 때 해당 영상을 화면에 띄워주는 일을 한다.

 

이렇듯 우리가 평소 아무렇지 않게 작동해 왔던 것들이 최소한 (정말 간단하게 보자면..) 두 가지 동작이 합쳐져 있는 행위였던 것이다.

 

얼핏 보면 비슷해 보이지만 전혀 다른 영역에서 다른 방식으로 일 처리를 해야 하기에 서로 사용하는 언어도 다를 수밖에 없다.

 

서로 다른 언어?

- 프론트엔드 대표적 언어

Java Scrpt
웹 페이지 상에서 동적 기능을 구현하는 데 주로 활용되는 스크립트 언어

HTML
HTML은 웹 브라우저에 웹 페이지의 내용을 표시하기 위한 구조적 요소와 텍스트를 정의하고, 링크, 이미지, 멀티미디어 등 다양한 요소를 표현가능케 한다.

CSS

웹 페이지의 디자인, 폰트, 색상, 레이아웃 및 다양한 시각적 효과를 정의

- 백엔드 대표적 언어

PHP
서버 측 웹 개발을 위한 스크립트 언어로, 동적 웹 페이지를 생성하고 데이터베이스와 상호 작용하기 위해 사용

Java
Java는 백엔드 개발에서 널리 사용되는 객체지향 프로그래밍 언어

 

그럼 난 왜 백엔드? 

난 꽤 오랫동안 커피머신이나 오븐 등 주방 장비를 다루는 엔지니어였다.

정신 없는 전기도면 ㅜㅜ

 

사용자의 니즈에 맞춰 세팅을 도와주고 잘못된 부분을 찾고 고쳐나가는 게 주된 업무였다.

가끔은 일을 하며 결국 이 기기 안에서 내가 할 수 있는 건 정해진 틀 안에서 이렇게 저렇게 조합해보는 일 밖에 할 수 없겠구나 하는 생각이 들었다. 적지 않은 기간 일을 하다 보면 유저가 바라는 걸 더 맞춰줄 수 있으면 좋을텐데 이미 프로그래밍 돼 있는 이 안에서 내가 할 수 있는건 없겠구나.. 하고 회의감이 들기도 했다.

 

그러면서 알게 된 개발자.. 그중에서도 백엔드 개발자는 내가 하던 일의 연장선으로 보이기도 했다.

요즘은 버튼 한 번만 누르면 내가 원하는 커피를 만들어 마실 수도 있고, 음식을 데워 먹을 수도 있다.

버튼을 만드는 사람도, 그 버튼이 눌렸을 때 작동 되는 행위를 만드는 사람도 누군지 모르지만 우리는 너무나 간편하게 버튼 한 번을 눌러 많은 이득을 취하며 살아가고 있다.

또 정신 없는 머신 내부 (뭔가 코딩을 현실화 시켜둔 것 같다 얽히고 설키고 ~)

그래서 결국 나는

버튼을 만드는 사람도 좋지만 난 그보다 원래 보이지 않는 곳을 만지던 엔지니어였다. 보이지 않던 곳에서 더 원하는 게 생겼던 나였고 그걸 백엔드 개발자라는 직업이 조금 더 충족시켜줄 수 있을 거라 생각해 택하게 되었다.
(나두 커피 먹을 때야 그냥 먹었지 저렇게 정신없는 줄 몰랐찌..근데 코딩은 더 정신없다.)

+ Recent posts