8 kvaliteter, som en god softwareudvikler skal have

Udgivet: Sidst opdateret:
10 super succesfulde ingeniørers styrker som udviklere

Da jeg grundlagde DevSkiller for syv år siden, var mit teams mål at hjælpe virksomheder med at finde gode udviklere. Siden da har jeg haft mulighed for at arbejde med Fortune 500-virksomheder såvel som mindre virksomheder globalt set. Jeg talte med tekniske folk som CTO'er, it-chefer, teamledere, teamledere, teammedlemmer og HR-repræsentanter. Alle disse mennesker var ansvarlige for at finde og ansætte de bedste tekniske talenter. De stod alle over for et universelt problem: hvordan man ansætter gode programmører. De var også på jagt efter de samme udviklere.

Det hele starter med at identificere en god udvikler, når man ser en. Dette bringer os til det kritiske spørgsmål: Hvad er de vigtigste styrker for udviklerne? Der har været mange diskussioner om dette emne. Jeg anbefaler, at du læser denne Quora-tråd. Den er spækket med indsigt fra nogle seriøse branchehoveder.

Baseret på vores egne erfaringer, hundredvis af samtaler og snesevis af drejninger undervejs, bør vi deltage i diskussionen. Vi er kommet frem til en liste over de vigtigste kvaliteter hos en softwareingeniør.

Styrke og svaghed for softwareudvikler

1. Nysgerrighed

"Nysgerrighed er i store og generøse sind den første lidenskab og den sidste.", sagde Samuel Johnson. Det gælder også, når man tænker på de gode programmørers egenskaber (og deres store og generøse hjerner). Lad os kigge efter en mere nutidig reference, der udvikler Johnsons synspunkt. Dan Pupius siger, at "nysgerrighed er vigtig i hele ingeniørens liv". Den får dig til at lære nye sprog, eksperimentere og søge efter nye løsninger. Det er præcis, hvad man ønsker sig af en ingeniør. Det driver dig også til at undersøge andres arkitektoniske valg, samt spørgsmål om antagelser. Pupius hævder, at mange af de kvaliteter, der normalt forbindes med stor ingeniørkunst, "stammer fra en rig følelse af nysgerrighed".

John Allspaw, Chief Technology Officer hos Etsy, har en god pointe i sit indlæg "Om at være senioringeniør". Han siger, at dygtige udviklere er nysgerrige. De har en tendens til at stille spørgsmål til sig selv og deres kolleger, mens de arbejder.

  • "Hvad kunne jeg gå glip af?"
  • "Hvordan kan det her ikke fungere?"
  • "Vil du venligst skyde så mange huller som muligt i min tankegang om dette?"
  • "Selv om det er teknisk korrekt, er det så forståeligt nok for resten af organisationen til at betjene, fejlfinde og udvide det?"

Jeg kunne ikke være mere enig. Ved første øjekast kan det se ud til, at disse spørgsmål er stillet af en seriepessimist. Det er faktisk ikke tilfældet. De er stillet af en nysgerrig person med en passion for at skrive elegante og selvkonsistente systemer. Forveksl ikke grundighed med en holdning om, at "vi alle er dødsdømte".

udvikler styrker nysgerrighed enden er nær tegn

Kilde: Kort om kampagnen

2. Tekniske færdigheder

Rahul Varshneyasiger, at "billedkunst og programmering er ens i den forstand, at store tekniske færdigheder ikke gør en god kunstner eller programmør til en god kunstner eller programmør". Storhed kommer ikke af tekniske færdigheder alene. Men man kan heller ikke forvente exceptionelle resultater af folk, der ikke har de rette færdigheder til jobbet. Du bør betragte færdigheder som et af elementerne i puslespillet, som isoleret set ikke gør meget. Det kan dog gøre underværker, når det ledsages af andre styrker hos udviklere. Heldigvis er tilstedeværelsen af de vigtigste styrker og kvaliteter hos en softwareingeniør super let at verificere med kodningsprøver.

Husk, at viden om tekniske detaljer er vigtig. Men... Hvis du støder på en lovende kandidat, der har alle udviklernes stærke sider, men som stadig er ved at lære, kan du overveje at ansætte vedkommende i en junior-stilling. Du vil blive overrasket over, hvor langt de kan nå.

Hastighed og produktivitet

A Sackman, Erikson og Grant undersøger opdagede en 10-dobbelt forskel i produktivitet mellem programmører. Forskningen er dog ikke uden fejl. Den "kontrollerer ikke for forskelle i individuelle evner". Den kombinerer også resultater fra brugere, der arbejder med programmeringssprog på lavt og højt niveau.

udviklerens styrker forskning 1960'ernes produktivitetsdiagram

Billedkilde: Construx.com

