Node.js에서 프리랜스 세금 납부까지: 성공적인 개발자 인터뷰

게시 됨: 2022-03-11

Toptal에서는 항상 최고의 프리랜서를 찾고 있습니다. 그러나 무엇이 프리랜서를 진정으로 위대하게 만드는가? 우리의 최고 개발자 중 한 명인 Luis Martinho는 그의 고객에게 사랑받고 있습니다. 그래서 우리는 그와 함께 프리랜서, 프리랜서 Node.js 및 HTML5와 같은 기술, 세금 납부에 대해 이야기했습니다.

그럼, 어떻게 프리랜서에 입문하게 되었나요? 정규직으로 일한 적이 있습니까?

“저는 몇 가지 정규직으로 일했습니다. 그 중 일부는 상대적으로 기업이었지만 가장 최근에는 클라우드에서 섹시한 관리 소프트웨어를 구축하는 스타트업 환경, 특히 엔터프라이즈 SaaS 공간에서 일했습니다. 우리는 매우 재능 있는 팀과 매우 야심찬 비전을 가지고 있었습니다. 4년의 성장 끝에 우리는 흥미진진한 공간에 흥미진진한 제품을 갖게 되었고, 그것은 훌륭했지만 나는 별로 기뻤습니다. 생활 방식의 변화가 필요했습니다. 우리가 시작할 때 나는 개인적으로 "시작"이 얼마나 어려운지 이해하지 못했습니다. 당신은 모든 종류의 환경과 프로젝트에서 오랜 시간 일하기 때문에 시간뿐만이 아닙니다. 그것은 새로운 것을 창조하는 것과 관련된 스트레스, 책임, 고통입니다. 꽃과 무지개가 전부는 아닙니다. 결국 나는 공동 창립자가 아니라고 결정했습니다(적어도 당시에는 그렇지 않았습니다). 하지만 그 경험을 통해 스타트업 창업자들이 직면한 압박감에 대해 훨씬 더 깊이 이해할 수 있었고 그 덕분에 더 나은 프리랜스 소프트웨어 개발자가 되었다는 것을 알고 있습니다.

프리랜서는 내가 원했던 삶과 점점 더 비슷해졌습니다. 그것은 양질의 작업에 대한 보상을 받는 동시에 흥미로운 클라이언트와 프로젝트를 찾을 수 있는 기회를 제공했습니다.

나는 정규직을 찾기 시작했습니다. 먼저 고향에서, 그 다음에는 다른 나라에서, 그 다음에는 유럽의 다른 지역에서. 흥미로운 프로젝트, 흥미로운 보상 패키지 및 흥미로운 장소를 찾았습니다. 그러나 나는 내가 모든 것을 가질 수 있다고 믿었다. 그래서 프리랜서에 대해 알아보기 시작했습니다. 그리고 계속 찾아보면서 프리랜서는 내가 원하는 삶과 점점 더 비슷해졌습니다. 즉, 양질의 작업에 대한 보상을 받는 동시에 흥미로운 클라이언트와 프로젝트를 찾을 수 있는 기회를 제공했습니다.”

프리랜서 개발 업무로 전환하는 동안 가장 어려웠던 점은 무엇이었습니까?

“원래는 전일제 직장에서 기대하는 소득 안정성이 큰 변화일 것이라고 상상했습니다. 즉, 월말까지 항상 일정 금액을 받고 어떤 일이 일어나더라도 얻을 수 있는 돈이 있는 곳입니다. 프리랜서가 된다는 것은 항상 고객이 있는 것은 아니라는 것을 알았기 때문에 그것이 주요 관심사가 될 것이라고 예상했습니다. 그러나 실제로 일어난 일은 아닙니다. 놀랍게도 Toptal에서 저는 고객을 찾을 필요 없이 항상 꾸준한 고객 흐름을 유지할 수 있었습니다. 그래서 솔직히 말해서 가장 큰 어려움은 스케줄을 짜는 것이었습니다. 정말 정해진 근무시간이 없어요. 저는 기본적으로 제 스케줄을 짜서 그런지 예전보다 더 관리를 잘해야 해요. 나는 거의 표준 시간에 일하려고 노력합니다. 아침에 일어나서 일을 시작하고 다른 사람들이 점심을 먹는 시간에 점심을 먹고 오후에 일하고 저녁을 먹습니다. 야근을 하지 않고 매일 야심차게 기름을 태우며 정상적인 스케줄로 일하려고 합니다. 이 훈련은 처음부터 큰 도전이었습니다.”

