brunch

매거진 CONTENTS

You can make anything
by writing

C.S.Lewis

좋은 개발자가 되기 위한 방법

[스플X코드스테이츠]


요즘 뉴스를 보면 여러 스타트업에서 개발자 모셔오기에 한창인 것을 확인할 수 있습니다. 부동산 중개 플랫폼인 직방에서는 신입 개발자의 연봉을 8,000만 원으로 인상하는 한편, 콘텐츠 스타트업 리디는 경력직 입사자의 연봉을 직전 연봉보다 30% 인상하겠다고 발표했습니다.


출처: 한경 BIO Insight - "연봉 2.5배올려주고 1억더"…파격조건내건회사


출처: 레오제이 유튜브


취업난이 한창인 요즘, 왜 유난히 개발자라는 직군만 이런 뉴스들을 찾아볼 수 있는 걸까요?


그리고 개발자가 대체 무엇이길래, 유명 기업들도 이들을 모셔오기에 혈안일까요?


누군가는 이제 개발 관련 직무가 레드오션이라고 말하기도 합니다. 하지만 프로그래밍이 필요한 일은 점점 많아지고 있으며 이를 방증하듯 미 노동청에서는 2029년까지 웹 개발자와 디자이너가 8% 증가할 것으로 예상하였습니다. 이는 모든 직업의 평균 증가율인 4%의 두 배인 수치입니다. 왜 이런 현상이 나타나는 걸까요?


출처: https://www.bls.gov/ooh/computer-and-information-technology/web-developers.htm_



우리의 하루는 자는 시간을 제외하곤 늘 IT 제품들과 함께한다고 할 수 있습니다. 아침에 일어나면 소셜 미디어를 확인하고 배가 고프면 자연스럽게 배달 앱을 켭니다. 이렇게 쇼핑이나 여가 등 다양한 소비활동이 온라인으로 옮겨가면서 기업에서는 신규 서비스 개발과 운영 등을 위해 모바일 앱 및 웹 페이지가 필수적으로 필요한 상황이 되었습니다. 그리고 이는 곧 개발자에 대한 수요 증가로 이어졌습니다.


개발자를 구해 제품 개발이 끝나면 이제 개발자의 역할은 끝난 것이 아니냐는 생각을 할 수도 있습니다. 하지만 개발자가 애플리케이션을 만들기 위해 작성한 코드는 한번 작성이 끝나면 계속 쓸 수 있는 불멸의 코드가 아닙니다. 5년 전의 인스타그램이 지금의 인스타그램과 큰 차이를 보이는 것처럼, 코드 또한 수명을 가지고 있습니다. 이유는 바로 IT 기술이 매년 폭발적인 속도로 성장하기 때문입니다.


그래서 개발자를 “평생 공부해야 하는 직업”으로 꼽는 데에는 다 이유가 있겠죠? 따라서 기업은 개발한 제품이 다른 제품들에 의해 도태되지 않으려면 코드를 주기적으로 업데이트하고 관리할 수 있는 인력을 필요로 합니다. 그래서 많은 기업에서는 IT 제품을 개발하고 유지 및 보수하는 사람, 즉 개발자가 매우 중요한 인재가 되었습니다.


앞으로도 개발자 및 관련 직무에 대한 수요는 계속해서 늘어날 것으로 예상됩니다. 살펴보니 개발자는 정말 중요한 직군이 맞는 것 같습니다. 자, 그럼 개발자는 실제로 현업에서 어떠한 일을 하게 될까요? 개발자의 가장 대표적인 직무인 프론트엔드 개발과 백엔드 개발에 대해 살펴보겠습니다.




프론트엔드 개발자는 무슨 일을 할까요?


출처: Shutterstock


여러분이 쿠팡과 같은 소셜 커머스를 이용할 때를 떠올려보세요. 여러 가지 물건에 대한 이미지와 그에 따른 구매하기 버튼 그리고 검색어 입력창 등이 있을 겁니다. 이렇게 우리가 웹 서비스에서 눈으로 볼 수 있는 모든 부분이 프론트엔드 개발자의 영역입니다. 여기에는 고객이 원하는 화면을 최대한 빨리 보여주고 이를 보기 좋게 배치하여 쉽게 서비스를 이용할 수 있도록 하는 작업들도 포함됩니다.


