brunch

You can make anything
by writing

C.S.Lewis

by 콤파스 Dec 03. 2022

개발자? SW 엔지니어? 무슨 일을 하는 사람들일까?

개발자에 대한 오해와 진실

검은색 화면에 알 수 없는 알록달록한 영어와 숫자를 적어 내려가는 소위 '코딩'으로 돈을 버는 많은 직업이 있습니다. 우리는 보통 이들을 '개발자', '프로그래머', '소프트웨어(SW) 엔지니어' 등으로 부르는데, 무슨 일을 하고 있는 걸까요? 


연애 초반 여자친구가 '오빤 대체 코딩으로 뭘 만드는 거야?'라는 질문을 여자친구가 이해하기 쉽게 설명하려고 애썼던 기억이 납니다. 사실 저도 제가 하는 일 외엔 잘 알지 못하지만 전반적으로 대체 소위 '개발자'라고 부르는 사람들이 코딩으로 어떤 일을 하고 있는 건지에 대해 간략하게 교양수업 느낌으로 말씀드리고자 합니다.


코더, 엔지니어, 프로그래머, 개발자 등을 역량에 따라 구분하기도 하지만 여기선 편의상 '개발자'라는 단어로 통칭하겠습니다.



개발자? 코딩으로 웹페이지, 어플 만드는 직업 아닌가요?


업계 사람이 아닌 분들은 흔히 '개발자'라고 하면 웹 페이지를 만드는 프런트엔드 개발자를 많이 떠올리시는 것 같습니다. 그런데 사실 '코딩(coding)'이라는 것은 말 그대로 code로 무언가를 만드는 일을 뜻합니다.

그럼 code는 무엇일까요? 간단히 말해 컴퓨터에게 컴퓨터가 알아들을 수 있는 말로 명령을 내리는 언어라고 보시면 될 것 같습니다. 때문에 코딩은 굉장히 범용적인 뜻으로 굉장히 다양한 일에 사용될 수 있습니다.


예를 들어, 인터넷 사용자가 보게 되는 페이지를 만드는 프런트엔드 개발자, 서버 관련 개발을 하는 벡엔드 개발자를 시작으로 하드웨어를 구동시키는 마이컴, CPU 단에서 코딩을 하는 개발자, 데이터 분석가, 머신러닝/딥러닝 개발자나 네트워크, 통신, 게임, 반도체, 산업 장비 등 여러 산업에서 코딩을 하는 직군은 정말 많습니다. 연구 분야가 컴퓨터공학 쪽이 아니더라도 실험을 위해 코딩을 하는 연구자분들도 있으시고, 최근에는 인사팀이나 기획팀에서도 데이터 분석을 위해 코딩을 배워서 사용하기도 합니다.


제 경우에는 컴퓨터 비전, 딥러닝 관련 연구를 했었기에 공부하는 것들이 수학, 통계, 머신러닝 등에 기반한 내용이 많았는데 코딩을 할 때는 까만 화면에 알 수 없는 영어들만 계속 써 내려가고 있으니 여자친구 입장에서는 대체 뭘 하는 중인 걸까 싶었던 것 같습니다. 속을 열어보면 어떤 문제를 해결하기 위해 수식이나 어떤 알고리즘을 코드로 작성하여 컴퓨터가 이를 계산하게 하는 작업을 하는 중이었을 것입니다.


코딩으로 누군가는 저처럼 딥러닝 모델을 학습시키고 누군가는 웹페이지를 만들거나 통신, 네트워크 구축, 하드웨어/반도체 구동을 위해 코드를 작성하고 있을 것입니다. 

겉으로 보기에는 모두 비슷한 일을 하는 것처럼 보이지만 결국 코딩은 컴퓨터에게 명령을 내리는 작업일 뿐입니다. 때문에 개발자들이 코딩하는 것이 겉으로는 비슷해 보일지라도 무엇을 만드는지에 따라 요구되는 역량과 업무 성향은 천차만별입니다. 


정리하자면 개발자는 코딩을 하는 직업은 맞지만, 정말 많은 분야에서 코딩을 하는 사람이 있고 코딩의 목적은 서로 다르기 때문에 정말 많은 세부 직업이 있다고 보시면 좋을 것 같습니다.


다만 여러분들이 밖에서 만나는 개발자들에게 직업이 무엇이냐고 물었을 때 단순히 '개발자'라고 얘기하는 것은... 하는 일이 비개발자에게 생소한 경우가 많아서 간단명료하게 설명하기 힘들기 때문일 수 있습니다.



코딩을 잘한다는 건?

앞서 말씀드린 대로 세부 직업에 따라 개발자에게 요구되는 역량은 서로 다릅니다. 하지만 기본적으로 코딩을 잘한다는 것은 아래와 같은 세 가지 역량이 출중한 것을 의미합니다.


    1) 컴퓨터 사이언스와 프로그래밍에 대한 깊은 이해로

    2) 다양한 문제를 풀기 위한 수학적, 통계학적 알고리즘을 설계할 수 있고

    3) 이를 효율적인 코드로 구현할 수 있는 것


1번의 경우 컴퓨터 사이언스(CPU, GPU, 메모리,...)를 잘 이해하고 있어야 특정 문제를 효율적으로 해결할 수 있고 프로그래밍을 하며 직면하는 다양한 문제를 빠르게 해결할 수 있습니다. 2번은 여러 문제를 효율적으로 해결할 수 있는 수학적 알고리즘을 이해하고 이를 다양한 문제에 적용시켜 문제를 해결할 수 있는 역량을 가지고 있어야 한다는 뜻입니다. 간단히 설명드리면 NCS, 취업 인적성 테스트와 같은 문제를 잘 푸는 것을 의미합니다. 3번의 경우 2번에서 설계한 알고리즘을 코드로 구현하는 것을 의미합니다. 


코딩을 잘하는 사람은 컴퓨터에 대한 깊은 이해(1번)와 문제 해결 능력(2번)과 이를 코드로 구현하는 능력(3번)을 균형 있게 가지고 있습니다. 머릿속에서 문제는 어떻게 풀지 아는데 코드로 구현을 못하거나, 코드는 잘 구현할 수 있지만 어떻게 문제를 해결해야 할지 모르는 두 가지 경우 모두 결국 문제는 해결하지 못하기 때문입니다.



좋은 개발자  코딩 잘하는 사람?


코딩이 인기가 많아지면서 조기 교육도 많이 하고 취업을 위해 부트캠프 등에서 교육을 받는 성인 분들도 많습니다. 때문에 '코딩'이라는 것 자체만 잘하면 전문성을 갖출 수 있고 좋은 직장에서 많은 돈을 벌 수 있을 것이라 생각하시는 분들도 많은 것 같습니다. (그렇게 생각하시는 분들의 잘못은 아닙니다)


하지만, 앞서 말씀드렸다시피 코딩은 그저 컴퓨터와 소통하기 위한 도구일 뿐입니다. 비유하자면 외과 의사에게 수술 도구인 '메스'와 비슷하다고나 할까요? 외과 의사는 당연히 수술 도구들을 잘 사용해야 하지만, 의학 지식 없이 '메스'만 잘 쓰는 사람을 보고 우린 의사라고 하지 않습니다. 그저 손재주가 좋은 사람일 뿐이겠죠.

개발자에게 '코딩'도 마찬가지입니다. 개발자는 코드를 잘 다루어야 하지만 코딩은 그저 도구일 뿐 어떤 지식을 가지고 무엇을 만드는지가 더 중요합니다.




위에서 한 이야기를 정리해보면 개발자는 어떤 알고리즘을 컴퓨터가 이해할 수 있는 코드로 작성하여 무언가를 만드는 직업이며, 그 무언가에 따라 개발자의 전문 영역은 달라질 수 있다는 것입니다.


개발자라는 직업이 인기가 많은 것에 비해 '코딩을 한다', '컴퓨터를 잘 다룬다', '체크 셔츠를 입는다'와 같은 정도로만 알고 계신 분들이 많으신 것 같아서 개발자라는 직업에 대해 이야기해봤습니다. 막연하게 개발자가 하고 싶다고 생각하는 학생분들이나 개발자에 대해 궁금한 분들에게 도움이 되는 글이었으면 좋겠습니다 :)




작가의 이전글 AI 모델 개발과 데이터 확보 뭐가 더 중요한가요?

작품 선택

키워드 선택 0 / 3 0

댓글여부

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