La informática y la edad media

El artículo de desencadenado me ha recordado una charla que nos dieron en mi último año de Universidad.

Un día de Mayo de 2001, un super jefe de una consultora se presentó en la Escuela de Ingeniería para captar alumnos de último año que quisieran ir a trabajar con él. Por encima de su traje hecho a medida, cosido a mano, o de su portátil último modelo, sobresalió con un monólogo sobre los trabajos en informática y los trabajos en la edad media.

Según aquel hombre delgado, elegante, repeinado, educado, moreno, dicharachero, cuando terminásemos de estudiar y empezáramos a trabajar, podríamos convertirnos en mercenarios o artesanos.

El informático artesano

No todas las vasijas son iguales

En la Universidad, decía, nos preparaban para trabajar como un artesano. Buscaríamos una especialidad, pongamos alfarero, y nos dedicaríamos a hacer vasijas. Día tras día, año tras año, vasija tras vasija, los artesanos dedican su vida a perfeccionar el arte de realizar sus pequeñas manufacturas. Unos grandes y otros pequeños, unos sencillos y otros lujosos, cientos y cientos de contenedores de barro. Cada vez mejor, pero siempre lo mismo.

Los artesanos pueden ganarse la vida cómodamente con su trabajo: La demanda de vasijas por parte de sus clientes, o del señor feudal, es lo suficiente constante como para mantenerse sólo con dicha tarea. Habrá épocas de más trabajo, donde no dará abasto a hacer piezas. Y otras en las que tendrá que reducir la producción porque hay menos demanda.

Una vida aburrida, monótona, encasillada, que le permitirá con suerte vivir con comodidad pero sin grandes lujos.

El informático mercenario

Bueno, yo reconozco que aquel jefazo de la consultora utilizaba la expresión “asaltador de castillos”. El tipo de informático al que se refería era, como no, un consultor informático.

El mercenario, al contrario que un artesano, vivía una vida de aventura. A las órdenes de un alto comandante, su misión era atender operaciones de gran envergadura y dificultad: asaltar castillos. Llegan a una fortaleza y la asedian, la rodean, y utilizan la fuerza hasta que consiguen someterla. A todas horas, día tras día, sin descanso, hasta conseguir su objetivo.

La vida en el frente es muy dura: hay poco tiempo para dormir, no hay tiempo apenas para comer. No hay tiempo para uno mismo y sólo importa el objetivo. Eso sí, tanto esfuerzo y penurias tiene su recompensa.

Cuando el mercenario consigue entrar en el castillo hay una gran fiesta con comida, música, olor a compañerismo y sexo (creo que en esto, no hablaba figuradamente) para celebrar el éxito en la empresa – como sinónimo de objetivo, no como corporación. Haber participado en un proyecto con éxito te garantiza una parte jugosa del botín, y con el tiempo, poder comandar tu propio equipo de asalto. Si eres un gran mercenario, poco a poco lograrás ascender en el escalafón militar y te tocará más parte del botín en las batallas en las que participes.

Conclusión

Muchos nos dimos cuenta de que el modelo de crecimiento de aquella consultora no era sostenible: en cada “asalto a un castillo” varios mercenarios se hacían jefes de equipo con un puñado de novatos a su cargo. Cada escala en la jefatura ascendía rápidamente en un crecimiento piramidal que consistía en contratar cada vez más mano de obra inexperta en la base para que en cada incursión la cúspide fuera más rica.

Cada vez hacen falta muchos más castillos que conquistar. Eso era evidente incluso antes de enseñarnos el gráfico con el crecimiento de aquella empresa cuyo modelo era la guerra.

Yo decidí que sería un empleado, un alfarero vasallo de mi señor. Fabricaría mis vasijas y viviría sin grandes lujos, pero con más seguridad y menos estrés. Tengo suerte, estoy en un ambiente donde se me permite ser creativo y estoy muy contento. Aunque últimamente, la situación general invita a arriesgarse y convertirse en mercader. Os recomiendo el artículo de  Borja Prieto, aunque la analogía con Mercenario no es la que yo he descrito.

