70 cosas que todo programador pragmático debería tener en cuenta

desarrollo, libros 0 comentarios »

Acabo de leer The Pragmatic Programmer: From Journeyman to Master, todo un clásico sobre el desarrollo ágil, y me ha parecido bastante interesante. Muy recomendable si quieres huir de la metodogía tradicional en cascada o si no sigues ninguna metodología. Si eres de los que lleva tiempo en el mundo Rails, los temas tratados te resultarán de sentido común, pero recuerda que el sentido común es el menos habitual de los sentidos.

El libro nos va resaltando las cosas que todo programador pragmático debería tener en cuenta. Os las enumero aquí para que os hagáis una idea de los temas tratados en el libro. Muchos de los puntos se entienden por sí sólos. Para entender otros será necesario que leáis el libro.

  1. Mima tu obra
  2. ¡Piensa!, sobre tu trabajo
  3. Proporciona opciones, no excusas
  4. No vivas con ventanas rotas
  5. Sé un catalizador del cambio
  6. Ten perspectiva
  7. Haz de la calidad un requisito
  8. Invierte regularmente en tu conocimiento
  9. Analiza críticamente lo que lees y oyes
  10. Importa lo que dices y cómo lo dices
  11. No te repitas
  12. Haz que sea fácil la reutilización
  13. Elimina las interacciones entre cosas no relacionadas
  14. No hay decisiones finales
  15. Utiliza balas trazadoras para encontrar el objetivo
  16. Prototipa para aprender
  17. Programa cerca del dominio del problema
  18. Estima para evitar sorpresas
  19. Replanifica según codificas
  20. Mantén el conocimiento en texto plano
  21. Utiliza el poder de los comandos de la shell
  22. Aprende a utilizar un editor a fondo
  23. Utiliza siempre control del código fuente
  24. Arregla el problema, no busques culpables
  25. Evita el pánico
  26. “select” no se ha roto
  27. No lo asumas, pruébalo
  28. Aprende un lenguaje de manipulación de textos
  29. Escribe código que escriba código
  30. No puedes escribir software perfecto
  31. Diseña con contratos
  32. Haz que los errores aparezcan pronto
  33. Si no puede ocurrir, asegúrate de que no ocurra
  34. Utiliza excepciones para problemas excepcionales
  35. Acaba lo que empieces
  36. Minimiza el acoplamiento entre módulos
  37. Configura, no integres
  38. Pon las abstracciones del código en metadatos
  39. Analiza el flujo de trabajo para mejorar la concurrencia
  40. Diseña utilizando servicios
  41. Diseña siempre pensando en la concurrencia
  42. Separa las vistas de los modelos
  43. Utiliza el patrón pizarra para coordinar los flujos de trabajo
  44. No programes por coincidencia
  45. Estima el orden de magnitud de tus algoritmos
  46. Comprueba tus estimaciones
  47. Refactoriza pronto, refactoriza a menudo
  48. Diseña para testear
  49. Testea tu software, ya que si no lo harán tus usuarios
  50. No utilices asistentes de código que no entiendas
  51. No recojas requerimientos, escava para encontrarlos
  52. Trabaja con un usuario para pensar como un usuario
  53. Las abstracciones viven más que los detalles
  54. Utiliza un glosario en tus proyectos
  55. No pienses fuera de la caja, encuentra la caja
  56. Escucha a tus dudas persistentes — Empieza cuando estés preparado
  57. Algunas cosas se hacen mejor que se describen
  58. No seas un esclavo de los métodos formales
  59. Las herramientas caras no producen mejores diseños
  60. Organiza alrededor de la funcionalidad, no de los puestos de trabajo
  61. No utilices prodedimientos manuales
  62. Testea pronto, testea a menudo, testea automáticamente
  63. La codificación no termina hasta que todos los tests hayan pasado
  64. Utiliza saboteadores para testear tus tests
  65. Testea pensando en los estados de tu aplicación, no en las líneas de código
  66. Busca los bugs sólo una vez
  67. Utiliza tu lengua como otro lenguaje de programación (documenta)
  68. Genera tu documentación de la manera más automática posible
  69. Excede las expectativas de tus usuarios
  70. Firma tu trabajo

Where I’ve Been

internet 0 comentarios »

Hasta hoy básicamente había utilizado mi cuenta de Facebook para añadir amigos. Hoy he dedicado algo de tiempo a investigar y he encontrado una aplicación que me gusta: Where I’ve Been. Aquí os dejo el mapa de los lugares en los que he estado.


Fiasco Awards 2009

eventos 1 comentario »

Tras leer El libro negro del emprendedor, de Fernando Trías de Bes, algo que me quedó claro fue que muchas veces, a un emprendor, le pueden ser más útiles los consejos sobre qué cosas no debería hacer que las típicas recetas para alcanzar el éxito. En muchos foros se habla de casos éxito, pero ¿no puede aprenderse, incluso más, de los casos de fracaso?

