English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
Como se tornar um bom programador (Parte 7): como se tornar um desenvolvedor freelancer de sucesso

Como se tornar um bom programador (Parte 7): como se tornar um desenvolvedor freelancer de sucesso

MetaTrader 5Exemplos | 8 fevereiro 2022, 13:55
571 0
Omega J Msigwa
Omega J Msigwa

Introdução

O Freelance para MQL5 é um assunto que vale definitivamente a pena tocar, pois muitos desenvolvedores gostariam de ganhar dinheiro com suas habilidades e, ao mesmo tempo, outros gostariam de obter alguma experiência extra resolvendo problemas reais. Neste artigo vou apresentar algumas ideias sobre freelancing que surgiram a partir de boas e más experiências com o serviço. Espero que esta informação seja útil à alguém, ajude a evitar erros e a desenvolver aplicativos como autônomos de forma mais eficaz. Aqui vou falar sobre o que tem funcionado e o que não tem funcionado para mim e para alguns outros desenvolvedores. Talvez este conhecimento o ajude em sua jornada como autônomo.

Torne-se um freelancer de sucesso em MQL5

 

"Não vale a pena colocar a metade do esforço se você não estiver satisfeito com a metade do resultado".

Sumário

  1.  Não solicite realizar um trabalho que você não conhece
  2.  Estude os requisitos do trabalho encomendado
  3.  Não sobrecarregue o cliente
  4.  Cinja-se ao MQL5.com
  5.  Não sobrecarregue o cliente com aspectos técnicos
  6.  Seja honesto consigo mesmo e com seus clientes
  7.  Comece com código limpo
  8.  Você não só escreve código, mas também resolve problemas
  9.  Não se deixe enganar pelo cliente
  10.  Seja consciencioso
  11.  Aceite um número razoável de pedidos
  12.  Seja amigo de seus clientes

1. Não solicite realizar um trabalho que você não conhece

Não solicite realizar um trabalho que você não tem certeza de como deverá executar, só porque o preço é alto. Todos gostam de dinheiro, e esta é provavelmente uma das principais razões pelas quais você decidiu se tornar um desenvolvedor no Freelance. Para ganhar dinheiro, às vezes esperamos realizar o trabalho encomendado à medida que avançamos, se ele for bem pago. Pela minha experiência, esta mentalidade não funciona no freelance, especialmente para clientes sérios que sabem exatamente o que estão procurando e para pedidos com prazos apertados.

Ainda assim, a maioria das áreas na programação requer muito trabalho e esforço para aprender a dominá-las, por isso, pensar que você vai adquirir conhecimentos e ser capaz de implementá-los efetivamente após várias horas é revoltante.

O segundo trabalho encomendado que executei no Freelance foi um projeto para criar vários indicadores, converter alguns de MQL4 para MQL5 e criar um Expert Advisor que utilizasse todos eles. O trabalho era de apenas 30 dólares, mas eu decidi aceitá-lo. Honestamente, eu sabia que os indicadores que o cliente queria seriam difíceis para mim de criar depois que me explicasse completamente toda a lógica e o que queria na seção de discussão do pedido, porque eu era um novato no assunto de indicadores (até hoje), porque eu não os estudo, não os codifico ou não os uso. No final, como resultado de eu ter aceito esse pedido, acabei executando o trabalho em 81 dias.

Execução demorada de um pedido no Freelance MQL5

Vamos calcular quanto eu recebi por dia durante este período.

30 / 81  = $0.37

Eu ganhava 37 centavos por dia durante todo esse tempo. Que perda de tempo! Sei que 81 dias parece muito tempo, mas confie em mim quando digo que você não vai fazer isso todos os dias. Há algumas semanas que não fiz nada porque foi difícil e chato e não era algo que eu quisesse fazer. Por outro lado, eu não precisava de arbitragem, porque cometi um erro ao aceitar o trabalho e queria terminá-lo não importa o que fosse.

Se você vê um trabalho sobre um determinado assunto que desconhece e quer aprender, tome nota dele e aprenda fazendo-o fora do trabalho em suas rotinas normais de aprendizagem. O mesmo trabalho provavelmente aparecerá no futuro.


