Connect with us

Intervjuer

Peter McKee, Head of Developer Relations på Sonar – Intervjuserie

mm

Peter McKee är Head of Developer Relations på Sonar, en plattform som löser den trilliondollarstora utmaningen med dålig kod. Sonar utrustar utvecklare och organisationer för att systematiskt uppnå ett tillstånd av Clean Code så att all kod är lämplig för utveckling och produktion. Genom att tillämpa Sonars Clean as You Code-metodik minimerar organisationer risker, reducerar teknisk skuld och får mer värde från sin programvara på ett förutsägbart och hållbart sätt.

Vad var det som initialt drog dig till datavetenskap?

Jag var alltid intresserad av datorer från en ung ålder. Även när jag initialt följde en annan karriärsväg, drogs jag ständigt tillbaka till datorer och programmering. Vid ett tillfälle drev min pappa ett stål företag i Virginia och de hade förlorat sin konsultgrupp. Eftersom jag hade lärt mig att programmera när jag var yngre, bjöd han in mig att arbeta och bygga system för honom. Jag visste inte, ärligt talat, vad jag gjorde 100% från början, men jag lärde mig från böcker och genom att göra arbetet på jobbet, och blev helt självlärd. Det fortsatte att driva mitt intresse för kodning och datorer och cementerade verkligen mitt intresse för datavetenskap.

Kan du förklara hur du skulle definiera vad som är Clean Code och varför det är så viktigt?

Det har sagts i åratal nu att programvara kommer att äta upp världen, och jag skulle säga att vi nu är på den punkt där det är officiellt – världen byggs på programvara och varje företag är i princip ett programvaruföretag. Till grund för bra programvara ligger kvalitetskod, eftersom kod är kärnan i all programvara och dikterar dess beteende och prestanda. Detta är varför Clean Code — kod som är konsekvent, avsiktlig, anpassningsbar och ansvarsfull — är så viktigt. Kod som är ren är lätt att förstå och ändra, fungerar smidigt vid körning och innehåller ingen teknisk skuld, vilket gör den lämplig för ändamålet. Clean Code är den standard som organisationer bör anta för att säkerställa att deras programvara fortsätter att vara en tillgång — inte en skuld — och är den viktigaste drivkraften för dagens affärssuccé.

Clean Code ger fördelar för team och organisationer av alla storlekar och mognadsnivåer och ökar värdet av programvara som ett resultat. Några specifika fördelar är att det:

  • Ökar utvecklingsfärdigheter — Utvecklare kan upptäcka, förstå och lösa problem medan de kodar och också lära sig bästa praxis
  • Ökar effektivitet och produktivitet — Minskar kontinuerligt omarbete och långa feedbackcykler, vilket resulterar i ökad produktivitet
  • Minskar ryktes- och affärsrisker — Clean Code säkerställer färre säkerhetsrisker genom att möjliggöra för team att proaktivt hantera problem innan de når produktion
  • Minskar teknisk skuld på kodenivå — Clean Code hanterar gradvis skulden i kodbasen utan behov av en massiv programvaruöversyn och störning
  • Ökar programvaruutvecklingens hastighet — Clean Code-standards och strömlinjeformade flöden förbättrar DevOps-hastighet, vilket främjar snabbare tid till marknad

Kan du diskutera vikten av konsekvens och struktur i kod, och vad är några exempel på konsekvent och Clean Code?

Konsekvent kodkvalitet är något som varje chef eller teknisk direktör syftar till att upprätthålla. Konsekvens är avgörande när det gäller kodkvalitet eftersom konsekvens leder till förutsägbarhet. Den skrivs på ett enhetligt och konventionellt sätt — all kod ser likadan ut och följer ett regelbundet mönster, även med flera bidragsgivare vid olika tillfällen. Konsekvent kod är formaterad, konventionell och identifierbar. När konsekventa kodstandarder antas, blir utvecklare mer effektiva och kan möta sina leveransförväntningar med hastighet och precision.

Kan du diskutera vikten av kod som kan hantera oväntade tillstånd, och varför detta inte bör försummas?

