English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Cómo ser un mejor programador (parte 07): Apuntes para convertirse en un desarrollador freelance exitoso

Cómo ser un mejor programador (parte 07): Apuntes para convertirse en un desarrollador freelance exitoso

MetaTrader 5Ejemplos | 12 noviembre 2021, 14:52
1 492 0
Omega J Msigwa
Omega J Msigwa

Introducción

Freelance es una de las áreas que merece la pena discutir en MQL5, ya que a muchos desarrolladores les gustaría ganar dinero con su habilidad para codificar, mientras que a otros también les atrae el desafío y la propia experiencia. Estas son las opiniones que me he formado a partir de mi propia experiencia y la de otras personas, tanto en el éxito como en el fracaso, a la hora de trabajar como freelance. Con la ayuda de estas experiencias, el presente artículo tiene como objetivo ayudar a mejorar al lector en su camino para convertirse en mejor programador en el mundo freelance. Así, este artículo le mostrará lo que funcionó y no funcionó para mí y otros desarrolladores, de forma que pueda darle ideas en su propio viaje como programador.

conviértase en un freelancer exitoso en MQL5

 

"No se esfuerce a medias a menos que no esté dispuesto a obtener la mitad de los resultados"

Tabla de contenidos

  1.  No solicite un trabajo que no conozca
  2.  Investigue
  3.  Evite cargar demasiado trabajo sobre su cliente
  4.  Cíñase a MQL5.com
  5.  Evite parecer demasiado técnico ante sus clientes
  6.  Sea honesto consigo mismo y con sus clientes
  7.  Comience con un código limpio
  8.  No solo es usted un codificador, sino también un solucionador de problemas
  9.  Tenga cuidado con los clientes que intentan ser más astutos que usted
  10.  Hágalo bien
  11.  Elija solo algunos encargos
  12.  Hágase su amigo

01: No solicite un trabajo que no conozca

No solicite un trabajo que no esté seguro de llevar a buen puerto solo porque el precio sea alto. Como todos queremos ganar dinero (y supongo que esa es la primera razón por la que ha decidido convertirse en desarrollador freelance), resulta sencillo convencernos de que resolveremos el asunto poco a poco y saldremos del atolladero mientras trabajamos. En mi experiencia, esta mentalidad no funciona para un freelance, especialmente con los clientes serios que saben exactamente lo que están buscando, así como para trabajos con plazos ajustados.

Verá, el dominio de la mayoría de las áreas de programación requiere mucho trabajo y esfuerzo, por lo que pensar que aprenderemos algo y seremos capaces de implementarlo de forma efectiva en algunas horas resulta repulsivo.

El segundo trabajo que realicé como freelance consistió en crear varios indicadores, convertir algunos de ellos de MQL4 a MQL5 y crear un asesor experto que los usara todos. El trabajo costaba solo 30 dólares, pero decidí aceptarlo. Honestamente, sabía que los indicadores que él quería iban a ser difíciles de crear para mí, sobre todo cuando me explicó la lógica completa y sus intenciones en la sección de discusión del trabajo, porque yo era un novato en el tema de los indicadores (lo soy hasta este día), ya que no los estudio, los codifico o los uso. Finalmente, acepté el trabajo, y terminé ejecutándolo en 81 días.

tiempo de ejecución de un trabajo largo en MQl5 freelance

Si calculamos cuánto me pagaron por día durante dicho periodo:

30 / 81  = 0.37 $

Gané 37 céntimos diarios por todo el trabajo. ¡Que perdida de tiempo! Sé que 81 días suena mucho tiempo, pero confía en mí cuando te digo que no lo harás todos los días. Hubo algunas semanas en las que no hice nada porque era duro y aburrido y no era algo que quisiera hacer. Tampoco quería recurrir al arbitraje porque cometí un error al aceptar el trabajo y solo quería terminarlo sin importar nada.

Si ve un trabajo sobre un tema determinado que ignora y sobre el que quiere aprender, tome nota y aprenda haciéndolo fuera del trabajo, entre sus rutinas de aprendizaje habituales. El mismo trabajo probablemente aparecerá en un futuro.


02: Investigue

Estoy totalmente de acuerdo con lo dicho por mi amigo Abdul Wahab, un desarrollador exitoso.

conversación de abdul wahab y omega