2. Estude os requisitos do trabalho encomendado

Concordo plenamente com meu amigo Abdul Wahab, que é um desenvolvedor de sucesso recente, quando ele me contou: "No Freelance não a aceito pedidos se não tenho certeza de que posso cumprir. Se tenho certeza de que posso fazer, eu aceito. E se não consigo saber ao certo, eu estudo."

abdul wahab and omega joctan conversation


Você pode entender de que se trata o pedido à primeira vista, mas não será capaz de entender tudo tão facilmente. É por isso que é sempre uma boa ideia pesquisar os requisitos para cada pedido em que você está interessado. Isto pode ajudá-lo a entender o que você será solicitado a fazer em detalhes, e também estará equipado com as informações corretas que o ajudarão a responder as perguntas que um cliente sério possa lhe fazer para ter certeza de que você é a pessoa certa que entende o pedido.

Por exemplo:

Exemplo de termos de referência


Você não deve ter pressa em solicitar a realização da encomenda, mesmo que possa parecer bastante simples e o preço seja alto. Examine o trabalho em questão para descobrir duas coisas importantes:

  1.  Posso concretizar o que o cliente deseja com base em minha experiência de desenvolvimento em MQL5 ou MQL4?
  2.  Vale a pena (em termos de experiência e dinheiro)?

Fazer a pesquisa não significa necessariamente investigar apenas no google. Significa também experimentar por conta própria através da prática e do pensamento crítico sobre o resultado.


3. Não sobrecarregue o cliente

Recentemente encontrei esta mensagem no fórum https://www.mql5.com/en/forum/371968.

Tudo começou assim: “Tudo está bem na conta de cobertura. O programador quer saber se o problema está relacionado à plataforma/corretora porque ele acha que o código deve funcionar da mesma forma em ambas as contas.”

Exemplo de desenvolvedor irresponsável no Freelance MQL5


Isso pode ser comparado com um médico que tenta saber todas as informações da doença e as formas de tratamento perguntando para o paciente que procura sua ajuda. Assim acontece com o desenvolvedor que tenta descobrir junto ao cliente o motivo pelo qual o código não funciona como deveria.

O Fernando Carreiro deu uma excelente resposta a isto: "Se o desenvolvedor não tem experiência ou conhecimento suficiente sobre contas de cobertura, você não acha que deveria ser sua responsabilidade se informar e fazer as pesquisas necessárias, uma vez que ele aceitou o trabalho a ser feito? Ter o cliente fazendo a pesquisa por ele, não faz sentido, uma vez que o cliente não tem o conhecimento ou experiência necessários para poder fazer as perguntas certas ou mesmo compreender as possíveis respostas. Se necessário, ele mesmo precisa dedicar algum tempo para testar seu EA num determinado ambiente. Ele pode facilmente pedir que você forneça uma conta demo limpa com sua corretora, para que teste o EA e experimente e faça as pesquisas necessárias para resolver o problema. Afinal, você paga ao desenvolvedor, e não o contrário. Esta é minha opinião como desenvolvedor. Eu nunca permitiria que um cliente tivesse que pesquisar coisas por mim. Se eu aceitar um trabalho, é minha responsabilidade saber como fazê-lo, e se eu encontrar algo que eu não saiba, eu vou pesquisá-lo, mesmo que eu saia com prejuízo. É minha responsabilidade como desenvolvedor."


Resposta do Fernando Carreiro em relação a um desenvolvedor irresponsável no freelance MQL5


Se o cliente pode averiguar o que está errado e resolver ele mesmo o problema, não há razão para contratar um desenvolvedor que também não seja capaz de solucionar o problema sozinho. Pense no complicado que esta situação é para o cliente. De qualquer forma, mesmo que ele receba uma resposta sobre perguntas relativas ao desenvolvimento e programação, o que ele pode fazer com isso?

Assuma total responsabilidade por tudo o que acontece com o trabalho encomendado. Afinal, é você quem o pediu e é sua responsabilidade resolver todos os problemas que possam acontecer.


