En serio todavia haces desarrollo de software

La cara de un viejo compañero de trabajo se confundía entre la decepción y el asombro.

Después de varios años de no vernos, mi amigo se quedó sorprendido cuando le dije que aún desarrollaba software. Le conté que a pesar de que mi rol principal era el de arquitecto de software, aún dedicaba entre 10 y 20 horas a la semana a escribir código. En primer lugar, porque mi trabajo me lo permite y me gusta. En segundo lugar, porque considero firmemente que un buen arquitecto debe involucrarse con el código.

A esto mi amigo replica: “Uy no, gracias a Dios yo ya no programo. Yo soy coordinador de proyectos de tecnología”.

Increíble. En ese momento, sentí un déjà vu.

Caí en cuenta que no solo era él. Recordé como muchos otros conocidos del medio habían hecho comentarios similares. Es como si desarrollar software fuera una labor inferior de la que tienes que salirte rápidamente. Pareciera que en nuestra educación estuviera implícita la idea de que la escalera corporativa del profesional en tecnología implicaba hacer una rápida transición hacia otra áreas.

¿Significa esto entonces que los que nos dedicamos al desarrollo de software estamos condenados a una vida profesional de insatisfacción? Y entonces,  ¿el único camino es cambiar a otras especialidades del sector?

Yo creo que no.

Pienso que es posible tener una carrera exitosa siendo desarrollador.

Este artículo pretende ser una guía para aquellos que aman desarrollar, quieren seguirlo haciendo, y sienten la presión social de cambiar.

El desarrollo de software está más cerca de ser un arte

Desarrollo de software como arte

No, crear software no es cómo pegar ladrillos o hacer un puente. No es como juntar un grupo de personas en una maquila y ponerlos a fabricar cientos de telas. Esta comparación no solo ha fijado ideas erróneas sobre la industria. También ha desfigurado la idea de lo que implicar programar. Y esto no solo lo digo yo, el maestro Martin Fowler explica muy bien porque la ingeniería de software no se compara con la ingeniería civil.

En resumen, ¿por qué no es como hacer un puente? Porque cada aplicación obedece a sistemas, entornos y requerimientos diferentes. No es lo mismo hacer una aplicación empresarial para un banco, un juego móvil o un software que toma mediciones de un caudal de agua. Por ende, las tareas realizadas en un proyecto no necesariamente se hacen igual en el siguiente.

Muchas veces la labor del desarrollador se considera más cercana a algo artesanal que a un trabajo de ingeniería. La razón es que muchos retos en el día a día requieren de creatividad y recursividad, más que copiar y pegar código.

Y si en algún momento tú te encuentras haciendo tareas repetitivas por un largo periodo de tiempo, seguro te estás perdiendo de un concepto importante: automatización. Reconozco que no siempre es más fácil alcanzarla. Pero si logras escribir software que te ayude con las actividades rutinarias de tu trabajo, así no sea perfecto, vas a poder dedicar más tiempo a las tareas interesantes del proyecto. Esas tareas las que requieren de las habilidades que para una máquina es muy difícil simular.

Todo lo anterior implica que programar está muy lejos de ser algo aburrido y repetitivo.

El desarrollador de 60 años de edad

Hace un par de años tuve la oportunidad de trabajar con un desarrollador estadounidense. Estábamos construyendo unas mejoras para una aplicación empresarial. Digamos que el nombre de esta persona era Frank. No era la primera vez que trabajaba con un norteamericano, pero si la primera vez que trabajaba con un ingeniero de esa edad.

Frank era una persona brillante, con una claridad mental e ideas de esas que solo da la experiencia. A pesar de que no dominaba las mismas tecnologías que yo, su larga trayectoria en la industria le permitía trabajar de muy buena forma en el proyecto.

Más de una vez me pregunté, ¿por qué no es común encontrar personas como Frank en Latinoamérica?

La primera razón es que nuestra industria de software no es tan antigua como la estadounidense. Ellos empezaron a escribir software antes que nosotros.

