brunch

You can make anything
by writing

C.S.Lewis

by 삶을 바라보는 관점 Sep 23. 2024

프리랜서 개발자로 필요한 자질

프리랜서 개발자 이 정도는 갖춰야 하지 않을까?

프리랜서가 되려면 우선 자신이 상품임을 인식해야 합니다. 

누군가 내가 필요하지 않으면 내가 일을 할 수 없습니다. 그러면 누군가 내가 필요하게 만들어야 합니다. 내가 필요한 사람이 되는 거…. 그러면서 내가 그 누군가에 필요하다는 것을 알려야 합니다. 내가 할 수 있는 능력을 알려야 하는 것입니다. 

사람을 통해서 알리든 이력서를 통해서 알리든 구직을 통해서 알리든 내가 이런 일을 할 수 있다는 것을 알려야 합니다. 


처음 경력이 없을 때는 우선 회사 입사를 권합니다. 특히, 이제 졸업을 했거나 교육기관을 이수하였으면 우선 입사를 해서 일을 경험해야 합니다. 학교 교육이나 교육기관 경험으로는 실질적 프리랜서 개발자로 일하기에 부족합니다. 

물론, 난 혼자서 뭔가 개발을 해 보았다고 내놓은 프로그램이 있는 경우는 다를 수 있습니다. 제가 이야기할 때 정말 특출 나게 뛰어난 개발자는 우선 논외로 하겠습니다. 


저처럼 처음엔 개발일이 나에게 맞는지도 모르면서 시작했던 사람들을 위해 제안 드립니다.

프리랜서로 일을 하고 싶은데 어디서부터 시작해야 할까? 

막막한 경우, 무조건 회사 입사를 권합니다. 어디든 들어가서 일을 해봐야 합니다. 

일을 해보면서 개발하는 일을 경험해봐야 합니다. 

사람들도 겪고 일하는 방식도 겪고 해 봐야 합니다.

일정 수준이 되었을 땐 프리랜서 개발자는 인맥으로 주로 일을 구해 일합니다. 하지만 그전까지는 우선 아는 사람도 없고 일 경험도 없어서 일을 구하기 쉽지 않습니다. 

회사에 들어가서도 파견을 나가서 일하면서 일에 집중하며 내 실력을 키우십시오. 

인맥이 중요하다고 하며 사람 관계에만 집중하면 안 됩니다. 

개발자는 결과물로 인맥을 쌓습니다. 

내가 제대로 일을 해내야 누군가 나에게 일을 연결해 줍니다. 

개발자로 일을 하면서 제대로 프로그램을 개발할 줄 모른다면 어떤 일도 할 수 없을 겁니다. 

우선 결과물을 내놓을 수 있는 실력이 되어야 합니다.  

초반에 일할 때 내게 주어진 일을 해낼 수 있는 일정을 잡기 어렵습니다. 

하지만 일을 계속하다 보면 자신이 자신의 일정을 잡을 수 있는 시점이 옵니다. 

자신이 자신의 일정을 잡는다는 의미는 개발해야 할 일이 어느 정도 걸릴지 스스로 추정할 수 있을 때를 말합니다. 물론 개발하다 보면 생각하지 않은 문제점과 상황이 발생할 수 있습니다. 하지만 그런 상황을 제외하고 스스로 개발만 고려하여 일정을 산출할 수 있을 때가 있습니다. 

저는 이때가 어느 정도 개발 실력이 쌓인 시점이라고 생각합니다. 

결과물을 제대로 내놓을 수 있는 실력을 갖추기 위해 우선 일을 해봐야 합니다. 그래서 어디든 들어가서 일을 하십시오. 

자신이 상품 가치가 있게 만드는 것입니다. 


그리고 일정 시점이 되면 개인사업자를 내고 프리랜서로 일하길 권해 드립니다. 세금 관련 부분에 대해서도 알고 있어야 하기 때문입니다. 

지금은 프리랜서 개발자를 특수고용형태로 고용 보험 등 수입의 보장 방편을 법적으로 만들어 주었습니다. 

하지만 개인적으로 프리랜서가 고용보험을 받기 위해 일을 안 하는 경우는 별로 없다고 생각합니다. 

또한, 제대로 자신의 실력을 갖춘 개발자는 경기가 안 좋아도 일에 대한 제안이 들어옵니다. 

사업을 할 땐, 일이 잘 될 때도 아닐 때도 있습니다. 경기의 영향을 받을 때도 있습니다. 

