De Node.js a pagar sus impuestos como autónomo: entrevista con un desarrollador exitoso

Publicado: 2022-03-11

En Toptal, siempre estamos buscando a los mejores freelancers. Pero, ¿qué hace que un freelancer sea realmente genial? Luis Martinho, uno de nuestros mejores desarrolladores, es querido por sus clientes, así que nos sentamos con él para hablar sobre el trabajo independiente, tecnologías como Node.js y HTML5, y el pago de impuestos.

Entonces, para empezar, ¿cómo llegaste al trabajo independiente? ¿Ha trabajado alguna vez en un trabajo de tiempo completo?

“Había trabajado en un par de trabajos de tiempo completo: algunos de ellos eran relativamente corporativos, pero el más reciente fue en un entorno de inicio, específicamente en el espacio SaaS empresarial, construyendo software de administración sexy en la nube. Teníamos un equipo muy talentoso y una visión muy ambiciosa. Después de cuatro años de crecimiento, teníamos un producto emocionante en un espacio emocionante, lo cual fue genial, pero no estaba muy feliz. Necesitaba un cambio de estilo de vida. Cuando empezamos, personalmente no entendía lo difícil que era “poner en marcha”. No son solo las horas, porque trabajas muchas horas en todo tipo de entornos y proyectos; es el estrés, la responsabilidad y los dolores asociados con la creación de algo nuevo. No todo son flores y arcoíris. Al final, decidí que no tenía madera de cofundador (al menos, no en ese momento). Pero la experiencia me dio una comprensión mucho más profunda del tipo de presión que enfrentan los fundadores de nuevas empresas, y sé que me he convertido en un mejor desarrollador de software independiente debido a eso.

Ser autónomo se parecía cada vez más a la vida que quería: presentaba la oportunidad de encontrar clientes y proyectos interesantes mientras se me recompensaba por un trabajo de calidad.

Empecé a buscar trabajos regulares: primero en mi ciudad natal, luego en el resto del país, luego en el resto de Europa. Logré encontrar algunos proyectos interesantes, algunos paquetes de compensación interesantes y algunos lugares interesantes; pero creía que podía tenerlo todo. Entonces comencé a buscar trabajo independiente. Y a medida que seguí buscando, el trabajo independiente se parecía cada vez más a la vida que quería: presentaba una oportunidad para encontrar clientes y proyectos interesantes mientras se me recompensaba por un trabajo de calidad”.

¿Cuál fue el desafío más difícil que surgió durante su transición al trabajo de desarrollo independiente?

“Originalmente, imaginé que un gran cambio sería la estabilidad de ingresos que esperas de un trabajo de tiempo completo, donde tienes una cierta cantidad de dinero que siempre obtienes a fin de mes, y lo obtienes, pase lo que pase. Esperaba que eso fuera una gran preocupación ya que sabía que ser freelancer significaba que no siempre tendría clientes. Pero eso no es realmente lo que sucedió; sorprendentemente, en Toptal he logrado tener siempre un flujo constante de clientes sin tener que buscarlos. Entonces, para ser honesto, el principal desafío realmente ha sido organizar mi agenda. Realmente no tengo ningún horario fijo para trabajar. Básicamente, hago mi propio horario, por lo que tengo que ser más disciplinado que antes. Intento trabajar en horarios más o menos estándar: me levanto por la mañana, empiezo a trabajar, almuerzo a la hora en que almuerzan los demás, trabajo por la tarde y luego ceno. Trato de trabajar en un horario normal, no pasar toda la noche, quemando el aceite de medianoche todos los días. Esta disciplina fue un gran desafío al principio”.

Pero la mayoría de la gente ve las horas libres como un beneficio de la ingeniería de software independiente. ¿Cuál es tu opinión sobre eso?

Descubrí que vale la pena ser disciplinado porque termino siendo mucho más productivo si tengo un conjunto de rutinas.

“Ciertamente, es un beneficio. Es genial en el sentido de que si te encuentras con algún problema, si tienes que ayudar a alguien de tu familia, o si tienes esta gran oportunidad para algún tipo de actividad de ocio, puedes ir tras ella y disfrutar de esa oportunidad. Pero, por otro lado, descubrí que vale la pena ser disciplinado porque termino siendo mucho más productivo si tengo un conjunto de rutinas, porque esas rutinas básicamente me guían: puedo ir al grano y hacer más. durante ese tiempo. Es bueno tener esa libertad, pero creo que hay que usarla con responsabilidad”.

