English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Стать хорошим программистом (Часть 7): как стать успешным исполнителем во Фрилансе

Стать хорошим программистом (Часть 7): как стать успешным исполнителем во Фрилансе

MetaTrader 5Примеры | 25 января 2022, 07:59
2 384 43
Omega J Msigwa
Omega J Msigwa

Введение

Темы Фриланса на MQL5 однозначно стоит коснуться, ведь многие разработчики хотели бы зарабатывать на своих навыках. Или даже просто получить дополнительный опыт, решая реальные задачи. В статье я представлю некоторые мысли относительно фриланса, которые возникли из удачного и неудачного опыта работы с сервисом. Надеюсь, эта информация окажется кому-то полезной, поможет избежать ошибок и эффективнее разрабатывать приложения во фрилансе. Здесь я расскажу о том, что сработало и не сработало у меня и некоторых других разработчиков. Возможно, эти знания помогут вам в вашем путешествии по фрилансу.

Стать успешным фрилансером на MQL5

 

«Не стоит прилагать половину усилий, если вас не устраивает половина результата».

Содержание

  1.  Не откликайтесь на работу, которую не знаете
  2.  Изучите требования в заказе
  3.  Не возлагайте слишком много работы на клиента
  4.  Работайте в рамках MQL5.com
  5.  Не нагружайте клиента техническими деталями
  6.  Будьте честны с собой и с клиентами
  7.  Начните с чистого кода
  8.  Не только писать код, но и решать задачи
  9.  Не ведитесь на поводу у клиента
  10.  Делайте на совесть
  11.  Берите разумное количество заказов
  12.  Станьте другом для своих клиентов


1. Не откликайтесь на работу, которую не знаете

Не откликайтесь на работу, если не знаете наверняка, как будете ее выполнять, даже если за нее предлагают хорошую оплату. Всем нравятся деньги, и это наверняка одна из основных причин, по которой вы решили стать исполнителем во Фрилансе. И чтобы заработать, мы иногда надеемся разобраться с заказом по ходу дела, если за него хорошо платят. Но по моему опыту, это не работает во фрилансе, особенно с серьезными клиентами, которые точно знают, что им нужно. И уж точно такой подход не сработает, если у работы сжатые сроки.

Все-таки чтобы освоить большинство областей в программировании, требуется много труда и усилий. Поэтому наивно полагать, что вы сможете чему-то научиться в достаточной степени, чтобы эффективно выполнить заказ.

Второй работой, которую я взялся выполнять во Фрилансе, был заказ создать несколько индикаторов, преобразовать какие-то из MQL4 в MQL5 и создать советник, который использует все эти индикаторы. Предлагали за это всего $30, но я решил взяться. Честно говоря, я понимал, что мне трудно будет создать индикаторы, которые хочет заказчик, потому что я был начинающим программистом (да и сейчас таким остаюсь). И я точно убедился в этом после того, как он объяснил мне всю логику и описал задание в разделе обсуждения, потому что я никогда их не изучал, не писал и не использовал их. И на выполнение этой работы я потратил 81 день.

Долгое исполнение заказа во Фрилансе на MQL5

Давайте посчитаем, сколько я получал в день в течение этого периода.

30 / 81  = $0.37

То есть все это время я получал 37 центов в день. Сколько времени я потратил впустую! Конечно же, я не сидел над задачей каждый день. Было несколько недель, когда я просто не мог работать, ничего не делал, потому что это было настолько тяжело и нудно, что я не хотел этим заниматься. С другой стороны, мне не нужен был арбитраж. Да, я сделала ошибку, взявшись за этот заказ, но тем не менее я хотел его завершить.

Если появляется работа на определенную тему, в которой вы еще не разбираетесь и хотите научиться, берите ее на заметку и учитесь, но не в рамках выполнения работы во Фрилансе. Похожая работа наверняка появится в будущем, и в следующий раз вы будете к ней готовы.


2. Изучите требования в заявке.

Я полностью согласен успешным разработчиком и моим другом Абдулом Вахабом, который написал мне: «Во Фрилансе я не откликаюсь на работу, если не уверен, что смогу выполнить. Если я уверен, что смогу сделать, я откликаюсь. А если я не могу определить точно, я ее изучаю».

