Welcome to Comunidad .NET de Cd. Juárez Sign in | Join | Help

March 2006 - Posts

Pensándolo bien...

OK, quizá escribir software no sea como escribir ficción. Quizá es más parecido a escribir un ensayo o un editorial, en donde quieres lograr algo específico y concreto, en lugar de postear sin sentido en tu blog como un lunático.

Pero los principios son los mismos:
  1. Al inicio solo tienes una idea abstracta o peor aún, solo un feeling de lo que quieres decir y/o cómo lograrlo.
  2. Hasta que no te sientas a escribirlo, no desarrollas en realidad la idea de lo que quieres decir.
  3. Deberías emplear 2 modos mentales: el creativo y el censor. A veces se nos olvida el segundo y algunos programillas no son mas que “primeros borradores” de lo que pudieron ser.
  4. Alguien siempre debería revisar las idioteces que se te ocurren antes de publicarlas. Luego escribes 2 páginas de cosas en tu blog cuando las pudiste decir en media. Lo mismo pasa con el código.

Siguiendo con la idea del desarrollador como artista, creo que la bronca es porque es demasiado común que caigamos en consultingware cuando quizá nos convendría más enfocarnos a desarrollar algo pre-empaquetado.

Imaginen que Miguel Ángel hubiera tenido al Papa ahí enseguida diciéndole cómo quería que se viera la Capilla Sixtina. Claro que para eso Miguel Ángel seguramente era una chucha cuerera que conocía perfectamente el negocio de su cliente, y por eso lo dejaron hacerlo a su antojo.

De cualquier forma, es un camino escabroso, porque, como dijo ayer Gabriel Bravo: “lo difícil es hacerle entender a tu cliente que estás ahí para satisfacer sus necesidades, no para satisfacer sus necedades”.

Recuerden: entre necesidad y necedad sólo hay un “si” de diferencia. Así que cuando les pidan sus clientes algo, tengan cuidado de decir “sí” a las cosas correctas.

Escribir código es algo así como escribir ficción

Desde hace rato noté una analogía en el proceso mental que se sigue para escribir ficción—cuentos cortos o novelas—y el proceso que se sigue para escribir software.

Creo fervientemente que el crear software es mitad arte y mitad ciencia, favoreciendo fuertemente al arte.

Algunos de los mejores codificadores que conozco tienen bastante de bohemio. Les piden un sistema o un requerimiento, y pasa una semana… dos semanas quizá y los ves sin hacer nada, tranquilos como si ponderaran la cantidad de hojuelas que trae la caja de Corn Flakes que se comieron en la mañana… Se echan un café o una chela—dependiendo de la hora del día—y ponderan otro rato más. De pronto, en una sentada de 1 o 2 horas se sueltan vomitando código que a un mortal le parecería inicialmente indescifrable, pero al inspeccionarlo de cerca resulta ser compacto, eficiente y genial.

Sin embargo, la mayoría de nosotros—creo—no somos así, más bien somos como los escritores normales, que tienen que aprender semi-sistemáticamente a evolucionar sus ideas.

Así que ahí les va un cuento y les dejo a ustedes sacar las similitudes. Cualquier coincidencia con cómo se desarrolla—o debería desarrollarse—el software no es mera coincidencia.

Las aventuras de Pito Pérez

Pito Pérez es un joven—ni tan joven—de treinta y tres, chaparro, medio regordete, prieto pa’ acabarla, ah pero eso sí, muy hábil con las viejas. Tiene aspiraciones de escritor, pero en realidad trabaja para el Municipio en el departamento de tránsito entregando placas, porque es el único lugar donde le sirve su título de Licenciado en Filosofía y Letras de la Universidad Técnica Regional del Norte del Tercer Mundo.

Un día se le ocurre la genial idea de convertir sus aventuras teiboleras en un cuento corto. En uno de los alucines que tuvo se imaginó que las señoritas que bailaban en esos establecimientos eran literalmente de otro planeta: con solo una sonrisa y una enseñadita de nalgas, convertían a los hombres débiles (osea el 99% de ellos) en zombies descerebrados de quijada abierta que obedecían ciegamente a sus comandos, les daban todo su dinero y hacían únicamente lo que ellas querían.

Claro que también habría en la historia un héroe—basado en él por supuesto—que era inmune a las emanaciones feromónicas de la raza de viejas extra-pechugonas extra-terrestres que amenazaban con dominar el mundo.

“Esa es la trama, a grandes rasgos”, pensó él, aunque en realidad no tenía ni *** idea de exactamente qué quería ni a dónde iría con la historia.

Con voz de anunciador de la serie viejita de Batman en su cabeza se escucha:

“¿Serán suficientes para nuestro héroe las katas mágicas que le aprendió al David DeAngelo en persona? ¿Logrará nuestro héroe dominar esta amenaza a la civilización, salvar al planeta y hacerse de un súper-harem? No se pierdan el próximo capítulo de Las Aventuras del Gran Pit…, ¡ah caray! Como que no es bueno ese título, ¿verdad?”.

En fin, ya en pleno trance creativo se sienta a escribir la historia. “Lo más importante para escribir una historia es sentarse a escribirla”, le enseñó su profesor de la facultad de artes y ciencias políticas.

