Autor en Google+
Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET, ASP.NET Core, MVC, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

11 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET, ASP.NET Core, MVC, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
jueves, 28 de diciembre de 2017
Aunque por aquellos tiempos ya llevaba bastante tiempo enganchado al desarrollo de software, fue en el año 1992 cuando empecé mi andadura profesional en este mundillo, y he de decir que estos más de veinticinco años han dado para mucho. Poco más o menos, creo que he pasado por todos los roles existentes en el mundo del software, en todas las modalidades laborales posibles: programador, analista, consultor, formador, coordinador de equipos de desarrollo, CTO, empleado, empresario, freelance

Aparte de muchas alegrías y algún que otro disgusto, lo que tengo claro es que esta trayectoria me ha dado una visión bastante amplia de cómo funciona el mundo del desarrollo de software y las personas que trabajamos en él.

Winner Como guardarme estos conocimientos me parecía demasiado egoísta, he decidido compartir con todos vosotros los que considero que son los diecisiete consejos definitivos que debéis seguir si queréis triunfar en el mundo del desarrollo de software.

Por lo que he ido aprendiendo estos años, seguir estas reglas os llevará a conservar indefinidamente vuestros empleos o clientes, aumentaréis vuestro valor en el mercado, mejoraréis salarios y vuestro grado de felicidad y satisfacción personal crecerá hasta límites insospechados.

He de decir que, antes de compartirlos con todos vosotros, varias personas ya los han seguido y sus vidas profesionales han mejorado considerablemente. Por ejemplo, Juan M. R. trabajaba como programador junior en una conocida cárnica hace 6 meses y hoy dirige el equipo técnico en una startup en San Francisco. También, Nacho G. L. pudo firmar hace poco el contrato fijo con el que soñaba, incluso con un aumento de sueldo. Rafael P. G. era un programador del montón y ahora es un reputado project manager por el que se pelean las mejores empresas del mundo.
“Sin los grandes consejos de José María,
mi vida como desarrollador seguiría siendo un infierno”
– Ricardo M. C., 2017
Podéis ser los próximos en dar el salto, sólo depende de vosotros.

Los 17 consejos definitivos que debes seguir si quieres triunfar en el mundo del desarrollo de software

1. Protege tu creación

El sofware que desarrollas es tuyo y así debes sentirlo y protegerlo: como a un hijo. Ofusca el código, introduce nombre de clases, métodos o variables imposibles de entender, y créalas en carpetas, archivos o lugares insospechados del proyecto. Asegura que nadie pueda tocar ese código salvo tú.

Si lo haces así, estarás ganando un trabajo de por vida, incluso mejor que aprobando unas oposiciones, que seguro que es lo que tu madre siempre quiso para tí. No lo dudes, haz feliz a tu madre.

2. Aparenta ser inteligente

La inteligencia es una virtud escasa, y las empresas luchan por tener cerca personas que destaquen en ese aspecto. Crea algoritmos semimágicos que nadie más pueda entender, utiliza abstracciones aunque no sean necesarias, copia código de otros más inteligentes que tú aunque no lo entiendas; pero ojo, sobre todo, nunca atribuyas el mérito a sus autores reales.

Ya lo dijo Julio César (¡el Romano, no el futbolista!): “además de serlo, hay que parecerlo”. Y en este caso, si no lo eres, al menos aprende a disimularlo.

3. Aparenta saberlo todo

Persona inteligente que lo sabe todo En la línea del punto anterior, el mundo del desarrollo de software está repleto de mediocres. Los reconocerás fácilmente al ser desarrolladores que usan continuamente Google y Stack Overflow porque son tan inútiles que no se saben de memoria el API completo de .NET o no recuerdan cómo se implementa algo tan trivial como el algoritmo de back propagation de una red neuronal.

Esto te da algunas ventajas porque podrás hacer creer con facilidad que lo sabes todo sólo con que domines un vocabulario básico, un par de palabras clave de moda y sepas emplearlos en los momentos adecuados.

4. No cedas ante intentos de revisar tu código

Normalmente son propiciados por personas que no han escrito una línea de código en su vida y sólo persiguen el objetivo de sacar fallos y avergonzarte, sin comprender el contexto o qué motivos han llevado a tenerlo así.

Porque nuestro código es como el papel higiénico usado: a todo el mundo le parecerá sucio si se lo enseñamos, pero seguro que ellos tampoco tienen una forma más limpia de conseguir el mismo resultado.

5. Usa los últimos frameworks (y si no los hay que te gusten, los inventas)