우리가 모바일 또는 브라우저를 통해 눈으로 볼 수 있는 웹 페이지는 HTML, CSS 그리고 JavaScript라는 프로그래밍 언어로 이루어져 있습니다. 프론트엔드 개발자는 HTML로 웹사이트의 뼈대를 잡고 CSS로 이를 보기 좋게 꾸미고 JavaScript로 움직이게 만듭니다.


브라우저의 영역이 아닌 보이지 않는 부분, 즉 곧 서술할 백엔드 영역은 Java, Python 그리고 JavaScript(Node.JS) 등 여러 가지 언어로 구성될 수 있지만 프론트엔드 영역은 위 세 가지 언어로 구성됩니다. 또한 이런 화면 구성에 그치지 않고 사용자에게 보이지 않는 부분들을 보이는 부분과 연결하여 로그인과 같이 여러 복잡한 기능을 관리해 전체적인 동작을 가능하게 해줍니다.




백엔드 개발자는 무슨 일을 할까요?


백엔드 개발자는 프론트엔드 개발자와는 반대로 사용자에게 보이지 않는 부분에 대한 모든 것을 관리합니다. 예를 들어 소셜 커머스를 이용할 때를 떠올려볼까요? 만약 여러분이 경영자라면 쇼핑몰에 올라온 모든 물건에 대한 데이터를 고객에게 보여줄 필요가 있을까요? 다시 말해, 고객이 모든 상품에 대한 데이터를 가지고 있을 필요가 있을까요? 아마 데이터를 저장해 둘 공간을 마련하고 고객이 요청했을 시에만 이를 보여주도록 하는 것이 더 영리한 방법일 것 같습니다.


출처: Shutterstock


그래서 현대의 웹 서비스들은 클라이언트 - 서버 - 데이터베이스로 역할을 분리하여 서비스를 관리하고 있는데요. 방금 말씀드린 용어가 생소하실 수 있으니 이를 비유를 통해 알아보겠습니다.


이번엔 인터넷 상의 소셜 커머스가 아닌 오프라인 매장을 하나 운영한다고 생각해봅시다. 그 중에서도 백화점 명품관처럼 보이는 부분이 중요한 매장이라면 보통 고객이 둘러보는 공간과 매장 경영을 관리하는 백 오피스 공간으로 나누어질 겁니다. 여기서 고객이 돌아다니며 쇼핑을 할 수 있는 공간인 쇼룸을 클라이언트(주로 브라우저가 이에 해당합니다.), 고객의 요청에 따라 물건을 쇼룸에 전달하거나 백 오피스에서 여러가지 매장 운영을 돕는 점원을 서버 그리고 여러가지 물건을 저장하는 창고를 데이터베이스라고 대입할 수 있습니다. 여기서 쇼룸을 제외한 보이지 않는 영역, 바로 서버와 데이터베이스를 관리하는 일을 백엔드 개발자가 합니다.


다시 소셜 커머스에 이를 대입해 보면 고객이 상품을 살 때 프론트엔드 개발자가 구현한 구매하기 버튼을 누른다면 결제할 물건에 대한 데이터는 백엔드 개발자가 관리하는 서버의 영역으로 넘어가게 됩니다. 그리고 서버에서는 이에 대한 정보를 데이터베이스에 저장합니다. 그리고 이 작업이 모두 끝나면 서버가 결제 완료에 대한 데이터를 프론트엔드의 영역으로 전달하고 고객에게 결제 완료 페이지가 보이게 됩니다.




왜 좋은 개발자는 찾기 어려울까요?


그럼 대체 왜 개발자의 수요는 점점 늘어만 가는데 기업에서는 “뽑을 인재가 없다”라는 말을 반복해서 하고 있는 걸까요?