그러나 대부분의 사람들은 자유 시간을 프리랜서 소프트웨어 엔지니어링의 이점으로 생각합니다. 그것에 대해 어떻게 생각하세요?

나는 규칙적인 일과가 있으면 훨씬 더 생산적이기 때문에 훈련을 받는 것이 효과적이라는 것을 알게 되었습니다.

“물론 이득입니다. 어떤 문제가 발생하거나 가족 중 누군가를 도와야 하거나 일종의 여가 활동을 할 수 있는 이 좋은 기회가 있는 경우 추적할 수 있고 그 기회를 즐길 수 있다는 점에서 멋집니다. 하지만 다른 한편으로, 나는 일련의 루틴이 있으면 훨씬 더 생산적이기 때문에 훈련을 받는 것이 효과적이라는 것을 발견했습니다. 왜냐하면 그러한 루틴은 기본적으로 저를 안내하기 때문입니다. 그 시간 동안. 그런 자유가 있는 것도 좋지만 책임감 있게 사용해야 한다고 생각해요.”

프리랜스 소프트웨어 개발자는 유연한 일정과 다양한 급여 구조의 이점을 누리고 있습니다.

당신의 고객들은 당신을 사랑합니다. 당신의 비밀은 무엇입니까?

“프리랜스 소프트웨어 개발자로서 가장 쉽고 저렴한 방법을 찾는 데 약간 게으른 것은 좋은 특성일 것입니다. 반복적인 작업으로 인해 극도로 짜증이 나서 도구 체인을 지속적으로 개선해야 합니다. 예를 들어, 터미널에서 많은 시간을 보냅니다. 바로 가기, 별칭을 만드는 것을 진지하게 고려해야 합니다. 결국, 당신이 하는 많은 작업은 실제로 로켓 과학이 아닙니다. 그들은 단지 몇 가지 루프를 통해 무언가를 완료할 뿐입니다. 그 항목을 최적화하고 반복적인 작업을 방해하지 않으면 실제 로켓 과학을 수행하는 데 더 많은 시간을 사용할 수 있습니다.

반복적인 작업을 방해하지 않으면 실제 로켓 과학을 수행할 수 있는 시간이 더 많아집니다.

또한 다른 사람이 시간당 급여 및 청구, 고객으로부터 돈 받기, 심지어 새로운 고객 확보까지 처리하여 훌륭한 일에 집중할 수 있도록 해야 합니다. 그리고 그것은 절대적으로 중요합니다. 프리랜서 소프트웨어 개발자는 납품뿐만 아니라 마케팅 및 판매 업무도 하고 있습니다. 그리고 당신이 하고 싶은 것, 그리고 당신의 고객이 하기를 원하는 것은 배달에 많은 시간을 할애하고 마케팅, 영업, 심지어 재무에도 적은 시간을 소비하는 것입니다. 이전 클라이언트를 위해 일할 때 항상 새로운 프리랜스 개발 클라이언트를 찾는 데 시간을 보내야 하며, 이는 이전 클라이언트가 원하는 것이 아니며 원하는 것도 아닙니다. 당신은 당신의 일을 잘하는 데 집중하고 싶을 뿐입니다. 따라서 다른 사람이 청구를 처리하고 새 고객을 찾는 것은 매우 기뻐해야 하는 일이며 찾으면 매우 운이 좋은 일입니다.

또한 잊지 마십시오. 프리랜서 세금을 납부하십시오.”

어떻게 매일 동기 부여를 유지합니까?

그들은 당신이 단지 청구 가능한 시간을 보내는 것이 아닌 방식으로 그들과 연결되어 있다고 생각합니다.