¿Y a vosotros, que os pareció esta historia?

 

Diferencias de programar para Internet y para Intranet

Todavía hay quien piensa que el diseño web es una simple cuestión de pintura, de imagen. Pero construir una aplicación web cada vez requiere más destrezas como la programación, el diseño, la difusión, o la usabilidad.

Computer Troops - Licencia Algunos derechos reservados por JD Hancock

Computer Troops

Llevo 15 años realizando páginas web y 10, como profesional, desarrollando aplicativos web de intranet. Desde hace un par de años me he interesado por la construcción de webs en Internet y me he dado cuenta de lo diferente que es programar un software interno para la empresa y una web para el público en general.

Los contenidos contra los datos

En cuanto al software corporativo, la importancia está en los datos. La programación se realiza en torno a recoger, actualizar y mostrar datos que se recogen de los empleados, que son – en términos generales – los únicos usuarios. Los datos recogidos se guardan celosamente en sistemas organizados para su posterior explotación: bases de datos relacionales normalizadas de donde se extrae la información, tanto al detalle (listados, servicios web), como en resúmenes (data warehousing). Un ejemplo son los aplicativos de banca electrónica, como Altamira Online.

En las aplicaciones corporativas se exige un tratamiento exquisito de los datos, en su recogida y en su explotación. En las webs públicas, se trata de gestionar contenidos, como imágenes o vídeos.

En cuanto a las web para público general, lo más habitual es encontrar sitios basados en Sistemas de Gestión de Contenidos (CMS) como Joomla, WordPress o Drupal. Estos sistemas están orientados a la gestión de textos, imágenes y vídeos que, con frecuencia, son mantenidos por todos sus usuarios: por el público en general. Los contenidos son indexados para ser encontrados en los buscadores por los usuarios consumidores.

Los lenguajes de programación

Los aplicativos de Intranet y los sitios web están implementados en sistemas distribuidos: los usuarios ejecutan parte del software – el frontend – en sus máquinas mediante un navegador web y los datos recogidos se procesan en el servidor de la aplicación – el backend.

En cuanto al frontend, el software suele ser una combinación de lenguajes HTML para la estructura, CSS para el estilismo gráfico y Javascript para los controles de los datos en el navegador cliente.

En el backend, los aplicativos corporativos utilizan lenguajes que tengan un gran respaldo, como Java o C#. Es frecuente la contratación de servicios de soporte técnico a las empresas matrices de los lenguajes, como Oracle o Microsoft. Las webs de propósito general suelen implementarse en lenguajes específicos de Internet como PHP. Este y otros lenguajes se respaldan sobre la enorme comunidad de programadores, pero los servicios de soporte están ofrecidos por terceros.

Objetivos

Ya dije que las aplicaciones corporativas están orientadas a procesar información: recogerla, transformarla y mostrarla, resumida o segregada. En una página web los objetivos pueden ser meramente publicitarios (v.g: imagen de marca), comerciales (venta directa o captación de clientes) u otros.

El diseño de las webs y las aplicaciones es muy diferente, debido a que sus objetivos son dispares. Por poner un ejemplo, los aplicativos están plagados de formularios para recoger los datos, mientras que en una web de venta se provoca que el usuario compre con el mínimo número de clics.

Usabilidad

En entornos corporativos se fomenta que las aplicaciones se parezcan para que los usuarios tengan una curva de aprendizaje muy corta ante nuevas funcionalidades. Por ejemplo, los elementos comunes, como el menú, la búsqueda y la información de login, siempre se encuentran situados en la misma zona de la pantalla. Los listados tendrán un aspecto similar en cuanto a colores, tamaños y funciones (filtro, orden).

Los diseños de los sitios web tratan de ser originales y de mantener al cliente en sus visitas. Los aplicativos departamentales deben parecerse entre sí y completar los objetivos rápidamente.

