Imagen de cabecera aleatoria... Pulsa F5 si quieres ver otra!

14 cosas que se pueden aprender de un buen programador

El contenido de este post es una traducción libre que he hecho de éste otro.

La imagen típica que se tiene de un programador es la de un nerd inadaptado y aburrido, muy aburrido. Uno normalmente no asocia la palabra programador a un tipo creativo. Nada más lejos de la realidad. Tirar líneas de código es uno de los trabajos más creativos que se pueden tener. Hay que navegar por dos mundos: el estructurado de los lenguajes de programación y el imaginativo de las abstracciones que se han de efectuar para modelar la realidad en un programa informático. Y esto no es trivial.

A continuación enumeramos una lista de características por medio de las que un buen programador puede aumentar su creatividad:

1.- Aprender un nuevo lenguaje de programación: por placer o trabajo, no te limites a manejar los lenguajes con los que te sientas cómodo. Incorpora nuevas habilidades.

2.- Empieza por el principio: cuando te atasques, a veces la mejor forma de encontrar una solución creativa es volver al principio y comenzar de nuevo.

3.- Cuestiónate continuamente todo: has de tener en cuenta todas las suposiciones que estés haciendo, asegurándote de que son correctas y de que estás contemplando cada posible caso. Las suposiciones pueden limitar la creatividad. A veces eliminar alguna suposición puede abrir nuevas vías.

4.- Diviértete: entusiásmate con lo que haces, disfrútalo, plantéatelo como un juego, un reto, un desafío. Engáñate a ti mismo si es un puro infumable. Disfrázalo con nuevas ideas o diseños marca de la casa. Hazlo realmente atractivo.

5.- No te canses de probar posibles mejoras: incluso el más pequeño cambio puede cambiar la fisonomía de un programa o página web. Las pruebas han de hacerse de forma rigurosa.

6.- Apasiónate: una vez te diviertas, te costará menos trabajo irte a la cama pensando en tus programas.

7.- Domina tus herramientas: debes mejorar constantemente el uso que haces de tus herramientas de programación, cambiándolas en el caso de encontrar otras mejores. Tunéalas, aprende cómo funcionan, cómo sacarles el máximo partido.

8.- Plantéate nuevos conceptos: las personas que incubaron Skype, Google Docs o Twitter lo único que hicieron fue unir conceptos abstractos y a priori diferentes (teléfono + ordenadores; páginas web + procesadores de textos; ¿qué estará haciendo ahora la gente?). Piensa en los “¿y si…?”, y estarás en camino de hacer cosas diferentes.

9.- Estructurar como medio, no como limitación: la creatividad no es escribir todo lo que se te venga a la cabeza en un folio en blanco e imaginar un mundo sin limitaciones. Esto no es real. Estamos rodeados de limitaciones. No podemos evitarlas. Un programador ha de asumirlas como parte de las reglas del juego.

10.- No descartes nada hasta que lo intentes: sí, la profesora de tu guardería tenía razón: no existen preguntas absurdas. Te sorprenderías si lo intentas. Pruébalo. Incluso si no funciona, algo te habrás acercado a una posible solución.

11.- Busca una solución más simple y elegante: el buen programador asume que la solución más simple es siempre la mejor. Las soluciones difíciles nos conducen a dificultades.

12.- No temas retocar el código de otros: no reinventes la rueda, Internet está llena de buen código. Mejóralo si puedes.

13.- Colabora: cuatro ojos ven más que dos, dos mentes son más creativas que una. Siempre. Selecciona las mejores ideas, independientemente de cuál sea su procedencia. Evita las jerarquías, los amiguismos.

14.- Poquito a poco, crea algo hermoso: el hecho de que uses código muy básico y no necesariamente bonito no significa que no pueda conjuntarse resultando en un producto impresionante. Presta atención a los detalles, especialmente en aquellos que se reflejen en el conjunto.

agosto 12, 2008   6 comentarios

Learning the art of programming

“Learning the art of programming, like most other disciplines, consists of first learning the rules and then learning when to break them”.

Joshua Bloch, Effective Java

No pude evitar acordarme de una cita que leí en el blog de Alejandra, atribuida por ella a su padre:

“Las reglas están para guiar a los inteligentes y para ser seguidas a rajatabla por los ceporros”.

junio 19, 2008   4 comentarios

Sobre la I Barcelona PHP Workshop

Hace unas horas escasas que acaba de terminar la primera edición del PHP Barcelona Workshop, al que he tenido el gusto de asistir. El evento, de los primeros de este tipo que se organizan en España, había acaparado muchas expectativas, agotándose las 200 acreditaciones disponibles. A continuación reflejo mis sensaciones sobre el mismo:

Symfony

