miércoles, 26 de enero de 2011

¿Qué es ser un líder?

He leído recientemente manuales sobre liderazgo y muchos de ellos asocian liderazgo a influencia, otros incluso van más allá y definen al líder como la persona capaz de movilizar a otros para conseguir un logro.

Si esto fuese así, el compañero de patio de mi hijo de 10 años, el que decide a qué van a jugar ese día o si no les pincha la pelota, sería un líder (y quizá sólo se trate de un "matoncillo" en potencia).

Esta definición de líder, pues, parece quedarse corta o caben muchos líderes: Adolf Hitler (Führer es una palabra alemana que significa "líder"), Mussolini, Stalin, Sadam Husein, Pol Pot,... pero también: Gandhi, Martin Luther, Obama,...

¿Qué es, pues, ser un líder verdadero? Esta claro que, el verdadero líder tiene la virtud de establecer objetivos y de movilizar a otras personas para alcanzarlos. Esta claro que, liderazgo es el arte de influir en la gente, pero esto no es todo...

Un líder es una persona que ha sido elegida para liderar por las personas que él o ella está liderando y que consigue que trabajen con entusiasmo en la consecución de objetivos en pro del bien común.

Si además quiere ser un líder sobresaliente debe contar con: autoconciencia, autocontrol, empatía y habilidades sociales.

lunes, 24 de enero de 2011

Alcance, recursos y tiempo: el arte para conseguir la calidad

Hay tres restricciones que definen cómo será la calidad del resultado de cualquier proyecto que vayamos a emprender. Son tres restricciones que, antes que nada, debemos medir con meticulosidad, ajustar y traspasar a una hoja de papel que colgaremos en un lugar bien visible de nuestro despacho.

Estas tres restricciones son: el alcance (o "A" de alcance) del proyecto, los recursos (humanos y económicos) con los que contamos (o "R" de recursos) para conseguir ese alcance y el tiempo (o "T" de tiempo) que hemos planificado que tardaremos en completarlo.

Si los defino correctamente los podré dibujar como un triángulo equilátero, siendo cada lado al inicio del proyecto de 1 unidad. Es decir, el valor inicial de A, R y T será de 1.

La medida de la calidad del producto resultado (o "C" de calidad) será el área de ese triángulo equilátero. Es decir (siendo "l" o ele cada lado de ese triángulo):


Si A = R = T = ("l" o ele) = 1 inicialmente, entonces C = 0,433012701875. A este número 0,433012701875 lo llamaré, a partir de ahora, el "número Q" (del latín qualitas, calidad).

Si a lo largo del proyecto alguien nos cambia una de esas tres restricciones y no cambia el resto para ajustarse a la nueva definición... no podré mantener el Q de mi proyecto, lo que significará una disminución en la calidad del resultado del mismo.

Cómo vemos la calidad "C" o "Q" es una fórmula que depende de "ART" (la metáfora de éste post es que la calidad es un ARTE).

martes, 8 de junio de 2010

¿Qué son las vulnerabilidades SQLi?

Una vulnerabilidad SQLi es una vulnerabilidad por inyección de SQL.

Básicamente, lo que significa, es que alguien puede meter información inesperada en las cajas de texto de tus formularios HTML (input) y que, si no es bien tratada por tu programación, podría llegar a introducir o leer información de la base de datos.

Casi siempre se intenta utilizar, esta vulnerabilidad, para lograr entrar con un usuario autorizado en la zona privada de tu web.

Se supone que el contenido de los campos "password" de los formularios serán "pegados" en tu programación para formar una SQL, que luego será lanzada contra la base de datos para saber si un usuario está autorizado o no. Alguien puede intentar poner un "password" "trampa" que haga que esa consulta SQL construida siempre sea cierta aunque no se sepa realmente la "password".

Si la programación (esto es cosa vuestra) no está bien realizada, podría ocurrir que cualquiera sin saber la contraseña entrase en esa zona privada.

Simplemente, échale una ojeada al código que construye esas SQL o comprueba que las "password" introducidas no tengan espacios en blanco, o comillas simples, o comillas dobles, o un igual (suelen ser los caracteres que se utilizan para hacer inyección SQL).

Aprenda Web Services en 20 minutos

Aprenda WS (Web Services) en 20 minutos ;-) La primera unidad didáctica no la facturo.

Para desarrollar un WS sólo es necesario un servidor web y una tecnología para desarrollarlo. En teoría se podría desarrollar con C (como un CGI) o con PHP, pero es complicado hacerlo.

Digamos que lo más natural/lógico es desarrollarlo en JAVA y publicarlo en un servidor J2EE: un Tomcat, un JBoss, un SJSAS, un WebLogic, etc.

Antes de desarrollarlo habría que seleccionar también una implementación (podría ser Apache AXIS1, Apache AXIS2, Apache CXF, SUN Metro, etc.)

También si se va a utilizar (esto es muy común y todos las implementaciones anteriores lo permiten) el API estándar JAX-WS.

Luego, crear un WS es tan "sencillo" (evito la lógica de negocio) como crear un interface JAVA:
package com.organizacion.webservice.personasactual;

@WebService(name="PersonasActualService")
public interface PersonasActualService {

@WebMethod(action = "validarContrasenaAdministrativa")
@WebResult(name = "contrasenaAdministrativaValidada")
public int validarContrasenaAdministrativa(@WebParam(name="nipPersona") int nipPersona, @WebParam(name="contrasena") String contrasena);

}
y la clase JAVA que lo implementa:
package com.organizacion.webservice.personasactual;

@WebService(endpointInterface="com.organizacion.webservice.personasactual.PersonasActualService")
public class PersonasActualServiceImpl implements PersonasActualService {

public int validarContrasenaAdministrativa(int nipPersona, String contrasena) {
int contrasenaAdministrativaValidada = -1;
//TODO: lógica de negocio
return contrasenaAdministrativaValidada;
}

}
Empaquetamos en un WAR y lo desplegamos en el servidor de aplicaciones.

Esto que parece muy sencillo... realmente lo es, lo que no quiere decir que no requiera esfuerzo/tiempo hacer toda la lógica de negocio y montar lo necesario (la estructura) para crear el primer WS.

sábado, 5 de junio de 2010

¿Qué motiva a los trabajadores?

He encontrado un artículo sobre la "motivación de los trabajadores", que es un tema que subyace en toda filosofía de "crear buenos ambientes en el trabajo":

http://www.infoq.com/news/2010/02/what-really-motivates

Lo que dice el artículo es que, el reconocimiento ya no es el factor más importante, sino que lo más importante es sentir el progreso (el avance).

"En los días en que, los trabajadores, tienen la sensación que están avanzando en sus puestos de trabajo, o cuando reciben el apoyo que les ayuda a superar los obstáculos, sus emociones son más positivas y su impulso hacia el éxito está en su "pico más alto". Sin embargo, en los días en que sienten que están "girando ruedas", o encontrando obstáculos para el logro, su estado de ánimo y su motivación son más bajos."

Los pequeños avances son el factor de motivación por excelencia. Aun así, el estudio en que se basa el artículo señala que el reconocimiento es un factor de motivación muy valioso.

El Top-ten de los factores motivadores son:

1. Logros
2. Posibilidad de crecimiento
3. El trabajo en sí mismo
4. Reconocimiento
5. Promoción
6. La supervisión técnica
7. Responsabilidad
8. Relaciones con los compañeros
9. Relaciones con los subordinados
10. Salario