Súbete al carro de los hypes conforme vayan apareciendo, y procura utilizar siempre lo último. Mejorará tu imagen profesional y creará en la empresa una dispersión tecnológica que te hará imprescindible. O si tienes una empresa, estarás consiguiendo clientes cautivos que no podrán sustituirte por otro proveedor con facilidad.

Si eres programador de frontend, incluso te animo enérgicamente a crear tu propio framework para Javascript. No hay aún suficientes, y crear un marco de trabajo propio te distinguirá del resto de desarrolladores, que son simples ovejas que siguen al rebaño.

En mi caso, ando desde hace algún tiempo creando AnguilarJS, una evolución personal de AngularJS (Angular+Aguilar=Anguilar, ¿habéis visto qué juego de palabras tan ingenioso? ;D) que en los próximos meses seguro que revolucionará la forma en que desarrollamos en el frontend y se constituirá, esta vez sí, como el framework definitivo.

6. Cumple siempre las planificaciones, aunque sea a costa de bajar la calidad

Todo el mundo sabe que es mejor entregar algo que no funcione bien que no entregar nada; tus jefes o clientes sabrán que eres una persona de palabra y sabrán pasar por alto que tal o cual funcionalidad falla. La calidad en el software no es un requisito, sino una característica opcional.

A tu favor juega el hecho de que todo el mundo asume que los fallos son inherentes al proceso de desarrollo de software.

7. No dediques el tiempo enseñando o transfiriendo conocimientos a tus compañeros u otros desarrolladores

Gollum con su tesoro Aunque sea poco elegante decirlo tan abiertamente, debes considerar a otros desarrolladores, ya sea de tu empresa o externos, como pura competencia. No dudarán en quitarte el puesto o al cliente en cuanto tengan oportunidad, por lo que no debes alimentar esa posibilidad.

Sé práctico y guarda tus conocimientos cual Gollum con su Anillo Único.

8. No inviertas tiempo en automatizar tareas como despliegues o testing

Es lógico, puesto que estarás favoreciendo que las máquinas algún día nos dejen sin trabajo a todos. Crea arquitecturas complejas en las que realizar este tipo de tareas automáticas sea imposible, o al menos aparente serlo.

Además de ayudarte a ti mismo, estarás ayudando indirectamente al sector porque no podemos dejar que las máquinas nos sustituyan ni siquiera en este tipo de tareas.

9. Exige a los demás más que a ti mismo

Si te exiges mucho a ti mismo en algún momento pondrás al descubierto tus carencias. Evítalo. Es mejor hacerlo con el resto de personas, porque esto te hará destacar sobre ellas.

Aprende a descubrir el límite de cada colaborador y llévalo hasta él continuamente. Si no aguanta, es que no merece trabajar contigo; haz lo posible por deshacerte de él y sustitúyelo por otro con más energía.

10. Dedica tiempo a amueblar apropiadamente tu zona de confort

Hazla tan cómoda que incluso otros desarrolladores quieran entrar en ella a tomar café todos los días; no hay nada como ser anfitrión para ganar el respeto de los compañeros y asegurar tu liderazgo.

Una vez la construyas, intenta no salir de ella porque en el exterior serás débil y así lo percibirá el mundo.

11. Las buenas prácticas están sobrevaloradas

La gente usa principios como SOLID porque creen que introducir esas palabras en su vocabulario habitual les hace ser más cool y aparentar ser mejores profesionales, pero no es así: simplemente lo están usando como escudo para ocultar su propia incompetencia. Los programadores de verdad simplemente crean buen software, no necesitan que ningún purista les diga cómo hacerlo y, mucho menos, seguir prácticas que unos señores, que probablemente no han programado mucho, han dado en considerar como buenas.

Por tanto, si el acoplamiento es necesario, no dudes en acoplar. Si debes duplicar código, duplica código sin remordimientos de conciencia. Y, por supuesto, optimiza tu código conforme lo vas creando. Sólo los más grandes crean directamente código que araña nanosegundos y exprime al máximo las capacidades de las modernas CPU.

12. No intentes entender a los usuarios de tus aplicaciones

Perfect user interfaceTodos sabemos que los usuarios son seres creados por el mismísimo diablo con el único fin de fastidiar a los desarrolladores. Cuando tienes alguna experiencia sabes de sobra cómo deben ser tus aplicaciones; el que no sea capaz de entenderlas quizás no sea merecedor de utilizarlas.

Y recuerda que las mejores interfaces son aquellas que surjen sobre la marcha, sin mucha reflexión ni estudio previo, sólo usando tu intuición de desarrollador.

13. Despliega a producción todos los viernes