“저의 동기 부여에 큰 역할을 하는 것은 고객의 질입니다. 가능하면 좀 까다롭게 하려고 해요. 즉, 어려운 문제를 해결하거나 흥미로운 공간에서 일하는 것과 관련된 기술적 도전 측면에서 저에게 동기를 부여하는 공연을 수락하려고 노력합니다. 그리고 그것은 일종의 그것에서 따랐습니다. 나는 항상 공통의 목표를 위해 일하고 있다고 생각하는 고객과 함께 일합니다. 더 큰 그림을 보고 팀의 일부로 나 자신을 보려고 노력합니다. 특히 사무실 밖에 있을 때 감정적으로 완전히 내부 또는 현장 소프트웨어 개발 팀의 일원이 된 것은 아니지만 전체 프로젝트와 품질 측면에서 여전히 팀의 일부인 것처럼 느낄 수 있습니다. 작품. 그리고 다른 쪽 사람들(클라이언트와 클라이언트 팀)은 당신이 청구 가능한 개발 시간을 보내는 것이 아니라 당신이 그들과 연결되어 있다고 느끼는 것 같아요. 그들은 성공하거나 작업의 질이 충분히 좋다면 성공할 것입니다.”

잠재적인 프리랜스 소프트웨어 또는 웹 개발 클라이언트에서 무엇을 찾으십니까?

이 프리랜스 웹 개발자는 다양한 클라이언트 옵션을 고려하고 있습니다.

"일반적으로 저는 이전 기술보다 최신 기술을 선호하고 새로운 기술도 선호합니다. 이 기술 중 일부는 최신 기술이기 때문에 반드시 이머징이라고 말하지는 않겠지만 단일 페이지 애플리케이션을 만들고 Backbone.js를 사용하는 누군가와 함께 일하고 싶습니다. Java Enterprise Edition 스타일을 사용하는 사람보다 Express 또는 일부 MVC 프레임워크가 있는 Node.js.

저는 프리랜서입니다. 비동기 통신 솔루션이 있는 클라이언트가 훨씬 더 낫습니다. 재택 근무 중이라면 메일링 리스트와 같은 간단한 것을 사용하거나 Campfire에 대화방이 있거나 GitHub를 협업 도구로 사용하는 팀에 들어가는 것이 훨씬 쉽습니다(마지막 것이 매우 잘 작동함). 전체적으로 클라이언트가 냉각수 대화를 캡처하지 않으면 작업에 영향을 줄 수 있는 많은 정보와 잡담을 잃을 위험이 있습니다.”

흥미로운 점입니다. 재택근무를 위한 다른 팁이 있습니까?

건물에 한 번도 없는 사람을 기억하는 것은 더 어렵습니다.

“외근에 대해 보상할 방법을 찾아야 합니다. 내가 찾은 해결책은 능동적인 것입니다. 예: 커밋 로그를 분석합니다. 재택 근무를 할 때 시간을 내서 다른 사람들이 무엇을 하고 있는지 살펴보고 아이디어를 얻어야 합니다. 일부 프로젝트 관리 솔루션을 통해 알림을 받고 일상적인 스탠드업에서 무슨 일이 일어나고 있는지 알고 있다면 팀이 작업 중인 내용에 대한 힌트를 찾는 것이 좋습니다. 그러면 더 쉽게 통합됩니다. 그것은 분명히 당신의 추가적인 노력입니다. 그들이 정말로 좋은 의사 소통 프로세스를 가지고 있다면 당신은 그것을 할 수 없을 수도 있지만 좋은 팁이 될 수 있고 몇 가지 문제를 줄일 수 있습니다. 건물에 한 번도 없는 프리랜서 개발 직원을 기억하는 것이 더 어렵습니다.”

프리랜서 소프트웨어 개발자가 되는 것은 커뮤니케이션에서 시작됩니다.

프리랜서의 가장 중요한 자질은 무엇입니까?

“개인 생활과 일 사이에 유동적인 균형을 유지할 수 있는 사람이어야 합니다. 프리랜서로서 반응하는 것이 중요합니다. 그러나 반응을 보이는 것은 결국 개인 생활에 큰 타격을 줍니다. 이메일을 항상 확인할 필요는 없습니다. 알림을 받고 중요한지 여부를 필터링한 다음 가족과 함께 즐거운 시간을 보내거나 이런저런 일로 돌아갈 수 있습니다. 당신은 좋은 컨텍스트 스위처가 되어야 합니다. 컨텍스트 스위칭은 일반적으로 비용이 많이 들지만 저렴하고 빠르게 만들어야 긴급 상황에 매우 신속하게 대응하면서도 동시에 친구 및 가족과 함께 즐길 수 있어 매우 높은 수준의 서비스를 받을 수 있습니다.