그 이유는 커뮤니케이션 역량과 문제 해결 능력을 동시에 갖춘 개발자를 찾기 어렵기 때문입니다. 위에서 언급한 설명만 보았을 땐 이 역량들이 크게 연관이 있는지 의아할 수 있지만 개발자에게도 커뮤니케이션 역량이 매우 중요합니다.




개발자에게 커뮤니케이션 역량이 중요한 이유


뛰어난 개발자라고 하면 우리는 왠지 영화에 나오는 것처럼 어두운 방안에서 후드를 뒤집어쓰고 혼자서 48시간 동안 코드를 쓰는 비상한 천재를 상상할 수 있는데요. 실제 개발자는 혼자 일하지 않고 협업을 베이스로 일을 합니다. 따라서 현업에서 말하는 좋은 개발자는 사회적인 사람으로서, 다른 사람과의 원활한 커뮤니케이션을 통해 효율적으로 일을 진행합니다. 여기에서 다른 사람이라 함은 같은 개발자뿐만 아니라 디자이너, 마케터, 기획자와 같은 직접 개발을 하지 않는 직무도 포함됩니다.


하나의 웹 서비스를 돌아가게 하는 코드는 결국 협업의 산물이라고 볼 수 있습니다. 따라서 내가 보기에 완벽한 코드도 다른 사람이 이해하지 못한다면 좋지 못한 코드입니다. 내가 쓴 코드를 다른 개발자가 쉽게 이해할 수 있어야 하고 유지 및 보수하는 것이 어렵지 않아야 합니다.


또한 디자이너 또는 마케터와 같은 개발자 이외의 직군과 소통할 땐 개발용어를 지양하고 직관적인 비유를 통해 그들에게 내 의견을 쉽게 이해시켜야 하죠. 그래서 팀원들과 원활하게 소통하는 능력이 코딩 실력보다 더 우선시되는 경우도 많습니다.


따라서 좋은 개발자가 되기 위해선 커뮤니케이션 역량을 기르는 것이 중요합니다.




개발자에게 문제해결 능력이 중요한 이유


커뮤니케이션 역량만큼이나 중요한 역량이 한 가지 더 있습니다. 이는 문제해결 능력입니다. 언뜻 생각하기에 좋은 코드를 쓰는 것이 개발자에게 가장 중요한 것 같기도 합니다. 하지만 좋은 코드는 결국 문제를 해결하기 위한 수단에 불과합니다. 따라서 특정 언어 또는 기술을 깊게 파고드는 것보다는 본질에 집중한 문제해결 마인드셋을 갖는 것이 더 중요합니다.


“If you can’t explain something in simple terms, you don’t understand it.” — Richard Feynman


문제해결 능력을 기르기 위해선 먼저 문제가 무엇인지를 정의하는 과정을 거쳐야 합니다. 리처드 파인만은 간단한 용어로 설명할 수 없다면 그것은 이해하지 못한 것이라고 말했습니다. 개발자도 이와 마찬가지로 문제를 정의하고 이를 다른 사람에게 이해시키는 것이 중요합니다.


러버 덕 디버깅(Rubber duck debugging)이란?


앞서 언급했듯이 개발자는 다양한 부서와 협업합니다. 이때 기획자 또는 디자이너가 요구사항을 정의하는 데 어려움을 겪는다면 개발자는 문제해결자로서 이들의 요구사항을 명확하게 파악하고 그들의 의견을 효과적으로 전달하도록 도울 수 있습니다.


문제해결 능력을 갖춘 개발자라면 문제 정의가 끝났다고 해서 바로 코드 작성에 돌입하지 않습니다. 하나의 큰 문제를 계획 없이 당장 해결하는 것은 좋은 개발자에게도 어려운 일이기 때문입니다. 그래서 좋은 개발자는 분할정복과 의사코드를 활용합니다.


분할정복은 말 그대로 한 번에 해결하기 힘든 문제를 작은 문제들로 쪼갠(Divide) 다음 하나씩 해결(Conquer)하고 이를 통해 큰 문제를 해결하는 방법론입니다. 흔히 개발자처럼 생각한다는 것은 위와 같은 문제 해결법을 의미합니다.