No sé de dónde habrá salido la leyenda urbana cuya moraleja es que un sistema jamás debe subirse a producción un viernes. Hazlo y verás qué bien te sientes. Ganarás fines de semana de paz, pues llegarás a ellos con la tranquilidad de haber terminado las tareas semanales y podrás comenzar desde cero el lunes siguiente.

Y es que no hay nada como el olor de una aplicación compleja desplegada a producción un viernes a las seis de la tarde.

14. Vuelve al desarrollo en cascada

Se ha demostrado sobradamente que el agilismo es un mito. Nada confunde más a los clientes que unos plazos inciertos, la ausencia de documentación y entregas continuas de un producto sin acabar.

Y por no hablar de la pérdida de tiempo que suponen las reuniones periódicas, como las típicas standup daylies de Scrum; en 2016, científicos de la Universidad de Harvard determinaron que un equipo de 6 desarrolladores que se reúnen durante 15 minutos al día, computan un total de 500 horas/hombre al año. ¡Imagina lo que podrías hacer en ese tiempo desaprovechado!

Las miles de aplicaciones en el mercado creadas usando desarrollo en cascada no pueden estar equivocadas. ¡Desarrolla en cascada como si no hubiera un mañana!

15. Controla tu propia infraestructura

Sinceramente, esto de la nube me parece una patraña propiciada por los grandes players del mercado, a los que le va mucha pasta en ello, y no creo que tenga futuro.

No hay nada más cómodo y fiable que tener junto a tu mesa un servidor en el que alojar tus aplicaciones y servicios. Si quieres escalar, compra un servidor más grande. Si el servidor se cae, vas y lo levantas. Como véis, todas las ventajas de la nube tienen una solución tradicional en el mundo que ahora los hipsters llaman on premise.

Crea tus aplicaciones para que funcionen bien en esa máquina y no te preocupes por otras cosas misteriosas como las arquitecturas distribuidas, pues seguro que no necesitarás utilizarlas. Y por supuesto, no uses contenedores: son puro hype, nada como una máquina de verdad para ver si las cosas funcionan.

16. En cuanto puedas, deja de programar

Seguro que nunca has visto programadores felices, así que lo mejor que puedes hacer es dar el salto a puestos de gestión cuanto antes. Si lo haces, verás que se te da bien porque, por tus conocimientos técnicos, seguro que sabrás exprimir a los demás y obtener el máximo beneficio de su trabajo.

Nadie con más de treinta y cinco años debería seguir desarrollando. Cuando conozcas a alguien así, piensa en el Principio de Peter: si está ahí es porque ha alcanzado su nivel de incompetencia y no puede ascender más en la jerarquía. Y por esa misma razón, podrás comprobar fácilmente que la mayoría de ellos son auténticos patanes en su trabajo.

17. Memoriza estos consejos y aplícalos en tu día a día

Porque si no es así, nada de esto habrá tenido sentido. Debes aprender de memoria estas valiosas recomendaciones y repetirlas diariamente como un mantra. Consigue interiorizarlas de forma que las incluyas en tus pautas de comportamiento diarios.


[Actualización 07/01/2018] Permitidme el consejo 18: no sigáis los consejos anteriores. Es un post publicado el 28 de diciembre, día de los Santos Inocentes, y básicamente os recomienda que hagáis auténticas barbaridades. Probablemente, aunque no os aseguro nada, os irá bastante mejor si hacéis justo lo contrario ;)



¡Y esto es todo! Espero que sepáis valorar estas recomendaciones en su justa medida, porque, si las seguís, os aseguro que os cambiarán la vida.

Ya me lo agradeceréis ;)

Publicado en Variable not found,
Imágenes: Pixabay,

Estos contenidos se publican bajo una licencia de Creative Commons Licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España de Creative Commons

7 Comentarios:

Anónimo dijo...

Empezamos prontito con las inocentadas eh!;)...muy buena!!

Rafa Osuna dijo...

13. Despliega a producción todos los viernes

Con ésta he soltado una risotada. !Buenísimo!

Anónimo dijo...

Creo que estoy aún muy dormido... Me hace falta el cartel de sarcasmo o esto va de enserio ? Porque si va de enserio... Parece más un manual para obreros de software que programadores de software.

Juanpe dijo...

Grandes consejos, jose. Voy a ponerlos en práctica durante 2018 y si eso ya te cuento que tal fue la cosa.

Felices fiestas!

Alexandra dijo...

Algunas son ciertas como el "fake 'till you make it", pero otras como no automatizar tareas?

Anónimo dijo...

Muy buenos consejos! Jajajaja Alexandra te recomiendo que cambies se sector si estás de acuerdo con un solo punto.

nungon dijo...

El de las infraestructuras lo sigo al pie de la letra, jajaja