Technology · · 4 min read

Meta usa i dati sulle modifiche al codice per valutare l’impatto dell’IA sull’ingegneria del software

Una conversazione con il ricercatore di Meta Moritz Beller esamina le metriche dell’azienda sulla produttività degli sviluppatori, gli effetti dell’IA e i limiti dei test automatizzati.

Secondo un rapporto di newsletter.getdx.com, Meta utilizza misurazioni ricavate dalle singole modifiche al codice per capire come gli strumenti di sviluppo e l’intelligenza artificiale stiano influenzando il lavoro degli sviluppatori. Il ricercatore Moritz Beller afferma che l’azienda ha osservato una riduzione di oltre il 40% su base annua del tempo dedicato alla realizzazione di una modifica, anche se gli ingegneri producono modifiche più numerose e più ampie.

La misura, nota come tempo di realizzazione di una modifica, rileva lo sforzo attivo necessario per creare, testare e revisionare una singola modifica al codice. Analizzare le modifiche individualmente offre a Meta una visione più mirata rispetto al calcolo della produttività sulla base di tutto ciò che uno sviluppatore fa nell’arco di una giornata.

Meta non utilizza questa misura per classificare o valutare i singoli ingegneri. Esamina invece gli schemi che emergono tra team, dipartimenti e nell’azienda nel suo complesso. L’obiettivo è individuare regressioni, identificare miglioramenti utili e decidere dove sia giustificato investire ulteriormente negli strumenti di sviluppo.

Una visione più dettagliata della produttività

L’azienda considera il tempo di realizzazione di una modifica come uno dei diversi indicatori. Insieme a esso vengono valutati il volume di lavoro, le dimensioni delle modifiche e la loro qualità, perché nessuna singola misura è in grado di descrivere in modo affidabile la produttività degli ingegneri. Un tempo più breve per completare una modifica, per esempio, non è necessariamente un vantaggio se il codice risultante è di scarsa qualità o richiede correzioni sostanziali.

Questo approccio consente inoltre a Meta di verificare se le modifiche ai framework e agli strumenti per sviluppatori producano vantaggi concreti. Il rapporto cita come esempio la memoizzazione automatica nel compilatore di React. Rispetto all’aggiunta manuale della memorizzazione nella cache, l’approccio automatico del compilatore ha ridotto di circa il 30% il tempo necessario per realizzare una modifica. Beller presenta risultati di questa portata come la prova che miglioramenti fondamentali all’ambiente di sviluppo possono essere più importanti di piccoli perfezionamenti alle interfacce.

La riduzione del tempo di realizzazione non è spiegata interamente dalla maggiore velocità di digitazione o dalla generazione del codice. Beller ritiene che gli sviluppatori possano utilizzare il tempo risparmiato per raccogliere il contesto necessario e gestire le attività che circondano l’implementazione. La scrittura dei prompt sembra rappresentare solo una piccola parte di questa attività aggiuntiva.

Man mano che generare codice diventa meno costoso, il problema più difficile potrebbe essere definire che cosa il codice debba fare. Il valore delle intenzioni dello sviluppatore aumenta quando un sistema automatizzato è in grado di produrre rapidamente un’implementazione, ma può fraintendere una richiesta incompleta.

Cosa sfugge alle misure della produttività

La telemetria tradizionale è più efficace nel registrare le modifiche al codice che nel rilevare il lavoro che le precede. Sessioni alla lavagna, brainstorming e discussioni sull’architettura possono essere cruciali per il risultato senza lasciare un collegamento chiaro con una modifica successiva. Le trascrizioni delle riunioni e altri documenti creati dall’IA potrebbero, in futuro, rendere più facile analizzare una parte di questa preparazione.

Questo non rende meno importante l’architettura. Evitare di produrre un documento di progettazione può semplicemente trasferire il carico sui revisori, che devono quindi dedurre la struttura prevista dall’implementazione finita. Una produzione più rapida può perciò nascondere lavoro aggiuntivo in altre fasi del processo di sviluppo.

Il precedente studio di Beller, Mind the Gap, ha confrontato l’attività registrata automaticamente con le valutazioni che gli sviluppatori davano della propria produttività. Il tempo dedicato alla programmazione era un fattore predittivo significativo, ma anche il riposo, le interruzioni e i turni di reperibilità influenzavano la percezione della propria produttività. Una nuova versione dovrebbe esaminare il modo in cui gli sviluppatori lavorano con gli agenti, quanta fiducia ripongono in essi e se il coordinamento simultaneo di più attività automatizzate generi un carico cognitivo eccessivo.

Una maggiore produzione non garantisce neppure una migliore esperienza lavorativa. La discussione osserva che la produttività può aumentare mentre la concentrazione, lo sforzo mentale e la soddisfazione complessiva restano invariati o diminuiscono. Le relazioni interpersonali, la comprensione condivisa e lo scambio informale di conoscenze sono importanti per il lavoro ingegneristico, ma rimangono difficili da rappresentare nella maggior parte delle metriche.

Ridurre le riunioni non necessarie può migliorare il volume di lavoro, ma eliminare una quantità eccessiva di collaborazione può privare i team di idee e contesto. Anche i piccoli scambi sociali sono importanti: una ricerca discussa nell’episodio ha rilevato che le conversazioni informali prima e dopo le riunioni predicevano la produttività dichiarata dalle persone più della qualità della connessione internet.

La sfida dei test per gli agenti di IA

Gli agenti di IA rendono economica la creazione di test unitari e end-to-end, affrontando potenzialmente una lacuna di lunga data tra gli sviluppatori che in precedenza scrivevano pochi test automatizzati. Tuttavia, una raccolta di test superati può dare una rassicurazione fuorviante quando l’implementazione e i test condividono la stessa interpretazione errata di una richiesta ambigua.

Un agente può produrre codice e test internamente coerenti, ma che non soddisfano comunque l’obiettivo effettivo dello sviluppatore. Questo rischio rende ancora più importante definire la correttezza prima di iniziare l’implementazione. La conversazione suggerisce che lo sviluppo guidato dalle specifiche potrebbe diventare un complemento allo sviluppo guidato dai test, man mano che gli agenti si assumono una parte maggiore del lavoro di programmazione.

La velocità dell’implementazione automatizzata aumenta inoltre il rischio che i team costruiscano inconsapevolmente la stessa cosa in parallelo. Misurazioni migliori dovranno tenere conto non solo del codice completato, ma anche dell’allineamento, della comunicazione e degli sforzi duplicati. I dati di Meta a livello di singola modifica offrono un modo per osservare alcuni effetti dei nuovi strumenti, ma la discussione più ampia chiarisce che la produttività nel lavoro ingegneristico rimane un problema umano e organizzativo oltre che tecnico.

metadeveloper productivityartificial intelligencesoftware engineeringengineering metricsai agentssoftware testing

Continue reading

Read this in another language