Utvecklare försöker alltid förutse och förbereda sig för oväntade händelser under design- och utvecklingsprocessen, men detta kan inte förhindras i alla fall. Oväntade tillstånd kan uppstå på grund av oavsiktlig missbruk eller avsiktligt utlösta attacker. Dessa oväntade tillstånd kan oavsiktligt introducera säkerhetsrisker som angripare kan utnyttja. Detta är varför utvecklare bör sträva efter att alltid förbättra kvaliteten och stabiliteten i sin kod och testa för oväntade tillstånd. Genom att följa en Clean as You Code-ansats kan team accelerera nya funktioner, undvika onödiga omkostnader och främja talangtillväxt och behållning. Clean Code främjar säkerhet, underhåll och tillförlitlighet och kan möjliggöra för utvecklare att förutse och hantera oväntade tillstånd mer effektivt och få programvaran att fungera igen snabbare.

Kan du diskutera fördelarna med att använda generativ AI för kodgenerering?

Att integrera AI i programvaruutvecklingslivscykeln har sina fördelar, såsom att möjliggöra för utvecklare att arbeta mer effektivt. Faktum är att GitHub-forskning fann att utvecklare kan slutföra uppgifter mer än 50% snabbare med hjälp av AI. GenAI kan också generera kod snabbare och ta bort bördan av mer tråkiga, rutinmässiga uppgifter — som dokumentation eller generering av kodsnuttar — från deras platt, så att de kan koncentrera sig på högre värderad och mer givande arbete för att lösa mer komplexa problem. Oavsett hur koden skapas, är det dock avgörande att den kontrolleras mot Clean Code-standards för att säkerställa att koden är säker, tillförlitlig och underhållbar.

Vilka är några av de potentiella fallgroparna och riskerna med genererad kod?

 Medan AI kan frigöra utvecklares tid att arbeta på högre värderade projekt och öka produktiviteten, kommer det inte utan risker. Detta är varför efterfrågan på utvecklare inte kommer att försvinna i AI-eran. Eftersom GenAI-verktyg kan generera mycket kod snabbt, finns det en potential för fel. Här är några specifika fallgropar:

  • Ansvar: AI-genererad kod minskar förmågan att hålla människor ansvariga för skapad kod, vilket kan göra det svårare att lösa/hantera problem.
  • Sårbarheter: Det är möjligt att den producerade koden inte är säker eller ren, eftersom den tar information från en stor mängd källor. Det kan finnas buggar eller säkerhetsproblem som kan utsätta företaget för risk.
  • Kvalitet: AI kontrollerar inte kvaliteten, och bara för att den är genererad av AI betyder det inte att den är effektiv eller av hög kvalitet.
  • Inget sammanhang: Att förlora den mänskliga faktorn innebär att man förlorar sammanhanget i ett problem eller projekt. Den AI-genererade koden måste granskas för att säkerställa att den gör jobbet fullt ut.

När utvecklare följer en Clean as You Code-ansats med sin kod – antingen det är mänskligt eller AI-genererat – kan de säkerställa att den är lämplig för utveckling och produktion och uppfyller de krav som organisationen har.

Vilka är några andra variabler som bör beaktas för kod som är lämplig för produktion?

 Utvecklare som skriver kod som följer Clean Code-principer kan vara säkra på att deras kod är lämplig för utveckling och produktion, vilket innebär att koden följer vissa egenskaper:

  • Konsekvent: Koden bör vara konsekvent och följa en gemensam stil. Även om koden har arbetats med av flera olika utvecklare över tid, bör den ha ett liknande utseende och följa tidigare etablerade mönster.
  • Avsiktlig: Avsiktlig kod bör läsas som om den skrevs med uppmärksamhet och omsorg för att förmedla sitt syfte; den bör endast ha en tillgänglig tolkning.
  • Anpassningsbar: Anpassningsbar kod är segmenterad och organiserad på ett sätt som gör det lättare att hantera och se relationerna mellan varje kodrad. Detta gör koden strukturerad för enkel och säker utveckling.
  • Ansvarsfull: Koden och dess utvecklare bör vara medvetna om sina etiska skyldigheter i fråga om data och dess potentiella påverkan på samhälleliga normer. Koden bör slutligen inte presentera en kontinuerlig risk för att oavsiktligt skada tredje parter.