당신은 좋은 컨텍스트 스위처가 되어야 합니다. 컨텍스트 스위칭은 일반적으로 비용이 많이 들지만 저렴하고 빠르게 만들어야 합니다.

일반적인 프리랜서 개발 계약을 위해서는 재정을 보수적으로 관리하는 방법을 알아야 합니다. 이것은 놀랍게도 Toptal에서는 실제로 발생하지 않았지만 일반적으로 시간당 소프트웨어나 웹 개발자 급여와 관련하여 잔치에서 기근으로 넘어가는 것은 매우 쉽습니다. 한 달에 엄청난 돈을 벌었는데 갑자기 고객이 없고 더 이상 일이 없습니다. 따라서 훈련을 받아야 합니다. 평균 임금에 대한 아이디어가 필요하고 그 금액을 지출해야 합니다. 모든 초과분은 이러한 종류의 작업을 수행하는 불확실성을 헤쳐 나가는 데 도움이 되는 일종의 쿠션이 되어야 합니다. 고객의 흐름이 매우 안정적이었기 때문에 Toptal의 경우에는 사실이 아니지만 여전히 좋은 관행입니다.”

프리랜서로서 경력 전반에 걸쳐 다양한 소프트웨어 개발 프로젝트를 수행합니다. 새 코드베이스에 대한 액세스 권한이 처음 부여되면 무엇을 합니까? 10억 줄의 코드라고 가정해 보겠습니다.

“하향식 접근 방식에 대해 훈련을 받으려고 노력할 것입니다. 이것은 코드베이스의 전체 구조에 대한 느낌을 얻는 것을 의미합니다. 어찌보면 당연해 보이지만 코드를 이해하려고 하면 특정 순간에 작업하고 있는 작업과 현재 수행 중인 특정 작업으로 몰리게 될 것입니다. 그러면 하향식 접근 방식에서 초점이 바뀌고 보고 있는 코드의 특정 부분에서 조각을 조합하여 맨 아래에서 위로 올라가려고 합니다. 특정 버그를 수정하거나 특정 기능을 추가하는 것이 단기적으로는 더 나을 수 있지만 중기적으로는 하향식 접근 방식을 유지하는 것이 좋습니다. 그러면 시스템과 부품이 상호 작용하는 방식을 훨씬 더 잘 볼 수 있습니다.”

프리랜스 개발자가 된다는 것은 효과적으로 시작하기 위해 새로운 코드베이스에 하향식 접근 방식을 취하는 것을 의미합니다.

전면 및 후면 작업을 많이 하셨습니다. 오늘날 프리랜스 개발자가 이 두 가지 기술을 모두 갖추는 것이 중요하다고 생각하십니까?

"아니요. 나는 매우 정직하게 말할 것입니다. 나는 당신이 전문화에서 많은 것을 얻을 수 있다고 생각합니다. 그러나 그것은 개인적인 선택일 뿐입니다. 호기심이 많아서 다양한 기술을 사용하고 있습니다. 그것이 내가 프론트엔드와 백엔드 프리랜서 작업을 모두 하는 이유입니다.

기술은 변할 것입니다. 오늘날 인기 있는 것이 아마도 내일 또는 적어도 6-12개월 후에는 지루할 것입니다.

그렇긴 하지만, 개발자가 평생 동안 가능한 한 많은 기술과 패러다임을 시도하고 배우는 것이 중요하다고 생각합니다. 기술은 변할 것입니다. 오늘날 인기 있는 것은 아마도 내일 또는 적어도 6-12개월 안에 지루할 것입니다. 그리고 프리랜스 소프트웨어 개발자를 위한 핵심 기술 중 하나는 새로운 기술이나 새 프로젝트를 신속하게 도입하는 것입니다. 그러기 위해서는 새로운 것을 체계적으로 배울 수 있는 접근 방식을 가지고 있고 매년 적어도 하나의 새로운 언어나 프레임워크, 패러다임을 배워 연습하면 정말 도움이 됩니다.”

Rails, Django, 그리고 최근에는 Node.js로 프리랜서 작업을 많이 했습니다. 세 사람의 경험은 어떻게 달랐습니까?

