Saltar al contenido
Foto de José Luis Iglesias Feria, Arquitecto de Software y Senior Backend Developer

Aplicar las buenas prácticas es una inversión. Quizá al principio avances más lento, pero luego, no solo vas a recuperar todo ese tiempo, sino que avanzarás más rápido, reduciendo costes.

Si no lo haces, estás contrayendo una deuda. Una deuda que, antes o después, pagarás con tu tiempo y con tu dinero. Una deuda que incluso puede arruinar a tu empresa.

Crear software es fácil, cualquiera puede hacerlo.
Y crear software de calidad tampoco es difícil,
siguiendo ciertas prácticas cualquiera puede hacerlo también.

Todos los días intento ser mejor profesional,
hacer las cosas lo mejor posible
y crear software fácil de mantener y escalar.

Hola, me llamo José Luis Iglesias Feria,
soy un arquitecto de software y desarrollador senior
con casi 30 años de experiencia.

Desde pequeño me apasiona la programación
y estoy empeñado en hacerlo de la forma
más eficaz, mantenible y escalable posible.

Pensando
Pensando
using Clean.Code;
using SOLID;
using Clean.Arquitecture;
using DDD = Domain-Driven.Development;
using BDD = Behavior-Driven.Development;
using TDD = Test-Driven.Development;
using Agile = Scrum_Kanban_XP;
using Git_GitHub_GitLab;

namespace JoseLuis.Iglesias.Feria;

public enum FrontEnd
{
    ASP.NET_MVC,
    ASP.NET_API_Web,
    HTML5,
    CSS3,
    JavaScript6,
    TypeScript,
    Angular
}

public enum BackEnd
{
    C#,
    .NET,
    LINQ,
    Entity_Framework,
    RegEx,
    Kafka,
    RabbitMQ
}
using SQL;
using XML;
using JSON;
using YAML;
using Markdown;

namespace JoseLuis.Iglesias.Feria;

public enum Bases_de_Datos
{
    Microsoft_SQL_Server,
    PostgreSQL,
    MySQL,
    MariaDB,
    Oracle,
    SQLite
}

public enum NoSQL
{
    MongoDB,
    Azure_Cosmos_DB,
    Cassandra,
    Redis,
    ElasticSearch
}
using Cloud = Azure.Cloud;
using On-Premise = Windows_and_Linux;
using DevOps;
using CI/CD;
using Docker;
using Kubernetes;

namespace JoseLuis.Iglesias.Feria;

public enum Arquitecturas_De_Software
{
    Monolito_Modular,
    Cliente-Servidor,
    P2P,
    N-Capas,
    Microservicios,
    APIs_RESTful,
    APIs_SOA,
    Microkernel,
    Event-Driven,
    Event Sourcing,
    Queues-Filters
}
using Requisitos.Funcionales;
using Requisitos.No.Funcionales;
using Atributos.De.Calidad;

namespace JoseLuis.Iglesias.Feria;

public enum Patrones_De_Arquitectura
{
    CQRS,
    DTO,
    DAO,
    Repository,
    Polling,
    Webhook,
    Load_Balancer,
    Service_Registry,
    Service_Discovery,
    API_Gateway,
    Access_Token_JWT,
    SSO,
    Circuit_Breaker,
    Log_Aggregation
}

Descubro mi Pasión

La primera vez que pude tener un ordenador entre mis manos fue en 1987, con apenas 9 años: enseguida supe que sería mi pasión.

Aunque mis padres no podían permitirse el lujo de comprarme un computador, tuve la suerte de estar en un colegio con algunos Amstrad CPC 128k y un profesor apasionado por la programación en BASIC.

Con 13 años iba todos los sábados por la mañana a un centro asociado a IBM en Madrid para aprenderlo todo sobre los computadores y los lenguajes de programación: Visual Basic, C y C++, sobre todo.

Foto de un Amstrad CPC 128k de 1985
Amstrad CPC 128k de 1985
Logotipo de Entradas.com
public enum Frontend
{
    HTML,
    CSS,
    JavaScript
}
public enum Backend
{
    ASP,
    Visual Basic,
    Java,
    Sql_Oracle
}

Internet y Primer Trabajo