Steve McConnell hævder, at den forskning, der findes om emnet om emnet er ikke fri for begrænsninger. Det er ikke er ikke afgørende, men er helt sikkert suggestiv. Og det er præcis sådan, du skal se på det.

Lønningerne afspejler ofte ikke dette forskelle i størrelsesordenen mellem udviklere. Er der en måde at måle udviklernes produktivitet på, og bør man overhovedet forsøge at gøre det?

Desværre har vi hidtil ikke kunnet måle udviklernes produktivitet. Vi ved, at kodelinjer (SLOC eller Source Lines of Code) ikke er et mål, der er synonymt med udviklerens værdi. Faktisk er mindre faktisk mere i kodeverdenen (så længe den er selvkonsistent og fuldt funktionel). I henhold til Phil Haack, der giver kortfattet, vedligeholdelsesvenlig og forståelig kode er bedre end at stanse store mængder kode hurtigt. Hvorfor? Tænk på, hvad der sker, når du ønsker at tilføje nye funktioner eller opdateringer. Det tager som regel timer at tyde skør kode og lappe den op. Dette kommer typisk også med et stejlt prisskilt. Lad mig sige det på denne måde: det, du sparer på en hurtig, men skødesløs udvikler, ender du med at bruge på QA-teamet.

dilbert tegneserie med udviklerens styrker joke

Kilde: Dilbert

Hvis du er interesseret i produktivitet inden for IT, kan du læse "Myten om udviklernes produktivitet" af Dustin Barnes.

Opmærksomhed

Paul Haack siger, at bedste udviklere vide, hvornår du skal kode og hvornår du ikke skal. Han hævder, at det er unødvendigt at genopfinde hjulet, hvilket belaster projektet unødigt meget. I stedet bør man bruge eksisterende biblioteker for at spare tid. Det lyder logisk, ikke sandt? At gøre alting fra bunden er dog stadig en af de største tidstyve.

Bevidsthed også manifesterer sig gennem tærsklen for risikotolerance. Det er vigtigt, fordi det ofte er nødvendigt at ombygge levende systemer. Det er der, hvor tingene kan gå galt. At være i stand til at vurdere risikoen realistisk uden at egoet kommer i vejen er helt klart en af de vigtigste styrker og kvaliteter hos en softwareingeniør.

3. Intuition

Som Varshneya hævder, er det naturligt for andre at finde en løsning, mens nogle udviklere kæmper for at finde på en løsning. Det er "som om en åbenbaring rammer dem i det øjeblik, de sidder for at skabe programmer eller løse et problem."

doge meme meget indsigtsfuld udvikler styrker joke

Store softwareudviklere at forstå algoritmer og arkitekturer intuitivt. Denne evne gør det muligt for dem at lære hurtigt, hvilket bringer os til den næste egenskab.

4. Kærlighed til at lære

Ifølge John Krystynak, "ægte engagement i løbende læring" er en af de vigtige styrker for udviklere. "Du skal elske den grundlæggende praksis med at gå fra ikke at vide til at vide, hver eneste dag", ellers bliver du ikke god til det.

Det gælder især inden for it-verdenen. Selv om det er nyttigt at have sin egen måde at gøre tingene på, er det vigtigt, at du vover dig ud over det, du kender. Find hurtigere måder at få tingene gjort på. En af måderne at gøre det på er ved at at lægge mærke til mønstre og drage konklusioner.

Der er mange måder at udvikle på, når man er en god udvikler (ordspil).

  • Deltagelse i branchearrangementer som f.eks. konferencer og hackathons. Thomas So fra AppLovin kalder dem jobparathedsuddannelse.
  • Finde en mentor.
  • Arbejder på et sideprojekt.
  • Spørg om feedback fra dine kolleger.

5. Tilpasningsevne

It-verdenen ændrer sig hurtigt, og som en god udvikler skal du være fleksibel. Det er et sikkert bud at ansætte folk, der altid er på udkig efter nye værktøjer og måder at gøre tingene på. De er ofte følge nyheder fra branchen og simpelthen er interesseret i håndværket.

Jo mere du ved, også uden for din foretrukne teknologi, jo mere værdifuld er du for både dit team og hele organisationen. Som Marius Mazilu hævder, at "mangfoldigheden af teknologi er blevet så udbredt, at det ikke nødvendigvis er en garanti for succes at være specialist i en bestemt teknologi". Mazilu mener, at det er afgørende at være mere alsidig. Det skyldes, at modne teknologier er mere stabile og ikke kan følge med. Det betyder, at dine færdigheder hurtigt bliver forældede. På den anden side kræver nye frameworks typisk en massiv tidsinvestering, fordi de er ustabile. Som han hævder, "kan du blive chokeret over at opdage en dag, at de ikke elsker dig tilbage".

