나는 기획을 할지 개발을 할지 아직 갈피를 못 잡고 일단 시작이나 해보자는 심정으로 독학을 하는 문과 졸업생이다. 독학으로 공부하려니 프레임워크니 API니 하는 말부터 뭔지 모르겠어서 공부를 하면서도 제대로 이해했다는 생각이 안 들었다. 인터넷에 용어를 검색해도 나오는 설명조차 이해하지 못했다. 너무 답답했다. 그러다 서점에서 이 책의 표지를 봤는데 "API, 클라, 서버, 프레임워크... 도대체 뭐라는 거야?"라는 말이 적혀 있어서 바로 집어들었다. 이것은 바로 나를 위한 책이었다!
이 책은 기획자가 개발 공부를 하지 않고서도 개발자와 잘 소통할 수 있도록 하기 위해 만들어진 책이란다. 비전공자를 위한 책 답게 IT 용어를 쉽게 풀어 설명하고 있다. 기획자 말고도 나처럼 개발 공부를 시작한 비전공자들이 컴퓨터 언어를 배우기 전에 이 책을 먼저 읽으면 좋겠다. 나는 Javascript를 보다가 너무 답답해서 읽었는데 '좀 더 빨리 이 책을 알았다면 좋았을걸'하는 생각이 들었다. 컴퓨터 공학의 1도 모르는 내게는 선물 같은 책이다.
기획자 : "혹시 저번에 말씀드린 아이콘 수정은 언제까지 될까요?"
개발자 : "아 그게 서버에서 이미지 URL을 보내줘야 하는데, API가 미완성인 것 같아요. JSON에 아이콘 URL만 빠져있네요... 클라는 URL이 안 오면 기본값이 뜨게 해놨어요. 근데 제가 임의로 만들어서 좀 이상하게 보일 겁니다."
저자는 첫 장에서 위의 예시를 들며 이 책을 다 읽으면 개발자의 말이 이해가 갈 거라고 했다. 정말로 그랬다. 책에는 개발자가 무슨 일을 하는 사람인지와 함께 개발자를 네트워크를 기준으로 어떻게 구분하는지, 구분된 개발자들 사이에서 주고받는 정보는 어떻게 이동하는지, 개발자들이 쓰는 도구는 무엇이며 디자이너와 개발자 사이에는 어떤 이슈가 있는지 등의 내용이 있다.
간단히 말하면 개발자는 컴퓨터 언어(파이썬, html, 자바 등)로 컴퓨터에게 일을 시키는 사람이다. 개발자는 어떤 운영체제 위에 돌아가는 소프트웨어를 만드는지에 따라 안드로이드 개발자, iOS 개발자, 맥OS 개발자, 윈도우 개발자 등이 있다. 안드로이드를 예로 들어 보자. 내가 갤럭시로 카카오톡에 접속해서 친구에게 파일을 보냈다. 나와 친구의 핸드폰은 카카오톡의 컴퓨터에 파일을 보내라고 요청하고, 받아달라고 요청하는 '클라이언트(고객)'다. 위의 대화에서 개발자는 이를 '클라'라고 불렀다. 또 다른 말로는 '프론트 엔드'가 있다. 고객이 볼 수 있는 곳에 있으니 '앞'이라고 부른다. 한편, 파일을 주는 카카오톡의 컴퓨터는 '서버'다. 서버는 고객이 볼 수 없다. 그래서 '백 엔드'다. 이에 따라 안드로이드 개발자든, iOS 개발자든, 윈도우든 맥이든 이 개발자들은 다시 '프론트 엔드' 개발자와 '백 엔드' 개발자로 나눌 수 있다.
그리고 클라와 서버의 사이에는 API가 있다. 클라가 요청을 보내면 서버가 그것을 어떻게 처리하고 응답할지를 정해둔 것이 API이다. API는 단순히 클라와 서버 사이뿐만이 아니라, 서로 다른 소프트웨어가 서로의 기능을 사용하기 위해 만들어지기도 한다. 우리가 구글 지도를 구글 앱 말고도 다른 앱에서도 볼 수 있는 이유는, 구글이 자신들의 API를 제공해주는 다른 소프트웨어인 'SDK'를 제공하기 때문이다. 개발자들은 구글의 지도 SDK를 설치해서 자신의 소프트웨어에 넣는다. 그러면 구글 SDK에서 제공해주는 API들이 구글 지도에 요청을 보낼 수 있고, 사용자는 그 앱에서 구글 지도를 사용할 수 있는 것이다.
자, 그럼 이제 개발자의 첫 번째 말이 이해가 된다. 서버 컴퓨터에서 아이콘의 이미지 주소를 클라이언트 컴퓨터로 보내야 하는데, API가 미완성이란다. 즉 서버와 클라 컴퓨터가 서로 소통하는데 필요한 의사소통 방법이 아직 만들어지지 않아서 아이콘을 서버에서 클라로 보낼 수가 없는 것이다. 뒷 문장도 JSON이 뭔지만 알면 바로 풀이할 수 있다. 앞서 클라가 서버에 요청을 하면 서버가 응답을 하며, 그것을 처리하는 게 API라고 했다. 클라의 요청에는 필요한 정보가 담겨서 서버로 보내진다. 만약 내 이름과 핸드폰 번호를 보낸다면 그 정보의 형식은 '스컹크 : 010-1234-5678'일 수도 있고, '스컹크 : 01012345678'일 수도 있다. 이 형식은 컴퓨터 언어처럼 여러 가지가 있다. 위의 개발자는 JSON 형식을 사용해서 정보를 주고받는다고 한다.
다시 개발자의 말을 풀기 전에 저 개발자가 어떤 개발자인지 먼저 생각해보자. 클라를 기본값이 뜨게 해놨다고 하니까 클라이언트, 즉 프론트 엔드 개발자일 것이다. 서버 개발자가 API를 만들고, 프론트 엔드 개발자는 그 API를 이용해서 개발을 한다. 데이터는 JSON 형식으로 주고받기로 했나 보다. 그런데 서버에 요청을 보내고 응답을 받으니 아이콘 URL 데이터가 없었다고 한다. 그래서 일단 자기가 아이콘을 임의로 만들어서 기본값이 뜨게 해놨다고 했다. 그럼 이제 이 기획자는 뭐라고 하면 될까?
기획자 : "아 그럼 클라는 거의 끝났네요. 서버 개발자분이랑 얘기해볼게요. 더불어 디자이너분이랑 얘기해서 기본 아이콘을 하나 정해드릴게요. 바꾸고 나면 바로 심사 신청 해주세요."
책에는 이외에도 애플리케이션과 웹의 특징, 데이터베이스와 이미지 처리, 프레임워크와 라이브러리, 협업 방법 등에 관한 내용이 나와 있다. 앞으로 내가 무엇을 공부하고 무엇을 생각하며 공부해야 할지를 좀더 명확하게 알게 된 것 같아 기쁘다. 책상 위에 두고 심심할 때마다 읽어서 단어가 익숙해질 때까지 봐야겠다.