abdul wahab and omega joctan conversation


С первого взгляда можно бегло оценить заказ на разработку, но зачастую этого недостаточно, и нужно разобраться в ней подробнее. Вот почему всегда полезно изучить требования к каждой работе, на которую вы пытаетесь подать заявку. Изучите требования и описание, чтобы детально понять, что же требуется. Кроме того, так вы получите дополнительную информацию и сможете ответить на вопросы, которые серьезный клиент должен вам задать, чтобы убедиться, что вы подходите для этой работы.

Например:

Пример технического задания


Не надо торопиться подавать заявку на исполнение, даже если она кажется достаточно простой, а стоимость высокая. Изучите эту работу, чтобы выяснить две важные вещи:

  1.  Могу ли я реализовать то, что хочет клиент, исходя из моего опыта работы разработки на MQL5 или MQL4?
  2.  Стоит ли оно того (в плане опыта и денег)?

И здесь не только про изучение задания и поиска информации по нему в интернете. Можно попробовать что-то на практике и критически оценить свои возможности.


3. Не возлагайте слишком много работы на клиента

Недавно я наткнулся на такое сообщение на форуме (https://www.mql5.com/en/forum/371968).

Вот что написал заказчик: «На хеджевом счете все хорошо. Программист интересуется, связана ли проблема с платформой/брокером, потому что он считает, что код должен одинаково работать на обоих счетах».

Пример безответственного разработчика на фрилансе MQL5


Это как если доктор будет пытаться узнать всю информацию о болезни и способах ее лечения у больного, который обратился за помощью. Так и с разработчиком, который пытается выяснить у заказчика, почему код не работает, как должен.

Отличный ответ на форуме дал Фернандо Каррейро (примерный перевод): «Если у разработчика недостаточно знаний о неттинговых счетах, не думаете ли вы, что он сам должен изучить это, раз уж он взялся за работу? Глупо заставлять заказчика выяснять такие вопросы за разработчика, потому что у него нет нужного опыта и знаний, чтобы задавать правильные вопросы и понять ответы. Если нужно, он должен потратить время на тестирование в определенной среде. Он даже может попросить у вас пустой демо-счет на сервере вашего брокера, чтобы протестировать и решить проблему. В конце концов, вы платите исполнителю, а не наоборот. Это мое видение как разработчика. Я бы никогда не просил заказчика искать информацию за меня. Если я принимаю работу, то я обязан знать, что делать при возникновении проблем. И я всегда сам выясняю такие моменты, даже если мне это невыгодно. Это моя обязанность как исполнителя».


Ответ Fernando Carreiro о безответственном разработчике во Фрилансе на MQL5


Если заказчик может сам выяснить, что не так, справиться с проблемой, тогда и незачем нанимать разработчика, который к тому же сам не в состоянии решить проблему. Подумайте, какая сложная это ситуация для заказчика. Ну и в целом, даже если он получит ответ относительно разработки и вопросов программирования, что он сможет с ним сделать?

Возьмите на себя полную ответственность за все, что происходит с вашим заказом. В конце концов, это вы подали заявку и именно в ваши обязанности входит решение всех связанных проблем.


4. Работайте в рамках MQL5.com

Встречал во фрилансе работы, которые выходят за пределы MQL5. Например, заказ на конвертирование pine-скрипта, разработку системы веб-лицензирования и другие похожие темы. Если вы не являетесь экспертом в этой конкретной области, лучше не браться за такие заказы.

В таких работах обычно совсем небольшая конкуренция, поэтому может возникнуть соблазн изучить эти новые области, чтобы стать одним из немногих кандидатов если не сейчас, то в следующий раз.

Но оно не стоит того, каким бы привлекательным ни был ценник.

И вот почему

Поскольку они не относятся напрямую к языку MQL5.com (языкам MQL5, MQL4 и Python), вам придется изучать что-то новое. Как веб-разработчик, я также не рекомендовал бы бросаться изучать все фреймворки, библиотеки и т.д., с которыми вы можете столкнуться. Их слишком много! А специфичных работ во Фрилансе наоборот очень мало. Появляются они настолько редко, что нецелесообразно тратить время на изучение того, что вам мало когда может пригодиться.

Зачастую такие заказы связаны не только с программированием — они требуют дополнительной работы. Например:

Пример лицензирования эксперта в форме веб-сервера, который я приводил ранее.

Чтобы полноценно решить такую задачу, вам понадобится хостинг для размещения защищенной базы данных, например PostgreSQL (хостинг платный, имейте это в виду). Надо будет читать и писать из баз данных, что может потребовать дополнительных веб-фреймворков, таких как Flask, Express или Node js… А также будет множество промежуточных процессов для безопасности и эффективности.

Поэтому

даже если получится создать работающее решение, в платформах MetaTrader оно может вести себя не так, как ожидали.


5. Не нагружайте клиента техническими деталями

90% клиентов во Фрилансе ничего не знают о программировании и разных технических моментах, связанных с трейдингом и автоматизированными торговыми системами. Поэтому, чтобы вас поняли, надо стараться общаться с ними на одном языке, избегать сложных технических терминов. Цель разработчика в разговоре с заказчиком — понять, что нужно заказчику, и объяснить, как он может решить эту задачу им достичь этого.

Пример плохой беседы с заказчиком: "В предыдущем варианте было много ошибок, реализация была неоптимальной. Надо было вручную вводить символы в отдельной строке во входных параметрах советника. Каждый символ проверялся на каждом тике через отдельный вызов функции. В новом варианте я создал одну входящую переменную, в которой разом можно указать все необходимые символы. Затем специальная функция разделит эти символы, которые будут храниться в массиве. Другая функция затем будет проходиться в цикле по всем символам в поисках сигнала и при нахождении такового будет открывать сделку."

Пример неудачного разговора с заказчиком во Фрилансе на MQL5

(Это не на 100% реальный разговор, я немного подредактировал его)

Расскажите и покажите заказчикам то, что они хотят услышать и увидеть, не больше и не меньше. Им точно понравится то, что вы говорите с ними на одном языке. Например, так: "В предыдущем варианте было много ошибок, он требовал много ручных операций, связанных с указанием символов. Сейчас я упростил, и все символы можно указать разом. Также робот теперь проще, быстрее и эффективнее находит сигналы и открывает сделки по всем символам без задержек. Посмотрите последний файл."

Пример хорошего разговора с клиентом.

Пример хорошего разговора с клиентом

(Это также подредактированная в фотошопе беседа)

Не стоит разговаривать с заказчиками как с программистами, и уж точно не стоит учить их писать код.


6. Будьте честны с собой и с клиентами

Это один из самых сложных моментов для большинства разработчиков. Под честностью с собой я подразумеваю честность в отношении стоимости, которую предлагаете при отклике на работу, а также срока, за который вы готовы выполнить заказ.

Конечно, можно предложить минимальную стоимость и кратчайшие сроки, чтобы выглядеть выгоднее конкурентов. Но все это снижает вашу ценность как разработчика. Кроме того, так вы будете работать с заказчиками, которые скупятся на нормальную оплату. И в большинстве своем такие заказы редко заканчиваются удачно.

Я не имею в виду, что нужно безосновательно завышать стоимость. Просто всегда нужно трезво оценивать сложность работы и примерное время, которое займет разработка. Если вы думаете, что работа стоит 100 долларов, пусть будет так. Создатели сайта MQL5 это предусмотрели, поэтому в дополнение к указанной заказчиком стоимости они дали нам, разработчикам, возможность подать заявку по той цене, которую мы считаем справедливой для этой работы.

Помнится, я как-то подавал заявку на работу, в которой надо было добавить нейросети в уже написанный советник. Заказчик был готов заплатить от $50 до $300. Я предложил $250 и срок выполнения три дня. Заказчик отклонил мою заявку и написал мне следующее:

"К сожалению, я не могу принять вашу заявку — я нашел исполнителя с лучшим предложением".

Мне было интересно узнать, какое же предложение привлекло клиента, поэтому я его спросил. И вот что он ответил:

"Исполнитель предложил выполнить за 40 долларов, а работу собирается сдать уже сегодня".

В тот момент я почувствовал себя таким некомпетентным. Но, к моему удивлению, через неделю я получил уведомление их раздела Фриланс, что заказчик ищет другого разработчика для завершения работы. Не знаю, почему работа закончилась арбитражом, но что-то пошло не так.

Не стоит предлагать самую низкую цену и самые короткие сроки, только чтобы получить заказ. Работа может быть очень сложной, и скорее всего вы рано или поздно пожалеете.

Когда я говорю, что надо быть честным с заказчиком, я имею в виду не врать насчет своих способностей. Пусть они четко знают, чего от вас ожидать. Прямо говорите, если вы не до конца понимаете, чего от вас хотят. Честность поможет вам завоевать доверие ваших клиентов.


7. Начните с чистого кода

Не торопитесь создавать мусорный образец кода для быстрой демонстрации заказчику. Не торопитесь быстро-быстро писать код, чтобы скорее закончить работу и перейти к другим задачам. Заказчик поймет, что вы создали продукт из мусора, и в следующий просто не захочет иметь с вами дело.

Какой бы маленькой ни казалась работа, всегда выполняйте ее так, как будто у вас не будет шанса сделать ее снова. Следуйте практикам хорошего кода. Пишите чистый код, который не содержит потенциальных ошибок и обрабатывает исключения.

Пусть код будет чистым от начала до конца.

Не поддавайтесь соблазну быстро написать какой-нибудь код только для демонстрации продукта, думая, что потом вы его почистите. Это плохая привычка — скорее всего, вы забудете сделать это, когда закончите разработку, ну и качество продукта будет соответствующим.


8. Не только писать код, но и решать проблемы

Являясь разработчиком, вы наверняка во многих отношениях более опытны, чем ваш заказчик. Поэтому хорошим тоном будет не только писать код в соответствии с тех. заданием, но и помогать заказчику, предлагать наилучшие способы достижения желаемых результатов.

Например, можно предложить использовать индикатор ATR для установки стоп-лосса и тейк-профита, а не обобщенные значения уровней. 

Не надо бояться говорить, что заказчик принимает неправильное решение, и предложить лучшие варианты для желаемого продукта. Например, можно предложить добавить в советник модуль управления капиталом, если заметили, что его нет.

С другой стороны, верный способ завершить работу арбитражом и потерять клиента — сказать ему, что идея глупая и не стоит разработки. Нужно быть аккуратным и не впадать в крайность.

Внимательно относитесь к своим решениям и мнениям. Убедитесь, что они не слишком сильно отличаются от первоначального замысла. На первом месте — желание клиента.

Кроме того, никогда не гарантируйте, что с предложенным вами способом торговля станет более прибыльной и заказчик сможет заработать больше за короткий период. Всегда оставайтесь на стороне разработчика, но не забывайте о стороне трейдера.


9. Не ведитесь на поводу у клиента

Вы обязательно будете встречать заказчиков, которым кажется, что они понимают вашу работу лучше вас. Это могут быть другие разработчики или люди, имеющие небольшой опыт разработки на другом языке.

По каким-то странным причинам такие клиенты могут начать умничать и говорить вам что делать или не делать и как, даже если это не относится к тех. заданию. Например, какие функции писать, как библиотеки использовать и т.д.

Конечно, это заказчики, их нельзя игнорировать. Возможно, они и правы, но убедитесь, что они не отговаривают вас от правильных решений. Ведь вы не можете быть уверены, действительно ли они знают, чего хотят.

Представьте себе врача, оперирующего пациента. Врач начинает мыть руки, пациент в это время говорит врачу: "Эти мелочи можно опустить, просто сделайте операцию, со мной все будет хорошо". Врач прекрасно знает последствия всех своих действий, поэтому последнее слово в выборе средств за ним.

Есть много вещей, которые нужно включить в код и которые не относятся к торговле напрямую, но делают программы простыми и безопасными. И все это, конечно, знает опытный программист.

Если заказчик говорит вам не делать что-то или делать по-другому, объясните ему важность того, что вы делаете. Также попросите объяснить, почему заказчик считает, что этого делать не нужно. То же относится и к ситуации, когда заказчик говорит сделать что-то, что вы не считаете необходимым. Если вы не находите согласия в таких спорных вопросах, предупредите клиента о возможных последствиях, прежде чем реализовывать.


10. Делайте на совесть

Я считаю, это один из самых важных пунктов для любого программиста, который хочет стать успешным фрилансером.

Если вы хорошо выполняете свою работу, вас заметят заказчики, и вполне естественно, что у вас будет много клиентов.

Это связано не только с хорошим резюме и рейтингом разработчика, который отображается в вашем профиле, но и с тем, что клиенты захотят снова работать с вами. Кроме того, они скорее всего порекомендуют вас своим друзьям, чтобы они не полагались не слепой поиск исполнителя.

Перебирая всех успешных разработчиков во Фрилансе, я не нашел никого, кто не делал бы свою работу хорошо.

Делайте максимально качественно, делайте все возможное в любом заказе. Так вы заработаете себе ценнейшую репутацию.


11. Берите разумное количество заказов

"Вам нужно сделать правильно лишь несколько вещей в вашей жизни, если не делаете неправильно слишком многого" (Уоррен Баффет).

Подавая слишком много заявок/принимаясь за несколько заказов одновременно, вы становитесь менее эффективным. Это отражается на всем: на качестве кода, на общении с заказчиками. Возможно, даже придется отказаться от некоторых, которые даются слишком тяжело или не соответствуют вашим ожиданиям.

Лимит подаваемых заявок на работу в разделе фриланса – 10 раз в сутки. Я помню, в первый день в сервисе Фриланса я пытался подать все 10 возможных заявок с расчетом получить как минимум 8 из них. Тогда я просто искал быстрые деньги и был готов на все. В результате все мои заявки отклонили. Мне пришлось пересмотреть свой подход, стать более разборчивым. Я начал откликаться только на одну работу. И тогда меня наняли.

В чем была проблема?

Поскольку я откликался на очень много заказов, у меня не было стремления убеждать того единственного заказчика, что отлично подхожу для работы. Да мне и нечего было показать в то время. А шаблонный длинный технический текст, который я отправил всем заказчикам в попытках убедить, не сработал.

Это относится не только к откликам на работу, это имеет еще большее значение для выполняемых заказов. Не берите много заказов, а иногда лучше сосредоточиться на одном. Завершите работу, а затем переходите к другим. Так вы добьетесь высокого качества, а не количества работ в вашем портфолио.

И это относится не только к количеству заявок, но и типам работ, за которые вы беретесь.

В большинстве своих статей я упоминал о необходимости специализации программиста. Что касается фриланса, здесь тоже надо браться за работы, которые относятся к вашей специализации, в которой вы чувствуете себя уверенно.


Станьте другом для своих клиентов

Успешный бизнес невозможен без лояльных, возвращающихся клиентов, которые регулярно покупают ваши товары или услуги.

Если вы стремитесь создать успешную долгосрочную карьеру во Фрилансе, надо научиться строить дружеские отношения с клиентами. Пусть в следующий раз им будет проще нанять вас. 

Ведь мы и сами в реальной жизни выбираем одни и те же вещи, пользуемся одними и теми же услугами, посещаем одни и те же места - здесь вопрос в доверии. Вы, скорее всего, купите в магазине друга, чем в незнакомом месте. 

Можно легко подружиться с заказчиком, добавив его в список друзей в профиле на MQL5.com. Дайте им знать, что готовы в любой время взяться за их заказ.

А чтобы им проще было нанимать вас, создайте ссылку для выбора разработчика в формате https://www.mql5.com/ru/job/new?prefered=ваше имя пользователя



Заключение

Вот и все для этой статьи. Надеюсь, вы узнали для себя что-то полезное, что позволит вам стать более успешным исполнителем во фрилансе. Если вам есть, что добавить, оставляйте комментарии к статье.

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/9995

Последние комментарии | Перейти к обсуждению на форуме трейдеров (43)
Dmitry Fedoseev
Dmitry Fedoseev | 21 июл. 2022 в 02:32
Fedor Arkhipov #:

Ну и да, после семилетнего перерыва меня готовы принять на работу хоть завтра с зарплатой в 1000$, правда опять ездить в командировки, что очень плохо. Может это и не такая уж большая зарплата для некоторых, но для меня большая зарплата и возможно я соглашусь. И кстати я не в первый раз награжден. Например я награжден медалью от правительства РФ, за хорошую работу и также разными грамотами. Хороший специалист всегда найдет себе работу. И без хороших специалистов компания идет ко дну.

Как интересно. Федор, а это не вы неделю назад просили скрыть в профиле страну, типа вы не такой... А теперь вот гордость за причастность... Как удивительно быстр люди меняются.

Алексей Тарабанов
Алексей Тарабанов | 21 июл. 2022 в 02:40
Dmitry Fedoseev #:

Как интересно. Федор, а это не вы неделю назад просили скрыть в профиле страну, типа вы не такой... А теперь вот гордость за причастность... Как удивительно быстр люди меняются.

Дима, я прежний и тебя отлично помню, я не тот, которого ты вспомнил, но мне очень надо покурить 

Алексей Тарабанов
Алексей Тарабанов | 21 июл. 2022 в 03:06
lynxntech #:

Алексею надо временный запрет, пока не наговорил еще)

