개발/개발자의 삶

개발자 성장기 (1) 코딩과 개발자란 무엇일까?

김알리 2021. 9. 20. 18:18
728x90
반응형

비전공자로서 코딩을 시작하면서, 코딩에 대해서 주변 사람들이 많은 질문을 했다. 코딩 열풍이라는 뉴스 기사가 많이 나오기는 하지만 실제로 많은 사람들이 코딩이 무엇인지, 개발자가 어떤 일을 하는지 전혀 모르고 있었다. 그래서 코딩의 아주 기본적인 것부터 개발자는 무엇인지, 그리고 내가 개인적으로 어떻게 코딩을 공부하게 되었는지 정리하려고 한다.

 

 

코딩이란?

  코딩은 기본적으로 컴퓨터와 소통하는 것을 말한다. 컴퓨터가 인간의 언어를 이해하기란 매우 어려우므로(최근 구글, 아마존, 네이버, 카카오 등의 빅테크 회사들이 시도하고는 있지만 완벽하지 않다) 인간이 컴퓨터의 언어를 배워서 소통한다. 그 컴퓨터의 언어가 '프로그래밍 언어'이다.

 

  그러므로 코딩을 하기 위해서는 프로그래밍 언어를 배워야 한다. 인간의 언어가 전 세계적으로 다양하듯, 인공적인 언어인 프로그래밍 언어 역시 다양하다. 대표적으로는 C, Java, Python, JavaScript 등이 있다. 인간의 언어의 문법과 단어가 다른 것 처럼 프로그래밍 언어들도 각자 문법과 단어가 다르다. 그러나 최근에 많이 사용되는 컴퓨터 언어들은 라틴어 계열의 언어들이 유사하듯 단어와 문법이 유사한 경우가 많다. 그래서 하나의 언어를 알면 다른 언어를 배우기 수월한 경우가 많다.

 

 

개발자란?

  개발자들은 코딩으로 무언가를 만드는 사람들이다. 웹 개발자, 앱 개발자, 게임 개발자, 인공지능 개발자, 임베디드 개발자 등등 전문 분야에 따라 여러 가지로 나뉜다.

 

웹 개발자

  웹 개발자들은 웹사이트(웹 앱)를 만드는 개발자들이다. 크게 프론트엔드 개발자, 백엔드 개발자로 나뉜다. 프론트엔드 개발자는 사용자가 볼 수 있는 화면을 작동시키는 사람들이다. 그에 반해 백엔드 개발자는 사용자는 볼 수 없는 서버를 만드는 사람들이다.

 

  좀 더 자세하게 웹사이트를 만드는 과정을 살펴보자. 프론트엔드 개발자(혹은 웹 퍼블리셔)가 HTML로 웹사이트 화면에 드러나는 필수적인 요소들을 만들고, CSS로 눈에 보이는 그 요소들을 꾸미고, JavaScript로 그 요소들이 제대로 작동할 수 있게 해준다. 또한 백엔드 개발자가 만든 서버에서 정보를 가져와서 화면에 나타날 수 있도록 한다. 백엔드 개발자는 웹사이트에서 처리하는 정보 중 저장해야 하는 것들을 데이터베이스에 저장하고 서버를 만든다. 서버의 역할은 '웹사이트의 머리' 정도로 생각할 수 있다. 프론트엔드에서 요구하는 정보를 데이터베이스에서 찾아서 전달해 준다거나, 웹사이트에서 처리해야 하는 로직들이 정리되어 있다.

 

  예를 들면, 유저가 게시글을 올릴 수 있는 화면에서 그 화면 자체와 화면이 작동하도록 하는 부분은 프론트엔드에서 주로 처리한다. 그러나 그 게시글을 저장하고 나중에 불러올 수 있도록 하는 로직이 있는 곳은 서버이고 백엔드에서 처리된다. 추가로 프론트엔드와 백엔드를 모두 개발하는 사람을 풀스택 개발자라고 한다.

 

  나 역시 웹 개발자이기 때문에 관련해서는 자세하게 나중에 다시 게시글을 작성할 예정이다.

 

앱 개발자

  앱 개발자들은 모바일 앱을 만드는 개발자들이다. 안드로이드 개발자, iOS 개발자가 대표적이고 그 외에도 요즘은 크로스 플랫폼 개발자들도 많다. 앱 개발자의 역할은 웹 개발자 중 프론트엔드 개발자가 하는 역할과 비슷하다고 생각하면 쉽다. 앱 개발자들은 모바일 앱의 화면을 만들고 그 화면을 작동하게 한다. 대부분의 경우 앱 또한 서버가 필요하기 때문에 백엔드 개발자가 서버를 만든다. 그렇지 않은 경우에는 Firebase 등의 클라우드 서비스를 서버처럼 사용하거나 서버가 필요 없이 유저의 핸드폰에만 정보가 저장되게 만든다.

 

  안드로이드 개발자들의 경우 Java, Kotlin 등의 언어를 사용하여 어플을 만든다. iOS 개발자들의 경우 Swift, Objective-C 등의 언어를 사용한다. 크로스 플랫폼 앱은 하나의 어플을 안드로이드와 iOS에서 모두 사용할 수 있다. React Native, Flutter 등의 프레임워크가 사용된다(프레임워크는 개발을 도와주는 도구 정도로 생각하면 된다). React Native는 JavaScript, Flutter는 Dart라는 언어를 사용한다. 이 모든 단어들이 이해되지 않아도 상관 없다. 개발자들도 이 모든 것을 사용할 줄 아는 것이 아니다. 보통의 앱 개발자들은 이 중에서도 한 두가지만 선택해서 개발하며, 회사들도 일반적으로 개발자들에게 그 이상을 기대하지 않는다.

 

