Cosas que me hubiese gustado saber cuando empecé a programar, Parte 6

Sí, más Cosas que me hubiese gustado saber cuando empecé a programar, 6ta edición.

Puedes encontrar el primer artículo de la serie aquí.

Y el artículo anterior aquí

No trates de predecir el futuro

Somos malísimos prediciendo el futuro.

Cada vez que tomas una decisión arquitectónica/de diseño, cierras opciones en tu diseño y limitas las opciones de cambio de tu programa. Diseñar es balancear las necesidades actuales (requerimientos) con posibles cambio futuros.

Tu objetivo principal es satisfacer los requerimientos actuales y dejar tantas opciones abiertas como sea posible para acomodar cambios futuros. Si tienes una corazonada de que en el futuro recibirás un pedido para la funcionalidad X y diseñas para acomodar eso, pueden pasar dos cosas:

1- El pedido llega, ¡y hurra! puedes incluirlo fácilmente.

2- El pedido nunca llegó, y terminas con un diseño mediocre que no se relaciona con tus requerimientos actuales.

Como es más probable que pase lo segundo, evitas cometer el error de novato de diseñar para cosas de las que no estás seguro que vendrán después.

El diseño se trata de balancear dos cosas: satisfacer los requerimientos actuales y dejar abiertas tantas opciones como sea posible. Quieres mantener flexibilidad, y diseñar basado en corazonadas impone restricciones innecesarias en tu programa.

Así que ve por diseños que sean fáciles de extender y no construyas hacia una funcionalidad que tal vez nunca llegue.

Comunícate con los usuarios de tu software

En un artículo anterior de esta serie, hablamos sobre nuestro rol como desarrolladores de software. Nuestro trabajo, por encima de escribir código, es resolver problemas y proporcionar soluciones.

El prerequisito más importante para poder proveer valor es saber qué necesitan nuestros usuarios. La comunicación con los usuarios finales es importante porque como creadores del software, tendemos a tener ideas sesgadas sobre los productos que hacemos.

Hay muchas funcionalidades y aspectos de usabilidad que son obvios para nosotros, pero no para los usuarios. Cosas que para nosotros parecen claras e intuitivas pueden ser difíciles para personas que… bueno, que no crearon el producto. Comunicarse con usuarios y entender qué aman y qué odian de nuestros productos es una parte importante de crear la solución correcta.

Es cierto que no tenemos tantas oportunidades de hacer esto, pero si hay una situación donde puedes hablar con un usuario, hazlo. Si no es posible en absoluto, hazte mejor amigo de tu product owner y obtén feedback regular.

Recuerda que hay pocas cosas tan tristes como construir un gran producto que resuelve el problema equivocado.

No seas un tecnomártir

La carrera es importante, pero también lo es tu vida privada.

Sé que esto tal vez no se aplique a ti, pero nuestra profesión está llena de gente que trabaja toneladas de horas extra. Descuidar familia, amigos y vida personal para entregar esa funcionalidad extra es bastante común entre desarrolladores de software.

Sé que tal vez necesites quedarte en la oficina por un par de horas extra en ocasiones especiales, le pasa a todo el mundo. Pero el descuido continuo de otros aspectos de tu vida es imposible de sostener a largo plazo.

Somos seres humanos, y la necesidad de cultivar relaciones y hobbies es una parte integral de quiénes somos. Tener una red de relaciones saludables a nuestro alrededor no solo nos hace más felices, sino que también nos ayuda a producir trabajo de mejor calidad. Una persona feliz y bien descansada con otros intereses tiende a desempeñarse mejor a la larga.

No es como si los sacrificios extremos te vayan a convertir en un empleado estrella para siempre. Tarde o temprano te vas a quemar y tus relaciones se van a deteriorar, algo que ultimadamente impactará tu productividad si es lo único que importa.

Así que dedica tiempo a nutrir lo que importa. Tu trabajo seguirá ahí después, y probablemente cambiarás de trabajo varias veces en las siguientes décadas. Apuesta por crecimiento sostenible y nutre todos los aspectos de tu vida.

Ah pero yo también sabía todas estas cosas.

Está bien, tal vez en el próximo artículo encuentres algo que aún no sabías.

Gracias por leer, espero que hayas aprendido una o dos cosas nuevas o al menos hayas conseguido algo nuevo en qué pensar.

Qué hacer a continuación:

  • Comparte este artículo con amigos y colegas. Gracias por ayudarme a llegar a personas que podrían encontrar útil esta información.
  • Lee el siguiente artículo de la serie.
  • Envíame un email con preguntas, comentarios o sugerencias (está en la página Autor)

Juan Luis Orozco Villalobos

¡Hola! Soy Juan, ingeniero de software y consultor en Budapest. Me especializo en computación en la nube e IA, y me encanta ayudar a otros a aprender sobre tecnología e ingeniería