사업가는 이런 경기 흐름도 고려하여 자금관리를 합니다. 

프리랜서 개발자는 사실 1인기업가입니다. 내가 프로젝트에서 받는 돈은 매출입니다. 

내가 사업을 운영하는 사업가라는 관점으로 접근하면 세금은 필수적으로 알아야 할 부분입니다. 일반 직장인일 경우는 회사에서 원천징수로 처리되기에 자신이 얼마의 세금을 어떻게 내는지 신경 써서 계산 로직을 파악해 보지 않는 이상 잘 모릅니다. 

하지만 개인사업자로 관리할 경우는 매출, 매입, 비용, 지출 등에 대한 개념을 파악할 수 있습니다. 이에 대한 지식은 사회생활에 필요한 부분이라고 생각합니다. 특히, 자본주의 사회에선 알아두어야 할 부분이라고 생각합니다. 개인사업자로 사업적 관리 관점으로 자신이 하는 일을 본다면 시장 흐름을 신경 쓸 수 있습니다.      


‘개발자가 전공자가 유리하냐 비전공자가 유리하냐’라는 질문에 대해서 개인적인 의견으로는 비전공자가 유리할 수도 있다고 생각합니다. 특히, 공대 출신보다 문과 출신의 경우가 더 유리하다고 생각합니다. 그래서 전 주변에 ‘개발일을 하려고 하면 무엇부터 공부해야 하나요’라고 부모들이 질문할 때 전 자신 있게 ‘인문학을 교육하세요’라고 답변합니다. 

프로그램도 사람이 사용할 것을 개발합니다. 물론 앞으로는 기계가 개발할 것이고 기계가 사용할 수도 있습니다. 사실 AI가 개발은 더 잘할 수 있습니다. 기계적 언어 이해력은 AI에게 교육한다면 기계가 더 잘할 것이기 때문입니다. 하지만 지금 개발자는 사람들이 사용할 프로그램을 개발하고 있습니다. 그래서 사람을 위한 프로그램을 고민하기 위해선 인문학이 필수라고 생각합니다. 

비전공자 특히 문과 쪽은 ‘왜’라는 부분에 중점을 둡니다. ‘왜 이걸 해야 해? 왜 이렇게 해야 해?’는 질문을 던집니다. 반면에 이과는 ‘어떻게’라는 부분에 중심을 둡니다. ‘어떻게 개발해야 하지? 어떻게 처리해야 하지?’에 초점을 둔다고 봅니다. 하지만 시간이 지나면 기술은 더 편하게 변할 것입니다. 물론 기술변화 및 동향에 대해서도 알아야 합니다. 근데 개발자로 더 나아지려면 이 두 가지 관점을 다 가지면 더 유리하다고 생각합니다. ‘왜 이게 필요하지’와 ‘어떻게 이걸 개발하지’를 함께 고민하면서 개발하면 더 좋은 프로그램이 나올 수 있기 때문입니다.   


프리랜서 개발자는 요청받은 그 무언가를 프로그램으로 개발하는 사람입니다. 개발자는 어디서든 ‘을’의 입장이라고 생각합니다. 누군가 사용할 그 무언가를 개발하는 것이기 때문입니다. 

누군가 사용한다는 것은 사용할 누군가가 있는 것이기에 그 사람이 ‘갑’이면 그 사람이 사용할 수 있게 만들어 주는 처지는 ‘을’입니다. 

그래서 개발자는 항상 을입니다. 

‘을’이라는 입장을 받아들인다면 개발자로 프로그램을 개발할 때 수월해집니다. 

상대가 필요한 관점으로 바라볼 수 있기에 내가 개발하는 이 프로그램을 사용할 사람을 고려하게 됩니다. 

사용할 사람 관점을 계속 확대하다 보면 ‘갑’이 요청하는 부분에 대한 이해가 생깁니다. 

요구사항을 이해하게 되면 추후엔 제안도 할 수 있기에 자신이 아는 기술적인 부분을 고려하여 ‘갑’이 필요한 기능을 개발할 수 있습니다. 요구사항을 받는 입장에서 어려워하는 부분은 ‘갑’의 요구사항을 그대로 구현하는 방법을 모색할 때입니다. 기술적으로 구현 방법이 안될 때도 있습니다. 

물론 시간이 많다면 더 많은 시간을 들여서 개발할 수 있으나 프로젝트는 자원이 한정되어 있습니다. 

개발인원, 개발기간을 고려해야 하기에 ‘갑’의 요구사항을 만족시키면서 고민해봐야 합니다. 