Los desarrolladores de software independientes disfrutan del beneficio de horarios flexibles y una estructura de pago diferente.

Tus clientes te aman. ¿Cuál es tu secreto?

“Como desarrollador de software freelance, probablemente sea un buen rasgo ser un poco perezoso en términos de buscar la forma más fácil y económica de hacer algo; estar extremadamente molesto por hacer un trabajo repetitivo y, por lo tanto, mejorar continuamente su cadena de herramientas. Por ejemplo, pasas mucho tiempo en una terminal: deberías considerar seriamente crear accesos directos, alias, lo que sea que te ahorre tiempo y te ahorre escribir. Al final, muchas de las tareas que haces no son realmente ciencia espacial; solo están pasando por un par de bucles para hacer algo. Si optimiza esas cosas y elimina el trabajo repetitivo, tiene más tiempo disponible para hacer la ciencia espacial real.

Si elimina el trabajo repetitivo, tiene más tiempo disponible para hacer la ciencia espacial real.

También debe tener a otra persona que se encargue del pago por hora y la facturación, obtener dinero de los clientes e incluso obtener nuevos clientes para que pueda concentrarse en hacer un gran trabajo. Y eso es absolutamente importante. Cuando eres un desarrollador de software independiente, estás trabajando en la entrega, pero también en marketing y ventas. Y lo que quiere hacer, y lo que sus clientes quieren que haga, es dedicar tanto tiempo a la entrega como poco tiempo a marketing, ventas e incluso finanzas. Siempre tendrás que dedicar tiempo a buscar nuevos clientes independientes de desarrollo cuando trabajes para los antiguos, y eso no es algo que los antiguos quieran, y no es algo que tú quieras. Solo quieres concentrarte en hacer bien tu trabajo. Por lo tanto, tener a otra persona que se encargue de la facturación y la búsqueda de nuevos clientes es algo por lo que debería estar muy contento, y tendrá mucha suerte si lo encuentra.

Además, no te olvides: paga tus impuestos como autónomo”.

¿Cómo te mantienes motivado a diario?

Sienten que estás conectado con ellos de una manera que no solo estás enviando horas facturables.

“Lo que juega un papel muy importante en mi motivación es la calidad de los clientes. Si es posible, trato de ser un poco exigente. Es decir, trato de aceptar trabajos que me motiven en términos del desafío tecnológico que implica, ya sea resolver un problema difícil o trabajar en un espacio interesante. Y de alguna manera se sigue de eso. Siempre trabajo con un cliente pensando que estoy trabajando hacia un objetivo común: trato de ver el panorama general y verme a mí mismo como parte del equipo. Nunca eres realmente parte del equipo de desarrollo de software interno o en el sitio de manera emocional, especialmente cuando estás fuera de la oficina, pero aún puedes sentirte parte del equipo en términos del proyecto general y la calidad de la obra. Y creo que las personas del otro lado (el cliente y el equipo del cliente) sienten que están conectados con ellos de una manera que no solo les envía horas de desarrollo facturables, sino que realmente les preocupa si tendrán éxito o si la calidad del trabajo es lo suficientemente buena”.

¿Qué buscas en un potencial cliente freelance de software o desarrollo web?

Este desarrollador web independiente está considerando sus muchas opciones de clientes.

“En general, prefiero las tecnologías más recientes que las más antiguas, y también cosas emergentes; no diría necesariamente emergentes porque algunas de estas cosas son actuales, pero prefiero trabajar con alguien que cree aplicaciones de una sola página y use Backbone.js y Node.js con Express o algún marco MVC que alguien que estaría usando el estilo Java Enterprise Edition.

Soy independiente, preferiría tener un cliente que tenga alguna solución de comunicación asíncrona en el lugar. Si está teletrabajando, es mucho más fácil ingresar a un equipo que usa algo tan simple como una lista de correo o tiene salas de chat en Campfire o usa GitHub como una herramienta de colaboración (esta última funciona muy bien). En conjunto, si el cliente no está captando la charla del enfriador de agua de alguna manera, corre el riesgo de perder mucha información y conversaciones que pueden afectar su trabajo”.

Ese es un punto interesante. ¿Algún otro consejo para el teletrabajo?

Es más difícil recordar al tipo que nunca está en el edificio.

