Cosa ho imparato nel lavoro web federale
La prossima settimana sarà la mia ultima settimana nel contratto. Ho deciso di andarmene e, prima di proseguire, ho voluto mettere per iscritto quello che ho effettivamente fatto giorno per giorno.
Non ero un dipendente diretto dell'agenzia. Lavoravo per un appaltatore, assegnato al programma dell'agenzia come tech lead / architetto. Questa è la struttura dietro gran parte del lavoro web federale. Sei nel team giorno per giorno, ma la tua busta paga proviene da un'altra fonte.
C'è stato un processo di autorizzazione prima che potessi iniziare. Controllo dei precedenti, moduli, referenze, un'attesa. È standard per il lavoro a contratto federale e modella l'onboarding più della maggior parte dei lavori nel settore privato.
Cosa ho fatto effettivamente
La maggior parte del mio tempo è stata dedicata a siti di contenuti rivolti al pubblico. Migliaia di pagine, milioni di visitatori, contenuti in diverse lingue. La maggior parte delle traduzioni era gestita da un servizio esterno, MotionPoint. Alcuni siti utilizzavano la traduzione integrata di Drupal, per le varianti spagnola, cinese e coreana. Ognuna aveva le proprie particolarità riguardo agli URL localizzati e ai diversi sistemi di scrittura.
Gran parte del lavoro consisteva nel mantenere in salute un portafoglio di siti Drupal esistenti. Aggiornamenti di versione, aggiornamenti di moduli, correzioni e sviluppo di funzionalità. Ho anche partecipato a un progetto più ampio per consolidare oltre 400 siti Drupal in 8 hub. Quello è ancora in corso.
Ho eseguito audit. Inventario di migliaia di PDF. Controllo dell'accessibilità. Ricerca di link interrotti e contenuti obsoleti. La maggior parte di quel lavoro manuale si è trasformata in script Python. Audit PDF, estrazioni di analytics, scraper, controlli dei redirect, generatori di report. Il team ne utilizza ancora alcuni.
Ho supportato anche il team di analisi dei dati. GA4, Google Search Console e GTM. Estrazione di report, correzione di problemi di tagging, indagine su discrepanze e mantenimento della sincronizzazione del tracciamento con le modifiche del sito. Ho anche automatizzato parte della generazione dei report in Python.
La prima cosa che ho affrontato è stata il processo di deployment. La maggior parte era già in esecuzione su Jenkins, ma un passaggio critico richiedeva ancora che qualcuno eseguisse uno script shell dal proprio laptop. Spostare quell'ultimo pezzo su Jenkins è stata la mia prima vittoria.
Successivamente, ho aggiunto CodeDeploy per gli ambienti inferiori per velocizzare i deployment lì. Alla fine, un deployment che prima richiedeva oltre un'ora veniva eseguito in pochi minuti.
L'on-call faceva parte del lavoro. I problemi di produzione non aspettano l'orario d'ufficio.
Ho anche dedicato del tempo a una piattaforma di syndication di contenuti esterna al nostro stack principale. Basata su Grails, più vecchia, non qualcosa con cui avessi lavorato prima. Il Groovy che avevo scritto per le pipeline Jenkins si è trasferito, il che ha reso l'apprendimento della piattaforma più veloce di quanto sarebbe stato altrimenti. L'ho imparata abbastanza bene da poterla risolvere e ho contribuito a un aggiornamento del server a Ubuntu 22.04.
Altre cose che ho toccato.
- Due app React, pezzi front-end più piccoli stratificati sopra il CMS e collegati al sistema di design federale.
- AWS giorno per giorno. Load balancer, gruppi di destinazione, CodeDeploy e una buona dose di debug di problemi di produzione che si manifestano solo con traffico reale.
- Test con Playwright e Cypress, pytest per Python. Verso la fine ho sperimentato con Playwright più un LLM per catturare regressioni visive che i normali diff non rilevano.
- Demo e proof-of-concept di AI, mostrando alla leadership cosa potevano fare gli strumenti moderni e come potevano adattarsi senza far saltare una revisione di sicurezza.
Lo stack includeva Drupal, PHP, Python, JavaScript, React, Groovy, Jenkins, Docker, AWS, Splunk e USWDS (il US Web Design System). Alla fine, anche molti strumenti di AI (Gemini, OpenAI, database vettoriali, server MCP).
Alcune cose che ho notato
Il processo è reale. Revisioni di sicurezza, audit di accessibilità, congelamenti dei contenuti, pianificazione degli sprint tra i pod. Il primo mese è sembrato lento. Poi capisci perché è lì.
Jira, Confluence e Bitbucket erano tutti self-hosted per la conformità FedRAMP. Le versioni cloud non erano un'opzione.
Ci sono molte riunioni. Standup, pianificazione degli sprint, revisioni dell'architettura, revisioni dei contenuti, sincronizzazioni dei pod, incontri individuali, demo, chiamate di stato. Alcune erano essenziali. Altre no.
L'accessibilità non è una casella da spuntare. Cambia il modo in cui nomini le cose, strutturi le pagine e testi.
Editor e responsabili di programma erano una parte importante di coloro con cui lavoravo quotidianamente, non solo altri ingegneri.
Si lavora con molti fornitori esterni. Akamai per CDN e sicurezza perimetrale, un partner AWS per l'infrastruttura, GSA per l'integrazione di search.gov e vari fornitori di audit e revisione lungo il percorso. Una parte reale del lavoro è cercare risposte attraverso i confini aziendali, non solo all'interno del proprio team.
La comunicazione è una parte importante del lavoro. Probabilmente più di quanto mi aspettassi all'inizio.
Ho scritto molto. Aggiornamenti di stato, runbook, documenti di passaggio, ticket. Sto letteralmente scrivendo un'email di passaggio mentre digito questo.
Molto tempo è stato dedicato a spiegare i compromessi tecnici a persone non tecniche.
Verso la fine, ho fatto del lavoro sull'AI. Flussi di lavoro assistiti dall'AI, classificatori LLM per PDF e server MCP. Abbiamo anche iniziato conversazioni sull'introduzione di agenti di codifica come Codex e Claude Code come parte del nostro flusso di lavoro. Quelle approvazioni sono ancora in sospeso dal lato governativo.
Il debug nel cloud è una cosa a sé stante. La produzione AWS non assomiglia al tuo laptop. Trascorri molto tempo in Splunk, CloudWatch e cronologie di deployment.
Ho avuto la fortuna di guidare persone intelligenti e di lavorare per un manager che si fidava di me per fare il lavoro. Questo ha reso più facile la maggior parte del resto.
Questo è tutto. Alla prossima avventura.