viernes, noviembre 16, 2007

He pensado que…

***************************************************************************************
Artículo publicado en ISV Magazine Noviembre de 2007: "He pensado qué..."
***************************************************************************************

He pensado que… ¡Vamos a meternos en el comercio Online!

Así; sonriente; con los dientes deslumbrando cual villano antes de recibir la paliza del héroe en la batalla final, se presenta el Jefe [de sonrisa] Profident una tarde, después de haberse tomado un orujito de hierbas y haber fardado con otro(s) jefe(s) sobre los servicios de la compañía, de lo bien que va la empresa y del excelso crecimiento en ventas que llevamos este año en el Q2, H1 o el parcial que toque del año fiscal.

Y cuando dice “Vamos”, realmente está diciendo “Tienes que” lo que significa: “Te toca pringar”. Esto no tendría que ser un gran problema, que para algo trabajamos en esta profesión, si se fueran a realizar las cosas bien, es decir, se inicia un proyecto, con una fase de toma de requisitos, otra de validación de los mismos, selección de recursos, formación, etc… Aquella asignatura de “ciencia ficción” que se llama Ingeniería del Software y que para colmo suele tener varias partes, como las trilogías de Star Wars (Ingeniería del Software I: Un nuevo amanecer con UML, Ingeniería del Software II: La rebelión Orientada a Objetos e Ingeniería del Software III: El retorno del componente y el código manejado) Vamos, lo que viene siendo el ser un Ingeniero, pero… no, no va a ser así.

Si tienes la suerte de los informáticos, la cosa empezará tal que con la elección de la tecnología a usar basada en la lectura de algún infame blog, de esos que iluminan nuestra dichosa Web 2.0, en la que un Técnicoless (dícese de todos aquellos que no han tirado una puñetera línea de código en su vida y se nombran referentes en Internet opinando a diestro y siniestro sobre las bondades o inconvenientes de determinadas tecnologías) le ha convencido de que Java, Mono, .NET o Perl es la panacea para todos los problemas.

“En dos semanas tiene que estar que con estas tecnologías ya ni tienes que programar”. Esa frase te dirá tu excelso Jefe Profident tomándose un café (a tu costa, por supuesto) en la máquina esa, que no solo crea úlcera de estómago, sino lo que es mucho peor, adicción. A eso tú piensas en contestar algo así como “pues te pones tú en la •$%%•$ de sito que me has puesto y ¡ale!, tirando líneas de código machote”, pero te callas; y te pones; y comienza el proyecto. Ya sabes cómo funciona la Ingeniería en este país: “Nunca hay tiempo de hacer las cosas bien… pero sí para hacerla dos veces”

Fase 1: Toma de requisitos

Esta fase se resume en un par de reuniones café en mano en dónde nuestro Jefe Profident disfruta haciendo La Carta de los Reyes Magos mientras que te cuenta lo bien que se lo ha pasado en el yate con unos amigos que conoció en su último viaje a Osaka (Canadá). Al mismo tiempo te pide cosas como: “Y quiero que el sistema automáticamente seleccione a los mejores clientes y mejores pagadores y busque cuales son los objetos que menos se van a vender y les haga una oferta que no puedan rechazar”. Ale, y ahora vas y lo cascas en .Net o JSP o lo que el Técnicoless le haya recomendado en su flamante Wordpress.

Fase 2: La formación

“¿Formación? ¿pa qué? ¡Si está todo en Internet! Mírame a mí, todo el día trabajando y aún me queda tiempo para ponerme al día a través de Intenet. Usa Google chaval”.

Éste es el momento que marca la diferencia entre un trabajador y alguien encerrado en la cárcel por “Jeficidio”. ¡Aguanta!

Fase 3: La cagada

Es normal; yendo el proyecto como va, lo primero que sucede es que se va al garete. Tu primer sistema de login tiene SQL Injection y se cuela hasta el Pato Lucas (el cual amablemente se registra y deja su mail patolucas@warnerbros.com). Lo arreglas (mirando en algún sitio de Internet como dijo nuestro ilustre Jefe Profident) pero te olvidas del parámetro del buscador con el que te tiran el servidor de base datos inyectándote un shutdown.