“Tienes que encontrar una manera de compensar el hecho de estar fuera de la oficina. La solución que he encontrado es ser proactivo. Por ejemplo: analice los registros de confirmación. Cuando trabaja a distancia, debe reservar algo de tiempo para echar un vistazo y tener una idea de en qué están trabajando otras personas. Si está al tanto de lo que sucede en las reuniones diarias, notificado a través de alguna solución de administración de proyectos, es una buena práctica tratar de encontrar pistas sobre en qué está trabajando el equipo. Entonces, te integras más fácilmente. Obviamente, eso es un esfuerzo adicional de su parte: es posible que pueda evitarlo si tienen un proceso de comunicación realmente bueno, pero puede ser un buen consejo y puede evitar algunos problemas. Es más difícil recordar al tipo de desarrollo independiente que nunca está en el edificio”.

Convertirse en un desarrollador de software independiente comienza con la comunicación.

¿Cuál es la cualidad más importante de un freelancer?

“Tienes que ser alguien que pueda mantener un equilibrio fluido entre tu vida personal y tu trabajo. Como freelancer, es importante ser receptivo. Pero ser receptivo termina teniendo un gran impacto en su vida personal. No tiene que estar revisando su correo electrónico todo el tiempo: puede recibir una notificación, filtrar si es importante o no, y luego puede volver a disfrutar el tiempo con su familia o lo que sea. Tienes que ser un buen cambiador de contexto. El cambio de contexto suele ser costoso, pero es necesario que sea económico y rápido, de modo que pueda tener un nivel de servicio muy alto al ser muy receptivo a las emergencias y, al mismo tiempo, disfrutar de la compañía de amigos y familiares.

Tienes que ser un buen cambiador de contexto. El cambio de contexto suele ser costoso, pero es necesario que sea económico y rápido.

Para el acuerdo habitual de desarrollo independiente, debe saber cómo administrar sus finanzas de manera conservadora. Sorprendentemente, esto no ha sucedido realmente con Toptal, pero por lo general es muy fácil pasar de un festín a una hambruna cuando se trata de pago de software o desarrollador web, incluso por hora. Un mes, ganas un montón de dinero y de repente no tienes clientes y no tienes más trabajo. Por lo tanto, debe ser disciplinado: necesita una idea del salario promedio y necesita gastar esa cantidad; todo el exceso debe ser una especie de colchón que te ayude a navegar a través de las incertidumbres de hacer este tipo de trabajo. Esto realmente no es tan cierto para Toptal porque el flujo de clientes ha sido muy constante, pero sigue siendo una buena práctica”.

Como trabajador independiente, asume un montón de diferentes proyectos de desarrollo de software a lo largo de su carrera. Entonces, ¿qué haces la primera vez que tienes acceso a una nueva base de código? Digamos que son mil millones de líneas de código.

“Trataría de ser disciplinado al adoptar un enfoque de arriba hacia abajo. Esto significa tener una idea de la estructura general de la base de código. Eso parece un poco obvio, pero a medida que comienzas a tratar de comprender el código, te verás impulsado a saber en qué estás trabajando en ese momento específico y la tarea específica que tienes entre manos. Eso cambiará su enfoque del enfoque de arriba hacia abajo y lo pondrá en la parte inferior tratando de subir, ensamblando las piezas de las partes específicas del código que está viendo. Eso podría ser mejor a corto plazo para corregir ese error específico o agregar esa funcionalidad específica, pero a mediano plazo, deseará haber mantenido el enfoque de arriba hacia abajo. Entonces, tendrá una vista mucho mejor del sistema y de cómo interactúan las piezas”.

Ser un desarrollador independiente significa adoptar un enfoque de arriba hacia abajo para nuevas bases de código para comenzar de manera efectiva.

Has hecho mucho trabajo de front-end y back-end. ¿Crees que es importante para los desarrolladores independientes de hoy tener ambos conjuntos de habilidades?

"No. Seré muy honesto: creo que puedes ganar mucho con la especialización, como si fueras ridículamente bueno con un conjunto ridículamente pequeño de tecnologías; pero es sólo una elección personal. Tengo curiosidad, así que trabajo con muchas tecnologías diferentes. Y es por eso que termino haciendo trabajo freelance tanto de front-end como de back-end.

Las tecnologías cambiarán: lo que está de moda hoy probablemente será aburrido mañana o al menos en 6 a 12 meses.