A mediados de los años 90 descubro algo nuevo llamado Internet. Así que, tras aprender todo lo que pude sobre redes, servidores y HTML, comencé a trabajar en la startup que luego dio lugar a Entradas.com.

Por un lado, fui uno de los responsables del diseño y programación de las primeras versiones de la web, usando las primeras versiones de HTML, CSS, JavaScript, VBScript y ASP. Fue aquí donde aprendí la potencia e importancia de las expresiones regulares.

Por otro, tras aprender Java y PL/SQL de Oracle, colaboré en la programación y puesta en marcha de los servidores, redes y resto de infraestructura de comunicaciones con los cines y teatros. Y había que hacerlo rápido, ¡fueron los años del efecto 2000!

Hice buenas amistades, tuve grandes mentores y recuerdo con mucho cariño aquellos años llenos de ilusiones. Hubo momentos de estrés, pero estaba seguro de que Internet era el futuro.

La Burbuja Punto.com

Las inversiones llegan a Internet y me ofrecen mejores trabajos. Tras un breve paso por ClubRural.com, primero me ficha Telefónica para crear su web Akimusica.com y luego Weblisten.com para crear su tarifa plana. Ambas pioneras en la descarga y reproducción de música en streaming, ambas extintas hoy día.

Sigo diseñando y programando webs con HTML, CSS, VBScript y JavaScript. Pero me voy adentrando cada vez más en el backend y en la gestión del servidor web IIS.

Aparte de ASP, aprendo PHP. Aparte de Oracle, comienzo a usar Microsoft SQL Server. Al tiempo que sigo usando Java, C++ y Visual Basic para desarrollar algunas utilidades internas. Además, es por esta época que descubro los famosos patrones de diseño.

Fueron años de excesos, en inversión y en expectativas. Y a finales de 2001 todo se vino abajo. Aun así, fueron años para coger experiencia y aprender a ser profesional.

Mi último trabajo en Madrid fue en la también extinta Datadiar.com, desarrollando webs de streaming de vídeos y programas de gestión documental. Fueron tiempos duros, de mucho estrés, pero fue aquí donde descubrí la primera versión de C#, .NET y ASP.NET.

Logotipo de Club Rural
Logotipo de Telefónica
public enum Frontend
{
    HTML,
    CSS,
    JavaScript
}
public enum Backend
{
    ASP,
    PHP,
    Oracle,
    Microsoft SQL Server,
    C#_.NET_ASP.NET,
}
Logotipo de SGRsoft
public enum Frontend
{
    HTML_CSS_JavaScript,
    ASP.NET_MVC
}
public enum Backend
{
    C#_.NET_Framework,
    Python,
    Microsoft_SQL_Server,
    MySQL
}
public enum Arquitectura_de_Software
{
    Monolito_Modular,
    Cliente_Servidor,
    N-Capas,
    Microkernel,
    Patrones_de_Diseño,
    Servicios_Web,
    APIs_SOAP
}

De Madrid a Huelva

En 2003 decido cambiar de aires y me mudo de Madrid a Huelva, la tierra de mis ancestros. Desde el primer momento me enamoro de esta maravillosa tierra.

Tras unos meses de descanso, contacto con SGRsoft. Necesitan crear una nueva versión de su ERP para SGRs, sociedades semipúblicas que avalan operaciones financieras y técnicas a autónomos y PYMEs.

Han decidido desarrollarlo en N-Capas con C#, .NET Framework y Microsoft SQL Server. Y es así como me enfrento por primera vez a la creación completa de una arquitectura de software.

Pongo en práctica mis conocimientos sobre patrones de diseño y de arquitectura, de entidad-relación de bases de datos, y todo lo que hasta entonces había aprendido sobre lo que se debía y lo que no se debía hacer.

Me cuesta unas cuantas versiones beta, pero al fin doy con una arquitectura que creo que puede funcionar. Se convierte en la base de muchos desarrollos posteriores., incluidos algunos con arquitectura de Microkernel.

El proyecto se prolonga por varios años y hoy día me doy cuenta de algunos errores que cometí y cosas que se podrían haber mejorado. Ojalá hubiera sabido más entonces sobre buenas prácticas. A pesar de ello, me siento orgulloso que 20 años después mi código y mi arquitectura sigue siendo la base de todos sus desarrollos.