Y después de 10 páginas de prosa sin censura, sin siquiera revisar la ortografía, saca un primer borrador. Como le enseñaron en la Uni, cambia su “cachucha de escritor” por la “cachucha de revisor” y comienza a disectar la historia, con la agudeza de un cirujano plástico. Se da cuenta que el primer borrador apesta, gacho. Pero está bien, porque como le dijo su profe de ficción, “un primer borrador debe ser malo”.

Dos días después, acaba de cortar la mitad de la paja a la historia, de re-escribir párrafos enteros y de reacomodar la trama y el cierre para dar un efecto más dramático, aunque se parezca a la película del Sexto Sentido. Y contento y feliz con su gran obra maestra la manda a la revista TVyNovelas para ver si la publican. “Digo si publican las hazañas de la Gloria Trevi, seguramente les interesará mi historia, y si no, se las mando a los de Reader’s Digest ¿no?”.

Unas 2 semanas después recibe una carta del editor de TVyNovelas diciéndole que le encantaría publicar su cuento, pero que ve “áreas de oportunidad”:

“Estimado Sr. Pérez: bla blah bla, bla blah… nos interesó su historia… bla blah blah … Si logra bajarle otras 2 páginas y se deshace del personaje mamilas del DJ chilango que se la pasa haciendo ridiculeces, entonces tendrá una historia que estaríamos orgullosos de publicar.”

“¿Deshacerme del Frank? ¿Qué están locos? ¡Piden a un artista cambiar su arte, jamás!”

Pero después de humear 3 días sintiéndose el regalo de Dios a la literatura castellana—después de Octavio Paz, claro—le gana la ambición del reconocimiento y el deseo de que su cuento sea publicado. Hace las modificaciones solicitadas por el editor y se da cuenta que en realidad sí quedó una mejor historia.

SOA te hará más sexy

Ayer vi este post de Grady Booch en su blog y me pareció chistosísimo (y cierto).
"My take on the whole SOA scene is a bit edgier than most that I've seen. Too much of the press about SOA makes it look like it's the best thing since punched cards. SOA will apparently not only transform your organization and make you more agile and innovative, but your teenagers will start talking to you and you'll become a better lover. Or a better shot if your name happens to be *** [Cheney]. Furthermore, if you follow many of these pitches, it appears that you can do so with hardly any pain: just scrape your existing assets, plant services here, there, and younder, wire them together and suddenly you'll be virtualized, automatized, and servicized.

What rubbish.

SOA is, first and foremost, about the A part of the acronym (architecture). Organizations who already have a solid approach to architecture will likely do reasonably well with SOA; organizations who already have a broken architecture and/or a broken architectural governance practice will likely fail with SOA and then blame SOA on all their problems."
Échenle un ojo al post completo aquí.

Estatus de curso

Estaba ya apunto de comenzar a echarme un rollo sobre el curso para "principiantes" que estoy dando, cuando me dí cuenta que Alex Briseño (aka Pelos) anda haciendo algo similar en su blog.

Así que mejor me espero y veo si puedo platicar con él este martes en la reunión de la Comunidad .NET de Juárez. A ver qué sale.

Ahorita ando investigando si con algo como Google Pages podría hostear los archivos zip o ppt con las presentaciones, pero por ahora estoy en la lista de espera.

Por lo pronto les comento que los chavos que están llevando el curso van bastante bien, aunque no logramos cubrir todo lo que les tenía yo programado para esta semana, me comentan que han aprendido mucho, y en verdad los resultados de las prácticas que les he dejado lo reflejan.

Ahorita me estoy aventando la presentación de mañana donde trataremos puro XML con .NET. Para algunos de los siguientes temas, los pondré a hacer unos CBT's (computer-based trainigs) a los cuales tenemos acceso en nuestra empresa, porque eso de dar clases es bien cansado--por cada hora de clase tengo que pasar al menos media de planeación/preparación--y hay cosas que las explican mejor los CBTs o los libros.

Code Snippets para Visual C# 2005

Después de mucho buscar y esperar, finalmente encontré los Code Snippets para Visual C# 2005. Les recomiendo mejor bajarlos todos de un guamazo, en lugar de uno por uno, y luego hagan lo que dice en esta página.

Para los que no saben de code snippets, este es un feature de Visual Studio 2005 que te permite insertar un machote (sin albur) de código pre-definido para tareas sencillas y comúnes. Esto facilita enormemente las cosas para la raza que apenas comienza a aprender, ya que con la enorme librería de clases del .NET Framework a veces parece difícil hacer cosas sencillas, como cómo leer un archivo o registrar un evento en el EventLog de la máquina.

Los proyectos de VB 2005 ya traen de cajón un montón de snippets, pero si querías hacer lo mismo con C#, te tenías que conformar con unos patéticos para cosasa como for's o if's. Supongo que asumieron que si sabías C# deberías saber lo que estabas haciendo...

En fin, lo único que tienes que hacer para usarlos es dar clic derecho en el editor de código... Insert Snippet... y te da un menú para que escojas una tarea de diferentes categorías, como el siguiente ejemplo (dale clic a la imágen para verla bien):
Otra alternativa es utilizar el shortcut (atajo pues) del snippet--en el ejemplo de arriba sería appEvent. Del editor de código, comienzas a teclear el shortcut del snippet... el IntelliSense lo reconoce, TAB + TAB--mi nueva combinación favorita--y listo, en menos de 2 segundos tienes tu código. De ahí solo tienes que llenar las cajas resaltadas, y estás listo pa'l baile.