Kan du diskutera några av de olika erbjudandena från Sonar och hur det hjälper kodare att bygga ansvarsfull, säker och högkvalitativ kod snabbt och systematiskt?

 Genom våra branschledande analyser identifierar Sonar kodproblem på ett omfattande sätt och rekommenderar korrigeringar med korta feedbackcykler medan den utbildar utvecklaren i sammanhanget, vilket slutligen möjliggör för organisationer att bygga ansvarsfull, säker och högkvalitativ kod snabbt och systematiskt. De grundläggande elementen i Sonar-lösningen är SonarLint, SonarQube (självhanterad; öppen källkod) och SonarCloud (SaaS), med omfattande täckning som stöder över 30 programmeringsspråk, ramverk och infrastrukturer, 11 IDE:er och mer än 5 000 kod- och språkspecifika regler.

SonarLint, en IDE-tillägg, tillhandahåller den första linjen med kontroller för att hitta problem i realtid från och med att koden skrivs. Den fångar en stor del av problemen på förhand och hjälper utvecklare att upptäcka och åtgärda fel som en stavningskontroll för kod. SonarQube och SonarCloud, Sonars statiska analysverktyg för kodgranskning, inspekterar och analyserar kontinuerligt kodbasen, med SonarLint-integrering. Med hjälp av kvalitetsgränser för att bestämma om koden uppfyller de definierade standarderna för kvalitet, säkerhet och tillförlitlighet för produktion, inspekterar SonarQube och SonarCloud koden för buggar, sårbarheter, säkerhetshotspots och kodlukt.

Genom att kombinera vår lösningssats med vår Clean as You Code-metodik — en ansats som följer fastställda standarder för att hålla ny, tillagd eller redigerad kod ren — kan utvecklare och organisationer leverera Clean Code och åtgärda befintlig kod på ett organiskt sätt, så att de kan fokusera på nya, innovativa projekt som driver affärsverksamhet.

Hur hjälper Sonar till att säkerställa att koden är kompatibel och uppfyller branschstandarder?

Sonar hjälper utvecklare att få omedelbar och kontextualiserad feedback, som markerar problem där de finns i kodbasen, inom utvecklingsarbetsflödet baserat på års erfarenhet av språkanalys. Utvecklare får tillgång till tydliga förklaringar till varför ett problem uppstår och hur man snabbt kan åtgärda det, samt ytterligare resurser för mer ingående lärande. Vi har utbildning byggd genom hela arbetsflödet, från IDE till CI/CD. Till exempel har Sonar specifika MISRA C++ 2023-regler tillgängliga i SonarLint för att hjälpa team att skapa kod som är bäst förberedd för eventuell certifiering. Den erbjuder kodvägledning, som förklarar varför ett markerat problem uppstår och hur man kan åtgärda det, för att säkerställa att den kod som skrivs är MISRA-kompatibel.

Vad är din vision för hur AI kommer att omvandla kodning i framtiden?

 Jag tror att AI kommer att fortsätta leverera stor värde i att hantera utvecklarbrist. Medan jag inte tror att AI någonsin kommer att kunna avlasta utvecklares tankar och den mänskliga beröringen, tror jag att vi redan nu kommer att se en helt ny uppsättning GPT:er — för att inte tala om vad som kommer att se ut om några år. Jag tror inte att tekniker eller utvecklare kommer att försvinna, men sättet de arbetar på kommer att förändras. Sättet utvecklare använder AI kommer att vara lika enkelt och vanligt som att söka på Google som en genväg. Det finns mycket att utforska om användningen av AI, men vi måste fortfarande ha den mänskliga faktorn i förgrunden för att kontrollera AI:s nackdelar. Det finns en transformerande potential för programvaruutveckling, men vi får inte låta den springa utan kontroll — särskilt när digitala företag idag är beroende av den programvara som ligger till grund för det.

Tack för den utmärkta intervjun. Läsare som vill lära sig mer bör besöka Sonar.

Antoine är en visionär ledare och medgrundare av Unite.AI, driven av en outtröttlig passion för att forma och främja framtiden för AI och robotik. En serieentreprenör, han tror att AI kommer att vara lika omstörtande för samhället som elektricitet, och fångas ofta i extas över potentialen för omstörtande teknologier och AGI. Som en futurist, är han dedikerad till att utforska hur dessa innovationer kommer att forma vår värld. Dessutom är han grundare av Securities.io, en plattform som fokuserar på att investera i banbrytande teknologier som omdefinierar framtiden och omformar hela sektorer.