Archive for February, 2007

Maneras de vivir

Y no, no me refiero a la canción de Leño, un clásico. Los dos últimos sábados, he tenido dos reuniones similares pero muy diferentes. De empresas pequeñas que buscan una forma de hacerse un hueco, aunque el concepto de pequeño es muy distinto en ambos casos, como también lo es el de hueco. No es que sean opuestas, pero por un lado se busca dominar el mundo, por el otro vivir de otra forma. En un lado hay sueños, en el otro ambición.

¡Qué se le va a hacer, yo soy un soñador!.

No sé si estoy en lo cierto
lo cierto es que estoy aquí
otros por menos se han muerto
maneras de vivir.

Descuélgate del estante
y si te quieres venir
tengo una plaza vacante
maneras de vivir.

¿Cuánto me cuesta un cliente?

Todos tenemos claro que cuesta mucho conseguir un cliente. Muchas visitas, muchas ideas, pocos éxitos (proporcionalmente). También sabemos que conseguir un cliente nuevo cuesta seis veces lo que cuesta mantener a un existente. Pero…. ¿existe un momento en que sea mejor perder un cliente que mantenerlo?, ¿en qué momento deja de ser un cliente rentable?.

Supongamos que tengo un cliente. Consigo venderle 3000 euros (con lo que sea, no importa). Mi coste de ejecución (o lo que tenía pensado imputar al coste que tuvo el producto, para amortizarlo) es 2000, y los otros 1000 son “ganancias”. ¿Todo bien, no?.

Lo primero que se nos olvida es que con esos 1000 euros tenemos que financiar nuestras labores comerciales, no son gratis. Pero no es eso lo que más nos puede preocupar, o al menos no lo que nos va a decir si es mejor perder un cliente que mantenerlo (aunque es un coste importante). Y es que lo que realmente va a decidir si un cliente es rentable o no es el tiempo que te consuma después de poner en marcha el proyecto/producto/solución.

Digamos que este cliente te llama casi todos los días, que siempre te tiene media hora al teléfono. 4 días x 30 minutos = 2 horas semanales. Nuestro precio/hora… por simplificar, 50 euros/hora, es decir, 100 Euros/semana, 400 Euros/mes. Mantener ese cliente me puede costar 400 euros/mes. Aunque le cobre un mantenimiento mensual de 400 Euros (que es difícil que sea, aunque no imposible), me esta consumiendo ese ingreso sólo en el teléfono. Es decir, las labores de mantenimiento de verdad se las estoy regalando, sea eso lo que sea. Ups. Y es que da igual lo que hagamos, producto, proyecto o servicio, deberíamos siempre saber lo que nos cuestan las cosas, desde que iniciamos el contacto hasta que el cliente nos deja (o nosotros le dejamos).

Oí decir a un profesor que lo que se mide se puede controlar, lo que se puede controlar se puede mejorar, y es que sin llegar a exagerar, deberíamos tener en cuenta que todo tiene un coste. No basta con no perder dinero, hay que ganarlo.

Cosas que nunca te dije.

Imagina que tienes un cliente. Te llevas bien, hablas de muchas cosas, todo perfecto, demasiado perfecto. Hasta que las cosas no son como parecen (algo que casi siempre sucede). Te habla, le escuchas, le das tu opinión, te ignora, te vuelve a preguntas, se la vuelves a dar, entras, sales, dejas de entrar. Apuestas y estas dispuesto a hacer muchas cosas, sin embargo siempre se vuelve a lo mismo, por delante muy bien, por la espalda mejorable. Paciencia mutua, supongo, tampoco uno es un ángel ni está para dar reprimendas a nadie.


Hasta que un día te llama y lo que podía haber tenido regalado hace meses lo busca fuera (me imagino que pagando). Y lo primero que le dicen (o cree entender) es que PHP es mejor que Java para el SEO (toma ya, me suena a confundir java con javascript) y ves la luz: yo lo dejo. Se pueden aceptar muchas cosas pero uno es mayorcito para tonterías. Mejor para todos.

Pequeña joya: XML/SWF charts

Hace unas semanas mi autodeclarado familiar me enseñó XML/SWF charts. Pequeño, simple, potente y barato (45USD). De las mejores herramientas que he visto para crear gráficos para la web. Quizás sea ese su mayor problema, que es sólo para la web (existe algo para reproducir flash en una aplicación Swing?).


Algunos ejemplos en su galería. Exactamente igual que jFreeChaart no es, ¿verdad?.

La carga perezosa: hibernate vs jdo

Tengo que mirar más en detalle JPA (Java Persistence Api), pero si los propios miembros de la especificación lo suponen un subconjunto de JDO (Java Data Object), es de suponer que sea parecido. De todos es conocido el problema de Hibernate (y cualquier ORM) con lazy loading, de hecho ya hemos hablado aquí sobre ello. Básicamente sucede cuando después de cerrar el la transacción en el controlador (una acción de struts por ejemplo, o una clase de servicio) queremos cargar objetos relacionados definidos como lazy en la vista. Ahí aparece el temido LazyInitializationException.


