От Node.js до уплаты налогов фрилансерам: интервью с успешным разработчиком
Опубликовано: 2022-03-11В Toptal мы всегда ищем лучших фрилансеров. Но что делает фрилансера по-настоящему великим? Луис Мартиньо, один из наших лучших разработчиков, любим своими клиентами, поэтому мы встретились с ним, чтобы поговорить о фрилансе, таких технологиях, как фриланс Node.js и HTML5, и уплате налогов.
Итак, для начала, как вы попали во фриланс? Вы когда-нибудь работали полный рабочий день?
«Я работал на нескольких работах с полной занятостью: некоторые из них были относительно корпоративными, но самая последняя была в стартап-среде, особенно в корпоративном пространстве SaaS, где я создавал сексуальное программное обеспечение для управления в облаке. У нас была очень талантливая команда и очень амбициозное видение. После четырех лет роста у нас был захватывающий продукт в захватывающей области, что было здорово, но я не был очень доволен. Мне нужно было изменить образ жизни. Когда мы начинали, я лично не понимал, насколько тяжело «заводиться». Дело не только в часах, потому что вы работаете долгие часы в самых разных средах и проектах; это стресс, ответственность и боль, связанные с созданием чего-то нового. Это не все цветы и радуги. В конце концов, я решил, что не являюсь соучредителем (по крайней мере, в то время). Но этот опыт дал мне гораздо более глубокое понимание давления, с которым сталкиваются основатели стартапов, и я знаю, что благодаря этому я стал лучшим внештатным разработчиком программного обеспечения.
Фриланс все больше походил на ту жизнь, которую я хотел: он давал возможность находить интересных клиентов и проекты, получая при этом вознаграждение за качественную работу.
Я начал искать постоянную работу: сначала в родном городе, потом в остальной стране, потом в остальной Европе. Мне удалось найти интересные проекты, интересные компенсационные пакеты и интересные локации; но я верил, что у меня все получится. Так я начал изучать фриланс. И по мере того, как я продолжал искать, фриланс все больше и больше походил на жизнь, которую я хотел: он давал возможность находить интересных клиентов и проекты, получая при этом вознаграждение за качественную работу».
Что было самым сложным при переходе на внештатную разработку?
«Изначально я предполагал, что огромным изменением будет стабильность дохода, которую вы ожидаете от работы на полную ставку, когда у вас есть определенная сумма денег, которую вы всегда получаете к концу месяца — и вы получаете ее, что бы ни случилось. Я ожидал, что это будет серьезной проблемой, поскольку я знал, что работа фрилансером означает, что у меня не всегда будут клиенты. Но на самом деле это не то, что произошло — как ни странно, в Toptal мне всегда удавалось иметь стабильный поток клиентов без необходимости их охоты. Так что, если честно, главная проблема заключалась в том, чтобы организовать мой график. У меня действительно нет установленных часов работы. В основном я составляю свой собственный график, поэтому я должен быть более дисциплинированным, чем раньше. Стараюсь работать более-менее стандартные часы: просыпаюсь утром, начинаю работать, обедаю в то время, когда обедают все остальные, днем работаю, а потом ужинаю. Стараюсь работать по обычному графику, не ночуя по ночам, сжигая до полуночи масло каждый день. Эта дисциплина была большой проблемой в начале».
Но большинство людей считают свободные часы преимуществом внештатной разработки программного обеспечения. Что вы думаете об этом?
Я обнаружил, что дисциплина окупается, потому что в конечном итоге я становлюсь намного более продуктивным, если у меня есть набор рутин.
«Безусловно, это выгодно. Это круто в том смысле, что если вы столкнетесь с какими-либо проблемами, если вам придется помогать кому-то из членов вашей семьи, или у вас есть прекрасная возможность провести досуг, вы можете воспользоваться этим и насладиться этой возможностью. Но, с другой стороны, я обнаружил, что дисциплина окупается, потому что в конечном итоге я становлюсь намного более продуктивным, если у меня есть набор рутин, потому что эти рутины в основном направляют меня: я могу перейти к делу и сделать больше. в течение этого времени. Хорошо иметь такую свободу, но я думаю, что ею нужно пользоваться ответственно».
Ваши клиенты любят вас. В чем твой секрет?
«Как внештатному разработчику программного обеспечения, вероятно, неплохо быть немного ленивым в плане поиска самого простого и дешевого способа что-то сделать; быть чрезвычайно раздраженным выполнением повторяющейся работы и, таким образом, постоянно улучшать свою цепочку инструментов. Например, вы проводите много времени в терминале: вам следует серьезно подумать о создании ярлыков, псевдонимов и всего, что сэкономит ваше время и избавит вас от необходимости печатать. В конце концов, многие задачи, которые вы выполняете, на самом деле не являются ракетостроением; они просто проходят пару циклов, чтобы что-то сделать. Если вы оптимизируете эти вещи и избавитесь от повторяющейся работы, у вас будет больше времени для того, чтобы заняться настоящей ракетной наукой.
Если вы избавитесь от повторяющейся работы, у вас будет больше времени для того, чтобы заняться собственно ракетостроением.
Вам также нужно, чтобы кто-то еще занимался почасовой оплатой и выставлением счетов, получением денег от клиентов и даже привлечением новых клиентов, чтобы вы могли сосредоточиться на отличной работе. И это абсолютно важно. Когда вы внештатный разработчик программного обеспечения, вы работаете над доставкой, а также над маркетингом и продажами. И то, что вы хотите сделать — и то, чего хотят от вас ваши клиенты — это тратить как можно больше времени на доставку и как можно меньше времени на маркетинг, продажи и даже финансы. Вам всегда придется тратить время на поиск новых внештатных клиентов-разработчиков, когда вы работаете на старых, а это не то, чего хотят старые, и это не то, чего хотите вы. Вы просто хотите сосредоточиться на том, чтобы хорошо выполнять свою работу. Таким образом, если кто-то другой занимается выставлением счетов и поиском новых клиентов, это то, чему вы должны быть очень рады, и вам очень повезет, если вы найдете его.
Кроме того, не забывайте: платите налоги для фрилансеров».
Как вы мотивируете себя каждый день?
Они чувствуют, что вы связаны с ними таким образом, что вы не просто отправляете больше оплачиваемых часов.
«Огромную роль в моей мотивации играет качество клиентов. Если возможно, я стараюсь быть немного разборчивым. То есть я стараюсь браться за работу, которая мотивирует меня с точки зрения технологической задачи, будь то решение сложной проблемы или работа в интересной сфере. И это как бы следует из этого. Я всегда работаю с клиентом, думая, что работаю над достижением общей цели: я стараюсь видеть более широкую картину и видеть себя частью команды. Вы никогда не являетесь полностью эмоциональной частью внутренней или локальной команды разработчиков программного обеспечения, особенно когда вы находитесь вне офиса, но вы все равно можете чувствовать себя частью команды с точки зрения общего проекта и качества. работа. И я думаю, что люди с другой стороны (клиент и команда клиента) чувствуют это — они чувствуют, что вы связаны с ними таким образом, что вы не просто отправляете оплачиваемые часы разработки, вы действительно беспокоитесь о том, они добьются успеха или если качество работы будет достаточно хорошим».
Что вы ищете в потенциальном клиенте программного обеспечения или веб-разработки для фрилансеров?
«Как правило, я предпочитаю более современные технологии, а не старые, а также новые разработки — я бы не сказал, что новые, потому что некоторые из них актуальны, но я бы предпочел работать с кем-то, кто создает одностраничные приложения и использует Backbone.js. и Node.js с Express или какой-либо инфраструктурой MVC, чем тот, кто будет использовать стиль Java Enterprise Edition.
Я фрилансер, я бы предпочел иметь клиента, у которого есть какое-то решение для асинхронной связи. Если вы работаете удаленно, гораздо проще войти в команду, которая использует что-то простое, например, список рассылки, или чаты в Campfire, или использует GitHub в качестве инструмента для совместной работы (последний вариант работает на удивление хорошо). В целом, если клиент каким-то образом не улавливает разговор о кулере с водой, вы рискуете потерять много информации и болтовни, которые могут повлиять на вашу работу».
Это интересный момент. Есть ли еще какие-нибудь советы по удаленной работе?
Сложнее запомнить парня, которого никогда не было в здании.
«Вы должны найти способ компенсировать отсутствие на работе. Решение, которое я нашел, состоит в том, чтобы быть активным. Например: проанализируйте журналы коммитов. Когда вы работаете удаленно, вы должны выделить некоторое время, чтобы просто просмотреть и получить представление о том, над чем работают другие люди. Если вы в курсе того, что происходит в ежедневных стендапах, получая уведомления через какое-либо решение для управления проектами, рекомендуется попытаться найти подсказки о том, над чем работает команда. Тогда вам будет легче интегрироваться. Очевидно, что это дополнительные усилия с вашей стороны — возможно, вы сможете отказаться от этого, если у них будет действительно хороший процесс коммуникации, но это может быть хорошим советом и может избавить от некоторых проблем. Труднее вспомнить внештатного разработчика, которого никогда не было в здании».