출처: Shutterstock


의사코드는 실제 프로그래밍 언어를 작성하기 전에 문제를 해결하는 과정을 말로 풀어서 쓴 코드를 말합니다. 이를 활용하면 자연어를 사용하는 인간과 프로그래밍 언어를 사용하는 컴퓨터 사이의 간극을 줄여주어 문제 해결방안을 명확하게 정립할 수 있게 합니다.


이렇게 시장에서 원하는 개발자는 커뮤니케이션 역량과 문제해결 능력을 갖춘 개발자를 의미한다는 것을 알아보았습니다. 개발자라는 직업에 대한 궁금증이 해소가 되셨나요?




좋은 개발자가 되고 싶다면


과거에는 개발자로 일하기 위해 컴퓨터공학 관련 전공이 필수로 여겨지던 때도 있었습니다. 그러나 현재는 인터넷과 여러 영상자료 등의 발달로 인해 독학 또는 부트캠프 수강을 통해 개발자로 취업하는 비전공자 출신 개발자들도 매년 늘어나고 있습니다.


실제로 코드스테이츠Software Engineering 부트캠프 수강생 중 85%가 비전공자 출신이며 취업까지 성공한 수료생은 전체의 80%를 차지하고 있습니다. 코드스테이츠는 비전공자를 포함한 모든 분들이 학습할 수 있는 프론트엔드, 백엔드 과정을 운영하고 있으며 수강생을 좋은 개발자로 성장시키기 위한 커리큘럼을 제공하고 있습니다. 페어 프로그래밍과 팀 프로젝트 협업을 통해 커뮤니케이션 역량을 쌓고 메타인지 학습모델을 적용한 학습 콘텐츠 및 매일 알고리즘 문제를 푸는 데일리 코딩 시간을 통해 문제해결 능력을 키울 수 있습니다.


실력은 물론 커뮤니케이션 역량과 문제해결 능력을 두루 갖춘 좋은 개발자가 되고 싶다면 코드스테이츠 Software Enginnering 부트캠프에 지원하세요!



프론트엔드 부트캠프 바로가기 >

백엔드 부트캠프 바로가기 >






스파크플러스 입주사, 코드스테이츠가 이야기하는 ‘좋은 개발자가 되기 위한 방법’ 흥미롭게 보셨나요?


요즘 개발자 대거 모집 공고를 시작으로 개발자 채용 전문 플랫폼을 정식 론칭하거나 관련 컨퍼런스를 개최하는 등 한마디로 ‘개발자 전성시대’라고 해도 과언이 아닌데요. 이유는 앞으로도 계속해서 발전해 나갈 서비스와 그에 맞는 기술을 갖추기 위해서 꼭 필요한 직업군이기 때문이죠.


현재 수많은 기업에서 개발자들이 더욱 원활한 커뮤니케이션 역량을 갖출 수 있도록 관련 커뮤니티를 구축하는 등의 다양한 노력을 하고 있는데요. 이는 개발자를 꿈꾸는 예비 개발자까지 한데 모여 지식과 경험을 공유하는 커뮤니티를 구축하여 개발 생태계 발전에 이바지할 것으로 전망됩니다.


스파크플러스에도 수많은 입주사와 더불어 소비자가 다양한 서비스를 더욱 편리하게 이용할 수 있도록 시스템 구축에 노력 중이신 개발자분들이 계시는데요. 지금도 불철주야 노력하고 계실 개발자분들이 보다 더 좋은 환경에서 근무하실 수 있도록 계속해서 노력할 예정입니다.


[스플X코드스테이츠]의 콜라보 콘텐츠는 한 달에 한 번 발행되고 있는데요.

다시 찾아올 코드스테이츠와의 콜라보 콘텐츠, 많이 기대해 주세요!



▼ 스파크플러스X코드스테이츠 특별 혜택 신청하기 ▼

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari