개발자란 무엇인가?
소위 개발자라고 하면, 안경을 빛내며 검정 화면에 뭔가 알 수 없는 타이핑을 잔뜩 하며 굉장한 것을 하는 천재 같은 이미지로 그려지는 경우가 많다. 뭐 현실은 전혀 그렇지 않다는 것을 굳이 설명하지 않아도 되겠지만, 나는 처음 개발자가 되기로 마음을 먹었을 때 걱정이 매우 많았다. 일단 책 한권을 읽으며 코딩 공부를 시작하기는 했는데, 처음에는 도대체 이게 무슨 소리인지, 내가 그래서 나중에는 실제로 무슨 일을 하게 될 것인지 상상도 할 수 없었기 때문이다.
그렇기 때문에 내가 개발자가 된 과정을 공유하여, 혹시라도 비슷한 길을 걷고자 하는 사람들에게 조금이라도 도움이 되길 바라는 마음으로 이 글을 작성한다. 전문적인 이야기 보다는, 코딩에 대한 지식이 전혀 없는 사람들이 대략적인 개념을 최대한 쉽게 이해할 수 있도록 하는 것을 목적으로 하기 때문에 매우 기초적인 내용만 다루게 될 것이다.
소프트웨어 엔지니어란?
나는 현재 백엔드 소프트웨어 엔지니어(Backend Software Engineer)로 보험 회사에서 근무 중이다. 그리고 캐나다에 오기 전 까지는 코딩을 해본 적이 아예 없다. 혹시 그 과정이 궁금하다면 나의 이전 글인 코딩 지식 제로인 내가 캐나다에서 개발자라니 편을 참고하도록 하자. 그렇다면 소프트웨어 엔지니어란 무엇인가?
간단하게 이야기하자면, 프로그램을 "조립"하는 사람이라고 생각하면 되겠다. 자동차 제작을 예를 들어보자. 자동차라는 것을 만들기 위해서는 다양한 부품들을 조립해서 차를 만드는 사람들이 있고, 그 부품을 제작하는 사람들이 있고, 그 부품을 제작하기 위한 원재료를 가공하는 사람들이 있고, 그 원재료를 채굴하는 사람들이 있고... 정말 많은 사람들이 다양한 단계의 일을 한다.
프로그래머도 마찬가지이다. 컴퓨터가 기본적으로 작동하게 하기 위한 프로그래밍을 하는 사람도 있고, 그 컴퓨터를 이용해서 코딩을 쉽게 할 수 있도록 컴퓨터 언어를 만들어 내는 사람들도 있고, 그 언어를 이용해 개발을 쉽게 할 수 있도록 도와주는 라이브러리를 만드는 사람들이 있고, 그 라이브러리를 이용해서 사람들이 직접 쓸 수 있는 어플리케이션을 만드는 사람들이 있다. 그리고 이 마지막 단계의 "라이브러리를 이용해서 사람들이 직접 쓸 수 있는 어플리케이션을 만드는" 것이 나의 직업이다. 라이브러리 역시도 굉장히 복잡한 것부터 단순한 것 까지 다양한 것이 있지만, 쉽게 이야기하자면 "복잡한 기능을 쉽게 이용할 수 있도록 도와주는 코딩 덩어리" 정도로 생각하면 된다.
성격이 가장 중요하다
이렇듯 매우 다양한 단계의 다양한 수준의 능력을 필요로 하는 것이 개발자 이다 보니, 천재적인 능력을 필요로 하는 분야의 어려운 개발을 하는 사람들도 있지만, 간단하게 인터넷 사이트를 만드는 개발자들도 있다. 즉 학력이나 능력이 그리 뛰어나지 않는 사람들도 할 수 있는 일이 있다는 것이다. 하지만 그것보다 더 중요한 것은 바로 성격이라고 생각한다. 일을 하면서 즐겁지 않으면 개발자로 사는 삶이 그리 즐겁지 않을 수 있기 때문이다.
내가 생각하는 개발자의 자질 중 하나는, 문제 해결하는 것을 즐기는 것이다. 마치 게임에서 어려운 보스를 상대하기 위해 이리저리 공략도 하고 스킬도 바꿔보고 하다가 마침내 보스를 물리쳤을 때 엄청난 기쁨을 느끼는 것과 비슷하다고 보면 된다. 나 같은 경우 종종 코드를 짰는데 "이게 왜 안 되지?" 하는 상황이 오는데, 며칠을 고치고 생각하고 하다가 마침내 그 원인을 알아내고 원하는 결과를 얻어냈을 때의 엄청난 희열을 느낀다. 이 순간이야 말로 내 일을 통해 얻을 수 있는 가장 큰 보상 중의 하나라고 생각한다.
또 한 가지는, 매우 꼼꼼한 성격이어야 한다. 코딩의 특징 상 쉼표 하나를 잘못 넣거나, 오타가 난다거나 하면 프로그램 전체가 안 돌아가버리는 경우도 생기기 때문에, 이런 실수에 대해 매우 예민해야 한다. 나 같은 경우 잡지사 편집자로 일하면서 지겨울 정도로 오타를 찾아내던 경험이 큰 도움이 되었다.
마지막으로, 공부를 좋아해야 한다. 학교에서 강제로 시키는 그럼 공부 말고, 내가 진짜로 관심 있는 분야에 대한 공부 말이다. 코딩은 계속 그 트렌트가 변해가고 있고, 몇년 전 발간 된 코딩 책 하나 읽으며 공부한 지식은 지금은 전혀 도움이 안 될 수도 있기 때문이다.
어딘가에서의 설문 조사에 따르면, 개발자들 중 가장 많은 탑 3 MBTI 유형이 INTP, INFP, 그리고 INTJ라고 하던데, 혹시나 본인이 여기에 해당된다면 한 번쯤 고려해봐도 좋지 않을까? 사실 나의 MBTI는 여기에 속하지 않지만 말이다.