Cambias los privilegios de la cuenta, pero en el archivo de descarga del folleto informativo alguien te inyecta un cambio de directorios y te hace un cucharón para bajarte la sam o el /etc/passwd del sistema. Tras leer como funciona en profundidad el SQL Injection ya estás listo para que la web funcione. Sin embargo, todos los datos de tus usuarios aparecen publicados en un foro porque te los sacan con Blind SQL Injection (a pesar de que ya sabías SQL Injection).

Te lo planteas y quitas la base de datos para trabajar con documentos XML. Na, un poco de DOM, un poco de SAX y listo. Te cepillan la web con Xpath Injection. La integras con LDAP y alguien usa las consultas apropiadas para sacarte la estructura de tu árbol LDAP.

Cuando ya eres el rey de las inyecciones decides poner bonita la web: Te comes un Cross-Site Scripting Persistente y te mangan la cuenta tuya del sistema, la de tu correo del trabajo y la del mail para ligar. Te quedas sin el Messenger y tu mujer descubre a tus amiguitas.

Tiras de backup y lo arreglas, pero quitando el Hijacking que te habían metido para quitarte la cuenta. Recibes un mail con un link a tu Web y te vuelven a quitar la cuenta con un XSS No Persistente.

Acabas de arreglarlo tras recuperar otra copia de seguridad y perder una semana de curro porque el Sistema de Backup (que le recomendó un blogger a tu Jefe Profident basado en Pendrives USB no ha funcionado).

Llegas a la fase de alimentar la Web y te implantas un gestor de ficheros. Te comes otro Cucharón. Lo arreglas. Tu competencia tiene los precios que los ha sacado mediante una vulnerabilidad RFI (Remote File Inclusion) que les ha permitido meter una Shell. Recuperas del sistema de copias de seguridad (pendrive) otra vez tu web.

Cambias la arquitectura del sitio y realizas unas comprobaciones meticulosas. Tu Jefe Profident sube ficheros al servidor y resulta que tiene un Troyano Reverso adjuntado: alguien se dedica a tirar tu web cada tres minutos y te toma una foto con la Webcam (esa que tu Jefe Profident instaló en el servidor como Sistema de Seguridad del CPD – compuesto por un ordenata clónico con un monitor en blanco y negro “qué como nadie va a trabajar ahí da lo mismo”-) y aparece publicada en un foro con el siguiente mensaje “POWNED” junto con un tutorial de cómo usar el Posion Ivy.

Fase 4: El fin

Han pasado tres meses, no has conseguido sacar el proyecto adelante en tiempo pero al final rula, has sudado tinta china, has recibido mil palos y tu Jefe Profident saca conclusiones. “No has estado a la altura, pero claro, es normal, solo eres un desarrollador informático”. Decide que para el siguiente proyecto lo mejor es cambiar el lenguaje que no se te ha visto suelto.

Conclusiones

Es evidente que una buena herramienta con una buena tecnología ayuda a tener buenos desarrollos. Es fácil encontrar buenos ejemplos de desarrollos grandes con JSP o ASP.NET o con otra cantidad de lenguajes. Creo, encarecidamente que el verdadero problema de los proyectos está en quien los gestiona. Una buena gestión de un proyecto, incluso con recursos mediocres puede dar buenos resultados. Conoce y explota lo que tengas y apóyate en profesionales. Y por favor… ¡¡Huye de los Tecnicoless!!

24 comentarios:

Anónimo dijo...

Ayer mismo pasé de ser super-experto-que-lo-flipas en un CRM a ser mega-master-de-la-muerte en un EAI SOA (Lo que todos quieren ahora).

Y luego que porque las cosas salen como salen.

kabracity dijo...

Real como la vida misma, cada vez que escucho eso de "me han dicho que...", "he leído que lo mejor es....", o ya incluso "ha salido en el telediario que..." "no se kien lo tiene hecho y no tiene ni idea así que tú en 5 minutos lo sacas(me gustaría ver qué tiene realmente hecho no sé kien,si lo hizo él mismo y en cuánto tiempo)" me pongo a temblar.

Chulo el artículo, está bien empezar la manyana con una sonrisa :)

Anónimo dijo...

Muy bueno, jajaja

Pedro Laguna dijo...

No se porque pero me suena este articulo... :P

Aun asi muy bueno :)

nosoynadie dijo...

Gracias por el texto :-) Si es que además de ser un crack en la seguridad vas a resultar ser el primo hermano de Faemino..