Какое самое важное качество фрилансера?
«Вы должны быть тем, кто может поддерживать баланс между личной жизнью и работой. Как фрилансер, важно быть отзывчивым. Но отзывчивость в конечном итоге сильно сказывается на вашей личной жизни. Вам не нужно постоянно проверять свою электронную почту — вы можете просто получать уведомления, фильтровать, важно это или нет, а затем вы можете просто вернуться к наслаждению временем с семьей или чем-то еще. Вы должны быть хорошим переключателем контекста. Переключение контекста обычно стоит дорого, но вам нужно сделать его дешевым и быстрым, чтобы вы могли иметь очень высокий уровень обслуживания, быстро реагируя на чрезвычайные ситуации, но в то же время наслаждаясь компанией друзей и семьи.
Вы должны быть хорошим переключателем контекста. Переключение контекста обычно стоит дорого, но вам нужно сделать его дешевым и быстрым.
Для обычного внештатного развития вы должны знать, как консервативно управлять своими финансами. Удивительно, но с Toptal такого не произошло, но обычно очень легко перейти от пиршества к голоду, когда дело доходит до оплаты программного обеспечения или веб-разработчика, даже почасовой. В один месяц вы зарабатываете кучу денег, и вдруг у вас нет клиентов, и у вас больше нет работы. Так что вы должны быть дисциплинированными: вам нужно представление о средней заработной плате, и вам нужно потратить эту сумму; все лишнее должно быть своего рода подушкой, чтобы помочь вам преодолеть неопределенность, связанную с выполнением такого рода работы. На самом деле это не так для Toptal, потому что поток клиентов был очень стабильным, но это все еще хорошая практика».
Как фрилансер, вы берете на себя множество различных проектов по разработке программного обеспечения на протяжении всей своей карьеры. Итак, что вы делаете, когда впервые получаете доступ к новой кодовой базе? Допустим, это миллиард строк кода.
«Я бы постарался быть дисциплинированным в подходе «сверху вниз». Это означает понимание общей структуры кодовой базы. Это кажется очевидным, но как только вы начнете пытаться понять код, вы будете прикованы к тому, над чем вы работаете в данный конкретный момент, и к конкретной задаче, которая у вас есть. Это сместит ваш фокус с нисходящего подхода и поставит вас на дно, пытаясь подняться вверх, собирая фрагменты из конкретных частей кода, которые вы просматриваете. В краткосрочной перспективе для вас может быть лучше исправить эту конкретную ошибку или добавить эту конкретную функциональность, но в среднесрочной перспективе вы пожалеете, что не использовали подход «сверху вниз». Тогда у вас будет гораздо лучшее представление о системе и о том, как взаимодействуют ее части».
Вы проделали большую фронтальную и внутреннюю работу. Как вы думаете, важно ли сегодня разработчикам-фрилансерам иметь оба этих набора навыков?
"Неа. Я буду очень честен: я думаю, что вы можете многое выиграть от специализации, например, если вы смехотворно хороши в смехотворно маленьком наборе технологий; но это просто личный выбор. Мне любопытно, поэтому я работаю с большим количеством различных технологий. И именно поэтому я в конечном итоге занимаюсь как фронтендом, так и бэкендом на фрилансе.
Технологии будут меняться — то, что популярно сегодня, может быть скучно уже завтра или как минимум через 6-12 месяцев.
Сказав это, я думаю, что для разработчика крайне важно на протяжении всей своей профессиональной жизни пытаться изучить как можно больше технологий и парадигм. Технологии будут меняться — то, что популярно сегодня, вероятно, станет скучным завтра или, по крайней мере, через 6-12 месяцев, — и один из ключевых навыков внештатного разработчика программного обеспечения — быстро освоить новую технологию или новый проект. Для этого действительно помогает, если у вас есть систематический подход к изучению новых вещей, и вы практикуете его, изучая хотя бы один новый язык, фреймворк или парадигму каждый год».
Вы проделали массу внештатной работы с Rails, Django и совсем недавно с Node.js. Насколько ваш опыт различался между этими тремя?
«О, о, мы собираемся ввязаться в религиозную войну здесь. Я бы сказал, что Node сильно отличается от двух других. Когда вы впервые знакомитесь с примерами Node.js, у вас могут возникнуть проблемы с пониманием парадигмы, управляемой событиями. Это то, что может быть не на 100% естественным для того, кто все время работает с Rails. С другой стороны, если вы работаете с JavaScript, вы, вероятно, разрабатываете для браузера, поэтому вы уже знакомы с парадигмой, управляемой событиями. Лично я, внештатно работая с Node, использовал фреймворк MVC, поэтому я не разрабатывал базовую технологию для Node; Я только что был стандартным пользователем проприетарной среды для конкретного клиента (сравнимой с Express)».
Какие ваши любимые инструменты, которые используют слишком мало разработчиков?
«У меня в голове не укладывается WebStorm от JetBrains. Это JavaScript IDE, на который действительно стоит обратить внимание. Новая студия Android, выпущенная на Google I/O, работает на программном обеспечении JetBrains, а не на Eclipse или чем-то еще. Мне нравится Eclipse, но мне очень нравится WebStorm. Я все еще изучаю множество ярлыков — и это практика, которую должен иметь и хороший внештатный разработчик программного обеспечения: узнавать больше об их инструментах. Я все еще узнаю больше о своей IDE. WebStorm имеет множество умных ярлыков, хороший стандартный макет, а также некоторые приятные свойства ZenCoding, которые позволяют писать HTML так же быстро, как и раньше. В целом, это хороший инструмент».
Если бы клиент-фрилансер хотел, чтобы вы сделали проект на Rust или Go, или на каком-то новом языке, с которым вы никогда не работали, что бы вы сказали?
Независимо от того, насколько вы хороши, всегда будет время на настройку, а это может дорого обойтись клиенту.
«Обычно я стараюсь установить свой первый контакт с языками вне работы с клиентом, а не во время клиента — независимо от того, насколько вы хороши, всегда будет время на настройку, а это может дорого обойтись клиенту. При этом, если бы клиент сказал мне: «Хорошо, нам удобно, даже если вы ничего об этом не знаете», я бы увидел в этом прекрасную возможность узнать что-то новое. С другой стороны, если у клиента был напряженный график, я бы посоветовал ему нанять кого-то еще или использовать язык, который мне удобен, чтобы я знал, что могу быть продуктивным с самого начала».
Какую самую большую техническую проблему вам приходилось решать во время фриланса?
«На ум приходит внештатный HTML5-проект. Копаться в HTML5 Canvas API, чтобы реализовать некоторые расширенные функции графического редактора, такие как выбор лассо и выбор произвольной формы, когда вы обрезаете часть изображения, но оставляете остальное, вычисления с наборами пикселей и тому подобное. Это было похоже на MS Paint с использованием HTML5 Canvas и реализацией таких вещей, как кисть: вы могли бы подумать, что кисть — это что-то простое — это если вы просто рисуете линию, но в этом случае вы хотите имитировать мазок кисти, поэтому Мне пришлось использовать математическую формулу, чтобы смоделировать, как кисть соприкасается с холстом и оставляет пятно от чернил».
Ваша любимая новая технология, с которой вы работали в последнее время?
«То, что я слышал о Meteor, интересно с точки зрения того, как они предлагают полную комплексную структуру для разработки одностраничного приложения. Он обрабатывает как заднюю часть, так и переднюю часть. Я не работал с ним, но мне любопытно и не терпится попробовать».