Search

개발자가 되고 싶으세요?

기간
2020/05/25 → 2020/05/31
분류
과학 / 기술
한 줄 요약
개발자를 알기 위해서, 그들이 사는 세계를 살펴봐야 한다.
저자 및 출판사
평가
⭐️⭐️
프론트엔드, 백엔드 등의 단어를 들어본 사람은 많다. 그러나, 이들 중에서 이 컴퓨터 공학 용어의 의미를 진정으로 아는 사람은 얼마나 될까? 사회는 우리들에게 융복합 인재가 되기를 강요하고 서로 다른 업계 사이의 크로싱을 주장한다. 그러나, 단순히 사회가 요구했다는 이유만으로 이를 따르려는 사람들이 대다수이고, 서로 다른 영역 사이의 연결이 진정으로 자신에게 무엇을 안겨다 줄지 고민하는 사람은 적다. 공부의 시발점이 개인이 아닌, 사회에 대한 순응 때문이기에 이러한 공부가 수박 겉핥기 정도로 남을 확률이 크다. 마치, 백엔드에 대해 물어봤을 때, 이를 명쾌하게 대답하지 못하는 사람들처럼 말이다. 적어도 그러한 사람들이 되지 말자는 다짐으로 이 책을 집어들었다.
프론트엔드와 백엔드, 이 두 단어에 있는 접두사가 이들의 기능을 함축해서 보여준다. '프론트'와 '백', 말 그대로 '겉으로 보여지는 것'과 '겉으로 보여지지 않는 것'을 의미한다. 우리가 사용하는 모든 기기 서비스는 사실 데이터의 집합이다. 예시를 들자면, 신사는 옷의 데이터를, 배달의 민족은 음식점 데이터를 제공한다.다만, 이러한 서비스가 데이터의 집함임을 느끼지 못하는 이유는 데이터의 순수 형태로서 이를 보지 않고 있기 때문이다. 가공되지 않는, 순수한 데이터를 백엔드 개발자가 관리하며 이를 사용자가 손쉽게 이용할 수 있도록 프론트엔드 개발자가 가공 및 변형시킨다. 그리고, 백엔드와 프론트엔드를 모두 다룰 줄 아는 개발자를 풀스택 개발자라 부른다.
프론트앤드와 백앤드 개발자, 이 둘은 서로 다른 역할을 소화하기에 사용하는 언어도 다룰 수 밖에 없다. 프론트엔드에서의 핵심은 사용자에게 데이터를 보여주는 것으로, 이에 적합한 HTML(Hyper Text Mark Laguague), Java Script, CSS 등의 언어를 사용한다. 반면, 백엔드의 핵심은 데이터의 관리이므로 여기에 적합한 언어인 C, C+, Java 등을 사용한다. 목적에 맞게 도구를 쓰듯이, 개발의 영역이 프론트인지 혹은 백인지에 따라서 언어가 결정된다.
컴퓨터 언어를 모르는 사람이 컴퓨터를 사용할 수 있는 가장 큰 이유는, 개발자들이 애초에 이를 고려하여 만들기 때문이다. 즉, 개발자들이 컴퓨터 언어를 모르는 일반인도 서비스를 쉽게 사용할 수 있도록 코딩을 하고 있는 것이다. 이에 대한 예시는 도메인에서도 찾을 수 있다. 도메인은 숫자로만 구성된 IP 주소르 일반인도 알아볼 수 있게 만들기 위하여 숫자로 이루어진 IP에 부여된 이름이다. 이 도메인 덕분에 우리는 수 많은 정보의 바다에서 특정 주소를 찾고, 원하는 정보를 가질 수 있게 된다.
개발자의 노고는 이에 그치지 않는다. 결국 데이터를 보여주는 방식은 시각적 요소인, UI에 의존한다. 이를 바꿔 말하면 컴퓨터 언어를 모르는 사용자가 데이터를 쉽게 활용할 수 있도록 시각적 측면까지도 신경써야 함을 뜻한다. 물론 UI를 기획하는 것은 디자이너와 기획자의 역활이 더 크지만, 이들의 기획물을 구현하는 것은 결과적으로 개발자이다. 우리는 디자이너라면 개발자의 협얼 위하여, 개발 영역에서 쓰이는 용어에 친숙해져야 한다고 말한다. 사실, 이 말은 디자이너 뿐만이 아니라, 개발자에게도 통용된 셈이다.
개발은 곧 알고리즘을 짜는 것이다. 알고리즘을 생각했을 때, 흔히 하나의 프로세스와 여기서 yes 혹은, no에 의하여 갈라지는 일종의 나뭇가지 모형을 생각해낸다. 그러나, 이 거대한 나뭇가지의 기저에는 시간의 흐름이 존재함을 인지하는 사람은 많지 않다. 돌이켜보면, 모든 행동은 시간의 축에서 존재함이 당연하다. 앞서 말한 나뭇가지에서도 보면, 특정 분기점에 도달하기 위해서는 그 이전의 분기점에 먼저 도달해야만 한다. 이러한 자명한 사실을 인지하지 못하는 이유는, 이러한 시간의 흐름에 따른 행동의 존재가 자명하다고 여겨지기 때문이다. 반면에, 개발자는 이 자명한 사실을 되돌아보고 쪼개서, 매 프로세스를 각각의 시간에 배치하는 일을 하고 있다.
어떠한 영역이든지간, 사회의 흐름을 반영하지 못한다면 도태될 수 밖에 없다. 이는 개발의 영역에서도 예외가 아니다. 과학 기술이 발전하면서, 수 많은 전자기기들이 과거와 비교했을 때, 엄청난 양의 정보를 받아들이고 잠재적 데이터를 변환해서 정한다. 수집하는 데이터가 기하급수적으로 늘어나는 상황에 부흥하기 위해서, 개발자들도 이에 적합한 기술을 개발하기 시작했다. 기하급수적으로 누적되어, 더 이상 과거의 데이터 개념으로 현재의 현실을 담아낼 수 없는, 데이터 집합인 '빅데이터'를 다루기 위해서 DB에 대한 기능도 새로운 국면을 맞이하고 있는데, 이를 보여주는 것이 NoSQL이다. 과거에 DB가 다루는 데이터 형태는 문자열에 제한된 반면, NoSQL이 등장함으로써 이제 DB가 다룰 수 있는 데이터의 형태에 제한이 사라지기 시작했다. DB는 빅데이터의 등장에 걸맞게 음악, 영상 등처럼 다양한 데이터를 관리할 수 있게 향상되었는데, 이 모든 것들도 개발자의 결과물이다. 우리는 개발자를 생각할 때, 고리타분하고 정적인 이미지를 생각한다. 그러나, 실상으로 개발자들도 누구 못지 않게 현재의 트렌드를 파악하고 이를 적용하는 사람들이다.