‘갑’이 원하는 기능을 개발하는 방법은 사실 다양합니다. 요구사항을 이해하면 그 기능에 대한 제안을 구현하기 편한 방법으로 제안할 수 있기에 이를 항상 고민해 보길 바랍니다.      


프리랜서 개발자는 자기 계발을 계속해야 합니다. 단순히 기술적인 부분뿐만 아니라 자신이 역할에 대한 부분도 전 발전시키라고 권해 드립니다. 

단순 프로그래머 일이 사실 프리랜서로서 대부분의 일입니다. 요청한 내용을 요청한 기간에 맞춰서 프로그래밍해 주는 프로그래머로서의 일이 대부분입니다. 

초기 일을 할 때는 개발하기 위한 실력을 높이기 위해 노력해야 합니다. 그리고 일정 시점이 되었을 때 난 어떤 일을 할 것인지 스스로 할 영역도 고민해 보아야 합니다. 

기술적인 부분에 관심이 많은 경우는 기술적인 부분을 계속 공부하고, 업무적인 파악을 잘할 경우는 업무적인 부분에 중심을 둡니다. 

역할도 단순 프로그래머로서가 아니라 대화의 기술을 향상해 나가면서 Leader로 올라갈 준비도 할 수 있습니다. 

Leader는 단순히 개발만 잘해선 안 됩니다. 대화의 기술도 필요합니다. 

프로그래머에게 개발해야 할 내용을 잘 전달하고 요청사항도 잘 이해하여 개발할 수 있도록 설계를 해야 합니다. 개발자 중 일부는 ‘나는 개발만 할 거니까 사람들과의 대화의 기술은 필요 없어’라고 하는 분들도 있습니다. 하지만 막상 일을 해보면 개발자는 혼자 일하지 않습니다. 

특히, 프리랜서의 경우는 항상 새로운 환경에서 새로운 사람들과 일하는 경우가 많습니다. 물론 같은 장소에서 같은 사람들과 프로젝트만 조금씩 변경되어 일하는 때도 있습니다. 이 역시 ‘갑’이 나를 선택해 주었기 때문입니다. ‘갑’이 나를 선택할 때의 기준을 고려해 보면 자신의 상품화 능력을 고려해 볼 수 있습니다. 

프로그래머로 개발일정을 잘 소화하며 설계된 기능을 오류 없이 개발할 수 있는 능력, 업무 파악을 잘하여 흐름에 맞게 개발할 수 있는 능력, 기술적인 동향 및 방법을 잘 알아 효율적인 기술을 제안하여 적용하는 능력 등. 자신의 역할 확장을 고려하여 자신을 계발해야 합니다. 


물론, 프리랜서 중엔 무책임한 사람도 있습니다. 개발일은 제대로 하지 않고 시간만 보내는 사람들도 있습니다. 결과물을 제대로 내놓지 못하는 사람들도 있습니다. 이는 비단 프리랜서만의 문제는 아니라고 생각합니다. 이런 사람을 경험한 일부 정규직은 프리랜서는 무책임하다고 하는 예도 있지만 제대로 된 프리랜서 개발자는 무책임하면 일을 지속할 수 없습니다. 그래서 일을 제대로 하는 프리랜서 개발자는 책임감이 강합니다. 자신이 맡은 일을 마무리해야 하기 때문입니다.      


다시 한번 강조하면 개발자로서 기본 자질은 개발할 수 있는 지식과 기술을 갖추는 것입니다. 그 바탕 위에서 사업가적 관점을 갖추길 바랍니다. 사업가적 관점으로 개인사업자를 내어 매출, 비용, 부가세, 소득세 등에 대한 세금, 자금 등에 대한 기본 지식을 갖추길 바랍니다. 

그러면서 일을 계속할 수 있기 위한 자신의 상품화를 합니다. 상품화는 자신의 분야, 책임감(맡은 일을 끝내는 책임감), ‘을’로서 서비스 정신, 사람과의 대화 기술 등이 필요합니다. 

사진: Unsplash의Austin Distel

개발자로서 필요한 부분은 사실 자신이 처한 환경에 따라서도 다를 수 있습니다. 하지만 프리랜서 개발자로서 제가 이야기드리는 부분은 기본적인 내용이라고 생각합니다. 

자신이 프리랜서로 일을 계속하기 위한 바탕이라고 말씀드립니다. 

이전 07화 백수, 자발적 비정규직이 되다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari