개발자에 대한 분류, 개발자란 무엇인가?

개발자라는 이름으로 벌써 10년 넘게 일하고 있으면서도, 개발자가 뭐하는 사람이냐고 물어본다면 가끔 난처해지곤 합니다. 왜냐하면, 저도 그에 대한 해답을 찾아가는 중이거든요. 제 직업에 대해 물어본다면, 물어보는 사람의 사전 지식이나 질문하는 주변 환경에 따라 서로 다르게 대답하곤 합니다.

프로그래머 (Programmer)

중고등학교 학생들이직업이 뭐예요?라고 물어볼 때 쓰는 말입니다. 가장 쉽게 대답할 수 있고, 가장 쉽게 이해시킬 수 있는 용어이지요. 가끔, 영화를 많이 본 학생들은 “그럼, 해킹도 할 수 있어요?”라고 물어보기도 합니다. 솔직히 말하자면, 저는 해킹은 할 줄 모릅니다. 그리고 영화에 나오는 것처럼 해킹이 멋있는 것도 아니고, 그리고 어려운 일도 아닙니다. 배워서 할 수는 있습니다. 그런데, 그건 제가 하는 일과는 거리가 먼 분야입니다.

프로그래머

프로그래머는 여러 분야를 묶어 놓어 뭉뚱그려 놓은 개념입니다. 마치 “과학자” 같은 느낌이랄까…

프로그래머는 자신의 분야에 따라서, 업무에 따라서, 때로는 사용하는 프로그래밍 언어에 따라서아주 많은 분류가 있습니다. 프로그래머는 모든 분야를 일일이 다 나열하기 힘들 만큼 많은 분야에서 활동하고 있습니다. “과학자”라는 사람들이 “교수”, “연구원”, “물리학자”, “화학자”, “천문학자”처럼, 자신의 활동분야, 학문분야에 따라 여러 가지로 나뉘듯이 말이지요.

개발자(Developer)

개발자라는 말은 프로그래머라는 영어를 단순히 한국어로 풀어놓은 것처럼 보입니다. 그러면서, 개발자라는 단어는 개발자 스스로 혹은 상위 관리자들에 의해,약간의 비하가 섞인 듯한 뉘앙스를 가지고 있습니다. 원래, 개발자는 말 그대로 프로그램을 개발하는 사람을 통칭하는 단어이지만, 한국에서는 “프로그래머”라는 통칭의 개념보다는 뒤에 나올 설계자, 아키텍트와 구분하여, 프로그램을 개발만 할 줄 아는 “코더(Coder)”와 비슷한 개념으로 쓰기도 합니다. 코더는 코딩하는 사람이라는 뜻이지요. 그래서 개발자라는 용어에 대한 어감이 그렇게 좋은 편은 아닙니다.

최근에는 부동산 개발(토지를 수용하고, 분양하는 등의 일)을 하는 사람들이 스스로를 “디벨로퍼”라고 칭하면서, “업자”라는 느낌에서 벗어나려 노력하는 것 같아보여 다소 아이러니하게 느껴지기도 했습니다. “개발자”라는 단어는 비하이지만, “디벨로퍼”는 자신의 지위를 높여 부르는 듯한 뉘앙스를 풍기더군요.

설계자 vs. 아키텍트(Architect)

프로그램을 만들거나, 시스템을 구축하는 것은 종종 건설 현장의 프로젝트에 비유되곤 합니다. 실제로 프로젝트 진행 절차는 건설 현장의 일정이나 용어를 많이 차용해서 사용하곤 합니다. 그런데, 한국어와 영어에 다소간 차이가 있습니다. 그래서 설계자에 어울리는 영어 단어를 찾기가 어렵네요.

요즘 건축 설계사에게 “디자이너”라는 말을 사용하기도 하던데, IT 업계에서의 “디자이너”는 패션 업계의 용어와 비슷한 의미로, 화면을 예쁘게 만드는 프로그래머를 말하는 용어로 주로 사용합니다. 그렇다고 아키텍처라는 용어를 사용하기에도 애매한 것이 IT 업계에서 이른바 “아키”라고 불리는 사람들은 프로그램 혹은 시스템의 전체 틀을 잡는 사람들이고, 세부적인 기능까지 설계하는 사람들은 아니기 때문입니다.

설계자

IT 업계에서 “설계자”는 프로그램을 구체적으로 설계하고, 개발자가 개발할 수 있는 문서를 만들고, 때에 따라서는 개발도 할 줄 알아야 하는 애매한 포지션에 있습니다. 그러면서 동시에 구축하고자 하는 시스템의 비즈니스를 가장 잘 이해하고 있어야 합니다. 즉, 은행 시스템이면, 은행 업무를 은행원만큼 잘 알아야 시스템을 설계할 수 있는 것이지요. 그래서 “설계자”라는 말에 적절한 영어 단어를 찾기 못했습니다.

Front End vs. Backend

두 개의 분류는 간단합니다.프론트엔드(Front End) 개발자는 주로 화면을 다룹니다. 그래서, 특히 한국에서는 까다로운 일 중에 하나이지요. 일찍부터 인터넷이 발달하고 전 국민이 스마트폰을 다룰 줄 아는 한국에서는 화면에 대한 요구조건이 매우 까다롭습니다. 색상부터 글꼴, 아이콘 배치까지 작은 것 하나하나… 가장 많은 시어머니와 응대해야 하는 일이지요. 프런트엔드 개발자는, 개발자이지만 디자이너에 더 가까운 느낌이기도 합니다.

프론트엔즈

반면,백엔드(Backend) 개발자는 화면에서 호출한 기능을 개발하는 일을 주로 합니다. 화면에서 클릭이 일어난 후의 일을 주로 하다고 보면 됩니다. 조회, 저장, 삭제 같은 기능을 화면 뒤에서 지원해주지요. 흔히 생각하는 개발자의 모습에 가장 가까운 일이 아닐까 생각합니다.

SI vs. SM

이건 IT업계에서 사용하는 말인데, SI(System Integration: 시스템통합)는 새로운 시스템을 구축하는 일, SM(System Management)은 만들어 둔 시스템을 유지보수하는 일 정도로 구분하면 되겠습니다.

자동차로 말하자면,SI는 자동차 조립공장, SM는 정비소정도가 되겠고, 건축으로 보면, SI는 건물을 만드는 일, SM은 건물을 유지보수하는 일에 비유할 수 있을 것 같습니다.

맺음말

최근개발자라고 불리는 사람들은 위에 망라한 모든 분야에서 하나 이상의 전문성을 가지고 있으면서도, 모든 분야를 조금씩을 할 줄 알아야 하는 상황으로 변해가는 듯 합니다. 점점 진입장벽이 높아지는 느낌이랄까요. 배워야 할 것도, 해야 할 것도 점점 많아지는 것 같습니다. 앞으로 제가 쓰는 글이 그 장벽을 낮추는데 조금이라도 도움이 되었으면 하는 마음에, 앞으로도 꾸준히 글을 써 볼 생각입니다.