Es posible que comprenda de qué se trata el trabajo a simple vista, pero no podrá comprenderlo todo tan fácilmente. Por eso siempre es una buena idea investigar los requisitos de la tarea para cada trabajo que aspire a ejecutar. Esto podría ayudarlo a comprender al detalle el trabajo que pretende hacer; asimismo, estará equipado con la información adecuada para responder las preguntas que un cliente serio le hará a la hora de comprobar que usted es el candidato adecuado para ejecutar el trabajo.

Por ejemplo:

ejemplo de especificación de un trabajo


Antes de apresurarse a aceptar un trabajo de este tipo porque parece fácil y el precio es alto, realice una sencilla investigación para identificar estos dos importantes factores:

  1.  ¿Es posible para mí implementar lo que quiere un cliente, teniendo en cuenta mi experiencia con MQL5 o MQL4?
  2.  ¿Merece la pena (la experiencia y el dinero)?

Investigar no significa necesariamente buscar solo en Google. También implica realizar por su cuenta pruebas prácticas y aplicar el pensamiento crítico sobre el resultado.


03: Evite cargar demasiado trabajo sobre su cliente

Echemos un vistazo al post del foro que me encontré la semana pasada https://www.mql5.com/en/forum/371968

Todo empezó aquí:

desarrollador irresponsable en un ejemplo de freelance MQL5


Sería una locura que un médico intentara averiguar todo sobre una enfermedad y su cura preguntando a una persona que ignora el tratamiento. Lo mismo se puede decir de un desarrollador que quiere averiguar por qué el código no funciona como se espera preguntando a su cliente.

Me encanta la forma en que Fernando Carreiro respondió en el hilo, diciendo


Respuesta de Fernando Carreiro sobre un desarrollador irresponsable en Mql5 Freelance


Si un cliente puede investigar por su cuenta y descubrir qué va mal, entonces no hay necesidad de un desarrollador en primer lugar, si se encuentra con un problema que usted no puede resolver como desarrollador. Piense en lo difícil que puede ser eso para un cliente. De hecho, ¿qué puede hacer un cliente con una respuesta, si la conoce y se percata de que es un problema relacionado con la codificación?

Asuma la responsabilidad total por cualquier cosa que le ocurra al trabajo de su cliente, porque para eso está usted allí y es usted quien solicitó el trabajo, no el cliente.


04: Cíñase a MQL5.com

Sucede con frecuencia en Freelance que las personas publican trabajos fuera del marco de MQL5.com. Trabajos como convertir un pine-script, un sistema de EA de licencias web y muchos otros relacionados con ellos. No le recomiendo realizar ese tipo de trabajos a menos que sea un experto en esas áreas, y que eso sea lo que quiere hacer en MQL5 freelance.

Estos trabajos a menudo tienen menos o ninguna competencia, hasta el punto que podemos sentirnos tentados a profundizar en su temática para convertirnos en una de las pocas personas que aceptarán dichos trabajos la próxima vez.

No merece la pena aceptar estos trabajos, independientemente del precio que tengan.

Y esta es la razón

Como su ámbito se encuentra fuera del lenguaje de programación MQL5.com (MQL5, MQL4 y Python), le demandarán que aprenda algo nuevo. Como desarrollador web, tampoco le recomendaría aprender sobre todos los entornos de trabajo, bibliotecas, etcétera que podría encontrarse, porque son demasiados; eso por no mencionar que este tipo de trabajos son tan raros en la sección freelance que convierte en una mala idea aprender algo que usará con poca frecuencia.

Otra cosa es que, al final, estos trabajos no solo requieren escribir código, sino también realizar tareas adicionales. Por ejemplo:

Tomemos el ejemplo de la licencia de un asesor experto en un formulario de servidor web que hemos mencionado antes.

Si opta por una solución completa, necesitará un entorno de hosting en la nube para alojar una base de datos segura como PostgreSQL (tenga en cuenta que el hosting no es gratuito); deberá leer y escribir desde la base de datos, algo que puede requerir marcos de backend web adicionales como Flask, express o Node js... y muchos procesos intermedios dedicados a medidas de seguridad y efectividad.

En pocas palabras,

después de todas las implementaciones, es posible que aún no funcione en absoluto o de la forma en que usted desea que funcione en las plataformas MetaTrader.


05: Evite parecer demasiado técnico ante sus clientes

El 90% de los clientes de Freelance no sabe nada sobre códigos o sutilezas técnicas relacionadas con el trading y los sistemas comerciales automatizados. Por consiguiente, siempre deberá evitar sonar técnico al explicarles algo que ha hecho para ellos. Utilice un lenguaje amigable con el que ya estén familiarizados, explicando directamente lo que quieren y cómo los ayudará a conseguirlo.

