Softwarementors

Softwarementors

Nuestros servicios - Proyectos Open Source - Un poco de historia - Por qué 'Softwarementors' - Publicaciones - Contactar

Un poco de historia

Softwarementors ha sido desde sus inicios en 2001 un proyecto personal, una fuerte apuesta por la excelencia en el desarrollo de software. Una apuesta que continúa y que cuenta ya con más de 15 años de historia.

En 2001, descontento con la calidad del software que hacíamos, decidí llevar a cabo un cambio radical en mi forma de llevar a cabo el desarrollo, y comencé a incoporar prácticas de programación ágil. Recuerdo que la primera técnica que adopté fue TDD, Test Driven Development, una de las prácticas preconizadas por el entonces emergente movimiento de la XP (eXtreme Programming): esta técnica apostaba por la creación de tests automatizados como primer paso en el desarrollo. Puedo decir que a día de hoy llevo escritos muchos miles de tests automatizados.

Este cambio de enfoque funcionó, y ya en el primer proyecto comercial en que lo adopté, el desarrollo de un driver de base de datos, fue un éxito. La calidad del driver resultó excelente, y en general quedé tan impresionado con el desarrollo basado en tests que decidí dar el salto completo a procesos de desarrollo ágiles. Atrás quedaron los procesos clásicos, que en 2001 dominaban el 99.9% de los desarrollos.

Ha pasado mucho más de una década, y la XP ha desaparecido como proceso independiente, aunque la gran mayoría de las prácticas que preconizaba se han popularizado y han sido adoptadas por equipos punteros en todo el mundo. A la XP le han sucedido otros procesos y enfoques, como el preconizado por Scrum, y casi todo ha cambiado. Pero hay dos cosas que no han cambiado para mi:

  1. El énfasis en la excelencia.
  2. El énfasis en procesos y técnicas ágiles, como medio probado de alcanzar la excelencia.

Desde 2002 he ayudado a introducir nuevas formas de trabajar en equipos ya consolidados, así como a crear nuevos equipos con un modo de trabajo ágil como núcleo de su cultura, usando mayoritariamente Scrum en los últimos diez años.

También he ayudado a definir e implementar arquitecturas complejas, especialmente el núcleo o core de negocio, en numerosos proyectos. He llevado a cabo formaciones sobre técnicas tales como el desarrollo basado en tests, el uso de DDD (Domain Driven Design) para el diseño de núcleos de negocio, técnicas de codificación robusta, patrones de diseño, etc.

En estos años ha sido importante muy importante para mi la contribución a la comunidad Open Source, creando y pilotando varios proyectos, y puedo afirmar que también en este tipo de escenario se ha validado el desarrollo ágil como un enfoque extremadamente efectivo.

En resumen, durante todo este tiempo la validez y oportunidad de seguir procesos ágiles, la necesidad de crear cores de negocio robustos y la validez de distintas prácticas ágiles como el TDD o la integración continua han sido validados una y otra vez. Puedo asegurar que nunca me he arrepentido de hacer la transición a una cultura centrada en la excelencia, basada en procesos ágiles. Porque funciona. Y por eso me dedico a ampliar su uso entre mis clientes, porque a ellos también les va a funcionar.

La elección de un nombre

Un elemento clave de mis colaboraciones con empresas, equipos y personas ha sido siempre la labor de acompañamiento, coaching, o mentoring, llámenlo como quieran. El objetivo ha sido capacitar y añadir competencias que funcionan en las trincheras, y no solo en la pizarra, para que otros puedan hacer exactamente lo mismo. Y para que ese acompañamiento sea lo más efectivo posible, se debe hacer en las trincheras.

De ese enfoque deriva el nombre de Softwarementors: nuestro objetivo principal es el mentoring, el acompañamiento en todo lo relacionado con el desarrollo de software.

Nuestros servicios

Actualmente hay dos modos de colaboración preferidos:

Puntualmente, es posible participar en algún proyecto como arquitecto, ayudar en la extensión de alguno de mis proyectos Open Source para cubrir las necesidades concretas de una empresa, la creación de librerías y protocolos, etc., pero estas actividades no suelen ser el foco principal de mis colaboraciones -aunque puedo estar abierto a ellas.

Nuestros proyectos Open Source

Me gusta el Open Source (¿y a quién no?), así que soy el creador e impulsor de algunos proyectos Open Source, a los que he dedicado parte mi tiempo libre de forma gratuita. En algún caso he conseguido esponsorización directa o indirecta de gente como Sencha, para los que estas librerías pueden suponer un alto valor añadido. Un tipo de colaboración que no he mencionado arriba, pero al que estoy totalmente abierto.

En el mundo del Open Source, DirectJNgine es mi proyecto más popular, con varios miles de usuarios. DJN es una librería para ExtJs que permite la comunicación directa entre un cliente Javascript y aplicaciones de servidor Java.

Otro proyecto público es Log4js-ext, una librería de logging que es una implementación de la popular API de Log4j para Javascript y ExtJs.

Por fin, he integrado Spring y JEE/CDI con DirectJNgine, creando conectores específicos para ellos, spring-djn y jee-djn. Finalmente, estos proyectos han ido a parar bajo el paraguas de DirectJNgine.

Nuestras publicaciones

En los últimos 20 años he publicado más de 70 artículos en revistas impresas, tales como Delphi Magazine, Visual Developer Magazine, RPP, Solo Programadores o Programación Actual. Hoy en día apenas quedan publicaciones impresas, y todas estas revistas han desaparecido. Pero no puedo evitar recordar con cariño estas colaboraciones, que en algunos casos eran muy, muy exigentes (¡que maravilla trabajar con los chicos de Delphi Magazine!).

Mi blog personal está centrado en temas de agilidad y de programación, mi gran hobby. De vez en cuando publico artículos extensos, como este sobre High Quality Java Code: Contracts & Assertions.

Es posible encontrar mis comentarios acerca de algunos libros técnicos sobre agilidad, programación, o cualquier otro tema que me interese aquí.

Contactar

email: pedro.agullo(at)softwarementors.com - Teléfono: +34 678 49 60 72