4. Cinja-se ao MQL5.com

Acontece várias vezes no Freelance que as pessoas postam encomendas fora do escopo da MQL5.com. Tarefas como a conversão de um pine-script, um sistema de licenciamento Web, e muitos outros relacionados. Eu não recomendo que você aceite esses tipos de pedidos a menos que você seja um especialista nessas áreas e é isso que você quer fazer no Freelance MQL5.

Estes trabalhos muitas vezes têm menos ou nenhuma concorrência, a ponto de você se sentir tentado a aprender estas áreas para que você possa se tornar uma das poucas pessoas a solicitar estes trabalhos da próxima vez.

Não vale a pena assumir esse tipo de trabalho encomendado, não importa o preço que possam oferecer.

Eis o motivo

Como eles não estão diretamente relacionados à linguagem MQL5.com (linguagens MQL5, MQL4 e Python), você terá que aprender algo novo. Como desenvolvedor web, eu também não recomendaria estudar todos os frameworks, bibliotecas, etc. que você possa encontrar. Existem muitos! E há muito poucos trabalhos específicos no Freelance. Eles aparecem tão raramente que é não adianta gastar tempo estudando algo no qual você dificilmente pode ser útil.

Muitas vezes, esses pedidos não estão apenas relacionados à programação, eles exigem um esforço extra, por exemplo: Por exemplo:

O licenciamento de EA num formulário de servidor web que falei antes.

Se você optar por uma solução completa, você precisará de um ambiente de hospedagem na nuvem para armazenar um banco de dados seguro, como o PostgreSQL (hospedagem não é gratuita, tenha isso em mente). Você terá que ler e escrever a partir do banco de dados, algo que pode exigir estruturas de backend web adicionais como Flask, express, ou Node js ... e muitos processos intermediários para medidas de segurança e eficácia.

Resumindo, uma longa história.

Depois de todas as implementações pode ainda não funcionar de forma alguma ou da maneira que você quer que funcione nas plataformas MetaTrader.


5. Não sobrecarregue o cliente com aspectos técnicos

90% dos clientes no Freelance não sabem nada sobre programação e questões técnicas relacionadas à negociação e sistemas de negociação automatizados. Por isso, para ser entendido, você deve tentar se comunicar com eles no mesmo idioma, evitando termos técnicos complexos. O objetivo do desenvolvedor, ao conversar com o cliente, é entender o que este precisa e explicar como pode resolver problema.

Um exemplo de uma conversa ruim com um cliente: "Houve muitos erros na versão anterior, a implementação ficou abaixo do ideal. Era necessário inserir manualmente os símbolos numa linha separada nos parâmetros de entrada do EA. Cada símbolo era verificado a cada tick por meio de uma chamada de função separada. Na nova versão, eu criei uma variável de entrada que permite especificar todos os símbolos necessários de uma só vez. Depois, uma função especial irá separá-los e estes, por sua vez, serão armazenados numa matriz. A outra função percorrerá todos os símbolos procurando um sinal e, se for encontrado, abrirá uma transação."

Exemplo de conversa malsucedida com um cliente no Freelance MQL5

(Esta não é uma conversa 100% real, eu editei um pouco)

Diga e mostre aos clientes o que eles querem ouvir e ver, nem mais nem menos. Eles definitivamente vão gostar do fato de você falar a mesma língua. Por exemplo, assim: "A versão anterior tinha muitos erros, exigia muitas operações manuais relacionadas à especificação de símbolos. Agora eu simplifiquei e todos eles podem ser especificados de uma só vez. Além disso, o robô agora encontra sinais de forma mais fácil, rápida e eficiente e abre negócios para todos os símbolos sem demora. Olhe para o último arquivo."

Exemplo de uma boa conversa com um cliente.

Exemplo de uma boa conversa com um cliente

(Esta é também uma conversa editada em photoshop)

Não se deve falar com os clientes como se fossem programadores, e certamente não se deve ensiná-los a escrever código.


6. Seja honesto consigo mesmo e com seus clientes

