El siglo XXI es el de la sociedad de la información y las nuevas tecnologías: todo ello no sería posible sin la enorme industria del software que le sirve de base.
No obstante, los desarrolladores de software no aprovechan todas las oportunidades para desempeñar una carrera profesional de éxito, cometiendo siempre los mismos errores una y otra vez. Un buen proyecto software tiene que ver con habilidades creativas y artísticas más que aquellas necesariamente técnicas.
El Libro Negro del Programador muestra qué distingue a un programador neófito de quien actúa y trabaja profesionalmente.
En la era del emprendimiento y de la nueva economía, el desarrollo profesional de software es su pilar fundamental. Si como programador quieres llegar a ser no sólo bueno sino profesional, no puedes dejar de conocer las gemas de sabiduría que contiene El Libro Negro del Programador.
Rafael Gómez Blanes
El libro negro del programador
Cómo conseguir una carrera de éxito desarrollando software y cómo evitar los errores habituales
ePub r1.0
Titivillus 07.07.17
Título original: El libro negro del programador
Rafael Gómez Blanes, 2004
Diseño e ilustraciones: Francisco Soria
Editor digital: Titivillus
ePub base r1.2
RAFAEL GÓMEZ BLANES es Ingeniero Informático por la Universidad de Sevilla (España). Infoemprendedor, ha trabajado en proyectos software internacionales relacionados con el sector eléctrico. Desarrollador profesional desde el año 1998, es experto en clean code y todas aquellas prácticas metodológicas que incrementan la productividad, mejorando la calidad del software generado. Evangelista de software ágil, dirige actualmente un equipo de desarrollo en una compañía de ingeniería realizando productos para la gestión de smart meters y su despliegue en la nube en modo SaaS (software as a service).
Notas
[1]Continuous delivery
[2] Manifiesto ágil
[3] Obsolescencia programada
[4] Inyección de dependencias
[5]Code Simplicity de Max Kanat-Alexander.
[6]Software rot
[7]Stand-up meetings: reuniones muy cortas para indicar «rápidamente» el estado de cosas.
[8]Done means done: principio del desarrollo ágil por el que una característica debe cerrase completamente antes de pasar a la siguiente, lo que implica haber sido desarrollada en todos sus detalles, probada y aceptada como terminada.
[9]The Passionate Programmer de Chad Fowler.
[10]Cowboy Coding: forma de codificar sin estructura metodológica alguna, útil para experimentación y pruebas.
[11] Node js
¿TE HAS SENTIDO ASÍ ALGUNA VEZ?
El Libro Negro del Programador te va a mostrar qué distingue a un buen profesional del software de otro que «juega» con la tecnología sin conseguir resultados importantes: en el nuevo paradigma laboral trabajaremos principalmente con la máxima productividad y por resultados, para lo que es imprescindible cultivar buenos y productivos hábitos de trabajo.
Introducción
«Emplea tu tiempo cultivándote a través de los escritos de otros, así ganarás fácilmente lo que para nosotros ha sido una dura tarea.»
(Sócrates)
Estamos viviendo momentos apasionantes: un nuevo paradigma económico ha venido para quedarse, podemos contratar casi cualquier servicio en cualquier parte del mundo, podemos diseñar aquí y fabricar por encargo a miles de kilómetros de distancia y del mismo modo lo que fabricas y produces en tu compañía puede ser comercializado en muchas partes del mundo. Profesiones que antes no existían ahora están a la orden del día, una rotación laboral alta está dejando obsoletos los puestos de trabajo «para toda la vida»; hay quien define todo este escenario como crisis, otros como un paradigma y orden nuevo cargado de oportunidades. Hay opiniones entre las que elegir.
Sin embargo, todo esto ha sido posible gracias al despliegue global de redes de comunicaciones que nos presentan a «golpe de clic» oportunidades que antes eran inimaginables. Hay quien dice que todo lo que estamos viviendo es una consecuencia natural de la implantación y uso de Internet.
El protagonista de esta revolución silenciosa, es, en esencia, el desarrollo de software: todo a nuestro alrededor está informatizado y, sin embargo, la profesión informática sufre de cierta incomprensión por el resto de la sociedad: a los desarrolladores de software se les encasilla fácilmente, se les asocia frívolamente con una imagen de «juventud», de trabajo en garajes destartalados cuando la realidad es que un buen proyecto sólo sale adelante con un alto grado de especialización y experiencia.
¿Somos conscientes de la enorme facilidad que tenemos hoy para emprender y poner en marcha ideas innovadoras desde el salón de casa?, ¿de que las barreras de entrada en muchos negocios han caído estrepitosamente? ¿Nos damos cuenta de que toda esta revolución la está protagonizando de una u otra manera el software que se ejecuta en millones de servidores por todo el mundo?
Recientemente se ha publicado un estudio según el cual en EEUU ya es mayor la masa laboral que trabaja «desarrollando aplicaciones» que el número de trabajadores dedicados a la agricultura, sorprendente, ¿no? Igualmente, no paro de leer, en estos mismos días, que el desarrollo de software será una de las profesiones más demandadas en el futuro próximo, lo está siendo ya, pero esta vez en forma de analistas web, SEO (search engine optimization), expertos en big data, community manager, etc. Es una profesión de futuro, efectivamente (de presente lo es ya), pero me pregunto cuáles serán las características que distinguirán a un buen profesional de otros cuyo trabajo deja que desear.
No obstante, la realidad es a veces totalmente frustrante: el poder de la tecnología se desvanecería si no tuviera el soporte de miles de desarrolladores de software afanándose día a día en que esta no colapse, haciendo parches (hotfixes) de soluciones cutres, manteniendo webs horrorosas cuyas compañías quieren rentabilizar al máximo o desarrollando apps para obtener algunos ingresos pasivos… Es una profesión poliédrica, multidisciplinar en la que dentro de la misma te puedes dedicar a hacer multitud de cosas extraordinariamente diferentes. Pero todas, absolutamente todas, se hacen bien, con profesionalidad, si somos capaces de rodearnos de buenos hábitos y de comprender la naturaleza frágil, artística y creativa del software.
Y luego viene la cadena de mando…, cuando el buen hacer técnico, los años de experiencia desarrollando arquitecturas software eficientes y correctas se tiran a la basura porque la única manera de prosperar (ganar más dinero, lógicamente), es pasar «al siguiente nivel» como manager y comenzar a trabajar de lo que un informático desarrollador de software apenas tiene idea, para lo que apenas o nada ha sido formado académicamente: gestionar un equipo de trabajo. ¿Pero qué tendrá que ver poner en marcha una arquitectura SOA o una metodología