Se c’è una cosa che ho imparato in oltre quindici anni di sviluppo software è che scrivere codice rappresenta solo una parte del lavoro.
Per molto tempo mi sono concentrato sulla progettazione e lo sviluppo di applicazioni web, portali aziendali, gestionali e plugin WordPress, affrontando ogni progetto con un obiettivo preciso: realizzare software stabile, manutenibile e capace di risolvere problemi concreti.
Con il tempo, però, ho iniziato a rendermi conto che dietro ogni applicazione esiste un mondo molto più ampio del semplice codice.
Ogni software vive all’interno di un’infrastruttura, comunica con altri servizi, deve essere distribuito, aggiornato, monitorato e progettato per poter crescere nel tempo.
Ed è proprio qui che è iniziata la mia evoluzione professionale.
Non sto cambiando mestiere. Sto ampliando la mia prospettiva.
Qualcuno potrebbe pensare che studiare Go, Docker, Kubernetes e AWS significhi voler abbandonare PHP.
In realtà è esattamente il contrario.
Continuo a considerare PHP il linguaggio con cui ho costruito gran parte della mia esperienza professionale.
Quello che sta cambiando è il mio modo di osservare il software.
Oggi non voglio limitarmi a sviluppare applicazioni.
Voglio comprendere come vengono progettate, distribuite e mantenute in ambienti moderni.
Go: un modo diverso di ragionare sul software
Tra tutte le tecnologie che ho iniziato ad approfondire, Go è probabilmente quella che mi ha colpito maggiormente.
La sua filosofia è quasi l’opposto di quella di molti linguaggi moderni.
Meno astrazioni.
Meno complessità.
Più semplicità.
Più leggibilità.
Più attenzione alle prestazioni.
Durante il percorso di studio ho iniziato ad affrontare concetti come:
- goroutine
- channels
- select
- context
- gestione della concorrenza
Argomenti che inizialmente sembrano molto diversi rispetto allo sviluppo web tradizionale ma che, una volta compresi, cambiano il modo di progettare alcuni tipi di applicazioni.
Quello che più apprezzo di Go è la sua capacità di spingere lo sviluppatore verso codice semplice, leggibile e facilmente manutenibile.
Ed è una filosofia che sto cercando di portare anche nei progetti che continuo a sviluppare in PHP.
Docker: il software non è più solo il codice
Docker è stata probabilmente la tecnologia che ha modificato maggiormente il mio modo di lavorare.
Per anni ho sviluppato applicazioni pensando principalmente al codice.
Oggi mi ritrovo a ragionare anche sull’ambiente in cui quell’applicazione dovrà vivere.
Containerizzare un’applicazione significa renderla riproducibile, isolata e facilmente distribuibile.
Nel mio percorso sto approfondendo temi come:
- Dockerfile multi-stage
- Docker Compose
- network tra container
- persistenza dei volumi
- containerizzazione di database e servizi backend
Più studio Docker, più mi rendo conto che non è semplicemente uno strumento DevOps.
È un modo completamente diverso di pensare il ciclo di vita di un’applicazione.
AWS: comprendere davvero il cloud
Parallelamente ho deciso di seguire un percorso strutturato verso la certificazione AWS Certified Solutions Architect – Associate.
Non lo considero un semplice obiettivo da inserire nel curriculum.
Per me rappresenta un modo per comprendere come vengono progettate infrastrutture moderne, quali servizi utilizzare nei diversi scenari e quali compromessi sia necessario affrontare quando si progettano sistemi affidabili e scalabili.
Studiare AWS significa entrare in contatto con concetti come:
- alta disponibilità
- fault tolerance
- networking
- sicurezza
- storage distribuito
- bilanciamento del carico
Tutti elementi che stanno ampliando il mio modo di progettare software.
La curiosità come motore della crescita
Lo studio, però, non si limita ai corsi.
Una parte importante del mio tempo libero è dedicata anche alla formazione informale.
Mi capita spesso di seguire contenuti su YouTube dedicati a Terraform, Ansible, architetture cloud, DevOps e casi reali di progettazione software.
Non sempre con l’obiettivo di utilizzare immediatamente quelle tecnologie.
A volte lo faccio semplicemente perché osservare come ragionano altri professionisti è uno dei modi migliori per crescere.
Credo che uno sviluppatore non debba conoscere tutto.
Ma debba mantenere viva la curiosità.
Verso l’architettura software
Se dovessi riassumere in una frase la direzione che sto seguendo oggi, direi questa:
sto evolvendo il mio profilo da sviluppatore verso una visione sempre più orientata all’architettura software.
Non significa smettere di scrivere codice.
Significa comprenderne il contesto.
Capire come un’applicazione viene progettata, distribuita, monitorata e fatta evolvere nel tempo.
Credo che sia questo il naturale percorso di crescita per chi ama davvero costruire software.
Ed è esattamente la direzione nella quale sto investendo il mio tempo.
Conclusioni
Ogni tecnologia che sto studiando aggiunge un tassello alla mia esperienza.
Non sostituisce ciò che ho costruito negli ultimi quindici anni, ma lo completa.
Il mio obiettivo rimane lo stesso di sempre: progettare software di qualità.
Oggi, però, con una visione più ampia, che parte dal codice e arriva fino all’infrastruttura che lo ospita.
Perché credo che il software moderno non si costruisca conoscendo un solo linguaggio, ma comprendendo come tutte le sue componenti lavorano insieme.