“어, 우리는 여기서 종교 전쟁을 하게 될 것입니다. 나는 노드가 다른 두 개와 상당히 다르다고 말하고 싶다. Node.js 예제에 처음 노출되면 이벤트 기반 패러다임에 들어가는 데 문제가 있을 수 있습니다. Rails 작업을 항상 해오던 사람에게는 100% 자연스러운 일이 아닐 수도 있습니다. 반면에 JavaScript로 작업하는 경우 브라우저용으로 개발 중이므로 이미 이벤트 기반 패러다임에 익숙할 것입니다. 개인적으로 Node 프리랜서 경험에서 MVC 프레임워크를 사용해 왔기 때문에 Node의 핵심 기술을 개발하지 않았습니다. 저는 클라이언트별 독점 프레임워크(Express와 비교)의 표준 사용자였습니다.”

너무 적은 수의 개발자가 사용하는 가장 좋아하는 도구는 무엇입니까?

Node.js 프리랜서는 Rails 프리랜서와 다르게 생각해야 합니다.

“제 머리 꼭대기에서 JetBrains의 WebStorm이 떠올랐습니다. 찾아볼 가치가 있는 JavaScript IDE입니다. Google I/O에서 출시된 새로운 Android 스튜디오는 Eclipse 또는 기타가 아닌 JetBrains 소프트웨어로 구동됩니다. 나는 Eclipse를 좋아하지만 WebStorm으로 정말 즐거운 시간을 보내고 있습니다. 나는 여전히 많은 지름길을 배우고 있으며 이는 훌륭한 프리랜스 소프트웨어 개발자도 가져야 할 습관입니다. 바로 도구에 대해 더 많이 배우는 것입니다. 나는 여전히 내 IDE에 대해 더 많이 배우고 있습니다. WebStorm에는 많은 스마트 바로 가기, 좋은 표준 레이아웃이 있으며 HTML을 그 어느 때보다 빠르게 작성할 수 있는 멋진 ZenCoding 속성도 있습니다. 대체로 좋은 도구입니다.”

프리랜서 클라이언트가 Rust나 Go, 또는 한 번도 사용해 본 적이 없는 새로운 언어로 프로젝트를 하기를 원하신다면 무엇이라고 말하겠습니까?

당신이 아무리 능숙하더라도 항상 설정 시간이 있고 클라이언트에게 비용이 많이 들 수 있습니다.

“저는 일반적으로 클라이언트의 시간이 아닌 클라이언트 작업 이외의 언어로 첫 번째 접촉을 시도합니다. 당신이 아무리 능숙하더라도 항상 설정 시간이 있고 클라이언트에게 비용이 많이 들 수 있습니다. 즉, 클라이언트가 "알았어, 우리는 그것에 대해 아무것도 몰라도 편해"라고 말하면 새로운 것을 배울 수 있는 좋은 기회라고 생각합니다. 반면에 클라이언트가 일정이 빡빡한 경우 다른 사람을 고용하거나 내가 편안한 언어를 사용하여 처음부터 생산성을 높일 수 있다는 것을 알도록 조언할 것입니다.”

프리랜서로 일하면서 해결해야 했던 가장 큰 기술적 과제는 무엇입니까?

“프리랜서 HTML5 프로젝트가 떠오릅니다. HTML5 Canvas API를 파고들어 올가미 선택 및 자유 형식 선택과 같은 고급 그래픽 편집기 기능을 수행합니다. 이미지의 일부는 자르고 나머지는 생략하는 픽셀 세트로 계산하는 것과 같은 작업입니다. 이것은 HTML5 Canvas를 사용하고 브러시와 같은 것을 구현하는 MS Paint와 같은 것입니다. 브러시는 단순한 것이라고 생각할 것입니다. 선을 그리는 것뿐이지만 이 경우 브러시 스트로크를 모방하려는 경우이므로 브러시가 캔버스에 닿아 잉크가 흐려지는 방식을 시뮬레이션하려면 수학 공식을 사용해야 했습니다.”

HTML5 프리랜서는 이 새로운 기술에 익숙해지는 데 시간이 걸릴 수 있습니다.

최근에 작업한 가장 좋아하는 신기술은 무엇입니까?

“Meteor에 대해 들은 내용은 단일 페이지 애플리케이션 개발을 위한 완벽한 프레임워크를 제공하는 방법 측면에서 흥미롭습니다. 백엔드와 프론트엔드를 모두 처리합니다. 작업은 해보지 않았지만 궁금하고 가보고 싶어집니다.”