Pero yendo un poco más allá de eso, tampoco es fácil encontrar personas con más de 40 años programando en nuestro medio. Esto plantea un reto importante: ¿qué hacer con esos proyectos grandes y complejos donde se requiere la pericia de uno o más desarrolladores senior que puedan sacarlo adelante? Me refiero a ese tipo de proyectos que van más allá de buscar en Stack Overflow. Ese tipo de proyectos que requieren considerar seriamente aspectos como la escalabilidad, la seguridad y la mantenibilidad de un sistema.

Pero volviendo a Frank, él era un tipo realizado profesionalmente. Llevaba más de 25 años programando, y aunque tuvo la posibilidad de pasar a ser gerente de proyectos o ejecutivo comercial, su decisión consciente fue seguir desarrollando. Era lo que más disfrutaba hacer, y quería seguirlo haciendo.

A muchos nos cuesta encontrar ese algo que realmente nos apasiona. ¿Es realmente necesario cambiarlo porque un “exitoso” project manager lo dice, o porque alguien pensó que ese era el siguiente paso lógico? I don’t think so.

La tecnología cambia todo el tiempo

Pero entonces, ¿te vas a quedar estancando y vas a dejar de aprender si sigues desarrollando.

¡Jamás!

Eso no va a pasar si emprendes un camino de aprendizaje permanente.

Mis primeros pasos en la programación fueron con Java; específicamente Java 1.4.2. Un par de años después, surge Java 5.0 con muchas y nuevas funcionalidades. Estas incluían anotaciones, parámetros variables, genéricos y enumeraciones. Me sentía aprendiendo un lenguaje nuevo. Sentía que todo había cambiado en tan solo un par de años. Sentía que tenía que renovar todo lo que había aprendido.

Había una moraleja importante en esa pequeña historia. Tenía que seguir educándome. Lo que había aprendido hasta ese momento me había permitido crecer. Pero si quería seguir siendo un programador relevante, tenía que entender que había que seguir aprendiendo. Tenía que entender que el aprendizaje continúo me iba a permitir seguir avanzando.

Esta habilidad es crucial para tu crecimiento  si no quieres quedarte estancado. Así le pasó a un profesor de matemáticas que nunca pudo entender como funcionaba la programación orientada a objetos. O como le ocurrió a una gran jefa que tuve, que se quedó encasillada en la experiencia y el conocimiento que había construido trabajando con COBOL, pero a la que le costaba asimilar que la tecnología había cambiado.

Desarrollar te lleva a reinventarte constantemente y seguir buscando nuevos retos.

¿En serio todavía desarrollas?

La respuesta es SÍ, con orgullo y satisfacción.

La respuesta es SÍ porque el software sigue cambiando el mundo. Un SÍ rotundo porque gente que hace lo mismo que tú ha hecho posible enviar cohetes al espacio. Un SÍ con orgullo porque el software permite comunicar personas que están muy lejos, e incluso brinda esperanza a una persona con Parkinson.

Y si por cosas de la vida, ya no programas en tu trabajo diurno, házlo de vez en cuando solo por la pasión de explorar ideas interesantes o hacer algún prototipo. Te pongo como ejemplo a mi amigo Jonathan, quién creó una plataforma para lanzar aviones de papel usando Arduino y Alexa. No era su trabajo hacer el proyecto. Sin embargo, su pasión por la tecnología y el crear cosas nuevas fueron motivación suficiente.

Y para todos nuestros colegas que no desarrollan, los invito a que no degraden esta labor, que muchas veces se siente ingrata y poco valorada. Todos los roles en un proyecto de tecnología son importantes, desde analistas, arquitectos, líderes técnicos, gerentes de proyecto, pasando por testers y personal de soporte técnico. Creo que muchas veces la mala reputación de la programación nace en nuestros propios colegas.

Espero haberte mostrado que existe un camino profesional en que se puede ser desarrollador por largo tiempo, y tener una carrera fructífera.

¿Y tú qué opinas? ¿Te ha pasado algo similar? ¿Cuál ha sido tu experiencia?

Manuel Zapata.

Si quieres que te avise cuando publique artículos parecidos a este, te invito a que te suscribas a mi lista de correo.
¿En serio todavía desarrollas?

Emprendedor, fundador y arquitecto de software. Ha enseñado distintas tecnologías a profesionales en varias partes del mundo. Ingeniero y geek apasionado por el trabajo remoto.