Lluis Franco dijo...

¡AMÉN!
:-)

Recuerdos desde Andorra,

Dark_TuxVader dijo...

Joder veo que se cuecen habas en todos lados... veo lo que pones y pienso que trabajamos en el mismo sitio. Yo estoy con 2 o 3 o 4 ''''proyectos'''' a la vez en Mono y como la puta de turno voy cambiando según la "iluminiscencia" del jefe de proyectos ese día... resultado llevo un año que no doy pez con bola.

Ala vamonos pa Irlanda!!! y tomar por culo

Chen dijo...

Buenísmo. Me he reído un montón. Enhorabuena!!

Asfasfos dijo...

Habría que cortarles la cabeza a algunos jefes de proyecto, y aun así seguirían dando mal jajaja!!!

alex dijo...

Si es que el mundo está lleno de entendidos que saben de todo xD

TheSur dijo...

Pero entonces, de quien es el problema?

¿Del informatico que no sabe aplicar X tecnologia?
¿Del jefe por ordenar X tecnologia?
¿De los asesores por recomendar X tecnologia?... ¿O del blogger por afirmar que eso es la panacea?, pobre jefe!

SuMMuN dijo...

Jajaja, toda la puta razón.
Saludos!!!

D. Rubia dijo...

TheSur: el problema es de organización, hay algo que se llama Ciclo de vida del Software / ingeniería del Software.

Cuando se estudia no es solo para aprobar

Ubersoldat dijo...

que miedito... yo ya estaría actualizando en infojobs... aunque si esto es malo, creo que es peor cuando tus jefes te envian a un proyecto del que no tienes ni idea de qué va.

Anónimo dijo...

Impresionante, ha sido como leer lo que siento en el curro a diario :)

Ubersoldat dijo...

Me ha recordado el tema:

http://www.dilbert.com/comics/dilbert/archive/images/dilbert2007113333116.gif

Asier dijo...

La fase 2 me resulta muy familiar, salvo en alguna excepción y que no tenia que ver con el trabajo que me estaban pidiendo, los gastos de formación siempre han corrido de mi bolsillo...

Un saludo Chema

david dijo...

Había pensado alguna vez proponer el tema para este foro:
¿Te sientes valorado en tu trabajo? Y no sólo por los jefes, sino también por los clientes.
Con lo de hoy ya tengo alguna pista.

Yo estudié por vocación, pero tengo compis de carrera que lo hicieron por pasta. A finales de los 90, la gente se marchaba en 4 y 5 de carrera. Los venían a buscar las empresas. Y les daban mucho dinero. Ahora están bastante frustados. (Lo que no quiere decir que sean unos tecnicoless)

Y la pasata no es lo más importante para mi, pero me jode la poca valoración y puta idea de nada. Amigos, fuego con ellos.

Saludos y un cubata en nombre del santo, que hoy es "San Teleco" en Vigo.

Maligno dijo...

Yo soy vocacional puro de esto. "Papa, quiero ser informático" dije con 12 años y ... hasta hoy.

Si no te gusta esta profesión es una putada de curro...

TheSur dijo...

@d.rubia: Sea dentro o fuera del ciclo de vida del software esas preguntas continuan ahi a la hora de determinar que tecnologias cumplen los requisitos para el proyecto

/Manu~

Mikelats dijo...

Enhorabuena, un artículo excelente.

De todas formas, un poco de marketing aplicado a nuestro trabajo no viene mal. Marketing en el buen sentido de la palabra, no lo que suelen hacer los "vendedores de humo" que tanto abundan en informática.

Vamos, que muchas veces tampoco transmitimos las necesidades de nuestra profesión. Como se suele decir "hay que saberse vender".

Saludos.

mikelats dijo...

A ver,
No se si me he explicado...

Lo que hay que saber vender es que hacer las cosas bien ahorra dinero, tiempo y problemas.

Justo lo que nos piden quienes nos contratan.

Generico dijo...

Buenisimo el articulo.

A mi me pasa lo mismo con mi jefe.
Busca en Google que esta todo :D Y claro depues pasan los desastres que pasan.

Maligno dijo...

¿A qué parece que todos trabajamos en sitios similares? Qué lastima, ¿no?

Eleven Paths Blog

Seguridad Apple

Entradas populares