Cuando se muestran errores, se indica al usuario cual es la solución correcta para facilitar la recogida de datos en todo lo posible. El objetivo es pasar el menor tiempo posible en la aplicación, terminar cuanto antes y volver a trabajar – a producir. No se dice “La fecha es incorrecta” si no “La fecha debe ser mayor que hoy” o “menor que el 12/03/2013″.

En los sitios web, en general, se favorece que el usuario se quede en la página. Incluso después de alcanzado el objetivo (p.e: cuando se ha logrado una venta) el sitio web te invita a visitar la página un ratito más.

Navegador

Las páginas web se diseñan para que funcionen en distintos navegadores, incluso en distintos dispositivos, con técnicas adaptativas (responsive) que permiten ver la misma página en distintos tamaños de pantalla.

En un entorno corporativo, las aplicaciones corren en un conjunto reducido de resoluciones de pantalla y por lo general bajo un navegador concreto. La peor parte es que el software debe tener una vida útil larga que amortice su alto coste (alto desde el punto de vista de la empresa, claro) y es frecuente encontrar Windows XP limitados a la versión 8 de Internet Explorer.

Análisis y Requisitos

Los sitios web son solicitados por clientes que pagan directamente por sus servicios. Con su dinero. Muchos deseos de los clientes se quedan sin realizar al saber el coste que conllevan. Sin embargo, cuando tratas con compañeros, que no asumirán el coste de los desarrollos en sus bolsillos, muchas veces se invierte tiempo en tareas que no compensan el desarrollo. El cliente interno puede ser más exigente e insistir en funcionalidades de desarrollo largo pero escaso beneficio.

Conclusiones

Como ingeniero en informática estoy encantado de desarrollar aplicativos corporativos web, pues me permite estar al día y realizar las tareas tradicionales de análisis de software de negocio. En la parte negativa, los aplicativos se parecen mucho entre sí y por eso dedico parte de mi tiempo libre a aprender a hacer páginas web de propósito general, que me permiten aportar más creatividad.

 

 

7 razones para contratar un Geek

¿No sabe lo que es un Geek? Es ese tipo raro que sabe tanto de tecnología y tan poco de deportes. Alguno de sus amigos, puede que varios, le llamen “el friki”. Algunos de los argumentos del artículo 20 Reasons to Date a Geek tienen su aplicación en el mundo laboral.

Un muñeco Lego Geek

1. Comprometido

Los geeks suelen obsesionarse con algún tema. Ya sean chismes tecnológicos, sistemas operativos, comics, ciencia ficción, videojuegos, lo que sea: los geeks comen, duermen y respiran pensando en ello. Este nivel de compromiso, lo puede tener con su empresa y permanecerán en ella si se encuentran cómodos.

2. Solucionadores De Problemas

A los geeks nos encanta resolver problemas, nos da un subidón de adrenalina cuando nos pasamos un juego por completo o cuando arreglamos el sistema operativo. 

La emoción está en el desafío. Y para agregar al punto # 1, cuando nos metemos en ello, podemos obsesionarnos con un error en el sistema que se pasan horas y horas sin parar para un descanso.

3. Los Perfeccionistas

Los frikis somos perfectionistas, hacemos una investigación minuciosa antes de empezar a hacer preguntas. Y usted puede ver que una vez que se involucran, nos dedicamos a encontrar la mejor solución y más completa para cualquier tipo de problema que haya. No pasamos de pantalla del Angry Birds si no tenemos las tres estrellas.

4. Aprendices entusiastas

La mente inquisitiva de los frikis es probablemente una de las cosas que los diferencian del resto. Siempre dispuestos a aprender cosas nuevas. Cuando se enfrentan a algo que no se sabe muy bien cómo manejar, aprenden y se adaptan.

5. Directos y sin falsedades

Los Geeks les gusta ser lógicos y sencillos, también en el mundo laboral. Las medias verdades y las cosas difusas no son algo que les interese. Como resultado, son muy directos y esperan que los demás lo sean también, lo que lleva a sacar los proyectos adelante.

6. Con recursos