Era mi gran apuesta del evento, y ha sido la mayor decepción. Seguramente esta circunstancia se ha producido porque mis expectativas eran demasiado altas, no por la calidad del framework o de los ponentes. En cualquier caso, daré mi opinión al respecto: ha sobrado la media hora teórica, a pesar del esfuerzo de Aldo contra el micro, contra el idioma, contra los elementos. No es que no haya sido interesante lo que nos ha contado, pero un acercamiento teórico de media hora a Symfony sobre lo que es capaz o no de hacer no lo he terminado de encontrar apropiado en un workshop cuyo márketing había radicado en torno a la eminente practicidad de los talleres.

La segunda parte, la práctica, mejoró un poco el tono aunque hubo cosas que se pudo observar que Ricard no había preparado exhaustivamente. En cualquier caso me llevé una agradable sorpresa con algunas características del framework que no conocía y que desde luego hace que me plantee sentarme un ratito a dialogar con él.

Vim

Elegí esta ponencia porque siempre me he visto atraído por le enorme potencia de este “simple” editor de textos. Ya había hecho mis pinitos, y más o menos era consciente de lo que se puede conseguir con él. Se hizo bien patente que los dos ponentes de esta sesión controlaban bastante sobre el tema. Faltó algo de tiempo para las prácticas, y un poco de orden. En cualquier caso, para mi ha sido lo mejor del workshop, aunque no me veo dándole utilidad a corto plazo, pues por motivos de estrés profesional no tengo pensado invertir mucho tiempo en superar la elevada curva de aprendizaje de Vim (de momento, ya digo :D).

Ajax

Supongo que ha sido por un poco de todo, pero lo cierto es que esta ponencia me ha aburrido soberanamente. La hora era terrible, el sueño que tenía tras el magnífico viernes que Barcelona me regaló y el hecho de que se empezaran a hacer ejercicios usando un framework (YUI) sin explicar los rudimentos más básicos de Ajax (al menos el httpObjectRequest!!) hicieron que me fuera mentalmente del workshop. Además, una de las buenas noticias de la jornada, Carlos, un gallego que he conocido gracias al poquísimo networking que he hecho hoy (ayer me vacié en conversaciones bastante interesantes y me quedaba poco que ofrecer hoy), no conocía la versión Javascript del Chiki-Chiki, a lo cual tuve que poner remedio. Esta circunstancia terminó de sacarme al 100% del taller. Mea culpa.

Injection

Este taller también lo esperaba con mucho interés, y tampoco ha cubierto todas mis expectativas, aunque tengo que aclarar que lo he abandonado antes del final, porque los aviones no suele esperar a los rezagados, y dado que tenía que coger metro y cercanías para llegar desde el Citilab al Prat sin pagar a los grandes saqueadores e inquisidores de la carretera, decidí no jugármela y salir con suficiente antelación. Hice bien, ahora escribo esto a algunos metros de altura, a bordo de un avión de ClickAir que hace un ruido un tanto extraño. Me quedé con las ganas de ver la parte de la presentación que le correspondía a Oriol, la próxima vez será.

Logística

Al margen de mis apreciaciones sobre los talleres, he de comentar un par de cosas positivas y otro par un poco menos sobre la organización logística del evento. Primero las positivas: el Citilab me ha gustado mucho, la red ha ido bastante bien exceptuando dos momentos muy puntuales. La comida, compuesta por pequeños snacks, tortillita, empanadas, buenas croquetonas (aunque frías) y abundantes latas de refrescos, tampoco ha estado nada mal. Las negativas: el horario no se ha respetado, aunque por lo que parece esto es una constante en todo evento que se precie. El ponente Ricard Luquero comenzó su exposición hablando en catalán, hasta que debió ver la extrañeza reflejada en el rostro de algunos de los presentes y preguntó si esta circunstancia generaba algún problema. Seguidamente continuó en castellano. Lo cierto es que desconozco la procedencia en términos generales del personal, pero tanto Carlos (de Santiago de Compostela) como yo nos quedamos a cuadros. Ojo, no quiero polemizar con nadie respecto a esto, y no seré yo quien le diga a nadie en qué idioma ha de expresarse, pero si organizas un evento y lo publicitas a nivel nacional (Barrapunto) tienes que ser consciente de cuál es tu audiencia potencial.

Resumiendo:

El balance general que saco del evento es positivo, aunque menos de lo que esperaba. El cansancio, mi nula formación en algunos de los temas tratados (sobre todo Symfony y Ajax) y, como ya he reseñado, la falta de un último punch práctico en algunas ponencias le han restado algo de brillantez. En cualquier caso, ha quedado claro que había trabajo e ilusión de fondo, y con esos ingredientes a buen seguro el año que viene corregirán los pocos errores que hayan podido tener y el PHP Barcelona Workshop madurará. Espero verlo. ¡Y hacer algo más de networking!.

junio 7, 2008   6 comentarios