Este é um dos momentos mais difíceis para a maioria dos desenvolvedores. Por ser honesto consigo mesmo, quero dizer ser honesto sobre o custo que você oferece ao responder ao trabalho e sobre o prazo em que você está disposto a completá-lo.

Claro, você pode oferecer o custo mínimo e o menor prazo para parecer mais lucrativo que os concorrentes. Mas tudo isso reduz seu valor como desenvolvedor. Além disso, dessa forma você trabalhará com clientes que economizam pagando o normal. E, na maioria das vezes, esses pedidos raramente terminam com sucesso.

Não quero dizer que você precise superestimar excessivamente o custo. Simplesmente é preciso estar sempre sóbrio sobre a complexidade do trabalho e o tempo aproximado que será necessário para o desenvolvimento. Se você acha que o trabalho vale 100 dólares, assim seja. Os criadores do site da MQL5 consideraram isto, de forma que, além do custo indicado pelo cliente, eles nos deram a nós, os desenvolvedores, a oportunidade de licitar a um preço que consideramos justo.

Lembro-me de uma vez me solicitei realizar a execução de um trabalho onde tinha que adicionar redes neurais a um EA já escrito. O cliente estava disposto a pagar entre US$ 50 e US$ 300. Eu propus US$ 250 e um prazo de três dias. O cliente rejeitou minha solicitação e me escreveu o seguinte:

"Infelizmente, não posso aceitar sua solicitação, encontrei um desenvolvedor com uma melhor oferta."

Eu estava curioso para saber que tipo de oferta cativou o cliente, por isso lhe perguntei. E foi isso que ele respondeu:

"O desenvolvedor se ofereceu para fazê-lo por US$ 40, e o trabalho será entregue hoje."

Naquele momento, eu me senti tão incompetente. Mas, para minha surpresa, uma semana depois recebi uma notificação da seção Freelance de que o cliente estava procurando outro desenvolvedor para concluir o trabalho. Não sei por que o trabalho encomendado terminou em arbitragem, mas algo deu errado.

Você não deve oferecer o menor preço e o menor tempo, apenas para obter um pedido. O trabalho pode ser muito difícil e provavelmente você se arrependerá mais cedo ou mais tarde.

Quando eu digo que você precisa ser honesto com o cliente, quero dizer que não minta sobre suas habilidades. Não importa que eles saibam claramente o que esperar de você. Fale abertamente se você não entender totalmente o que lhe é pedido para fazer. Honestidade irá ajudá-lo a ganhar a confiança de seus clientes.


7. Comece com código limpo

Não se apresse em criar códigos inúteis para uma demonstração rápida para o cliente. Não se apresse em escrever código rapidamente para que você possa terminar o trabalho mais rapidamente e avançar para outras tarefas. O cliente entenderá que você criou um produto a partir do lixo e, da próxima vez, não desejará fazer negócios com você.

Não importa quão pequeno um trabalho encomendado possa parecer, sempre faça como se você não tivesse a chance de fazê-lo novamente. Siga as boas práticas de código. Escreva código limpo que não contenha possíveis bugs e que processe exceções.

Mantenha o código limpo do início ao fim.

Resista à tentação de escrever rapidamente código apenas para demonstrar o produto, pensando que você irá limpá-lo mais tarde. É um mau hábito, e é provável que você se esqueça de fazê-lo quando terminar de desenvolvê-lo, e a qualidade do produto corresponderá.


8. Não apenas escreva código, mas também resolva problemas

Como desenvolvedor, você provavelmente é mais experiente do que seu cliente em muitos aspectos. Por isso, não é apenas uma boa prática escrever código de acordo com os termos de referência, mas também ajudar o cliente sugerindo as melhores maneiras de alcançar os resultados desejados.

Por exemplo, você pode sugerir o uso de um indicador ATR para definir valores de stop-loss e take-profit em vez de valores de nível generalizado. 

Não tenha medo de dizer que o cliente está tomando a decisão errada, e ofereça as melhores opções para o produto desejado. Por exemplo, você pode oferecer para adicionar um módulo de gerenciamento de dinheiro ao EA, se perceber que está faltando.