Sí, todos sabemos buscar en Internet, o al menos eso creemos. Pero los geeks, saben sacar la información de las piedras. Es parte de la razón por la que están siempre conectados a Internet, leyendo y amasando.  ¿Tiene un problema? Déles 5 minutos, y habían localizar 5 soluciones diferentes para usted.

7. Gente Auténtica

Los frikis son fieles a sí mismos. Persiguen lo que aman con pasión y dedicación.

 

Asociación de Webmasters de Cantabria

Después del (estupendo) workshop sobre HTML5 de Darío (@BalfeR) he conocido a parte de la Junta Directiva de la asociación de webmasters de Cantabria. Lo que más me llamaba – y me sigue llamando – la atención de la asociación es su nombre: webmasters. Pensé que el término había desaparecido. Pero este grupo de veinteañeros, mayoritariamente vinculados a la Universidad de Cantabria, consideran que el término sigue estando vigente y que el público general lo sigue entendiendo y aceptando: el que controla de páginas web, web master.

En una época dificil, en la que prima el individualismo y el egoísmo, estos altruistas han creado una asociación en la que compartir conocimientos y difundir los conocimientos. El objetivo de la asociación es crecer y que sus socios crezcan aprendiendo unos de otros. Y en muchos aspectos me recuerdan a cómo era yo a su edad.

Seguir leyendo

Trabajar en grandes sistemas

Las tecnologías en la vida real son una versión muy parecida a la que hemos utilizado durante nuestra formación pero la forma de trabajar es muy diferente dependiendo del entorno. Trabajar como desarrollador en una gran empresa es un privilegio. Claro, como todo, tiene inconvenientes. Pero en general es una experiencia muy gratificante y exclusiva.

Oficina

Oficina

Seguir leyendo

jQuery XML no funciona bien en IE7 ni IE8

El framework  jQuery nos ha facilitado a los desarrolladores el acceso a los datos XML que provienen de AJAX; pero también permite leer XML contenido en la propia página con javascript. Eso sí, funciona mucho mejor en Chrome y Firefox que en Internet explorer.

Si en un input tenemos el siguiente texto:

<granja>
<animal id="0001">vaca</animal>
<animal id="0002">oveja</animal>
<animal id="0003">gallina</animal>
</granja>

Con jQuery podemos recorrerlo directamente con este código:

$(inputXML.value).find('animal').each(
function(){
$(this).text (); //devuelve el texto
$(this).attr ('id'); // devuelve un atributo
});

Como veréis, es mucho más intuitivo y rápido que utilizar directamente  los métodos de la clase XMLHttpRequest.

Eso sí, en Chrome y Firefox porque la función find no nos funcionará en IE7 e IE8 (esto es lo mismo que decir en todos los Windows XP que hay todavía activos, y que son muchos).

Esto es debido a que IE detectará que estamos en un documento HTML y no XML y lo podemos solventar así:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(inputXML.value);
$("granja", xmlDoc).find("animal").each( function() {
$(this).text (); //devuelve el texto
$(this).attr ('id'); // devuelve un atributo
});

En mi caso, se trata de un aplicativo que siempre se accederá con IE7 (se ejecuta en un entorno controlado) pero si deseamos publicar algo así, deberíamos utilizar el objeto XMLDOM correcto para cada navegador – lo sé, qué rollo.

if (window.DOMParser)
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(inputXML.value,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(inputXML.value);
}

Ultima hora:

Si las claves de XML vienen del serializado de un objeto, IE8 nos va a exigir que las marcas XML no contengan información sobre paquete: <es.josedetorre.MiClase>dato</es.josedetorre.MiClase> es inválido.

El error que da es “sólo se admite un elemento de nivel superior en un documento XML” aunque el fichero esté bien formado.

La solución es serializar sin información de paquete: <MiClase>datos</MiClase>


Un punto de vista sobre la Ingeniería Informática

De todas las definiciones que he encontrado, la que más se aproxima a mi punto de vista es esta:

