В этой статье хотелось бы поделиться опытом работы на фрилансе. Я расскажу свою историю: с чего начинал, как брал первый заказ, как вел переговоры и многое другое. Надеюсь, новичкам после прочтения этой статьи будет легче начинать свой путь, избежать массы подводных камней.
С чего начинал
Я пришел к выводу что хочу заниматься разработкой лет 12 назад, тогда еще учился в университете, причем на факультете "Режиссер театра и кино", но чем чаще мне приходилось сталкиваться с разного рода задачами, например, поиском информации для сценариев и прочее, я задумывался об оптимизации. Я начал изучать программирование, естественно, сразу полез в C#, купил кучу книг по C++ и другим низкоуровневым языкам - первая моя ошибка... Когда амбиции поутихли, стал рассматривать php, очень даже "зашел", искал массу информации по этому поводу, опять же купил кучу книг, в которых говорилось одно и то же, основные принципы ООП, работа с базами, простые примеры переменных, разбор массивов как простых, так и вложенных, и много другой базы. Однажды я наткнулся на статью, в которой говорилось о том, что нужно знать базу, речь о php, и можно разбираться и работать с WordPress, тогда народ часто "переезжал" с юкоза (один из первых конструкторов) на CMS типа WordPress. Так началось мое знакомство с CMS системами.
Развернул у себя на локальной машине Open Server, установил WordPress, скачал сверстанный шаблон и начал разбираться: как работать с темами, как интегрировать, какие есть плагины, как они работают и так далее. Когда понял, что я уперся, пора делать что-то реальное, ведь сидеть колупать код, рыть массу информации, когда тебе не платят - быстро надоедает, нет стимула. Так я пришел на фл ру.
Знакомство с фриланс-биржей
Регистрация на фриланс бирже, тогда все было куда проще, было меньше конкурентов, указал навыки, мол "я ваще крутой тип и бог WordPress" - еще одна огромная ошибка... Оплатив доступ на десяток откликов, тогда так можно было, отвечал только на проекты непосредственно по WordPress. Хочу заметить, с первого своего ответа, я никогда не отвечал шаблонами, всегда вчитывался в задание, но и это меня не спасло. )) Дело в том, что заказчик, один из, ответил и завязался диалог, задача была простейшая, как мне казалось, поднять интернет-магазин для пяти товаров и подключить Stripe (международная система приема платежей). Я рассказал, какой я спец, и "ваще на изи запилю", мне отдали заказ в работу, и тут началось... Когда ты делаешь боевой проект, когда есть четко поставленные задачи, когда все должно работать как часы, особенно оплаты - ладони потеют не по-детски. Если опустить всю историю, я обос...я, и жестко, прилетел первый отрицательный отзыв, тогда я понял что заказов мне больше не дадут, свежий аккаунт, нет портфолио, тут еще отзыв отрицательный. Я взял заказ, который мне на тот момент был не по силам, и в сети просто не было того объема информации, который есть сейчас в этом направлении.
Расширяю свой стек
Дальше начал изучать несколько других CMS систем, такие как: Modx, OpenCart, 1C Bitrix. С OpenCart я быстро остановился и "слился" - не понравился. Изучение Битрикса и Модекса заняло огромную часть моего времени, несколько лет изучал особенности строения и управления Modex, а также 1C Bitrix, хочу заметить что до сих пор я не знаю все тонкости и нюансы этих систем. Не могу сказать что это хорошо или плохо, но знаний для решения разного рода задач по CMS выше мне хватало. Достаточно быстро мне надоело, что системы управления ограничены, хотелось создавать что-то новое, чтоб был интерес постоянно, то что не превратится в рутину... Так я пришел в мобильную разработку.
Остепенился. Определил для себя итоговое направление.
Путь мобильного разработчика я начал не так давно, около 7 лет назад. И тут мне хотелось все и сразу, начал изучать Java и Swift одновременно, переключаясь между языками каждый день - вот она еще одна ошибка. В голове хаос, не получается упорядочить полученные знания и навыки, попытки сделать пробные проекты не венчались успехом, до сих пор валяются незаконченными. Около года я так издевался над собой, не пришел по сути ни к чему, впустую потерянное время, да, именно впустую, хотя, казалось бы ты что-то узнал, что-то освоил, какая-то информация же отложилась - да, верно, но я мог за год освоить одно направление и даже с джуна я бы мог зарабатывать, и уже постепенно, имея ту самую стимуляцию, изучать новое.
Я остепенился, взял направление Java, пока изучал этот язык, Google выпустил и стал рекомендовать Kotlin - собственно, на нем я веду разработку под операционную систему Android и по сей день. Этой историей я хочу сказать: не стоит распылятся, оттачивайте мастерство и навыки. Определите для себя основное направление и двигайтесь как по рельсам, прокладывая новые уровни и пути.
После достижения определенного уровня в разработке под Android, я постепенно включался в изучение и разработку для операционной системы IOS на языке Swift, что интересно, до сих пор сталкиваюсь и с Object-c - это прародитель Swift, как для Kotlin - Java.
Я пробовал разные подходы, пробовал разработку на Xamarin, React, Flutter, но ни одна кроссплатформа не впечатлила, поэтому я остановился строго на нативной разработке. Часто приходилось обращаться к помощи других профессионалов для разработки административных панелей под приложения, когда, что было очень часто, меня подводили со сроками, постоянно двигали дедлайны, масса недопонимания в реализации функционала и масса прочих мелочей, которые кардинально влияли на срок сдачи проекта в целом и его качества. Тогда я познакомился с фреймворком Laravel.
На сегодняшний день я занимаюсь разработкой нативных мобильных приложений и административных панелей под ключ. Часто спрашивают, почему не Yii2, почему не Symfony - не знаю, я выбрал для себя стек и развиваю его.
Заказы на фриланс
На сегодняшний день я свободно беру практически любой заказ, который мне нравится в сфере разработки мобильных приложений. Средний ценник на разработку нативного приложения для одной операционной системы начинается от 100 тыс. рублей, это не дорого и не дешево, но когда занимаешься тем, что нравится, и получаешь весьма неплохие деньги за свою работу, желание двигаться и развиваться в этом направлении не пропадает, не происходит "профессионального выгорания", а в нашей сфере это очень важно.
Основные советы
Не жалейте времени на самообучение и саморазвитие; трезво оценивайте свои силы в проектах. Никто не запрещает поднимать себе планку и достигать ее в боевом проекте, когда есть стимул, но не теряя головы.
Всегда указывайте реальный опыт, поверьте, найдется заказчик, который даст шанс проявить себя. После регистрации на любой фриланс-бирже, поставьте свое реальное фото, это вызывает больше доверия, даже если аккаунт пустой. Заполните портфолио, возьмите с гита любой открытый - это практикуется и у профессионалов, важно не перегнуть, в портфолио должно быть то, что реально сможете сделать. Не набирайте массу проектов сразу "А вдруг потом не получится взять другой, буду без работы, сейчас возьму и буду делать частями..." - проходили и это - огромная, я бы сказал, роковая ошибка!
Общение с заказчиком на фрилансе
Важно! Первое общение с заказчиком, как убедить что именно вы должны выполнить проект, как правильно назвать сроки и указать цену?
Всегда здоровайтесь, избегайте шаблонных ответов, первый ответ даст понять заказчику, что вы ответственный и вникаете в суть с самого начала. Никогда не "гасите" терминологией, далеко не все заказчики будут вникать в суть и примут это как попытку "запудрить мозги" - миксуйте с простым человеческим.
Опишите в ответе свое видение решения задачи, например: "Здравствуйте. Предлагаю нативное решение (разработка под каждую операционную систему на своем языке), Android - Kotlin, IOS - Swift, в отличие от кроссплатформенного решения (когда пишется фреймворк и компилируется под обе платформы сразу) - нативное решение более надежное, стабильное, а также проще кастомизировать и развивать под каждую платформу с учетом особенностей операционной системы. Административную панель предлагаю поднять на базе фреймворка Laravel - это php фреймворк, который легко кастомизируется, быстро расширять функционал, есть масса подготовленных пакетов - что ускоряет разработку в разы, также надежный и защищенный от атак и потери данных, легко поднимается API..." - примерно так выглядит мой ответ на запрос разработки мобильного приложения. Есть терминология и тут же пояснения - это позволит создать первичное мнение о вас, дальнейшее общение и решение уже само собой обыграется.
Не менее важно точно указать срок и, конечно же, стоимость. Долгое время я избегал работ с почасовой ставкой, но пока вы не научитесь определять необходимое время, вы не сможете назвать объективный срок и стоимость. И тогда надо быть готовым к тому, что будете обжигаться, когда назвали одну цену, а в итоге все куда сложнее. Но никогда не меняйте стоимость! Например, если вы посчитали, что вам требуется неделя на разработку - называйте две, так и говорите заказчику: "Проект будет готов через две недели, предварительно думаю реализовать за 10 дней, но предпочитаю взять запас". Поверьте, любой заказчик пойдет на это. Большой плюс - предложить заказчику демонстрацию хода работы раз в N дней.
Дорогие друзья! Надеюсь, моя история поможет избежать банальных ошибок, взять первый заказ и начать прокладывать свой путь разработчика на фрилансе. Всем удачи!