fiasco_awards

Hace un rato, escuchando Intereconomía, he conocido los Fiasco Awards 2009 y me ha parecido una idea estupenda. Según su propia web:

Los Fiasco Awards quieren premiar a los mejores proyectos del ámbito TIC que han acabado en FIASCO, con el fin de potenciar el espíritu crítico, fomentar la actitud positiva hacia los escollos del camino hacia el éxito y, para qué negarlo, para divertirnos!


Configuración de un servidor de instalación en Solaris

sysadmin 0 comentarios »

De vez en cuando me toca instalar alguna máquina Solaris que o bien no tiene unidad de CD/DVD o bien yo no tengo acceso físico a la máquina. En estos casos suele ser útil montar un servidor de instalación, o servidor JumpStart, en otra máquina e instalar la máquina en cuestión por red.

jumpstart

El servidor de instalación como tal es realmente una parte de lo que se denomina servidor JumpStart. JumpStart es un framework, incluido con Solaris, que nos permite la instalación automatizada de máquinas. Aunque hablemos de servidor JumpStart, realmente existen 3 servidores diferentes, que normalmente estarán en la misma máquina:

  • servidor de arraque
  • servidor de instalación
  • servidor de configuración

Si lo único que queremos es instalar una máquina, pero no tiene unidad de CD/DVD o no tenemos acceso físico a la máquina, nos podemos ahorrar configurar el servidor de configuración. La instalación de la máquina será interactiva, es decir, tendremos que ir respondiendo a las típicas preguntas del proceso de instalación de Solaris. Si tuvieramos que instalar muchas máquinas entonces sí que merecería la pena configurar el servidor de configuración.

En las siguientes indicaciones os cuento cómo configurar un servidor de instalación y de arranque en la misma máquina. Supondré además que están en la misma subred que la máquina a instalar, ya que en el arranque por defecto se utiliza RARP, que no es enrutable. En el caso de que el servidor de instalación y la máquina a instalar estuvieran en subredes diferentes hay que acudir a configuraciones más avanzadas.

Configuración del servidor de instalación

Creamos el directorio donde vamos a crear la imagen de Solaris que vamos a utilizar y lo compartimos por NFS. Podríamos tener diferentes imágenes de Solaris para diferentes grupos de máquinas. Supongamos que este directorio es /export/jumpstart y que vamos crear una imagen para la versión 10/08 de Solaris 10.

# mkdir -p /export/jumpstart/Solaris10_10_08
# cat >> /etc/dfs/dfstab
share -o ro,anon=0 /export/jumpstart
[Ctrl+D]
# shareall
# dfshares

Ahora creamos la imagen propiamente dicha. Supongamos hemos introducido el DVD de Solaris 10 y que está montado en /cdrom/cdrom0.

# cd /cdrom/cdrom0/Solaris_10/Tools
# ./setup_install_server /export/jumpstart/Solaris10_10_08

Con esto ya tendríamos configurado el servidor de instalación.

Configuración del servidor de arranque

Ahora nos queda el servidor de arranque. Para ello vamos a suponer que la IP del servidor de instalación es la 10.0.0.1, que la máquina a instalar se va a llamar abedul, su IP va a ser la 10.0.0.2 y que su dirección MAC es la 8:0:20:ff:ff:ff.

Primeramente, en el servidor, tendríamos que añadir una entrada para el cliente, abedul, en el /etc/hosts.

Después ejecutamos:

# cd /export/jumpstart/Solaris10_10_08/Solaris_10/Tools
# ./add_install_client -i 10.0.0.2 -e 8:0:20:ff:ff:ff \
-s 10.0.0.1:/export/jumpstart/Solaris10_10_08 abedul sun4u

Este comando tiene mucha magia por detrás. Nos deja listos los demonios in.rarpd (RARP), rpc.bootparamd (BOOTP) e in.tftpd (TFTP). Ahora ya podremos hacer en la máquina a instalar:

ok boot net - install

De manera que nos acabará apareciendo, después del arranque por red, el proceso de instalación interactiva de Solaris.

Enlaces recomendados


Holofonía

ciencia 0 comentarios »

Aunque lleva tiempo circulando por internet, hasta hoy no había escuchado esta holofonía. Es impresionante. Simplemente ponte unos cascos y cierra los ojos.

En mi opinión, la experiencia de usuario resulta mucho más rica que con un sistema de sonido 5.1. Supongo que las holofonías no han tenido mucho éxito comercial por la incomodidad de tener que ponerte unos cascos. ¿Os imagináis que el cine tuviera sonido holofónico? ¿Y los videojuegos?