La ingeniería informática es la aplicación de un enfoque sistemático, disciplinado y cuantificable a la construcción, el desarrollo, operación y mantenimiento de los sistemas de información. Es decir, es la aplicación de la ingeniería, a la informática. [1]

La profesión

Hay mucha controversia acerca de lo que significa la Ingeniería en Informática. De una parte, los Ingenieros desean que su capacitación esté amparada por Colegios Profesionales con atribuciones, como los de Arquitectura y el resto de Ingenierías, para poder visar proyectos, realizar peritajes, etc. De la otra, el estado, con su lenta maquinaria administrativa, que trabaja para restringir las atribuciones actuales de los Colegios Profesionales, califica a la informática de materia transversal. Como las matemáticas o el inglés, una disciplina que se utiliza como herramienta y no una ciencia.

Tengo argumentos en contra de las dos posturas: por un lado, es comprensible que los Colegios Profesionales no tengan atribuciones para visar proyectos. La tendencia actual es restringir este tipo de privilegios, como en la ley Ómnibus. Por otro, considerar la Informática como una herramienta es como decir que la Arquitectura es una rama del dibujo técnico. La informática es un medio para otras disciplinas, pero también es la solución a problemas actuales y un fin en si mismo, como los motores de vapor lo fueron en la revolución industrial.

Ingeniería Informática
Ingeniería Informática
Se requieren muchos conocimientos de muy variadas disciplinas para poder enfocar sistemática, disciplinada y cuantificablemente los sistemas informáticos, cuando están en proyecto, durante su construcción y en su vida útil.

Muchos conocimientos, técnicas y herramientas se pueden aprender durante el ejercicio de la profesión en tecnologías de la información. Algunas sólo se pueden aprender con la experiencia (la vida real no es como en los manuales).

Pero muchas veces la profesión nos obliga a centrarnos en áreas concretas, como la programación o la administración de usuarios, y no nos permite ver el conjunto del sistema. Las escuelas de informática nos permiten tener conocimientos sobre las distintas patas de los sistemas de información para aprovechar al máximo la cooperación entre ellas: la implantación de sistemas, la gestión de usuarios, la administración de servidores, el control de los datos, la seguridad informática, la programación, las comunicaciones, etc.

La Ingeniería aplicada a la empresa

Rara vez se tiene el privilegio de crear un gran sistema de información partiendo de cero. Más bien al contrario los sistemas crecen al ritmo que lo hace la empresa y cuanto más grande es, más lo son sus necesidades. Los diferentes servicios se van incorporando al conjunto de herramientas existentes para formar un gran sistema de información.

El éxito en la ejecución de un sistema informático depende de la existencia de una dirección formada tecnológicamente y capaz de gestionar los cambios que se producirán. También de profesionales con grandes capacidades específicas pero también muchos conocimientos generales sobre los componentes que operan con su área: es mucho más valioso un programador web con conocimientos de gestión de redes, que uno sin ellos.

Referencias

[1] He adaptado la descripción de la Ingeniería del Software que utiliza la IEEE, porque me gustó mucho.

Por fin un tema que me gusta

Hola amigos!

Bienvenidos a la profesional de José Manuel Díaz Pérez, @josedetorre.

Poco a poquito la iré dando contenido, lo prometo. De momento me ha llevado más de lo que pensaba encontrar un tema a mi gusto y al final me he decantado por twenty-eleven, que es el que viene por defecto. Qué cosas.

Si queréis ver a qué me dedico os sugiero que visitéis mi perfil de LinkedIn. Esta página pretende ser profesional. En el lateral izquierdo puedes encontrar enlaces a twitter o Google+ donde conocerme personalmente.

¡Ya estoy llegando!

Ehm! sí, estoy montando este sitio pero tendrás que tener un poco de paciencia. No tengo mucho tiempo para dedicarle.
Mientras tanto, si quieres conocerme, te sugiero que te pases por google+ ó twitter. Uso facebook, cada vez menos, y sólo de forma personal. Y si quieres ver qué hago en internet, puedes visitar quetenteres o mi web de frases de niños.

¡Nos vemos!