Ejemplo de conversación desacertada con un cliente:

Ejemplo de conversación desacertada con un cliente de Mql5 freelance

(Esta conversación no es 100% real, he editado parte del texto en Photoshop)

Cuente y muestre a sus clientes lo que quieren oír y ver respectivamente, ni más ni menos. Esto los hará congraciarse con usted aún más, ya que, hablándoles en un idioma familiar, dará a entender que los comprende.

Ejemplo de conversación adecuada con un cliente.

conversación adecuada con un cliente

(Esta conversación tampoco es 100% real, la he editado en Photoshop)

Nunca hable a sus clientes como si fueran un compañero desarrollador o alguien a quien está intentando enseñar a codificar.


06: Sea honesto consigo mismo y con sus clientes

Esta es la parte más difícil para la mayoría de los desarrolladores. Cuando digo que debe ser honesto consigo mismo, me refiero a que debe ser honesto con los precios que pide al solicitar un determinado trabajo, y también con la cantidad de días que está dispuesto a dedicar a un determinado trabajo como freelance.

Resulta sencillo ganar la batalla pidiendo el precio más bajo y el plazo más corto posible. Pero esa es la mejor manera de reducir su valor, lo que inconscientemente lo llevará a trabajos menos valiosos y clientes que son sensibles al precio: todo lo que puedo decir es que ese tipo de trabajos no acaba bien la mayoría de las veces.

No recomiendo pedir precios más altos sin una buena razón (no me malinterprete). Pero creo que resultará positivo evaluar el trabajo y el tiempo que le ocupará. Si cree que el trabajo vale 100 dólares, que así sea. Creo que los desarrolladores de MQL5 pensaron en esto, por eso nos dieron a nosotros, los desarrolladores, la oportunidad de presentar una solicitud con el precio que creemos que vale el trabajo, aparte del precio del cliente.

Recuerdo que una vez solicité un trabajo para añadir redes neuronales a un asesor experto ya creado. El precio que el cliente estaba dispuesto a pagar era de 50 a 300 dólares. Solicité 250$ por 3 días. Más tarde fui rechazado por el cliente, y me di cuenta de que era honesto después de que me enviara un mensaje así:

"Lamento no poder trabajar contigo, busco el codificador con la mejor oferta, y ya lo he encontrado"

Tenía curiosidad por saber cuál era la oferta que había conquistado al cliente, así que le pregunté y me ofreció la siguiente respuesta:

"Pidió 40$, y me va a entregar el trabajo hoy".

La oferta me hizo sentir un programador incompetente. Sin embargo, cuál fue mi sorpresa cuando, una semana después, recibí una notificación en la sección de trabajos: el cliente estaba buscando otro desarrollador para completar el encargo. No estoy seguro de por qué el trabajo terminó en el arbitraje, pero algo salió mal.

No es una buena idea convierse en la opción más barata y rápida, solo para después ser contratado en trabajos más difíciles de los que se arrepentirá tarde o temprano.

Cuando digo que sea honesto con su cliente, me refiero a contarle de lo que es capaz y lo que debe esperar de usted, y preguntarle cuando no parezca entender lo que quiere que haga. Ser honesto le ayudará a ganarse la confianza de sus clientes, ya que les estará demostrando que es un desarrollador abierto en el que pueden confiar.


07: Comience con un código limpio

NO cree una muestra de software basura solo para demostrar a sus clientes que pueden contratarlo de inmediato. No codifique las cosas rápidamente solo para terminar el trabajo y pasar a otros. Esta costumbre hará que los clientes le eviten como la peste la próxima vez, en cuanto se den cuenta de que el producto que usted creó para ellos es una porquería.

No importa lo pequeño que pueda parecer un trabajo, hágalo siempre como si no tuviera la oportunidad de hacerlo de nuevo. Considere cuidadosamente las mejores implementaciones de código, escriba un código que se encargue de las excepciones en caso de que estas sucedan, y, lo más importante de todo, depúrelo.

Escriba un código limpio desde el principio hasta el final.

Asimismo, no se extravíe escribiendo código desaseado solo para mostrar un producto, pensando que ya lo pulirá más tarde. Este es un mal hábito que puede terminar en un producto de mala calidad, pues probablemente olvide pulirlo cuando llegue al final del trabajo.


