Tengo un blog de tecnología, SAP, Consultoría IT e Inteligencia Artificial, publico un artículo nuevo aproximadamente cada semana, trabajo, tengo hijos, hago ejercicio (intento), leo y tengo vida social.
¿Cómo es posible? Tus artículos los está escribiendo la inteligencia artificial.
Pues, ¡oh sorpresa!, eso no es así.
Por supuesto que uso ChatGPT para investigar y aprender sobre varios de los artículos que escribo. Pero esto tiene matices que vamos a ver.
Información de SAP
Esto es mi área de conocimiento, llevo más de 16 años trabajando en esto, empecé cuando mi única fuente de información era mundosap.com (hasta que me di cuenta que en español no iba a encontrar nada). Luego vinieron los foros de SAP, las paginas de help.sap.com, los cursos gratuitos de SAP, impartir cursos, luchar en proyectos, etc. Sé muchas cosas, pero desconozco muchísimas más, el mundo SAP es muy vasto y, como cualquier tecnología, está en continua evolución. Podemos decir que me suena todo un poco, sé por donde pueden ir las cosas.
Bueno, el tema es que cuando quiero investigar algo de SAP y uso ChatGPT, por ejemplo cuando tengo un problema en el trabajo, o estoy escribiendo de algo en el blog, ChatGPT se tira unos triples que ni Kobe Bryant. Y yo los identifico, porque sé lo que podría ser y me suena a mentira, porque busco fuentes alternativas o porque tengo sistema para corroborar.
En SAP la transacción para hacer un pedido de churros es la CHURRI
Las alucinaciones de ChatGPT (y cualquier otra IA)
No lo voy a explicar yo.
Está clarísimo. Lo importante es que «genera información incorrecta» que «suena plausible«. Y, como no sepas del tema del que habla, puedes creer que es correcta. Esto está relacionado con el artículo que escribí sobre la dependencia excesiva o «Overrelaince».
Esto me pasó el otro día, quería recalcular los precios de una Sales Quotation de un SAP CRM 7 por medio de un programa, algo que no es novedoso. SAP CRM 7 lleva años en usándose (desde el 2009). Podría buscar en mi repositorio histórico de código pasado donde he hecho esto, pero pensé que sería más rápido usar a mi amigo ChatGPT, pero enseguida vi que me estaba engañando.
Todo parece muy plausible, pero inútil, una pérdida de tiempo y frustrante
¿Cómo usar ChatGPT para temas tecnológicos?
Al final, lo que a mi me ha valido es pedirle que busque en internet y me de una lista de webs con un resumen del contenido. Esto sirve para enfocar el tema, ver qué trata cada web y acceder a investigar en aquellas que sí que sean relevantes para lo solicitado.
Esto ya es otra cosa
No queda otra que seguir leyendo internet para ver si alguien ha tenido la misma duda o aporta información que sea relevante para lo que quieras obtener, como siempre, pero guiado. Este método tampoco es perfecto, porque va a darte referencias que no encajan con lo que buscas, pero al tener el resumen de cada enlace, puedes descartarlo directamente.
En conclusión
No te creas ciegamente lo que dice la Inteligencia Artificial, tampoco te creas ciegamente lo que dice tu compañero de trabajo Paco. Ten espíritu crítico, contrasta la información, busca otras referencias. La Inteligencia Artificial es una herramienta, pero no va a solucionar todos tus problemas (por ahora). En ocasiones será frustrante porque ves que lo que te da no funciona, no existe o es incorrecto. Pero siempre, siempre, siempre te dará pistas que, si tienes olfato para saber rastrear, te pueden llevar a la solución.
En la entrada anterior de esta serie de artículos sobre OData ‘OData y SAP Gateway – II – Publicar un servicio OData en SAP‘ creamos un servicio muy básico de consulta de Business Partners. Ahora toca añadir más funcionalidad a ese servicio que creamos en el anterior artículo. Antes de nada, vamos a recapitular.
Serie de Artículos sobre OData
Este artículo pertenece a una serie de artículos que se van complementando poco a poco como itinerario de conocimiento:
Recuperamos cómo era el modelo de datos del servicio que queríamos publicar.
Como podemos ver en el diagrama Entidad-Relación tenemos una Entidad padre «Business Partner» que tiene cuatro entidades relacionadas:
Roles del Business Partner
Direcciones del Business Partner
Relaciones del Business Partner
Números de Identificación del Business Partner
Además, este ejemplo lo hemos hecho sencillo, con un solo nivel de relación, por tener un escenario controlado y que esto no se convierta en algo inmanejable de explicar pero, como podreis imaginar, las entidades subordinadas pueden tener otras subentidades a su vez.
Proyecto SAP Gateway creado
Además creamos el siguiente proyecto de Gateway con las entidades del modelo de datos y las relaciones/asociaciones.
Donde vemos que al crear las asociaciones se crean tambien Association Sets y Navigation Properties desde la entidad Padre a las hijas.
Clase de Implementación
En la clase de implementación que crea el proyecto de Gateway ZCL_ZODATA_TEST_BP_DPC_EXT redefinimos solo un método, el GET_ENTITYSET de la entidad BUSINESSPARTNERS.
Pero claro, ahora estamos hablando de relaciones entre entidades, y queremos saber cómo implementar consultas de Business Partners que nos traigan las subentidades de cada BP (Roles, Direcciones, Relaciones con otros BPs y Números de Identificación).
Para ello nos va a valer la Query simple que implementamos, pero queremos que, cuando llamemos a la consulta, nos devuelva los BPs y sus entidades relacionadas.
Uso del $expand en la consulta
Para poder consultar las subentidades de cada entidad en una consulta, usaremos en la URL de llamada al servicio la sentencia $expand. Podemos ver la documentación oficial OData al respecto de la sentencia $expand. Por ejemplo si hacemos una búsqueda de Business Partners y, para cada uno de ellos queremos saber sus roles, realizaremos la consulta de este modo. Para ello ponemos en el Gateway Client (/IWFND/GW_CLIENT).
Error Method ROLESSET_GET_ENTITYSET not implemented
Pero nos da ese error, y esto es porque no hemos implementado el método del GET_ENTITYSET (dame la colección de datos) de la entidad ROLES.
Implementar el GET_ENTITYSET
Para implementar el GET_ENTITYSET nos iremos a nuestra clase Z*DPC_EXT y buscaremos el GET_ENTITYSET de nuestra entidad que queremos consultar. Y redefinimos el método.
Pero claro, una vez redefinido, tenemos que implementar la lógica al respecto de esa acción (GET_ENTITYSET) de esa entidad (ROLES). Vemos que en la firma del método tenemos muchos parámetros de entrada y un par de salida. Son los siguientes:
Parámetros de Entrada
IV_ENTITY_NAME: Nombre de la entidad que se va a manejar en el método. Normalmente, cuando hablamos de métodos propios de una entidad concreta, como es el caso, será irrelevante. Pero en otras ocasiones se trata de métodos genéricos, donde tenemos que cambiar la lógica de la acción propuesta en base a este método.
IV_ENTITY_SET_NAME: Lo mismo que el anterior pero con el EntitySet.
IV_SOURCE_NAME: Nos dirá si partimos de una entidad superior o no y cual es.
IT_FILTER_SELECT_OPTIONS: Tabla con los campos de selección que se hayan usado para la búsqueda del EntitySet mediante la sentencia $filter. En este caso si hemos añadido algún criterio de selección para los Roles. Puedes ver la documentación oficial OData sobre el FILTER.
IS_PAGING: Nos indica el TOP y SKIP para la consulta, esto sirve para acotar el número de resultados y poder paginar. Por ejemplo, si tenemos 1000 registros pero ponemos un TOP de 100 y un SKIP de 500, recuperaremos del 501 al 600. Puedes ver la documentación oficial OData sobre el TOP y SKIP.
IT_KEY_TAB: Si hemos accedido a la entidad por una clave, la suya o la de una entidad superior, en el campo KEY TAB vendrán las claves por las que se accede al EntitySet.
IT_NAVIGATION_PATH: Tabla que contiene la ruta de navegación entre entidades.
IT_ORDER: Tabla con los criterios de ordenación deseados para recuperar los datos de la colección del EntitySet. Puedes ver la documentación oficial OData sobre ORDERBY.
IV_FILTER_STRING: El string de búsqueda con los campos y los valores buscados. Es una forma distinta de manejar los criterios de búsqueda de la tabla IT_FILTER_SELECT_OPTIONS.
IV_SEARCH_STRING: Permite realizar búsquedas de texto completo en los datos de una entidad. Este parámetro permite indicar una cadena de búsqueda que se aplicará a varios campos de la entidad, haciendo más fácil encontrar registros que contengan el texto indicado en cualquier parte de esos campos.
IO_TECH_REQUEST_CONTEXT: Este parámetro proporciona información técnica sobre la solicitud actual. Contiene detalles relevantes del contexto técnico de la llamada al servicio OData, permitiendo acceder a datos importantes para el procesamiento de la solicitud. Desde este parámetro podemos recuperar mucha información:
Usuario llamante
Cabecera HTTP
Parámetros de la URL
IP del cliente
Parámetros de la Query
Parámetros de Salida
ET_ENTITYSET: Tabla de datos de salida de la consulta para devolver el conjunto de entidades (EntitySet) solicitado. Es una tabla interna, con el tipo de datos de la entidada, que contiene los datos que se devuelven al cliente como resultado de la consulta. Por lo tanto, es la tabla resultado que tenemos que rellenar con los datos buscados una vez aplicados los criterios de entrada.
ES_RESPONSE_CONTEXT: Es una estructura de salida de la consulta OData, contiene metadatos sobre la respuesta, como el número de registros devueltos, información de paginación, y cualquier mensaje de error o advertencia.
Implementación de ROLESET_GET_ENTITYSET
Bueno, mucha explicación de lo que son todos los parámetros que se manejan en el GET_ENTITYSET pero no mostramos cómo hacerlo en la práctica. Como es imposible abarcarlo todo en un artículo, los ejemplos de implementación serán sencillos, para complicarlo está la definición de los parámetros del GET_ENTITYSET.
Lo primero que vamos a hacer es ver qué nos llega en la entrada cuando usamos un $expand desde la entidad padre. Para ello, lo que queremos es parar la ejecución en ese método, lo que yo hago es poner una sentencia absurda para poder poner un Breakpoint externo.
Si alguna vez se cumple esto sal corriendo
Al ejecutar de nuevo la llamada en el Gateway Client (/IWFND/GW_CLIENT)
Se abre la sesión debug en el breakpoint externo y podemos ver los datos que nos vienen:
Ahora podemos ver la definición de cada campo que hemos hecho arriba para entenderlo. Vemos que la entidad buscada (IV_ENTITY_NAME) es «Roles» que el origen (IV_SOURCE_NAME) es «BusinessPartner», que no tiene criterios de búsqueda añadidos, ni paginación, ni orden,que la tabla IT_NAVIGATION_PATH tiene un registro con la navigation properties RolesSet desde BusinessPartner, y tiene una clave en la tabla IT_KEY_TAB.
Ahí tenemos nuestro Business Partner padre
Ahora, teniendo el campo Partner en la tabla IT_KEY_TAB vamos a implementar la lógica para rellenar el RolesSet.
Este código se ejecutar una vez por cada Partner servido
Si ahora ejecutamos nuestra sentencia ya veremos datos de los roles de cada uno de los registros de Business Partners.
Implementar GET_ENTITYSET del resto de entidades
Una vez tengamos implementado el GET_ENTITYSET de las subentidades nuestra clase Z*DPC_EXT quedará de este modo:
Y para el que le interese los GET_ENTITYSET quedarán de esta forma:
AddressSet
IdentNumbersSet
RelationSet
Seleccionar las entidades a recuperar
Pero claro, tenemos cuatro subentidades subordinadas de BusinessPartner. ¿Cómo tenemos que hacerlo? Para hacerlo pondremos en la sentencia $expand las subentidades que queramos recuperar, separadas por coma. En nuestro ejemplo la sentencia total sería:
El resultado será que, para cada Business Partner, tendremos su colección de Roles, Números de Identificación, Direcciones y Relaciones. Por supuesto, para cada subentidad, tendremos que implementar su GET_ENTITYSET correspondiente.
Lo importante de esto es que podemos elegir qué subentidades recuperar, haciendo la recuperación de datos selectiva y dependiente del llamante.
Vamos a hablar de algo que me ha sucedido a mí (y me sigue sucediendo) y a mucha otra gente cuando asume ciertas responsabilidades o estatus en sus áreas de conocimiento y trabajo. No, no es que debido a eso atraigas más al sexo opuesto, eso sólo me pasa a mi. Estoy hablando del Síndrome del Impostor.
Y es que llegas a un proyecto, hablas con un amigo o compañero de profesión, hablas con un cliente o asumes una responsabilidad acorde a tu conocimiento y sientes que estás engañando a los demás, que tu no tienes los requisitos ni el conocimiento para asumir ese estatus, o responsabilidad. Sientes que eres un impostor, asumiendo un rol para el que no tienes capacidad o conocimiento.
¿Qué es el Síndrome del Impostor?
El síndrome del impostor se caracteriza por la creencia persistente de no ser lo suficientemente bueno o competente, a pesar de evidencias que demuestran lo contrario. La persona puede sentir que su éxito se debe a la suerte, o que ha engañado a los demás para que piensen que es más competente de lo que realmente es.
Esto puede suceder en muchos ámbitos de la vida pero se expresa con más claridad en el mundo laboral, al estar muy marcadas las responsabilidades y los perfiles.
Características Principales
Hay varias características del síndrome del impostor que se pueden dar
Auto-duda: Una desconfianza constante en las propias habilidades y logros.
Atribución a factores externos: Tendencia a atribuir el éxito a la suerte o a la ayuda externa.
Miedo al fracaso: Miedo constante de no cumplir con las expectativas y ser descubierto como un «fraude».
Perfeccionismo: Estándares personales extremadamente altos y miedo a cometer errores.
Resumiendo, crees que no vales para la responsabilidad que tienes, ya sea porque crees que estás engañando al resto o porque tu visión es de llegar a retos imposibles.
No sé decir «No»
Uno de los problemas es meterte en jardines que te van a generar incertidumbre o que están por encima de tus posibilidades y habilidades. No saber decir que «No» a los demás o a ti mismo te puede meter en un hoyo, en el cual creas que cavando más y más lograrás salir, y es justo al contrario.
Alguno sale por Nueva Zelanda
No sé. No puedo. Tengo otras tareas más prioritarias. Es imposible. No es mi responsabilidad.
Decir estas frases no te hace peor trabajador. Ser sincero es un aspecto positivo, ahora bien, en la sinceridad también está la responsabilidad siempre puede ir acompañado de un «haré lo que esté en mi mano» (pero no más de lo posible).
Nadie lo sabe todo y nadie es perfecto
A veces nos comparamos con otras personas que vemos como superiores a nosotros. No son perfectos, tu tampoco y nunca lo vas a ser (menos mal).
Yo nunca llegaré a sazonar así el entrecot
La estupidez es la felicidad
Si tienes este tipo de pensamientos, es porque eres capaz de evaluar las situaciones y fijas unos niveles de conocimiento y destreza inalcanzables, que son los que tú entiendes que son los óptimos para satisfacer una tarea. Pero la gente «normal» les vale con saber atarse los cordones, hacer lo que les mandan sin pensar en mejorarlo, hablar de fútbol y de política. Ellos en su falta de metas y autoexigencia son felices, y tú no. No te digo que hables de fútbol y política, pero tómatelo con calma. «Piano, piano si va lontano».
Métete un lápiz por la nariz para mejorar la experiencia
Celebra tus éxitos, valórate
Identifica y valora tus logros, si no te salen siéntate a escribirlos, si no te salen pregúntaselo a alguien de confianza que tendrá un juicio externo más claro. Ponte metas realistas y celebra su consecución.
Acabo de ir al baño. ¡Si!
En conclusión
No sé qué hago yo hablando de esto cuando no soy experto en nada de esto. Tampoco sé porqué tengo un blog de tecnología, si no soy ningún gurú y me falta mucho por conocer, hay mucha gente con mucho más conocimiento que yo. Voy a dejar el blog, me voy a apuntar a todas las ingenierías que haya y, cuando las tenga, podré ir dando lecciones. ¿Qué me he creído?
Hoy en «palabros en ingles de moda que usar en tecnología» vamos a hablar de los tipos de implementación de proyectos TI Greenfield, Brownfield y Bluefield.
Spoiler: que uno empiece por Green no significa que no pueda ser un marrón.
Los términos Greenfield y Brownfield provienen el mundo de la planificación urbanística y posteriormente se usaron para cualquier tipo de proyecto en cualquier ámbito. En este caso vamos a hablar de proyectos de implantación de TI, pero se va a entender la esencia para cualquier tipo de proyecto.
Greenfield
Greenfield se refiere a la creación de sistemas o proyectos desde cero, sin restricciones previas por trabajos existentes como un campo verde listo para ser construido (del urbanismo). En el ámbito tecnológico, esto implica la libertad de diseñar y construir utilizando las tecnologías más modernas y las mejores prácticas sin tener que considerar la integración o compatibilidad con sistemas antiguos.
Si conoces esta imagen ya eres un poco eXPerimentado
Vamos, un unicornio alado que resuelve todos los problemas sin mirar atrás. La realidad suele ser menos mágica. Esto es que implantes una solución que no se tenga que integrar con nada pasado y que resuelva un problema que o bien el cliente no tenía nada o bien el cambio es tal que es como hacerlo sin tener en cuenta lo existente.
Yo he estado en algunas de estas implementaciones, pero más porque se olvida el pasado y se realiza reingeniería de procesos.
Ventajas de los proyectos Greenfield
Bueno pues están bastante claras. Aunque alguna de ellas puede ser un arma de doble filo y suponer un reto.
Innovación: El cliente, y nosotros como implantadores, podemos elegir los productos, tecnologías y soluciones más innovadoras, sin restricciones (más allá del coste y el conocimiento) siempre se sea justificable y aporte el máximo valor. De esto se trata este trabajo, de modernizar empresas aportando las mejores soluciones y más innovadoras para estar en la vanguardia y tener una ventaja competitiva con la competencia.
Diseño: Permite tener libertad para diseñar la solución sin nada que nos ate y nos obligue con condicionantes.
Facilidad de mantenimiento: Al construir con tecnologías actuales, los sistemas son generalmente más fáciles de mantener y actualizar. Generalmente, que yo ya he visto mounstros de pocos años de vida.
Desventajas de los proyectos Greenfield
A su vez también tiene retos que sortear. Y aquí voy a repetir algunas de las ventajas, porque pueden traer problemas asociados.
Innovación: El papel lo soporta todo, y como el comercial de turno le de por vender lo último, de lo que no hay ni especialistas en el mercado, terminas en un Shitfield de campeonato. Además las empresas como SAP, Salesforce, etc a veces sacan productos muy innovadores que fallan más que una escopeta de feria. Y ahí estas tú, arreglandoles sus errores.
Diseño: Partir de la hoja en blanco también genera algo de vértigo. Además las reuniones con negocio y los keyusers depende mucho de la gente involucrada. Puede ser algo complicado de manejar.
Costo y tiempo: Diseñar y desarrollar un nuevo sistema puede requerir una inversión significativa de tiempo y recursos. Muchas reuniones para extraer requisitos, prototipos, pruebas de concepto, etc.
Brownfield
Brownfield se refiere a la transformación o cambio de sistemas existentes. Se trata de actualizar, extender o integrar nuevos componentes en infraestructuras o sistemas de software ya existentes. Puede ser un cambio de tecnología donde el cliente quiere mantener su funcionalidad pero usar una nueva tecnología como palanca para mejora, o puede ser cambio total de una funcionalidad pero en medio de un ecosistema complejo de integraciones.
No sé porqué quieren cambiar el sistema de gestión actual. ¡Si está perfecto!
Aunque comiencen por Brown, no necesariamente son peores que los Greenfield. Son los proyectos más habituales. Cambiar una pieza obsoleta por otra en un ecosistema complejo.
Ventajas de los proyectos Brownfield
Los proyectos Brownfield también tienen ventajas asociadas, quizás en el mundo del urbanismo sea más complejo, pero en el mundo de TI el que haya ya un camino sirve para fijarse en aciertos y errores.
Diseño más guiado: Al tener ya un mapa de procesos, casos de uso, funcionalidades imprescindibles, integraciones a mantener, etc, el diseño está más claro, pudiéndonos centrar en las áreas de mejora.
Aprovechamiento de activos existentes: Permite la reutilización de partes del sistema que aún son funcionales o valiosas.
Reducción de costos y tiempo: A menudo, es más económico y rápido mejorar un sistema existente que construir uno nuevo desde cero. Podemos decir que los esfuerzos del proyecto se mueven de una a otra etapa. Cuando ya tienes un sistema o aplicación desplegado el cliente sabe identificar su funcionamiento, sus puntos fuertes y sus debilidades.
Menor riesgo: Trabajar con tecnologías y sistemas probados reduce la incertidumbre.
Desventajas de los proyectos Brownfield
Dependencias con tecnologías obsoletas: Las dependencias con sistemas antiguos pueden limitar la innovación y la eficiencia. Además de no permitir implementar toda la funcionalidad posible en el sistema que estemos proponiendo. ¿Quién iba a decir que las comunicaciones Host-Host no iban a ser para siempre? ¿Qué es eso de REST? ¿OData?.
Complejidad y mantenimiento: Integrar lo nuevo con lo viejo puede resultar en sistemas más complejos y difíciles de mantener.
Resistencia al cambio: En proyectos Brownfield, puede haber una mayor resistencia al cambio, tanto a nivel técnico como cultural, dentro de la organización. Los usuarios y el personal técnico pueden estar acostumbrados a los sistemas existentes, lo que dificulta la adopción de nuevas soluciones.
Riesgos de seguridad: Los sistemas antiguos pueden contener vulnerabilidades de seguridad no detectadas o no corregidas, lo que puede representar un riesgo significativo al integrarlos con nuevas tecnologías o al intentar modernizarlos.
Retos en la gestión del proyecto: La gestión de proyectos Brownfield puede ser más compleja debido a la necesidad de equilibrar la operación continua de los sistemas existentes con el desarrollo e implementación de las nuevas soluciones.
Bluefield
El término Bluefield, aunque no es un término ampliamente utilizado en todo TI, en SAP tiene un papel específico, específicamente en la migración a sistemas hacía SAP S/4HANA, se considera una estrategia híbrida que combina elementos de los enfoques Greenfield y Brownfield. Este método permite a las empresas adoptar nuevas funcionalidades mientras conservan elementos valiosos de sus sistemas SAP existentes.
En un proyecto Bluefield, las organizaciones pueden seleccionar y migrar sólo los datos y procesos que son relevantes para su negocio actual, permitiendo mantener personalizaciones sin necesidad de rediseñar todo el sistema. Esto facilita una transformación que es documentada y clara, y que puede ejecutarse según las especificaciones del negocio. La implementación Bluefield también destaca por ofrecer flexibilidad, ya que permite la transición de sistemas y datos de manera selectiva, lo cual es ideal para empresas que buscan minimizar interrupciones y riesgos durante la migración
Ni Green, ni Brown, póngame un poco de todo
Por ejemplo, una empresa puede decidir utilizar Bluefield cuando necesite consolidar varios sistemas SAP locales en una plataforma SAP S/4 Hana unificada sin perder la continuidad de los datos históricos. Además, esta estrategia es útil para organizaciones que requieren una integración detallada y personalizada que no sería posible simplemente con un enfoque Greenfield o Brownfield.
En resumen, Bluefield ofrece un equilibrio entre la innovación y la utilización de activos existentes, proporcionando una opción viable para las empresas que necesitan tanto mantener como renovar sus sistemas con nuevas tecnologías.
En conclusión
En el afán de ponerle nombre a todo y adaptar las palabras que vienen del inglés vamos a ir asumiendo todo este tipo de términos que, de primeras, no van a sonar nada y luego ya los usarás en tu día a día.
Ya sabéis:
Hay que dejar pasar al menos cinco minutos desde que aprendes algo nuevo hasta que miras con desprecio a quien todavía no lo sabe
Confucio, el inventor de la Confusión año 500 A.C.
En resumen, ya sea que optes por un Greenfield innovador, un Brownfield eficiente o un Bluefield equilibrado, lo importante es encontrar la estrategia que mejor se adapte a las necesidades específicas de tu negocio. Y si te pierdes entre tantos términos, al menos ya tienes un arsenal de palabros nuevos para tu próxima reunión.
Así que me voy a una Meeting vía Call sobre un proyecto Greenfield que vamos a hacer Agile, que tengo luego un Afterwork.
Ahora, después de tres de meses del cambio realizado ya puedo volver a decir de nuevo «Cambio de rumbo».
Vuelvo a ser Freelance, vuelvo a un cliente conocido, que me quiere y del que conozco el negocio a la perfección. En este caso vuelvo con la empresa Avvale que, durante este proceso de cambio, no me ha podido tratar mejor y estoy agradecido.
Esto me ha llegado gracias al Networking, a que me conocían y me han dado todas las facilidades para entrar a trabajar con ellos. Tengo grandes amigos en Avvale (y en muchos otros sitios), gente que me conoce personal y profesionalmente. Por ahora entro como Freelance, que es donde me encuentro a gusto, pero ¿Quién sabe?, ahora lo que quiero es construir y, entre todos, alcanzar metas haciendo las cosas bien.
Quien quiera saber los motivos de que me haya ido de Deloitte que pregunte, dejo grandes amigos allí también y buenos recuerdos. Espero que les vaya bien y que nos veamos en este mundo que es un pañuelo.