회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
요즘 고등학생의 장래 희망 4위는 컴퓨터 공학자나 소프트웨어 개발자라고 합니다. 이렇게 개발자의 인기가 높아진 지금, 사람들은 개발자라는 말에 어떤 이미지를 떠올릴까요?
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
요즘 고등학생의 장래 희망 4위는 컴퓨터 공학자나 소프트웨어 개발자라고 합니다. 이렇게 개발자의 인기가 높아진 지금, 사람들은 개발자라는 말에 어떤 이미지를 떠올릴까요?
영화나 드라마에서 자주 등장하는 대로 검은 화면에 빠르게 코드를 치며 해킹하는 모습이 생각날지도 모르겠습니다. 물론 해킹도 개발의 일부이지만, 소프트웨어 개발은 그보다 훨씬 더 방대하고 다양한 영역을 포괄합니다. 이를 비유하자면, 마치 RPG 게임에서 등장하는 여러 캐릭터 클래스(Character Class, 이하 클래스)와 비슷하다고 할 수 있죠.
현대 RPG 게임의 시조 격이라고 할 수 있는 던전앤드래곤(Dungeons & Dragons, 1974)에서 처음 등장한 클래스 개념은, 단조롭던 게임 속 캐릭터의 역할과 진행 방식을 새롭게 탈바꿈시켰습니다. 전사, 도적, 마법사, 성직자처럼 이제는 클리셰가 된 분류가 그 시작이었죠. 던전앤드래곤 다음으로 나온 정통 RPG 게임들은 이 클래스 개념을 조금씩 변형하며 꾸준히 발전시켜 왔습니다.
RPG 게임 속 클래스와 소프트웨어 개발 분야는 몇 가지 공통점을 가지고 있습니다.
첫 번째로, 클래스의 역할이 고유하다는 점입니다. 예를 들어, 드래곤 에이지: 인퀴지션(Dragon Age: Inquisition, 2014)에서는 전사, 마법사, 도적 클래스에 따라 풀 수 있는 퍼즐이 다릅니다. 그래서 세계를 온전히 탐험하려면 세 클래스를 모두 포함한 파티가 필요합니다. 소프트웨어 개발도 이와 비슷하게, 일정 규모 이상의 프로젝트에서는 역할을 세분화하고 작업을 나눕니다. 당장 게임 개발에서도 게임 클라이언트 개발자와 게임 서버 개발자가 각자 다른 역할을 맡아 협업하죠.
두 번째로, 클래스가 고정된 개념은 아니라는 점입니다. 여러 게임에서 게이머는 캐릭터를 키우다가 도중에 클래스를 바꿀 수 있습니다. 대항해시대 온라인(大航海時代 Online, 2005)에서는 캐릭터의 클래스가 고정되어 있지 않아, 사용자가 상황에 맞게 유리한 클래스를 선택할 수 있습니다. 소프트웨어 개발자도 마찬가지입니다. 한 분야에서 시작해 다른 분야로 진출하는 일이 매우 흔하죠. 예를 들어, 프론트엔드 개발자로 경력을 시작한 뒤 백엔드 개발자로 전환하거나, 백엔드 개발자에서 데브옵스(DevOps) 개발자로 이동하는 사례를 쉽게 볼 수 있습니다.
세 번째로, 한 캐릭터가 반드시 하나의 클래스만 고집하지 않아도 된다는 점입니다. 발더스 게이트 3(Baldur’s Gate 3, 2023)에서는 각 캐릭터가 하나 이상의 클래스를 선택해 단일 클래스만으로는 수행할 수 없는 독특한 역할을 맡을 수 있습니다. 개발자 역시 다양한 기술을 익혀 여러 역할을 수행할 수 있습니다. 예를 들어, 프론트엔드와 백엔드를 모두 다루는 풀스택 개발자로 성장하거나, 개발과 운영을 모두 아우르는 데브옵스 엔지니어로 활동하기도 합니다. 이러한 다재다능함은 프로젝트의 효율성을 높이고 팀의 유연성을 극대화합니다.
이제 본격적으로 소프트웨어 개발자에 RPG 클래스를 입혀보려고 합니다. 2023 프로그래머스 개발자 설문조사 리포트에 등장한 대표적인 직무를 기준으로 잡아 보았습니다.
백엔드 개발자는 무대 뒤에서 서버 로직, 데이터 처리, 데이터베이스 관리 등을 담당합니다. 마치 마법사처럼요. 이들은 프론트엔드 기능들이 마치 “마법”처럼 작동하도록 지원하며, 복잡한 워크플로와 알고리즘을 관리해 시스템이 원활히 돌아가도록 만듭니다. 비록 서비스를 사용하는 사람들이 백엔드 개발자의 작업을 직접 보진 못하더라도, 백엔드 개발자는 웹 서비스 시스템 구축의 핵심이라고 할 수 있습니다.
백엔드 개발자의 대표적인 무기로는 자바(Java), 자바스크립트(JavaScript), 파이썬(Python), 고(Go) 등이 있으며, 이러한 언어들로 서버 로직을 설계합니다. 마법사가 고대 룬 언어를 섞어 주문을 짜듯이요.
프론트엔드 개발자를 보면 RPG 게임의 레인저가 떠오릅니다. 이들은 다양한 기기, OS, 브라우저, 화면 크기에 대응하며 매끄럽고 매력적인 경험을 제공하기 위해 활약합니다. 특히, 프론트엔드 개발자들은 크로스브라우저 호환성과 반응형 디자인을 위해 “정확히 표적을 맞추는” 능력을 발휘해야 하죠. 그 때문에 여러 이슈에 다재다능하고 유연하게 대처할 수 있어야 합니다.
RPG 게임 속 레인저가 다양한 지형에서 능력을 발휘하듯, 프론트엔드 개발자 역시 디바이스와 환경에 따라 적응하며 누구나 접근할 수 있는, 반응성 있는 작업을 보장해야 합니다.
다양한 프로그래밍 언어를 사용하는 백엔드 개발자와는 달리 프론트엔드 개발자들은 대부분 자바스크립트(JavaScript)를 이용합니다. 활을 주무기로 하는 레인저처럼요. 다만 리액트(React)나 뷰(Vue) 혹은 스벨트(Svelte) 등 다양한 프레임워크로 무기를 세분화하기도 합니다.
풀스택 개발자는 두 개 이상 분야를 섭렵한 모험가와 같습니다. 프론트엔드와 백엔드 기술을 자연스럽게 융합하며, 역할을 유연하게 전환할 수 있는, 다재다능한 캐릭터의 전형입니다. 물론 특정 분야의 전문가들에 비하면 깊이 파고드는 전문성이 아쉬울 수 있지만, 이들의 폭넓은 기술은 그 자체로 매우 가치가 있습니다. 풀스택 개발자는 UI와 서버 사이의 문제를 모두 해결하는 데 능숙하기에 1인 개발자로 나서기도 합니다. 1인 파티로도 맵을 누빌 수 있는 모험가처럼요.
프론트엔드와 백엔드 기술을 모두 다루기 때문에 다양한 언어를 사용할 수도 있지만, 두 영역에서 모두 사용될 수 있는 자바스크립트(JavaScript)를 사용하는 경우도 많습니다.
머신러닝 엔지니어(또는 AI 개발자)는 방대한 데이터 풀에서 정보를 도출해 지능형 모델을 만들어 냅니다. 딥러닝 알고리즘으로 마치 스스로가 사고하고 예측하는 것처럼 보이는 모델을 설계하죠. 꼭 자유자재로 부릴 언데드를 소환하는 강령술사처럼요.
딥러닝으로 생성한 모델은 무척 복잡합니다. 때로는 모델의 제작자조차 내부 동작 방식을 설명하지 못 하기도 합니다. 이러한 불투명성(Opacity)은 게임에서의 강령술사와 비슷합니다. 죽음이라는 미지의 근원으로부터 강력한 힘을 불러오지만, 그 힘이 어떻게 작동하는지 완전히 이해하지는 못하니까요.
이들 개발자에게 파이썬은 떼려야 뗄 수 없는 친구입니다. 직관적이고 간결한 문법의 파이썬은 복잡한 딥러닝 모델이나 데이터 처리를 구현하는 데 적합합니다. 또한 텐서플로(Tensorflow)나 파이토치(PyTorch)처럼 강력한 라이브러리들이 AI 개발 분야에서 파이썬의 지배력을 공고히 합니다. 강령술사가 팔에 끼고 다니는 흑마법서가 떠오릅니다.
데이터 엔지니어는 RPG 게임 속 연금술사로 비유해 보고 싶습니다. 이들 개발자는 원시 데이터(Raw data)를 정제하고 구조화하여 다른 이가 사용할 수 있는 데이터로 변환합니다. 설계된 데이터 파이프라인은 금을 합성해 내거나 유용한 아이템을 제작하는 연금술사의 공방과 비슷한 일을 합니다. 데이터 엔지니어는 단순한 재료를 가공해 가치를 극대화하고, 이를 기반으로 더 나은 결정을 내리도록 돕는 중요한 역할을 맡고 있습니다.
데이터 엔지니어 역시 파이썬과 같은 프로그래밍 언어를 사용하지만, 데이터 웨어하우스나 데이터 프로세싱 등 작업에 필요한 전문적인 도구 지식이 필요합니다. 철학과 화학을 섭렵한 연금술사처럼요.
앱 개발과 응용프로그램 개발은 언뜻 보면 사뭇 다른 분야의 개발로 보이기도 합니다. 하지만, 두 분야 모두 특정한 운영 체제(Operating System)가 요구하는 엄격한 가이드라인을 준수해 작업한다는 공통점이 있죠. RPG 게임 속 팔라딘이 신성한 규율을 따르는 것처럼, 이 개발자들 역시 각 운영 체제의 고유한 지침을 따라 사용자 경험과 보안을 충족하는 애플리케이션을 만들어 냅니다.
때로 이들 개발자는 서버 없이도 독립적으로 작동하는 소프트웨어를 개발합니다. 오프라인에서도 기능을 사용할 수 있도록요. 게임의 팔라딘들이 마법사의 도움 없이도 마치 마법을 부린 듯 기적적인 효과를 불러일으키는 모습이 생각납니다.
앱과 응용프로그램은 각 운영 체제에 맞춘 언어를 이용해 작성하는 것이 가장 보편적입니다. iOS와 맥(macOS)은 스위프트(Swift), 안드로이드는 자바나 코틀린(Kotlin), 윈도우는 C#이 대표적이죠. 게임에서 팔라딘이 따르는 규율이 세계관에 맞춰져 있듯이요.
음유시인은 게임에서 모험가 파티를 지원하는 클래스입니다. 개발팀 모두의 든든한 지원자, 데브옵스 개발자가 여기 어울립니다. 이들 개발자는 인프라를 안정적으로 유지하고, 지속적 통합과 배포(Continuous Integration & Continuous Deployment, CI/CD) 과정을 원활하게 관리하며 개발과 운영 사이 간극을 메웁니다.
때로 쓰러진 기사를 대신해 음유시인이 전투에 뛰어들듯, 데브옵스 개발자도 스크립트를 직접 작성하거나 코드로 인프라를 구성(Infra as Code, IaC)합니다. 이 모든 것은 팀원들의 개발 경험(Developer eXperience, DX)을 향상해 효율적으로 서비스를 개발하기 위함입니다.
음유시인에게 음악이 있듯, 이들은 쿠버네티스(Kubernetese, k8s), 테라폼(Terraform) 같은 도구를 사용합니다. 고(Go) 언어나 자바스크립트, 혹은 파이썬처럼 스크립트 언어로 코드를 작성하기도 합니다.
소프트웨어 개발의 세계는 RPG 게임과 마찬가지로 다양한 전문 분야를 가진 개발자들이 협력하고 모험하는 땅입니다. 백엔드, 프론트엔드, 데브옵스 등 다양한 개발 분야도 소프트웨어 개발이라는 방대한 영역의 일부일지 모릅니다.
RPG 게임의 클래스 비유로 개발 분야 사이 그어진 선을 나타낸 것은 아닙니다. 실제 소프트웨어 개발에서는 역할이 수도 없이 겹치며, 전문가들 역시 본인의 주요 분야를 넘어서는 작업을 수행할 일이 많습니다. 백엔드 개발자가 간단한 어드민 페이지를 제작하거나, 프론트엔드 개발자가 데이터베이스 쿼리를 작성할 수도 있으니까요. 마찬가지로 데브옵스 개발자가 핵심 기능의 코드를 작성하거나 풀스택 개발자가 클라우드 인프라 설정에 참여하는 일도 있습니다.
이제 캐릭터 소개 튜토리얼은 끝입니다. 개발 분야와 그 역할의 탐색이 끝났다면, 직접 다양한 소프트웨어 개발과 모험의 세계에 도전해 보세요!
요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.