여기 네이버 창이 있다. 이 네이버 창에 있는 웹툰, 뉴스, 블로그 버튼을 통해 우리는 만화를 보고, 정세를 알고, 기록을 하게 된다.
이 때 내 눈에 보이는 화면을 구축하는 것이 바로 프론트엔드 개발자가 하는 일이 된다. 프론트엔드(Front-end)개발은 사용자들(user)을 대상으로 UI를 만들어가는 일을 하게된다. 이들은 주로 HTML, CSS, JS 등을 통해 페이지를 만든다. 코드를 짜면 즉각적으로 눈에 보이는 프로그래밍을 하기 때문에, 결과가 비교적 명확하다는 특징이 있다. 가시적인 결과가 본인의 성취감에 중요한 영향을 끼치거나 눈에 보이는 것을 잘 캐치하는 재능이 있다면 프론트엔드 개발자를 추천하는 듯 하다. 그러나 백엔드와 비교했을 때, 코드의 유통기한이 짧은 편이다. 애초에 프론트엔드의 특성상 유지보수보다 새로운 코드를 짜는 경우가 많기 때문에 프론트엔드 코드의 퀄리티를 높이기가 어렵다. (이 외에 디자이너, 마케팅 팀등과의 협업에서 계획이 무산되는 경우도 多 이에 따라 커리어적 한계를 느끼고 기술을 바꾸는 개발자도 꽤 있는 듯 하다)
백엔드(Back-end)개발은 클라이언트와 직접 대면하지 않으나, 프론트엔드와 연합하여 사용되는 기술이다. 위의 네이버 창을 다시 끌고 와보자. 내가 네이버 홈 화면에서 '웹툰'을 클릭하면 백엔드의 기술을 통해 웹툰 UI를 끌고 오기위한 데이터들이 처리 되고, '네이버 웹툰' 창이 뜨게된다. 이렇듯 뒤에서 작용해서 UI이 없이 프로세스로 작동하는 것이 바로 백엔드다. 이들은 자바 스프링, 루비 온 레일즈, PHP 등의 언어를 사용한다. 이들은 데이터를 데이터베이스(DB)에 적재하고 관리하여 API를 만든다. 이 application programming interface는 사용자가 웹툰 창에서 '신과 함께'라는 웹툰을 보기 위해 버튼을 클릭하면, 수많은 웹툰의 데이터 사이에서 쉽게 '신과 함께'라는 데이터를 볼 수 있도록 구축해놓은 코드다. 이 API를 통해 백엔드는 프론트엔드 기술과 연동된다. 백엔드는 내가 짠 코드를 가시적으로 명확하게 볼 수 없는 답답함이 따른다는 것이 가장 큰 단점이 된다. 특히나 위에서 설명했던 프론트엔드의 장점이 자신과 잘 맞는 특성을 가진 사람이라면 더더욱 백엔드 개발을 공부하는 것이 힘들 듯 하다.
프론트 엔드와 잘 맞는 성향은 위에서 설명했다. 그렇다면 백엔드는 어떤 사람이 잘 맞을까? 백엔드는 눈에 보이지 않는 프로세스를 구축하는 일이기 때문에 추상화적 사고 능력이 필요하다. 또한 (요즘은 케바케라고 하지만)코드의 유통기한이 길기 때문에 유지 보수를 위한 가독성 좋은 코드를 짜는 것이 중요하다. 그래서 진득하게 공부하는 것을 좋아하고, 언어의 역사적 공부를 통해 논리적인 흐름 방향을 제대로 알고 이해하는 공부 방법을 택하는 사람에게 잘 맞을 것이라고 여겨진다.
나는 사실 전형적인 문과생으로, 철학과 심리학을 전공했다. 초기에는 개발의 기술적 능력을 보고 관심이 간 것도 사실이지만, 철학을 공부하며 추상적 사고 능력과 한 개념의 뼈대를 논리, 구조적으로 이해하는 능력이 생겼고, 기본적으로 학문에 대한 학구열과 의지가 높은 편이기에 계속해서 공부해야 하는 개발자에 더 빠져들게 됐다.
그렇다면 나는 프론트엔드와 백엔드 중 어떤 분야를 선택해야 할까? 추상화적, 논리적 사고력이 뛰어나서 백엔드? 하지만 나는 눈에 보이는 것에 예민하고, 트렌드에 민감하다(!) 눈에 보이는 것으로 성취감을 얻기 때문에 항상 하루의 시작에 TO-DO-LIST를 작성해서 가시적으로 내 성취결과를 확인하는 사람이다. 그렇다면 프론트엔드 개발자가 되어야 할까?
사실 솔직히 말하자면 아직 잘 모르겠다. 그렇지만 내가 백엔드 개발을 공부하고 있는 이유는 첫번째로, 입문하기엔 프론트엔드 보다 조금 더 넓고 복잡하게 느껴지는 백엔드를 먼저 공부해서 프론트의 분야로도 천천히 넓혀가기 위함이고, 두번째는 다른 무엇보다 문제 해결에 초점을 맞추는 프로그래머가 되고 싶기 때문이다. 문제를 해결하는 프로그래머가 되기 위해서는 프론트냐, 백엔드냐 하는 기술을 당장 선택하는 것이 중요하다기 보다 목적을 뚜렷하게 설정하는 작업이 필요할 것 같다.
비전공자인 내가 개발 공부에 뛰어든 이 상황에서, 내가 가지고 있는 장점은 목표 지향과 그 개념에 대해서 깊게 사고할 수 있는 능력, 통찰력일 것이다. 앞으로도 내가 이 공부를 시작한 목적, 내가 되고 싶은 개발자의 모습을 잃지 않고 공부를 이어갈 수 있었으면 좋겠다!
"때로는 문제를 해결하는 가장 좋은 방법이 정책을 바꾸고 프로그래밍을 안하는 것일 수도 있다."
[> https://youtu.be/3H4umWD5bwI]
내가 해나갈 공부와 기술에 대한 가치, 목적을 잃지 말고.. 공부하자!!