Gjennom å lese denne ansettelsesguiden bør du få en klarere forståelse av det viktigste som trengs for å finne og ansette den beste Ruby-utvikleren for dine forretningsbehov. Siden Ruby er en konstant etterspurt teknologi, er det fordelaktig å vite alt som er verdt å vite før du setter igang den generelle ansettelsesprosessen.
Å finne den perfekte Ruby-utvikleren for dine behov kan være utmattende. Du bør sannsynligvis hente inn ekstern assistanse, eller en spesialist innen intervjuer og ansettelser, som kan bidra med ekspertise og kunnskap. Uansett hvor mye du vet om utvikling og intervjuer, er det som regel best å delegere til disse spesialistene, for best mulig resultat.
Fordi det ikke er en lett jobb å finne og ansette den beste utvikleren, må du gå gjennom flere faktorer som dekker alt fra ferdigheter, ekspertise og profesjonalitet til relevante spørsmål – alt dette finner du i avsnittene nedenfor. Det er enkelt å gå videre med de riktige fagpersonene, etter å ha sett hele prosessens viktige egenskaper.
About Ruby
Ruby er et objektorientert og dynamisk skrevet programmeringsspråk for det generelle formålet å bygge webservere og webapper. Den har en elegant og enkel syntaks som er lett å lese og skrive.
Dette programmeringsspråket er fokusert på produktivitet og enkelhet gjennom en suveren lesbare kode og omfattende og praktiske biblioteker. Med Ruby blir utviklingen optimalisert og skalerbar. På grunn av disse funksjonene er Ruby mye brukt i app- og webutvikling, CMS (innholdsstyringssystem), netthandel og andre felt.
Ruby ble utgitt i 1993, og er en blanding av programmeringsspråk (Ada, Perl og Eiffel) og er et av de språkene som er eldst.
Fakta om Ruby
Hvis du ser på statistikken for Ruby, kan du finne ut fakta om popularitet, brukervennlighet, preferansene til utviklerne med mer.
I en Stack Overflow-undersøkelse for 2021 sa bare 7,89 % av utviklerne som svarte at de ønsker å jobbe med Ruby. Dette er ikke grobunn for popularitet, men samtidig øker en prosentandel og etterspørselen, samtidig som det er en mangel på utviklere som er dyktige innen Ruby.
Ruby on Rails, Rubys rammeverk, hadde den samme prosentandelen på 7,89 % i denne undersøkelsen.
Når det gjelder lønnen til en Ruby-utvikler, er den omtrentlige årslønnen på $129 101, eller fra $94K opp til $193K. Vi kan konkludere med at Ruby-utviklere tilhører høylønnsutviklerne.
Intervjue en Ruby-utvikler
Tips til et pre-screening intervjue
For at intervju- og ansettelsesprosessen skal gå problemfritt, er det viktig å overlate noen ting til profesjonelle talentanskaffelsesspesialister. En slik spesialist fokuserer på noen få ting for å evaluere kandidatene, og om de vil ha disse kandidatene med videre i prosessen.
De legger merke til språkkompatibiliteten, altså hvorvidt kandidaten er flytende i engelsk. Sammen med dette observerer de om kandidaten har de nødvendige ferdighetene, relevant erfaring, gode soft skills og andre relevante faktorer.
Før ansettelse skjer, samler spesialisten inn all denne informasjonen og vurderer helhetsinntrykkene, før han går videre. Prosessen må omfatte kontroll av teoretisk kunnskap, tildeling av kodetester og kontroll av aspekter innen soft skills.
Teknisk kunnskap hos en Ruby-utvikler
En dyktig Ruby-utvikler må inneha følgende relevante tekniske ferdigheter:
- Kjennskap til Ruby-syntaksen og objektorientert programmering
- Evne til å skrive Ruby-biblioteker som kan gjenbrukes
- Kunnskap om Mocking, RESTful og MVC (model-view-controller)
- Erfaring med innebygde og eksterne databaser
- Evne til å bruke ulike hjelpeverktøy (Rake, Bundler) og verktøy for kodeversjon (SVN, Git, Mercurial)
Vi spurte Ruby on Rails-utvikleren Albin Hasaj, og han la til følgende tekniske ferdigheter som man bør se etter hos en Ruby-utvikler:
“En erfaren Ruby-utvikler må kunne automatisert testing med Unit eller Rspec, men de trenger også god erfaring med API (GraphQL eller RESTful). En annen god teknisk ferdighet som er viktig å ha, er omfattende kunnskap om Active Record (eller et systemlag som brukes til å representere forretningslogikk og data). Det forventes også at man kjenner til ulempene med noen Ruby-metoder, deres forskjeller og deres hastighet.”
Albin Hasaj
Ikke-tekniske ferdigheter hos en Ruby-utvikler
De ikke-tekniske ferdighetene er like viktige som de tekniske fordi uansett hvor dyktige noen er, vil arbeidsdynamikken sannsynligvis lide hvis de er utfordrende å jobbe med eller mangler andre faglige ferdigheter.
Ekspertene, eller spesialister på talentanskaffelse og rekrutterere, sjekker opp og legger merke til flere ulike ting under intervjuet.
De sjekker engelskkunnskapene for å kunne garantere at det ikke er noen språkbarrierer, eller hindringer, for videre kommunikasjon med klienter og teammedlemmer.
En annen ting de sjekker er hvor profesjonell man er. Dette er basert på punktlighet, kleskode (passende helhetlig utseende, møte opp i tide osv.), og den generelle holdningen under intervjuet. Alt dette viser også nivået av respekt overfor potensiell arbeidsgiver.
Ruby intervjuspørsmål og svar
Når det er på tide å stille spørsmål for en mer dyptgående ekspertisesjekk, og mer konkrete erfaringsspørsmål om Ruby, kan du bruke listen med følgende spørsmål. Du kan selvfølgelig legge til andre relevante spørsmål også:
- Er Ruby fleksibelt?
Forventet svar: Ruby er et utrolig fleksibelt skriptspråk som er kjent for akkurat dette. Når vi bruker Ruby, har vi friheten til å endre programmeringselementene slik vi trenger at de skal være i et gitt tilfelle. Vi kan omformulere noe, eller til og med fjerne det helt.
- Hva betyr ‘length’ i Ruby?
Forventet svar: Length er et uttrykk som brukes om en String class metode, og vi bruker denne innebygde metoden i Ruby når vi trenger å definere lengden på et tegn i en string nøyaktig.
Oppsummert er denne funksjonen/metoden den enkleste måten å definere en string length i Ruby.
- List opp data typene i Ruby.
Forventet svar: det er seks data typer i Ruby:
- Strings – Strings i Ruby er flere tegnsekvenser. De kan bestå av symboler, tall eller bokstaver.
- Hashes – Hash representerer en samling av nøkkelverdier, og de er alltid sammenkoblet.
- Booleans – Boolean representerer en verdi som kan være sann eller usann. I Ruby, når vi har en forekomst i ‘true’, hører den hjemme i klassen TrueClass (og ‘false’ i FalseClass).
- Numbers – Her har vi imaginære tall, desimaler, brøktall osv.
- Symbols – Når vi har en objektverdi som er et tall, ikke en vektor, bruker vi den som en identifikator. Symboler, i dette tilfellet, ligner strenger og er veldig nyttige for dataarbeid.
- Arrays – Når vi har samlinger av bokstavelig talt et hvilket som helst objekt, kaller vi dem 'arrays’, men bare hvis heltallene er indeksert, og det er en presis rekkefølge.
- Hva er Ruby klassebibliotek?
Forventet svar: Grupperingen av domener som datatyper, trådprogrammering og andre domener av forskjellige typer kalles klassebiblioteker. Med disse bibliotekene får vi mange fordeler med hensyn til fleksibilitet i håndteringen av bibliotekene, spesielt for oppretting av skript i Ruby.
De mest nyttige klassebibliotekene til Ruby er:
- GUI programming
- CGI programming
- XML programming
- Text processing
- Network programming
- Hva er args i Ruby?
Forventet svar: args står for arguments. Når vi ser args i en Ruby-kontekst, betyr det at i koden vår er det en viss mengde argumenter akseptert av metoden, og de er i en array.
Generelt er imidlertid Ruby-argumenter obligatoriske elementer som vi trenger for metodepåkalling. Uten et ‘argument’ ville vi ikke kunne påkalle (invoke) metoden vi trenger.
- Utdyp om Ruby ‘closures’.
Forventet svar: Closures i Ruby representerer en kodeblokk, eller en funksjon, som kan ta på seg rollen som en variabel, og også som et argument, når den sendes til en funksjon. Når vi trenger å kjøre mye kode, samler vi den under navnet Closures.
Closures i Ruby er delt inn i tre typer:
- Blocks – Denne lukketypen er ganske enkel og representerer en kodedel, ikke et objekt. Denne kodedelen finnes mellom do...end (indikerer koden i en spesifikk skriptdel) eller mellom {}. Blokker krever ingen navn og er anonyme.
- Procs – Procs representerer innkapslinger av en kodeblokk. Procs og blokker har noen likheter, men er ganske forskjellige allikevel. Vi kan sende mer enn én proc til en metode og lagre procs til lokale variabler.
- Lambdas – Lambdaene ligner veldig på procs, men forskjellen er at lambdaer trenger det nøyaktige argumentnummeret som sendes til dem. Med Lambdas kan vi kapsle inn data og logikk i variabler som er bærbare.
- Utdyp om Ruby variabler.
Forventet svar: Plasseringene som holder dataene lagret og beregnet på bruk for programmer, kalles Ruby-variabler.
Ruby skiller seg ut fra andre språk fordi vi i dette tilfellet ikke trenger variabeldeklarering.
Det er fire variabeltyper i Ruby:
- Instance – Denne variabelen starter alltid med '@', og vi kan få tilgang til denne fra mange metodeforekomster, og den hører bare hjemme i en enkelt klasseforekomst.
- Global – Denne variabelen starter med '$', og vi har tilgang til den, uavhengig av hvor vi er i programmet.
- Local – Denne variabelen starter alltid med ( _ ) understrek, eller en liten bokstav, og vi kan ha tilgang til den når vi initialiserer den i blokken.
- Class – Denne starter med '@@', og før vi bruker dem, må vi initialisere dem. Tilgangen til denne variabelen er ikke avhengig av hvor vi er i klassen.
- Forklar prosessen med ‘freezing objects’ i Ruby.
Forventet svar: Hvis vi trenger å sikre at det ikke blir noen modifikasjoner på et objekt, bruker vi metoden freeze i Ruby, og med den lager vi enkelt objekter som er uforanderlige. Hvis vi prøver å endre et objekt (som er underlagt metoden freeze), vil utfallet være en kjøretidsfeil av programmet.
For å teste om denne handlingen var vellykket, trenger vi bare å bruke Object#freeze. Ideelt sett vil resultatet være true (som betyr "frosset"). Ellers vil det være false.
- Hvordan vil du forklare ‘loading’ og ‘requiring’ i Ruby?
Forventet svar: Load og require er metoder i Ruby som brukes når man jobber med kode.
Mer presist, når vi bruker ‘load’, aktiverer vi lesing og analysering av filer ved enhver anledning når vi kjører denne filen. Det er best å bruke denne metoden når vi vil laste inn andre filers kode for å få kodeoppdateringer i tide (hvis filene endres ofte og dynamisk).
‘Require’ er metoden vi bruker når vi trenger å laste en fil og få utført alle setningene. Denne metoden importerer hver definisjon av en metode og klassene i den eksakte filen.
- Hvordan bruker vi en metode i Ruby?
Forventet svar: Hvis vi trenger å kalle (invoke) en metode, må vi skrive inn navnet på metoden – vi gjør dette i argumentene.
Det er ganske mange måter å invoke en metode på, for eksempel ved å:
- Hopp over parentes
- Bruke ‘tap’
- Bruke 'to_proc' for funksjonsnavnet
- Bruker ‘method_missing’
- Bruke ‘eval
- Bruk av ‘send’, samt ‘public_send’
- …og andre.
Hasaj la til at man bør stille følgende spørsmål for å sikre at den nyansatte Ruby-utvikleren oppfyller stillingskravene:
- Hvordan vil du håndtere N+1-queries?
- Hva er din erfaring med Rescue?
- Måler du hastigheten på en nyskrevet kode? Hvordan?
- Hva er din erfaring med automatisert testing?
Det viktigste, og vurderingen av en Ruby-utvikler
Under prosessen med å finne, intervjue og ansette en Ruby-utvikler, er dette hovedpunktene du bør vurdere hos utvikleren:
- God kjennskap til Ruby-syntaksen – skriving av grunnleggende og avanserte elementer (moduler, looper, klasser, etc.)
- OOP programmering
- Kjennskap til ERB/Haml – vanlige malsystemer
- MVC-paradigme – RoR-rammestruktur med sine lag for strukturering
- Enhetstesting gjennom Rspec
- JSON og API-erfaring
- HTTP- og REST-protokoller
Videre forklarte Hasaj mer om det som er viktig å se etter hos en Ruby-utvikler:
“Ruby-utvikleren trenger å vite hvordan de skal evaluere situasjoner der de implementerer løsninger. De bør vite når de skal bruke SQL-spørring eller Active Record eller når de skal fjerne N+1 query. Og selvfølgelig kan vurderingen avrundes ved å sjekke live-kodingslogikken også.”
Hva skiller en dyktig Ruby-utvikler fra en god en?
Å velge den perfekte Ruby-utvikleren kan være vanskelig når du mottar mange søknader med gode og dyktige utviklere. Så hvordan skal du skille mellom de gode og de ideelle?
Den dyktige Ruby-utvikleren vil ikke bare ha de avgjørende tekniske ferdighetene og ekspertisen, men de vil også ha en visjonær tankegang med kritisk tenkning for løsninger. De vil fungere både individuelt og i et team. Den ideelle Ruby-utvikleren setter sin ære i å intuitivt forstå arbeidet.
Ruby-utvikleren som skiller seg ut fra de andre potensielle kandidatene vet også mye om automatisert testing og Active Record.
Mulige utfordringer under ansettelse av en Ruby-utvikler
Som i alle prosesser og ansettelser, kan noen utfordringer dukke opp.
Dersom du ikke overlater screeningen til fagfolk som vet hva de skal se etter, risikerer du å ansette en uegnet utvikler. God på papiret, ikke så god i virkeligheten. Dette er en dårlig investering. Gå heller ikke i fellen og ansett en billigere utvikler i den tro at du sparer penger - trenger du en dyktig utvikler, ansett en dyktig utvikler.
En annen utfordring er å teste for feil ferdigheter, eller stille spørsmål som bare vagt gir en pekepinn om kandidatens dyktighet med Ruby. Ikke stol bare på det du ser på CV-en. Prøv å stille mer dyptgående spørsmål i tillegg for å se hvordan utvikleren takler dette.
Når og hvorfor trenger du å ansette en Ruby-utvikler?
En erfaren Ruby-utvikler forventes alltid å sikre enestående kvalitet, ytelse og respons til applikasjonene. De må også designe, bygge og i det lange løp vedlikeholde Ruby-koden, som må være pålitelig.
Ikke bare dette, men Ruby-utviklere er en utmerket ressurs når du trenger noen til å sikre automatiseringen og kvaliteten på koden, oppdage feil og foreslå løsninger for utviklingsproblemer.
I et nøtteskall må du ansette en Ruby-utvikler hvis du trenger forbedring innen:
- Skalerbarhet
- Utviklingshastighet
- Allsidighet (av apper med et rikt spekter av funksjoner)
- Cybersikkerhet
- eCommerce
- Innholdsaspektet i virksomheten
- Raskere behandling
- Konsistens i utviklingen
Generelt ansetter bedrifter Ruby-utviklere fordi de trenger enkel utvikling, optimalisering på høyt nivå, samt kostnadseffektivitet.
Fordeler ved Ruby
Ruby er et svært pålitelig programmeringsspråk og kommer med Ruby on Rails som rammeverk. Alle utviklere som jobber med det kan bygge mange høykvalitets nettapper med ren og skarp arkitektur og inkludere alle JavaScript-, CSS- og HTML-filer.
Fordi dette programmeringsspråket er enkelt, forenkler det alle kodeendringer. For utviklere er krevende prosjekter med et stort volum av endringer lett administrert.
Ruby er også svært sikkert og pålitelig. Med Ruby kan utviklere lagre, og til og med holde, alle objektene som trengs, og dermed forhindrer de kapring eller overskriving av ferdige filer eller sensitiv informasjon.
Mye raskere behandling er en annen fordel ved å jobbe med Ruby. Utvikleren kan effektivt betjene flere programmer samtidig, uten at systemene bremses - en perfekt løsning for prosjekter med presserende ETA.
Ruby er også fleksibel, åpen kildekode og konsekvent. Dette betyr at utviklere raskt kan finne frem til løsninger med de rike Ruby-bibliotekene med åpen kildekode. Syntaksen er også konsistent og enkel og kan gi svar uten å trenge den tidkrevende læringsprosessen fra bunnen av.
Når det gjelder fordelene ved å jobbe med Ruby, sa Hasaj videre:
"Ruby er fantastisk når du skriver databasespørringer med en Ruby-kode og Active Record. Alle metodene til Ruby er enkle å jobbe med og definere, og selve appstrukturen er praktisk, så vel som kodearkitekturen. Utvikleren trenger mindre tid til kodeskriving enn andre programmeringsspråk”.