기타 개발자들

 이외에도 C#과 Unity를 주로 사용하는 게임 개발자, Tensorflow와 Python을 주로 사용하는 인공지능 개발자, C, C++을 주로 사용해 전자기기가 작동되도록하는 프로그램을 만드는 임베디드 개발자 등이 있다. 이런 다른 개발 분야에 대해서는 내가 잘 모르기도 하고, 아무래도 웹이나 앱 개발자 보다는 파이가 작기 때문에 자세하게는 설명하지 않겠다. 하지만 혹시 관심이 있다면 관련 언어와 프레임워크들에 대해 조사할 수 있도록 간단히 언급하였다. 물론 언급한 것 외에도 너무나도 다양한 언어들과 프레임워크들이 있으니 관심이 있다면 찾아보기 바란다.

 

 

반응형

 

나는 코딩과 잘 맞는 사람일까?

  개인적으로는 코딩이 적성에 맞지 않을 수는 있어도, 코딩을 할 수 없는 사람은 없다고 생각한다. 하지만 코딩을 하면서 즐겁거나 혹은 비참하지 않을 정도는 되어야 개발자로 살아갈 수 있을 것이다. 그렇다면 내가 코딩과 잘 맞는지는 어떻게 알 수 있을까? 가장 확실한 방법은 당연히 코딩을 해보는 것이다. 그러나 코딩을 하기 전에, 몇 가지 정도는 생각해볼 수 있을 것이다.

 

  일단 가만히 앉아있는 것이 좀이 쑤셔서 참을 수 없다면, 이런 이유로 일반적인 사무직과 맞지 않는 사람이라면 개발도 힘들 것이다. 개발자들은 오랜 시간을 앉아서 공부하고 코딩을 해야 한다. 몸을 움직이는 것을 좋아하는 것과는 별개이기 때문에 자기가 좋아하는 것만이라도 잘 앉아서 할 수 있다면 코딩을 해볼 만 하다.

 

  또한 생각을 깊이 하는 것을 싫어한다면 역시 개발이 힘들 것이다. 어떤 서비스를 만드는 것은 많은 고민과 계획을 필요로 한다. 특히 사용자가 많은 서비스를 개발해야 한다면, 어떻게 하면 최고로 효율적으로 코드를 짤 수 있을지 계속해서 고민해야 할 것이다. 그러면서 자기가 사용하는 프로그래밍 언어와 프레임워크 등을 깊이 이해할 수 있게 공부해야 한다. 게다가 웹이나 앱 개발자들은 프로그래밍 언어와 프레임워크 생태계가 너무나도 빠르게 변화한다. 즉, 끊임없이 지속적으로 공부해야 한다는 것이다. 이런 것들이 싫다면 개발자가 되더라도 금방 다른 직종으로 이직을 결심하게 될 수도 있다. 게다가 실력없는 개발자들은 낮은 연봉을 받으면서도 잦은 야근을 감내해야 할 수도 있다. 이런 부분들 까지도 모두 고려해야 할 것이다.

 

  하지만 역시나 가장 확실한 것은 코딩을 직접 해보는 것이다. 직접 부딪혀서 내가 코딩과 맞는 사람인지 알아보고 싶다면, 유투브 채널 '생활코딩'을 추천한다. 정말 간단하고 쉬운 예시를 가지고 코딩을 하는 채널이다. 실질적으로 이 채널에 나온 정도만 할 수 있다면 취직해서 일하기는 힘들 수도 있다. 하지만 가장 기본적인 예시로 가장 기본적인 개념을 너무나 잘 설명해주는 채널이라고 생각하기 때문에 추천한다. 특히 자바 강의를 추천한다. (강의 재생목록 링크) 혹시 강의와 함께 사용할 자료가 필요하다면, 무료 자료인 점프 투 자바 웹사이트도 추천한다. (링크)

 

 

다음글:

개발자 성장기 (2) 나의 두서없는 커리어 이야기

개발자 성장기 (3) 코딩을 독학하기 전에

개발자 성장기 (4) 문과 비전공자 독학 신입 개발자가 겪은 채용 과정

개발자 성장기 (5) 코딩 테스트 / 면접 썰 

신입 개발자의 일기: 일주일 출근 후기

신입 개발자의 일기: 한 달 반 출근 후기

신입 개발자의 일기: 3개월 출근 후기 

신입 개발자의 일기: 6개월 출근 후기

 

 

 

 

728x90
반응형