Por outro lado, uma maneira infalível de encerrar um trabalho é usar a arbitragem e perder um cliente, dizer que a ideia é estúpida e não vale a pena ser desenvolvida. Você tem que ter cuidado e não ir a extremos.

Tenha cuidado com suas decisões e opiniões. Certifique-se de que não se desviem muito da intenção original. O desejo do cliente vem em primeiro lugar.

Além disso, nunca garanta que com o método proposto, a negociação se tornará mais lucrativa e o cliente poderá ganhar mais num curto período. Fique sempre do lado do desenvolvedor, mas não se esqueça do lado do trader.


9. Não se deixe enganar pelo cliente

Você definitivamente encontrará clientes que pensam que entendem seu trabalho melhor do que você. Podem ser outros desenvolvedores ou pessoas com pouca experiência desenvolvendo em outra linguagem.

Por alguma estranha razão, esses clientes podem começar a ficar espertos e dizer o que fazer ou não fazer e como, mesmo que não tenha nada a ver com os termos de referência. Por exemplo, podem indicar quais funções escrever, como usar bibliotecas, etc.

Claro, eles são clientes, e não podem ser ignorados. Podem estar certos, mas certifique-se de que não o desencorajem a tomar as decisões certas. Afinal, você não pode ter certeza de que eles realmente sabem o que querem.

Imagine um médico operando um paciente. O médico começa a lavar as mãos e o paciente neste momento diz: "Dispense da lavagem de mãos, basta fazer a operação, ficarei bem". O médico conhece perfeitamente as consequências de todas as suas ações, portanto, a última palavra na escolha dos meios é dele.

Há muitas coisas que precisam ser incluídas no código que não estão diretamente relacionadas à negociação, mas tornam os programas simples e seguros. Um programador experiente sabe de tudo isso, é claro.

Se o cliente lhe disser para não fazer algo ou fazer diferente, explique a ele a importância do que você está fazendo. Peça também uma explicação de por que o cliente acha que isso não deve ser feito. O mesmo se aplica à situação em que o cliente diz para fazer algo que você não considera necessário. Se você não chegar a um entendimento sobre este tipo de questões delicadas, avise seu cliente sobre as possíveis consequências antes de implementá-las.


10. Seja consciencioso

Acredito que este é um dos pontos mais importantes para qualquer programador que queira se tornar um freelancer de sucesso.

Se você fizer bem o seu trabalho, os clientes notarão você e é natural que lhe apareçam muitos clientes.

Isto não só tem a ver com um bom CV e a classificação de desenvolvedor exibida em seu perfil, mas também com o fato de que os clientes vão querer trabalhar com você novamente. Além disso, é mais provável que eles recomendem você a seus amigos, para que não dependam de uma busca cega.

Depois de ver todos os desenvolvedores de sucesso no Freelance, não encontrei ninguém que não fizesse bem o seu trabalho.

Faça o seu melhor, faça o seu melhor em qualquer trabalho encomendado. Desta forma, você ganhará uma reputação valiosa.

11. Aceite um número razoável de pedidos

"Você só precisa fazer algumas poucas coisas certas na vida, desde que não faça muitas erradas" (Warren Buffet).

O fato de solicitar muitos pedidos/aceitar muitos trabalhos ao mesmo tempo faz com que você seja menos eficiente. Isso afeta tudo: a qualidade do código, a comunicação com os clientes. Você pode até ter que desistir de alguns que são muito difíceis ou não atendem às suas expectativas.

O limite de solicitações de trabalhos encomendados na seção freelance é de 10 vezes por dia. Lembro-me que no meu primeiro dia no serviço Freelance, tentei enviar todas as 10 solicitações com a expectativa de obter pelo menos 8 delas. Então eu estava apenas buscando dinheiro rápido e estava pronto para qualquer coisa. Como resultado, todas as solicitações foram rejeitadas. Eu tive que reconsiderar minha abordagem, tornar-me mais seletivo. Comecei a aceitar apenas um trabalho. E então fui contratado.