Es la empresa en la que más año he estado, y no solo trabajé desarrollando el ERP. También estuve implicado en el desarrollo web con ASP.NET MVC, la creación y mantenimiento de APIs SOAP, incluso algunos servicios web de inteligencia artificial con Python.

UNED: Ingeniería, Grado e Inglés

Entre 2008 y 2012, mientras trabajo en SGRsoft, me saco la Ingeniería Técnica Informática de Sistemas por la UNED de Huelva, con la especialidad de Inteligencia Artificial. Pensaba hacerlo poco a poco, pero me pilla el cambio del Plan Bolonia y me dan 6 años máximo para terminarla: al final lo conseguí en 4.

Son años de mucho esfuerzo, ya que por las mañanas trabajo y por las tardes-noches y los fines de semana, estudio. Al menos, toda mi experiencia previa trabajando como desarrollador me vienen muy bien, incluso saco buenas notas.

Unos años más tarde, en 2016, hago el curso necesario para obtener el Grado en Ingeniería Informática, también en la UNED de Huelva, y mejoro mi inglés al alcanzar el nivel B2 en el CUID de dicha universidad (Certificado ACLES). Actualmente estudio para el C1.

Logotipo de UNED de Huelva
Logotipo de CUID de UNED
public enum UNED_Huelva
{
    Grado_Informática,
    Ingeniería_Técnica_Sistemas,
    Inteligencia_Artificial,
    B1_Inglés,
    B2_Inglés
}
Logotipo de freely.es
public enum Buenas_Prácticas
{
    TDD,
    DDD,
    Clean Architecture,
    SOLID,
    Clean_Code
}
public enum Arquitectura_de_Software
{
    APIs_REST,
    Microservicios,
    Event-Driven,
    CQRS_Event-Sourcing
}
public enum Backend_Frontend
{
   HTML5_CSS3_Javascript,
   JQuery_Bootstrap,
   C#_.NET_ASP.NET_MVC,
   Entity_Framework_LINQ,
   PHP_MySQL,
   Python_Django_PostrgreSQL,
   NoSQL_MongoDB_Cassandra
}
public enum Business_Intelligence
{
    ETL,
    Cubos_OLAP,
    Data_Warehouse,
    KPIs
}

Consultor Freelance y CTO

En 2012 decido emprender y con un grupo de socios creamos freely.es, una red social para periodistas. Al mismo tiempo, me dedico a realizar consultoría tecnológica para autónomos y PYMEs, sobre todo en desarrollo web y arquitectura de software.

Fueron años de mucho aprendizaje, tanto en desarrollo de software como en gestión y cultura empresarial. Y, por primera vez, puedo montar una solución completa aplicando buenas prácticas.

SOLID, Clean Code, DDD, TDD y Clean Architecture, comienzan a formar parte de mi vida, combinados con XP, Kanban y Scrum. También comienzo a usar Git como control de versiones.

Creo APIs REST y Microservicios, aplico patrones como CQRS, Event-Driven o Event-Sourcing, comienzo a usar Docker y a manejar bases de datos NoSQL, como MongoDB y Cassandra.

En el backend sigo con C#, .NET y ASP.NET MVC, ampliando conocimientos con Entity Framework y LINQ. Pero también pruebo con PHP sobre MySQL, y con Python y Django sobre PostgreSQL y SQLite.

En el frontend me paso a los nuevos HTML5, CSS3 así como JQuery y Bootstrap.

Incluso programo algunos algoritmos de IA con Numpy y Scikit-learn.

Son años de aprender, probar y mejorar. Toda esta experiencia me lleva en 2015 a trabajar como consultor freelance. Aprendo a crear buena documentación, a manejarme con soltura en UML, y me adentro en el mundo del Business Intelligence: ETL, Data Warehouses, cubos OLAP y KPIs empiezan también a formar parte de mis conocimientos.

No me hice rico, incluso hubo momentos de apuros económicos, pero me dio lo suficiente para vivir durante unos años y adquirí muchos conocimientos y experiencia.

IA y Machine Learning

Desde siempre me ha atraído mucho la inteligencia artificial. Es por eso que, cuando hice la Ingeniería Informática Técnica de Sistemas, cogí la especialidad de IA, cursando todas las asignaturas que había en la UNED sobre este tema.