08: No solo es usted un codificador, sino también un solucionador de problemas

Como desarrollador, usted tiene más experiencia que su cliente en muchos aspectos. No solo tiene que codificar el programa según las especificaciones de trabajo dadas, también debe ayudar a su cliente sugiriendo cuáles podrían ser las mejores formas de lograr los resultados deseables.

Por ejemplo, podría sugerir el uso del indicador ATR para establecer objetivos comerciales (Stoploss y TakeProfit) en lugar de objetivos genéricos. 

En algún momento, podría sentirse libre de avisar a su cliente cuando crea que están tomando una mala decisión y sugerir cosas mejores que probar para lograr el tipo de producto que deseado, por ejemplo, puede sugerirle que incluya reglas de gestión de dinero en su asesor experto cuando vea que no dispone de ellas.

Decirle a su cliente que su idea es estúpida supone la mejor manera de terminar en el Arbitraje, además de una forma segura de conseguir que cero (0) clientes trabajen con usted la próxima vez: evite hacer cosas semejantes.

Tenga cuidado con sus soluciones y opiniones. Asegúrese de que no se desvíen demasiado de lo que el cliente deseaba inicialmente, y cíñase a lo que ya quieren.

Asimismo, asegúrese de no garantizar que sus métodos lograrán operaciones rentables y generarán mayores rendimientos en un periodo corto. Siempre debe ceñirse a su papel de desarrollador y reconocer el punto de vista del tráder.


09: Tenga cuidado con los clientes que intentan ser más astutos que usted

Habrá ocasiones en las que se encontrará con clientes que parecen comprender su trabajo mejor que usted. Algunos de ellos pueden ser también desarrolladores o alguien que tenga un poco de conocimiento de codificación en otro idioma, o algo por el estilo.

Por algún extraño motivo, algunos de estos clientes querrán pasarse de listos diciéndole lo que debe hacer o lo que no debe hacer aparte de las especificaciones de trabajo. Por ejemplo, las funciones que debe codificar, las bibliotecas que debe usar, etc.

Como son sus clientes en el trabajo en particular, no deberá ignorarlos, tal vez tengan razón, pero asegúrese de que no lo disuadan de hacer lo correcto porque no podrá estar seguro de si saben lo que quieren que usted haga.

Imagine a un médico tratando de operar al paciente, y, tan pronto como comienza a lavarse las manos, el paciente estalla diciendo al médico " no es necesario que pierda el tiempo en esas minucias, limítese a operar, yo estaré bien". Creo que el médico es perfectamente consciente de las consecuencias de lo que está haciendo, por lo que es él quien debería tener la última palabra sobre lo que se supone que debe hacer.

Hay muchas cosas que codificar que no contribuyen directamente al comercio, pero hacen que nuestros programas sean fáciles y seguros de usar, por lo que un cliente con menos conocimientos puede indicarle que no los incluya en su programa.

Siempre que un cliente le diga que no haga algo o que lo haga al revés, explíquele el significado de lo que está haciendo y pregúntele por qué no debería hacerlo. Lo mismo ocurre cuando un cliente le dice que haga algo que no cree que sea necesario: si ambos no están de acuerdo con esa situación, advierta al cliente antes de hacer lo que él quiere.

10: Hágalo bien

Creo que esto es lo más importante de todo para cualquier programador que quiera convertirse en un freelance exitoso a largo plazo.

Si hace bien su trabajo, los clientes lo notarán y, naturalmente, conseguirá muchos más.

Esto no solo se deberá al buen currículum y a la calificación de desarrollador que se mostrarán en su perfil: los clientes también querrán trabajar con usted de nuevo y será más probable que lo recomienden a sus amigos, ya que nadie quiere correr el riesgo de entrar en Freelance y ponerse a buscar a ciegas a la persona adecuada para hacer su trabajo.

Tras prestar atención a todos los desarrolladores freelance exitosos, no he visto a nadie que no haga bien su trabajo.

Asegúrese de esforzarse al máximo en cualquier trabajo que tenga la oportunidad de hacer y se encontrará por delante de la mayoría de los desarrolladores que se centran solo en terminar el trabajo.

11: Elija solo algunos encargos

"Solo tiene que hacer algunas cosas bien en su vida, siempre y cuando no haga demasiadas cosas mal".
-- Warren Buffett