Qual era o problema?

Como eu estava respondendo a tantos trabalhos, não tive vontade de convencer aquele cliente de que eu era a melhor opção. Eu não tinha nada para mostrar naquele momento. E o longo texto técnico que enviei a todos os clientes, numa tentativa de convencê-los, não funcionou.

Isto não se aplica apenas às solicitações que você envia, senão que também ao trabalho a ser executado, Não solicite muitos trabalhos, às vezes é melhor se concentrar em um. Termine um e depois passe para outros. Dessa forma, você conseguirá alta qualidade, não quantidade de trabalho em seu portfólio.

E isso se aplica não apenas ao número de solicitações, mas também aos tipos de trabalho encomendado que você realiza.

Na maioria dos meus artigos, mencionei a necessidade de especialização do programador. Quanto ao Freelance, você também precisa assumir trabalhos relacionados à sua especialização, nos quais você se sente confiante.

Seja amigo de seus clientes

Um negócio de sucesso é impossível sem clientes fiéis e recorrentes que compram regularmente seus produtos ou serviços.

Se você deseja criar uma carreira de freelancer de sucesso a longo prazo, precisa aprender a construir amizades com os clientes. e tornar mais fácil para eles quererem contratá-lo da próxima vez. 

Afinal, na vida real nós mesmos escolhemos as mesmas coisas, usamos os mesmos serviços, visitamos os mesmos lugares - aqui a questão é confiança. É mais provável que você compre na loja de um amigo do que em um lugar que você não conhece. 

Você pode fazer facilmente uma amizade com seu cliente, adicionando-o à lista de amigos que está disponível em seu perfil MQL5. Você também pode avisá-los de que você está disponível para aceitar o pedido deles a qualquer momento.

Facilite que o contratem, criando um link para escolha de desenvolvedor neste formato https://www.mql5.com/pt/job/new?prefered=seu nome de usuário


Conclusão

Assim concluímos este artigo. Espero que você tenha aprendido algo útil que lhe permita tornar-se um desenvolvedor freelancer mais bem sucedido. Se você tiver algo a acrescentar, sinta-se à vontade para deixar qualquer comentário.

Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/9995

Modelo de regressão universal para previsão de preços do mercado (Parte 2): funções de processos transitórios naturais, sociais e de origem tecnológica Modelo de regressão universal para previsão de preços do mercado (Parte 2): funções de processos transitórios naturais, sociais e de origem tecnológica
Este artigo é uma continuação lógica do anterior e é escrito para destacar suas conclusões ao longo da década seguinte à sua publicação, no que diz respeito às três funções de processos dinâmicos transitórios que descrevem os padrões de mudança de preços de mercado.
Indicadores múltiplos em um gráfico (Parte 01): Entendendo os conceitos Indicadores múltiplos em um gráfico (Parte 01): Entendendo os conceitos
Entenda como é possível adicionar vários indicadores ao mesmo tempo sem ocupar muda área do seu gráfico. Muita gente gosta e se sente mais segura operando quando observa diversos indicadores ao mesmo tempo, por exemplo RSI, ESTOCÁSTICO, MACD, ADX entre outros, e em alguns casos até mesmo ativos distintos que compõem um determinado índice.
Indicadores múltiplos em um gráfico (Parte 02): Primeiros experimentos Indicadores múltiplos em um gráfico (Parte 02): Primeiros experimentos
No artigo anterior, múltiplos indicadores em um gráfico , apresentei os conceitos e bases para você usar múltiplos indicadores em um gráfico. Aqui irei apresentar e dissecar o código fonte.
Gráficos na biblioteca DoEasy (Parte 89): programando objetos gráficos padrão Funcionalidade básica Gráficos na biblioteca DoEasy (Parte 89): programando objetos gráficos padrão Funcionalidade básica
Agora nossa biblioteca pode rastrear a remoção, modificação de parâmetros e o surgimento de objetos gráficos padrão no gráfico do terminal do cliente. Mas para ter um "jogo" completo, certamente nos falta a capacidade de criar objetos gráficos padrão a partir de nossos programas.