Habiendo dicho eso, creo que es crucial para un desarrollador, a lo largo de su vida profesional, tratar de aprender tantas tecnologías y paradigmas como sea posible. Las tecnologías cambiarán, lo que está de moda hoy será aburrido probablemente mañana o al menos en 6 a 12 meses, y una de las habilidades clave para un desarrollador de software independiente es aprender rápidamente una nueva tecnología o un nuevo proyecto. Para eso, realmente ayuda si tiene un enfoque sistemático para aprender cosas nuevas y lo practica aprendiendo al menos un nuevo lenguaje, marco o paradigma cada año”.

Ha realizado un montón de trabajo independiente con Rails, Django y, más recientemente, Node.js. ¿Cómo han diferido sus experiencias entre los tres?

“Uh oh, vamos a entrar en una guerra religiosa aquí. Diría que Node es bastante diferente a los otros dos. Cuando se expone por primera vez a los ejemplos de Node.js, es posible que tenga problemas para acceder al paradigma basado en eventos. Es algo que podría no ser 100% natural para alguien que ha estado trabajando en Rails todo el tiempo. Por otro lado, si está trabajando con JavaScript, probablemente esté desarrollando para el navegador, por lo que ya está familiarizado con el paradigma basado en eventos. Personalmente, en mi experiencia independiente con Node, he estado usando un marco MVC, por lo que no he desarrollado tecnología central para Node; Acabo de ser un usuario estándar de un marco propietario específico del cliente (comparable a Express)".

¿Cuáles son sus herramientas favoritas que muy pocos desarrolladores están usando?

Los autónomos de Node.js tienen que pensar de forma diferente a los autónomos de Rails.

“En lo más alto de mi cabeza, WebStorm de JetBrains. Es un IDE de JavaScript que realmente vale la pena buscar. El nuevo estudio de Android lanzado en Google I/O funciona con el software JetBrains, no con Eclipse ni nada por el estilo. Me gusta Eclipse, pero me divierto mucho con WebStorm. Todavía estoy aprendiendo muchos atajos, y esa es una práctica que un buen desarrollador de software independiente también debería tener: aprender más sobre sus herramientas. Todavía estoy aprendiendo más sobre mi IDE. WebStorm tiene muchos atajos inteligentes, un buen diseño estándar y también tiene algunas buenas propiedades de ZenCoding que le permiten escribir HTML más rápido que nunca. Considerándolo todo, es una buena herramienta.”

Si un cliente freelance quisiera que hicieras un proyecto con Rust o Go, o algún lenguaje nuevo con el que nunca has trabajado, ¿qué le dirías?

No importa lo bueno que sea, siempre habrá tiempo de configuración y eso puede ser costoso para el cliente.

“Por lo general, trato de tener mi primer contacto con los idiomas fuera del trabajo del cliente, no en el tiempo del cliente; no importa lo bueno que sea, siempre habrá tiempo de preparación y eso puede ser costoso para el cliente. Dicho esto, si el cliente me dijera: "Está bien, estamos cómodos incluso si no sabes nada al respecto", lo vería como una gran oportunidad para aprender algo nuevo. Por otro lado, si el cliente tenía un horario exigente, le aconsejaría que contratara a otra persona o que usara un idioma con el que me sintiera cómodo para saber que podía ser productivo desde el principio”.

¿Cuál es el mayor desafío técnico que ha tenido que resolver mientras trabajaba como autónomo?

“Me viene a la mente un proyecto HTML5 freelance. Profundizar en la API Canvas de HTML5 para realizar algunas funciones avanzadas de edición de gráficos, como seleccionar lazo y seleccionar de forma libre, donde se recorta una parte de la imagen pero se omite el resto, cálculos con conjuntos de píxeles, cosas por el estilo. Esto era algo así como MS Paint usando HTML5 Canvas e implementando cosas como un pincel: pensarías que un pincel sería algo simple, lo es si solo dibujas una línea, pero en este caso quieres imitar un trazo de pincel, así que Tuve que usar una fórmula matemática para simular cómo un pincel entraría en contacto con el lienzo y dejaría un borrón con la tinta”.

Los freelancers de HTML5 pueden encontrar que esta nueva tecnología requiere algo de tiempo para acostumbrarse.

¿Tu nueva tecnología favorita con la que has trabajado últimamente?

“Lo que he estado escuchando acerca de Meteor es interesante en términos de cómo ofrecen un marco completo de cabeza y hombros para desarrollar una aplicación de una sola página. Maneja tanto el back-end como el front-end. No he trabajado con él, pero tengo curiosidad y estoy ansioso por probarlo”.