Hoy no voy a hablar de eso, ya hay soluciones como el OpenSessionInView (he olvidado el término patrón a propósito), o más inteligentes, como utilizar Spring, por mucho que a alguno le pese. Pero en lugar de eso, voy a hablar de un desconocido, y como lo resuelve él: JDO, por si alguien tiene que escoger un ORM y se niega al borreguismo (dicho esto sin acritud hacía Hibernate, sino simplemente quiere ver distintas opciones, que nunca es malo).


En JDO, al igual que la mayoría de los ORM, tenemos por una parte nuestros beans, por otra la base de datos, y en medio tenemos un fichero con metainformación que relaciona ambas cosas, normalmente un xml. Sin entrar en detalles de como se trabaja con JDO, casi todos podrán entender:

        
            
            
                
            
            
                
            
            
                
                
            
            
                
                
            
            

            
            
                

                
                
            

        



Esta es la definición de una clase Task, que tiene varias relaciones (los campos primitivos no hace falta definirlos si nos valen los valores por defecto). La parte interesante es la del final, la llamada fetch-group.


Y es que por defecto se cargan las relaciones de forma perezosa, como en casi todas partes (y por tanto tendríamos el mismo problema). En JDO podemos definir distintos fetch-groups, para distintos usos normales de la clase, definiendo que queremos que se cargue en esos casos. Por ejemplo, en este caso, cuando cargamos un grupo de Task para un listado, se cargará el grupo por defecto (primitivos + String + Date, pero no relaciones, salvo status porque así lo hemos definido), pero cuando queremos mostrar una página de detalle, nos interesa tener a mano información sobre el tipo de tarea que es (taskType), su estado (en este caso es un objeto, no un valor, status), o si tiene añadidos varios fallos (bugs). Dejamos sin cargar los partes de horas, historial de cambios, etc.

Simplemente a la hora de hacer la consulta haremos algo así como (escribo de memoria):

query.getFetchPlan().addFetchGroup("detailsPage");



Limpíto, ¿no?.

Hacer grupo estando lejos

Esta tarde comentaba con Jordi de The Init (por cierto, interesante empresa aunque aún tengan la web que tienen) sobre como trabajar con gente que esta fuera de la oficina y aún así conseguir cierto sentimiento de pertenencia, de compartir una idea. Existen miles de programas para mensajería instantánea, pero la verdad es que no sé si son una solución si lo que quieres es conseguir ese sentimiento de grupo.

Hace ya tiempo conocí Campfire, pero no ha sido hasta hace relativamente poco cuando lo he empezado a utilizar regularmente gracias a mi autodeclarado familiar, y hay que reconocer que es otra cosa. Una aplicación que de simple es ridícula, que cualquier informático podría hacer sin demasiados problemas, pero tiene algo que hace va más allá de la mensajería.


O quizás yo soy muy raro.

Un poco de ayuda: PROFIT 2007

Para el tipo de empresas de las que hemos hablado en este blog no es que sea la solución a nuestros males (ya hemos comentado circunstancias de las subvenciones en el pasado), pero en todo caso… ya se han publicado las convocatorias para los PROFIT 2007 (Programa de Fomento de la Investigación Técnica). La información correspondiente a estas convocatorias puede encontrarse en la web del Ministerio.

El próximo día 15 de febrero está prevista la celebración de una Jornada de presentación en el salón de actos del MITYC (Paseo de la Castellana, 160, 28046 Madrid). El orden del día se encuentra publicado en http://www.mityc.es/Colabora/Eventos/Inscripcion/, donde deberán registrarse para poder asistir a tal evento.

Si alguno se pasa, que haga un resumen por aquí. Lastima que yo voy a Madrid el día 16.

Lo prometido es deuda: curso de JSF

Listo.

  • Reunir tiempo necesario
  • Temario publicado
  • Normas publicadas
  • Fecha de inicio publicada

El que quiera apuntarte al curso puede leer como funciona aqui y ver los detalles del curso aquí.

Veremos que tal sale.

javaconganas online de nuevo

Esta semana la hemos pasado Jordi y yo intentando poner de nuevo en marcha javaconganas. Se había corrompido un fichero del snipsnap. Ya lo hemos conseguido (gracias a Jordi, todo hay que decirlo). La parte mala es que me ha retrasado en lo del curso :-(.


Nuevas previsiones: publicar temario y abrir inscripción la semana que viene, empezar el curso el 25.

Estoy empieza a parecerse a la obra de El Escorial. Tenía que haber esperado para anunciarlo.



Close
E-mail It