кто знает, в чем он еще признается, расскажет)

До сих пор не знаю , как к вам обращаться, но до сих пор я на Москву ориентируюсь, а Вы уже на Сахалине давно проснулись

Алексей Тарабанов
Алексей Тарабанов | 21 июл. 2022 в 04:03

Самое интересое, что Вы ещё не знаете, как я мог бы это сделать. 

Самое интересное, что я очень много лет мог встретиться с Вами, а если Вы ежё не готовы 

lynxntech
lynxntech | 21 июл. 2022 в 04:23
предлагаю удалить, весь этот глупый флуд, мне стыдно.
Фиксированный стоп-лосс на основе ценового действия и RSI ("умный" стоп-лосс) Фиксированный стоп-лосс на основе ценового действия и RSI ("умный" стоп-лосс)
Стоп-лосс – основной инструмент управления капиталом в трейдинге. Эффективное использование стоп-лосса, тейк-профита и размера лота может сделать торговлю более последовательной и в целом более прибыльной. Тем не менее, в использовании стоп-лосса есть и свои трудности. Основная из них – охота на стоп-лоссы. В этой статье рассматривается, как свести к минимуму эффект от охоты на стоп-лоссы, а также проводится сравнение с классическим применением стоп-лосса для определения его прибыльности.
Графика в библиотеке DoEasy (Часть 93): Готовим функционал для создания составных графических объектов Графика в библиотеке DoEasy (Часть 93): Готовим функционал для создания составных графических объектов
В статье начнём разработку функционала для создания составных графических объектов. Наша библиотека будет поддерживать создание сложных составных графических объектов, в которых эти объекты смогут иметь любую иерархию связей. Подготовим все необходимые классы для последующей реализации таких объектов.
Графика в библиотеке DoEasy (Часть 94): Составные графические объекты, перемещение и удаление Графика в библиотеке DoEasy (Часть 94): Составные графические объекты, перемещение и удаление
В статье начнём разработку различных событий составного графического объекта. Рассмотрим частично перемещение и удаление составного графического объекта. Сегодня по большей части мы будем дорабатывать то, что было создано в прошлой статье.
Пишем глубокую нейронную сеть с нуля на языке MQL Пишем глубокую нейронную сеть с нуля на языке MQL
Статья познакомит вас с глубокой нейронной сетью, написанной на MQL, и с различными функциями активации этой сети, такими как функция гиперболического тангенса для скрытых слоев и Softmax для выходного слоя. Мы будем изучать нейросеть постепенно, двигаясь от первого шага до последнего, и вместе создадим глубокую нейронную сеть.