Además, entre 2012 y 2019, hice una serie de cursos MOOC en Udacity y Coursera sobre machine learning y deep learning, impartidos por referentes de la IA, como son Sebastian Thrun, Peter Norvig y Andrew Ng.

No solo aprendía las base de la IA, sino a crear mis propios algoritmos, programas y servicios usando Python, Numpy, Scikit-learn, OpenCV, Tensorflow o Keras. Desde los algoritmos más sencillos a las redes neuronales más complejas.

En 2022 aprendí a usar la librería ML.NET y me certifiqué en Azure IA Fundamentals.

Con todo lo que aprendí, en 2015 cree un canal en YouTube llamado «Descubriendo la Inteligencia Artificial». Llevo publicados más de 200 vídeos sobre algoritmos de IA y machine learning.

Logotipo de Udacity
Logotipo de Coursera
Logo del canal de YouTube Descubriendo la Inteligencia Artificial
Logotipo de Fundación I+D Software Libre (Fidesol)
Logotipo de Lucera Energía
public enum Arquitectura_Cloud
{
   Azure,
   CosmosDB,
   CI/CD,
   Microservicios,
   API_RESTful,
   Docker,
   API_Gateway,
   Queues
}
public enum Backend
{
    ASP.NET_MVC
    ASP.NET_API_Web,
    CQRS,
    MongoDB,
    PostgreSQL
}
public enum Frontend
{
    HTML5_CSS3_Javascript,
    Angular_TypeScript
}

Microservicios y Azure Cloud

En 2017 vuelvo temporalmente a SGRsoft para desarrollar algunos servicios de intercambio de datos con el Banco de España y la AEAT, además de un CRM específico para SGRs. Buscando documentación para ello, comienzo a investigar y probar algunos servicios de Azure Cloud.

Tras la pandemia, me voy a Fidesol (Fundación I+D Software Libre), donde gestiono 2 proyectos: un gestor de siniestros para el ERP de una empresa de transportes y una solución integral para la instalación de luces de emergencia. En ambos, aplicando las buenas prácticas (SOLID, TDD, DDD, Clean Architecture, Refactoring, Clean Code, XP) sobre un CI/CD de GitHub.

Hacemos uso extensivo de microservicios RESTful desplegados sobre varios contenedores Docker. Cada uno con su propia base de datos (PostgreSQL y MongoDB), intercambiando datos mediante una cola de eventos. Para el frontend usamos Angular y TypeScript.

En Lucera, donde también le dan mucha importancia a las buenas prácticas, seguí ampliando mis conocimientos en arquitectura de software. Hacen un uso muy extensivo de CQRS, Queues y múltiples servicios de Azure Cloud, con un CI/CD híbrido entre Gitlab y servidores propios.

Aquí también he tenido la oportunidad de crear algunos algoritmos de IA y machine learning. Por ejemplo, para realizar predicciones de consumo o para segmentar clientes.

Foto de José Luis Iglesias Feria

«Soy muy curioso, me encanta aprender y divulgar lo que aprendo».

Soy una persona muy curiosa, a la que le encanta aprender, y aprendo rápido. Siempre estoy investigando sobre todo tipo de temas, no solo tecnológicos. Me gusta estar al día y soy bastante autónomo y proactivo.

Y no solo me gusta aprender, también me gusta divulgar lo que conozco. Se me da bien explicar y hablar en público, ya que tengo buenas dotes para la comunicación, tanto oral como escrita. Creo que compartir conocimientos es fundamental para avanzar como sociedad.

Me considero una persona organizada y responsable, que intenta cuidar los detalles y mejorar todos los días. Soy una persona positiva, empática y sociable: me encanta trabajar en equipo.

Me gusta luchar por la igualdad, la equidad y la inclusión. Así como guiar y ayudar al que lo necesite. Todas las personas merecen un respeto, y no ser juzgadas, apartadas o discriminadas por ninguna razón.

using Salud.Mental;

namespace JoseLuis.Iglesias.Feria;

public enum Aficiones
{
    Física,
    Matemáticas,
    Filosofía,
    Psicología,
    Historia,
    Arte,
    Ciencia_Ficción
}

public enum Vida_Sana
{
    Alimentos_Saludables,
    Ejercicio,
    Voluntariado,
    Divulgación,
    Salud_Emocional,
}