Solicitando/aceptando demasiados trabajos a la vez, reducirá su eficiencia en la entrega del trabajo y la comunicación con el cliente, y será más probable que renuncie a cualquier trabajo que parezca no irle bien o no cumpla sus expectativas, ya que tendrá demasiadas opciones.

El límite para solicitar trabajos en la sección Freelance es de 10 por 24 horas. Lo supe el primer día que probé como freelance, cuando solicité 10 trabajos con la expectativa de obtener al menos 8 de ellos. Como quería ganar dinero rápido esa semana, intenté trabajar como freelance. Finalmente, fui rechazado en todos ellos. Me contrataron los siguientes días, después de cambiar mi enfoque y solicitar un solo trabajo.

¿Qué salió mal?

Como solicité demasiados trabajos, no pude comprometerme con un cliente y convencerlo de que yo era la persona adecuada para el encargo, ya que tampoco tenía un currículum que me respaldara. El mismo texto técnico (muy extenso) que envié a todos los clientes para convencerlos, no funcionó.

Esto no se aplica solo a las solicitudes de trabajo, es aún más importante respecto a los trabajos para los que lo contratan. Lo mejor es aceptar algunos trabajos, e incluso uno cada vez. Termine un trabajo primero y luego pase a otro. Así logrará entregar productos de alta calidad, en lugar de una gran cantidad de encargos deficientes que ningún cliente desea.

Elegir unos pocos encargos no solo implica elegir algunos trabajos, también seleccionar cuidadosamente los tipos de trabajo a los que se va a dedicar.

En la mayoría de mis artículos, he hablado de la especialidad como programador, por lo que, en lo que respecta al mundo freelance, también deberemos elegir trabajos especializados en aquellas áreas en las que somos buenos y aún deseamos mejorar.

12: Hágase su amigo

No hay negocio exitoso sin clientes leales que compren sus productos o servicios con frecuencia.

Si quiere ser un freelance exitoso a largo plazo, deberá considerar construir relaciones amistosas con sus clientes y hacer que les resulte más fácil querer contratarte la próxima vez. 

Espero que pueda identificarse con esto en la vida real, donde la mayoría de las cosas que compramos, los servicios que usamos y los lugares a los que vamos son aquellos en los que confiamos. Es más probable que compre en la tienda de un amigo que en la de un extraño. 

Puede entablar amistad fácilmente con su cliente añadiéndolo a la lista de amigos disponible en su perfil de MQL5. También podrá hacerles saber que está disponible para ellos en cualquier momento.

Facilíteles la posibilidad de contratarlo creando su enlace de contratación preferido en este formato  https://www.mql5.com/es/job/new?prefered=yourusername


Conclusión

Eso es todo por hoy. Estoy seguro de que usted sacará del presente artículo algo positivo que le ayudará a convertirse en un freelance exitoso. Siéntase libre de comentar o añadir cualquier cosa que crea que falte en estos materiales.

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/9995

Gráficos en la biblioteca DoEasy (Parte 86): Colección de objetos gráficos - controlando la modificación de propiedades Gráficos en la biblioteca DoEasy (Parte 86): Colección de objetos gráficos - controlando la modificación de propiedades
En el presente artículo, analizaremos la modificación de los valores de las propiedades, así como la eliminación y el cambio de nombre de los objetos gráficos en la biblioteca.
Programamos una red neuronal profunda desde cero usando el lenguaje MQL Programamos una red neuronal profunda desde cero usando el lenguaje MQL
El objetivo de este artículo es enseñar al lector cómo crear una red neuronal profunda desde cero utilizando el lenguaje MQL4/5.
Use los canales y chats grupales de MQL5.community Use los canales y chats grupales de MQL5.community
En el sitio web MQL5.com podrá encontrar tráders de todo el mundo: estos publican artículos, códigos gratuitos y productos en el Mercado, ejecutan trabajos en freelance y codifican señales comerciales. Podrá relacionarse con ellos en el foro, los chats de tráders y los canales de MetaTrader.
Gráficos en la biblioteca DoEasy (Parte 85): Colección de objetos gráficos - añadiendo los objetos nuevamente creados Gráficos en la biblioteca DoEasy (Parte 85): Colección de objetos gráficos - añadiendo los objetos nuevamente creados
En este artículo, finalizaremos la creación de las clases herederas de la clase de objeto gráfico abstracto y comenzaremos a implementar el almacenamiento de estos objetos en la clase de colección. En concreto, crearemos la funcionalidad necesaria para añadir los objetos gráficos estándar recién creados a la clase de colección.