Interviste
Peter McKee, Head of Developer Relations at Sonar – Intervista di Serie

Peter McKee è il responsabile delle relazioni con gli sviluppatori di Sonar, una piattaforma che risolve la sfida da un trilione di dollari del codice scadente. Sonar consente agli sviluppatori e alle organizzazioni di raggiungere sistematicamente uno stato di codice pulito in modo che tutto il codice sia adatto allo sviluppo e alla produzione. Applicando la metodologia di Sonar “Pulisci mentre codici”, le organizzazioni riducono al minimo i rischi, riducono il debito tecnico e traggono maggior valore dal proprio software in modo prevedibile e sostenibile.
Cosa ti ha inizialmente attirato verso l’informatica?
Ero sempre interessato ai computer fin da giovane età. Anche quando stavo inizialmente perseguendo un’altra carriera, ero continuamente attratto dai computer e dalla programmazione. A un certo punto, mio padre gestiva un’azienda siderurgica in Virginia e avevano perso il loro gruppo di consulenti. Poiché avevo imparato a programmare quando ero più giovane, mi ha invitato a lavorare e a costruire sistemi per lui. Non sapevo, onestamente, cosa stavo facendo al 100% all’inizio, ma ho imparato dai libri e facendo il lavoro sul posto, e sono diventato completamente autodidatta. Ciò ha continuato a guidare il mio interesse per la codifica e i computer e ha realmente cementato il mio interesse per l’informatica.
Potresti spiegare come definiresti il codice pulito e perché è così importante?
È stato detto per anni che il software mangerà il mondo, e direi che siamo arrivati al punto in cui è ufficiale – il mondo è costruito sul software e ogni azienda è essenzialmente un’azienda di software. Alla base di un buon software c’è il codice di qualità, poiché il codice è al centro di tutto il software e ne determina il comportamento e le prestazioni. Questo è il motivo per cui il codice pulito – codice che è coerente, intenzionale, adattabile e responsabile – è così importante. Il codice pulito è facile da capire e modificare, funziona senza problemi in fase di esecuzione e non contiene debito tecnico, quindi è adatto allo scopo. Il codice pulito è lo standard che le organizzazioni dovrebbero adottare per assicurarsi che il loro software continui a essere un asset – e non un passivo – e sia il principale driver per il successo aziendale di oggi.
Il codice pulito beneficia squadre e organizzazioni di tutte le dimensioni e livelli di maturità, e aumenta il valore del software come risultato. Alcuni benefici specifici sono che:
- Migliora le competenze di sviluppo — Gli sviluppatori possono rilevare, capire e risolvere problemi mentre codificano, imparando anche le migliori pratiche
- Aumenta l’efficienza e la produttività — Riducendo il lavoro continuo e i lunghi cicli di feedback, con conseguente maggiore produttività
- Riduce il rischio di reputazione e aziendale — Il codice pulito assicura meno rischi di sicurezza, consentendo alle squadre di affrontare proattivamente i problemi prima che raggiungano la produzione
- Riduce il debito tecnico a livello di codice — Il codice pulito affronta gradualmente il debito del codice senza la necessità di un grande riassetto dell’applicazione e disrupzione
- Aumenta la velocità di sviluppo del software — Gli standard di codice pulito e i flussi di lavoro ottimizzati migliorano la velocità di DevOps, promuovendo un tempo di mercato più rapido
Potresti discutere l’importanza della coerenza e della struttura nel codice, e quali sono alcuni esempi di codice coerente e pulito?
La qualità del codice coerente è qualcosa che ogni manager o direttore tecnico cerca di mantenere. La coerenza è cruciale quando si tratta della qualità del codice, poiché la coerenza porta alla prevedibilità. È scritto in modo uniforme e convenzionale – tutto il codice ha un aspetto simile e segue un modello regolare, anche con più contributori in momenti diversi. Il codice coerente è formattato, convenzionale e identificabile. Quando vengono adottati standard di codifica coerenti, gli sviluppatori diventano più efficienti e sono in grado di soddisfare le loro aspettative di consegna con velocità e precisione.
Potresti discutere l’importanza del codice che può gestire condizioni inattese, e perché questo non dovrebbe essere trascurato?
Gli sviluppatori stanno sempre cercando di anticipare e prepararsi per eventi inattesi durante la progettazione e lo sviluppo, ma ciò non può essere prevenuto in ogni istanza. Gli stati inattesi possono sorgere a causa di un uso non intenzionale o attacchi intenzionali. Questi stati inattesi possono introdurre involontariamente vulnerabilità di sicurezza che gli attaccanti possono sfruttare. Questo è il motivo per cui gli sviluppatori dovrebbero sempre cercare di migliorare la qualità e la stabilità del loro codice e testare le condizioni inattese. Seguendo un approccio Pulisci mentre codici, le squadre possono accelerare meglio le nuove funzionalità, evitare costi di rilavorazione non necessari e favorire la crescita e la fidelizzazione dei talenti. Il codice pulito promuove la sicurezza, la manutenibilità e l’affidabilità, e può consentire agli sviluppatori di anticipare e gestire gli stati inattesi in modo più efficace e di riavviare il software più velocemente.
Potresti discutere i benefici dell’utilizzo dell’intelligenza artificiale generativa per la generazione di codice?
Incorporare l’AI nel ciclo di vita dello sviluppo del software ha i suoi benefici, come ad esempio consentire agli sviluppatori di lavorare in modo più efficiente. In effetti, la ricerca di GitHub ha scoperto che gli sviluppatori possono completare i compiti più del 50% più velocemente utilizzando l’AI. L’AI generativa può anche generare codice più velocemente e, di conseguenza, togliere il peso di compiti più tediosi e di routine – come la documentazione o la generazione di snippet di codice – in modo che gli sviluppatori possano concentrarsi meglio sul lavoro di valore più alto e più gratificante per risolvere problemi più complessi. Indipendentemente da come il codice viene creato, è fondamentale che venga verificato contro gli standard di codice pulito per assicurarsi che il codice sia sicuro, affidabile e manutenibile.
Quali sono alcuni dei potenziali rischi e pericoli del codice generato?
Mentre l’AI può liberare il tempo degli sviluppatori per lavorare su progetti di valore più alto e aumentare la produttività, non è senza rischi. Questo è il motivo per cui la domanda di sviluppatori non scomparirà nell’era dell’AI. Poiché gli strumenti di AI generativa possono generare una grande quantità di codice velocemente, c’è un potenziale per errori. Ecco alcuni rischi specifici:
- Responsabilità: Il codice generato dall’AI riduce la capacità di tenere le persone responsabili del codice creato, il che può rendere più difficile la risoluzione dei problemi.
- Vulnerabilità: Poiché utilizza in larga misura informazioni di crowdsourcing, non c’è garanzia che il codice prodotto sia sicuro o pulito. Potrebbero esserci bug o problemi di sicurezza che possono mettere a rischio l’azienda.
- Qualità: L’AI non controlla la qualità, e solo perché è generato dall’AI non significa che sia efficiente o di alta qualità.
- Nessun contesto: Perdere l’elemento umano significa naturalmente perdere il contesto di un problema o progetto. Il codice generato dall’AI deve essere esaminato per assicurarsi che stia facendo il lavoro completo.
Quando gli sviluppatori adottano un approccio “Pulisci mentre codici” con il loro codice – umano o generato dall’AI – possono assicurarsi che il codice sia adatto allo sviluppo e alla produzione e soddisfi gli standard richiesti della loro organizzazione.
Quali sono alcune altre variabili che dovrebbero essere prese in considerazione nel codice adatto alla produzione?
Gli sviluppatori che scrivono codice che aderisce ai principi di codice pulito possono essere sicuri che il loro codice sia adatto allo sviluppo e alla produzione, il che significa che il codice segue determinate caratteristiche:
- Coerente: Il codice dovrebbe essere coerente e seguire uno stile comune. Anche se il codice è lavorato da diversi sviluppatori nel tempo, dovrebbe avere un aspetto simile e aderire ai modelli stabiliti in precedenza.
- Intenzionale: Il codice intenzionale dovrebbe essere scritto come se fosse stato scritto con attenzione e cura per trasmettere il suo scopo; dovrebbe avere solo un’unica interpretazione disponibile.
- Adattabile: Il codice adattabile è segmentato e organizzato in modo da renderlo più facile da gestire e vedere le relazioni tra ogni riga di codice. Ciò rende il codice strutturato per un’evoluzione facile e sicura.
- Responsabile: Il codice, e i suoi sviluppatori, dovrebbero essere consapevoli delle loro obbligazioni etiche riguardo ai dati e alla loro potenziale influenza sui valori sociali. Il codice non dovrebbe presentare un rischio continuo di danneggiare involontariamente terze parti.
Potresti discutere alcune delle varie offerte di Sonar e come aiutano i coder a costruire codice responsabile, sicuro e di alta qualità in modo rapido e sistematico?
Attraverso i nostri analizzatori di settore, Sonar identifica i problemi di codifica in modo completo e consiglia soluzioni con cicli di feedback brevi, educando lo sviluppatore nel contesto, abilitando in ultima analisi le organizzazioni a costruire codice responsabile, sicuro e di alta qualità in modo rapido e sistematico. Gli elementi chiave della soluzione Sonar sono SonarLint, SonarQube (autogestito; open source), e SonarCloud (SaaS), con una copertura estensiva che supporta oltre 30 linguaggi di programmazione, framework e infrastrutture, 11 IDE e oltre 5.000 regole di codifica e linguaggio specifiche.
SonarLint, un’estensione dell’IDE, fornisce il primo livello di controlli per trovare problemi in tempo reale dal momento in cui il codice viene scritto. Coglie una grande parte dei problemi in anticipo e aiuta gli sviluppatori a scoprire e correggere errori come un controllo ortografico per il codice. SonarQube e SonarCloud, gli strumenti di revisione del codice di analisi statica di Sonar, ispezionano e analizzano continuamente il codice, con l’integrazione di SonarLint. Utilizzando le porte di qualità per determinare se il codice soddisfa gli standard di qualità, sicurezza e affidabilità definiti per la produzione, SonarQube e SonarCloud ispezionano il codice per bug, vulnerabilità, hotspot di sicurezza e odori di codice.
Abbinando la nostra soluzione con la nostra metodologia “Pulisci mentre codici” – un approccio che segue standard stabiliti per mantenere il codice nuovo, aggiunto o modificato pulito – gli sviluppatori e le organizzazioni sono in grado di consegnare codice pulito e di rimediare al codice esistente in modo organico, in modo da potersi concentrare su nuovi progetti innovativi che guidano il valore aziendale
Come Sonar aiuta a garantire che il codice sia conforme e soddisfi gli standard dell’industria?
Sonar aiuta gli sviluppatori a ottenere un feedback immediato e contestualizzato, evidenziando i problemi dove si trovano nel codice, all’interno del flusso di lavoro di sviluppo in base a anni di esperienza con gli analizzatori di linguaggio. Gli sviluppatori ottengono un accesso a spiegazioni chiare su perché si verifica un problema e su come risolverlo rapidamente, nonché a risorse aggiuntive per un apprendimento più approfondito. Abbiamo un’istruzione costruita in tutto il flusso di lavoro, dall’IDE al CI/CD. Ad esempio, Sonar ha regole specifiche MISRA C++ 2023 disponibili in SonarLint per aiutare le squadre a creare codice che sia meglio preparato per la certificazione eventualmente. Offre una guida di codifica, spiegando il perché dietro un problema segnalato e come risolverlo, per assicurarsi che il codice scritto sia conforme a MISRA.
Qual è la tua visione per come l’AI trasformerà la codifica nel futuro?
Credo che l’AI continuerà a offrire un grande valore nell’addressare la fatica degli sviluppatori. Mentre non credo che l’AI sarà mai in grado di scaricare il pensiero e il tocco umano degli sviluppatori, credo che anche solo pochi mesi da adesso vedremo un intero nuovo set di GPT – per non parlare di cosa sarà tra alcuni anni. Non credo che i tecnologi o gli sviluppatori scompariranno, ma la natura del loro lavoro quotidiano cambierà sicuramente. Il modo in cui gli sviluppatori utilizzeranno l’AI sarà semplice e comune come cercare qualcosa su Google come scorciatoia. C’è molto da esplorare sull’utilizzo dell’AI, ma dobbiamo ancora considerare l’elemento umano in primo piano per controllare i suoi svantaggi. C’è un potenziale trasformativo per lo sviluppo del software, ma non dobbiamo lasciarlo funzionare senza controlli – soprattutto quando le aziende digitali di oggi dipendono dal software che le sostiene.
Grazie per la grande intervista, i lettori che desiderano saperne di più possono visitare Sonar.