Mazilu har 7 enkle regler du bør følge for at holde trit med teknologien.

  1. Stol på din mavefornemmelse.
  2. Gå altid tilbage til det grundlæggende.
  3. Hold øje med sølvkuglerne. Det drejer sig bl.a. om velmarkedsførte teknologier, som anvendes i vid udstrækning, selv om de ikke passer til projektet.
  4. Lær at fejlfinde.
  5. Lær at skrive et manuskript.
  6. Du skal ikke være besat af, hvordan din kode ser ud.
  7. Følg med mængden.

6. En positiv holdning

En positiv indstilling er en af de vigtigste kvaliteter hos en god softwareudvikler. En af kvaliteterne ved en god programmør er, at han/hun løser problemer dag ud og dag ind, men det betyder ikke, at han/hun skal dvæle ved dem. Der er et stort behov for en holdning, der går ud på at "få tingene gjort", bl.a. fordi opgaver og billetter har tendens til at hobe sig op. Det er vigtigt at beslutte, hvornår det er tid til at skubbe en god nok løsning ud af døren og gå videre til det næste på listen. Forholdsreglen her er, at du ikke skal oversvømme dine udviklere med flere opgaver, end de kan håndtere, og at du skal holde tingene realistiske.

Damien Filiatrault sætter "positiv indstilling" øverst på sin liste over de vigtigste egenskaber, som gode udviklere skal have. Han siger, at man kan teste vandene og stille et par tilsyneladende enkle spørgsmål af typen "small talk" for at se, om svarene fokuserer på det positive eller negative. Disse spørgsmål omfatter bl.a:

  • "Mener du, at du er heldig? (kæphøj eller ydmyg).
  • Hvordan var din rejse til interviewet? (klager eller ingen bekymringer)".

7. Omfavnelse af mentorskab

John Krystynak siger, at "store programmører bliver ikke store i isolation." Jeg hylder ham for at sige det. En af grundene til, at mentormodellen fungerer så godt inden for IT er, at nogle gode udviklere lærer mest effektivt ved at gå i lære. Det tager simpelthen mindre tid at finde ud af tingene, hvis du kan se en mere erfaren kollega i arbejde. En anden grund til, at topteknologer går ind for mentorskab, er, at det kræver, at du afslører både dine styrker og svagheder. Det lærer dig meget om at holde dit ego i skak.

En af de bedste ting, du som arbejdsgiver kan gøre for at fremme den slags holdninger i din organisation, er at at parre erfarne programmører med nyuddannede programmører. Man kan tro, at dette vil være en belastning for mentoren, som i forvejen har meget travlt. Husk på, at både den mentee og mentor lærer af denne ordning. Hvis du ikke kan forklare noget for din mentee, betyder det, at du ikke forstår det godt nok. Eller at du ikke kan formidle det godt nok. Det betyder, at der er læringsmuligheder for begge parter i dette forhold.

8. Kommunikationsevner

Damien Filiatrault udtaler, at "gode kommunikationsevner hænger direkte sammen med gode udviklingsevner." Her er hvorfor.:

  • Du skal vide, hvilke spørgsmål du skal stille, når du ikke forstår noget eller har brug for at dobbelttjekke.
  • Det er muligt at finde ud af tingene på baggrund af kommunikation med kolleger. Det betyder behøver du ikke at stole på skriftlige specifikationer.
  • Begreberne forstås og formidles hurtigt i et team af succesfulde udviklere.
  • En af kvaliteterne ved en god programmør er, at han kan at kommunikere overbevisende med både teknisk og ikke-teknisk personale.

Udviklerens styrker: konklusion

Det bliver sværere og sværere at finde gode programmører. Teknologibranchen oplever en situation med mangel på talent. Det betyder, at vi har brug for flere udviklere, end vi overhovedet kan finde, og virksomhederne er at gøre alt for at tiltrække de bedste teknologiske talenter.

Google-annonce, der tager fat på de vigtigste styrker for udviklere

Det er et must at identificere udviklernes styrker, der er afgørende for væksten i din virksomhed. Vær dog hurtig! Når du støder på en lovende kandidat, skal du handle hurtigt. I en situation med knaphed kæmper rekrutteringsfolk om de samme kandidater.

Hvad er de vigtigste styrker for udviklerne? Jeg glæder mig til at høre dine tanker!

Redaktørens note: Dette indlæg blev oprindeligt offentliggjort i april 2017 og er blevet opdateret med henblik på nøjagtighed og fuldstændighed.

Del indlæg

Få mere at vide om ansættelse af teknologiske medarbejdere

Tilmeld dig vores Learning Hub for at få nyttig viden direkte i din indbakke.

Kontroller og udvikl kodningsevner uden problemer.

Se DevSkiller-produkterne i aktion.

Sikkerhedscertificeringer og overholdelse. Vi sørger for, at dine data er sikre og beskyttede.

DevSkiller-logo TalentBoost-logo TalentScore-logo