Det å ansette det neste teammedlemmet kan være komplisert uten klare ansettelsesmål eller detaljerte trinn. Forberedelse i forkant av søket gjør det nøyaktig, forenklet, effektiv og kostnadseffektiv å ansette. Vi hjelper deg med å lære nøyaktig når og hvorfor du trenger en C#-utvikler, hvordan du vurderer C#-utviklere og hvordan unngå å ansette ukvalifiserte kandidater.
Om C#
C# representerer et komponentorientert, typesikkert, objektorientert programmeringsspråk laget av Anders Hejlsberg i 2000, som en del av Microsoft. Den første offisielle versjonen av C# ble godkjent som en internasjonal standard av Ecma (ECMA-334) i 2002 og ISO/IEC (ISO/IEC 23270) i 2003.
C# er også dypt integrert med .NET-rammeverket fordi alle C#-programmer er bygget på .NET og kjører på det, sikkert og godt. C# brukes hovedsakelig for Windows, men utviklere kan også bruke det for macOS, Linux, Android og iOS.
Når det gjelder bruken, er C# populært for å lage skrivebords-, nett- og mobilapper, bedriftsprogramvare, VR og spill, skybaserte tjenester, nettsteder, nettjenester og dataapper.
Dette språket sikrer alltid en tydelig programstruktur og gjenbruk av kode. Det er også veldig likt Java (syntaksmessig) og C++. På grunn av at koden kan gjenbrukes, den klare strukturen og den enkle vekslingen mellom språk, er C# foretrukket og praktisk for mange utviklere.
C# må imidlertid ikke forveksles med andre C-språk. Her er korrelasjonen forklart – når C-språket ble opprettet (på 70-tallet), fulgte opprettelsen og utgivelsen av ytterligere to språk: C++ og C#, og de er alle forskjellige og separate. Men C er et prosessspråk, mens både C# og C++ er objektorienterte språk, og dermed like på denne måten.
C#-programmer kompilerer til CLR (common language runtime), mens C++-programmer kompilerer til maskinkode.
C# kan brukes i følgende rammeverk:
-
.NET Core – (multiplattform som støtter Linux, Mac og Windows) brukes hovedsakelig til utvikling av RESTful-tjenester, bedriftssystemer og nettapper.
-
.NET Framework – (kun med Windows). Ligner på .NET Core, bortsett fra at den kommer med flere funksjoner kun for Windows.
-
Unity – Den mest brukte spillmotoren for utvikling av spill for Sony, PC, Xbox og mer.
-
.NET Standard – Med et bibliotek i .NET Standard kan vi bruke det med alle appene nevnt ovenfor.
-
Xamarin – Brukes til å utvikle innebygde mobilapper for Mac, Android og iOS.
En C#-utviklers grunnleggende krav og ferdigheter
For jobbstillingen til C# må utvikleren oppfylle spesifikke tekniske krav for å gjøre jobben sin godt, som på listen nedenfor:
- En grad i informatikk, IT eller dataprogrammering
- Minst noen års yrkeserfaring, minimum tre
- Utmerkede ferdigheter i C# – skriving av ren, lesbar C#-kode, utmerket forståelse av samtidighetsmønstre for C#, erfaring med å skrive C#-biblioteker som kan gjenbrukes
- Utmerket forståelse av .NET-rammeverket og .NET Core
- Erfaring med andre programmeringsspråk (Java, PHP, C, C++)
- Bred kunnskap om verktøy for kodeversjonering (TFVC - Team Foundation Version Control, Mercurial, Git og SVN)
- God kunnskap om OOP (objektorientert programmering)
- Solid forståelse av prinsippene bak utforming av skalerbare apper
- God ekspertise innen databasediagrammer for en forretningsprosess
- God kunnskap om CI/CD
- Utmerket kunnskap om alle aspekter ved CLR (common language runtime)
- Solid forståelse av arkitektoniske mønstre og designmønstre
- Bruk av enhetstester og plattformer for automatisert testing
- Bruk av integrasjonstester
Det er å foretrekke å ha:
- utmerket kunnskap om relasjonelle databaser (MSSQL, PostgreSQL)
- utmerket forståelse av Mono-rammeverket
- grundig forståelse av Windows Presentation Framework
Jobbansvar for en C#-utvikler
C#-utviklerne bør oppfylle de tekniske kravene ovenfor og gjøre en god jobb med visse vanlige oppgaver. De typiske, vanlige ansvarsområdene til en C#-utvikler inkluderer følgende:
- Lage, bygge og vedlikeholde en C#-kode som er pålitelig, gjenbrukbar og effektiv
- Lage apper gjennom .NET-rammeverket eller .NET Core
- Oversette storyboards for apper
- Implemente brukstilfeller med enhets-/integrasjonstester
- Utvikle ulike C#-, .NET- eller .NET-kjerneløsninger
- Feilsøke kode
- Opprettholde god kvalitet, respons og ytelse til apper
- Løse .NET eller .NET Core prosjektproblemer
- Gjenkjenne feil, tekniske problemer og flaskehalser, og tilby løsninger for disse
Myke ferdigheter som kreves
Gode utviklere er mer enn bare tekniske ferdigheter og erfaring i en CV. Profesjonalitet består også av myke ferdigheter fordi disse ferdighetene bidrar til den generelle holdningen og kommunikasjonen til utvikleren. Når rekrutterere og ansettelsesledere gjenkjenner disse myke ferdighetene under intervjuet, vet de nesten alltid om den kandidaten passer perfekt for jobben.
For det første må utvikleren møte i tide til intervjuet og være godt forberedt. Dette betyr punktlighet, en ryddig, organisert, velutstyrt arbeidsplass og generelt god presentabilitet.
For det andre må de ha kunnskaper i engelsk og være en god kommunikator. For en god forståelse mellom begge sider, trenger utvikleren denne ferdigheten og være god til å både lytte og prate for en produktiv, hyggelig samtale. Dette er avgjørende å vite på forhånd, fordi det forteller deg hvordan du kommer til å kommunisere med utvikleren når du ansetter dem.
For det tredje kommer man langt med en nysgjerrig og positiv holdning for et vellykket samarbeid på lang sikt. Utvikleren bør vise at de virkelig bryr seg om stillingen og forpliktelsene for det overordnede oppdraget og målet for selskapet og prosjektet. De bør også ha gode evner når det kommer til kritisk tenkning og problemløsning, som er gunstig for eventuelle utfordringer i arbeidsdynamikken.
Vanligvis vil visse myke ferdigheter alltid skille seg ut når du velger riktig kandidat, som Sefa Teyek, en teknisk leder og C#-utvikler, uttalte:
«Utvikleren må vise gode problemløsningsevner og kritisk tenkning, men de bør også være en god lytter og kommunikator. De bør også disponere tiden sin effektivt, noe som er svært viktig innen utvikling. Og de trenger empati og forståelse for kunden og lederen sin.»
Sefa Teyek
Nødvendige tekniske ferdigheter
Sefa har også en liste over hva C#-utviklere må vite og kunne, samt nødvendig tekniske egenskaper som kandidaten må ha:
- Omfattende erfaring med WCF (Windows Communication Foundation)/Web API for å konstruere SOAP eller RESTful webtjenester.
- Avansert kunnskap om OOD (objektorientert design) og OOA (objektorientert analyse)
- Avansert kunnskap om SOLID (designprinsipper for objektorientert utvikling)
- God kunnskap om versjonskontrollsystemer (Git, Stash)
- God kunnskap om databaser (MSSQL, PostgreSQL, Mongo)
- God kunnskap om Docker (en åpen kildekode-plattform for å utvikle og kjøre apper)
Videre er det visse verktøy man må kjenne til, og biblioteker som C#-utvikleren må være godt kjent med:
- Visual Studio
- Visual Studio Code
- AutoMapper
- JSON.NET
- Git
- MSBuild
- Azure DevOps
- ReSharper
- Docker
- Cloud (Azure, AWS, or Google)
«Og for at C#-utvikleren skal få gjort jobben sin på en god måte, bør de også prøve å bruke forskjellige mønstre og følge nøye med på alle oppdateringer etter hvert som de utgis, spesielt om .NET Core, .NET, Docker og Azure.»
Sefa Teyek
Slik skiller du mellom en god og en ekstra dyktig C#-utvikler?
Blant C#-utviklerne som passer godt for jobben, vil det alltid være noen som skiller seg mer ut fra resten.
De skiller seg mest ut med kodekvalitet og ekspertise.
«Den beste C#-utvikleren skal kunne skrive ren kode. Ingen duplikat eller dårlig kode. De må også bruke mønstre i prosjektet effektivt, uten at det blir til spaghettikode.»
Sefa Teyek
Men andre ting påvirker også hvordan C#-utviklere skiller seg ut. Evalueringsprosessen består av mer enn kun høy kvalitet på koden. Noen utviklere skiller seg ut med veldig god kommunikasjonen. Fra et teknisk leders synspunkt og ved å vurdere potensielle ansettelser, legger Sefa til noe annet som er avgjørende for at en god C#-utvikler skal bli vurdert:
«Myke ferdigheter er viktigere for meg – raskt å forstå, kommunisere og lytte. Dessuten skal utvikleren kunne forklare i detalj hvilke deler de behersker av C#. De skal kunne forklare sine tidligere prosjekter i tekniske detaljer. For eksempel: Hva brukte utvikleren i prosjektet? Hvorfor valgte de å bruke det? Hvordan brukte de det? og lignende.»
Sefa Teyek
Intervjuspørsmål for å vurdere en C#-utvikler
For å intervjue en C#-utvikler anbefaler vi følgende vurderingsspørsmål som inneholder enkle og avanserte spørsmål.
1. Utdyp om inngangspunktet i programsammenheng, sted og tidspunkt.
Forventet svar: Den primære metoden for C# Windows-appen eller C#-konsollen er inngangspunktet. Det finnes i hver app som er kjørbar. Denne oppføringen er også et sted hvor vi starter og avslutter en programkontroll. I et hvilket som helst C#-program vi velger, kan vi bruke bare ett inngangspunkt per program.
2. Definer C#-klasser.
Forventet svar: Det er mye bruk av klasser når vi bruker C# fordi dette er et objektorientert programmeringspråk. Klassen representerer et grunnlag (eller blåkopi) for å definere et programs strukturering, administrasjon og lagring av data. Metodene og egenskapene er de essensielle delene av en klasse og kalles klassemedlemmer. Klassemedlemmene kan være private eller offentlige. De private klassemedlemmene har kun tilgang til klassen. De offentlige klassemedlemmene kan også nås fra andre programdeler.
3. Forklar de grunnleggende prinsippene for objektorientert programmering.
Forventet svar: I et objektorientert språk brytes et problem ned i flere mindre objekter (entiteter). Det som følger er byggingen av funksjoner og data for disse enhetene. Objektorientert programmering er basert på fire hovedprinsipper:
-
Abstraksjon (når vi skjuler alle data som ikke er relevante for et objekt)
-
Innkapsling (når vi samler data og metoder beregnet på å fungere med de spesifikke dataene fra én enkelt enhet.)
-
Arv (når vi utleder en klasse fra en annen) eller når en underordnet klasse får spesifikke egenskaper fra en overordnet klasse. Disse arvede egenskapene fra den overordnede klassen er alle de beskyttede og offentlige egenskapene og metodene.)
-
Polymorfisme (enkelt forklart er det en egenskap med mange former. Det betyr tilgang til ulike typer objekter, men gjennom samme grensesnitt)
4. Forklar C# tilgangsmodifikatorer.
Forventet svar: Det er fire tilgangsmodifikatorer i C#. De er nøkkelord som brukes for å spesifisere en type eller medlemstilgjengelighet som allerede er deklarert.
De fire typene er:
-
Offentlig (vi har tilgang til dem hvor som helst i koden)
-
Privat (vi har bare tilgang til dem når man er i den spesifikke klassen)
-
Intern (som offentlig, men hindrer tilgang om det skjer fra et annet prosjekt eller en annan applikasjon)
-
Beskyttet (beskytter alle metoder og atributter slik at kun klassen og underklassene kan bruke dem)
5. Sammenlign Respons.Redirect og Server.Transfer.
Forventet svar: Når vi ønsker å overføre brukere fra en side til en annen, bruker vi både Response.Redirect og Server.Transfer. Med Response.Redirect kommer vi til en helt ny side, adressefeltet er oppdatert, og vi kan se dette i nettleserens historikk. Med Server.Transfer er adresselinjen uendret, men vi kan ikke trykke «tilbake» om nødvendig.
6. Beskriv C# filhåndtering.
Forventet svar: Når vi åpner, skriver, legger til eller leser filer, kaller vi det filhåndtering. To vanlig og ofte brukte typer filhåndteringsoperasjoner er skriving og lesing. Vi konverterer filenes data til en bytestrøm med disse to. Deretter, når vi bruker utdatastrømmen, betyr det at vi skriver til en bestemt fil. Når vi bruker inndatastrømmen, leser vi fra en bestemt fil. Vi må bruke navneområdet System.io for å få tilgang til statiske metoder beregnet for filhåndtering.
7. Definer LINQ.
Forventet svar: LINQ står for Language Integrated Query, en spørringssyntaks i VB.NET og C#. Det er en enhetlig spørringssyntaks, og vi bruker den til å hente data fra ulike formater og kilder. Vi kan bruke dette integrert i C# eller VB.NET for å unngå at databaser og språk ikke matcher. Vi kan også bruke dette til å tilby ett spørringsgrensesnitt for ulike datakilder.
8. Utyp om nullbare typer.
Forventet svar: Når vi ser en underliggende verditype, er det også en udefinert verdi der. For å representere den udefinerte verdien bruker vi nullverditypen. Med denne nullbare typen for verditilordning, må vi bruke enten "?" operator eller nøkkelordet Nullable. Dessuten, hvis vi har en VarType-variabel, kan vi ikke bruke den nullbare typen.
9. Utdyp om GOD-klassen.
Forventet svar: En GOD-klasse representerer klasseobjekter som enten gjør for mye eller vet for mye enn de burde. Dette gjør koden svært vanskelig å følge og vedlikeholde. GOD-klassene er ment å spore rikelig med informasjon og effektivt dele opp en app. Bare én kodeendring påvirker resten av klassedelene betydelig, som en dominoeffekt. Dette resulterer i et enormt komplekst rot med kode å vedlikeholde. GOD-klassen bør unngås når det er mulig.
10. Beskriv hva lock statement er i C#.
Forventet svar: Lock i C# brukes til å låse en funksjon på et nøkkelord. Vi bruker lock statement når vi har en kritisk kodedel med en tråd i den, og vi må sørge for at ingen annen tråd kommer inn i denne kodedelen. Når en kode er låst, men en tråd forsøker å angi den, vil denne tråden først vente, deretter blokkere, men bare til gjenstanden utgis. Helt i starten av blokken gjennomfører nøkkelordet lock kjøring av Enter, men på slutten av blokken kjøres Exit.
11. Sammenlign parameterne «ref» og «out».
Forventet svar: For å sende argumenter til metoder som en referansetype, bruker vi nøkkelordet «out» i C# for å sende argumenter til metoder som en referansetype. Vanligvis brukes dette når en metode returnerer flere verdier.
For å sende argumenter etter referanse, bruker vi nøkkelordet «ref». Vi bruker også dette når det er endringer i en metode som gjenspeiler den spesifikke variabelen, men bare når kontrollen går tilbake til metoden for å be om gjennomføring bare for dette argumentet.
12. Sammenlign og differensier mellom «constants» og «read-only».
Forventet svar: Const-feltene må initialiseres under deklarasjonen. Const-variabler deklareres i metoder. Med statiske modifikatorer kan vi ikke bruke const-felt, og const-feltet representerer også en kompileringstidskonstant.
Til sammenligning initialiseres de skrivebeskyttede feltene i konstruktøren eller ved deklarasjon og kan ikke deklareres i metoder. Vi kan bruke skrivebeskyttet med en statisk modifikator, og vi kan kun bruke dem for run-time-konstanter.
13. Skille mellom verdityper og referansetyper.
Forventet svar: På stacken lagrer vi verditypene, og vi lagrer referansetyper på heapen. Verditypevariabler inneholder verdiene deres direkte. Men referansevariabler har kun referansen til objektplasseringen som er opprettet på heapen.
14. Forklar mer om «protected internal».
Forventet svar: Dette er en medlemstype vi kan få tilgang til med en hvilken som helst assemblykode som deklarerer dette. Eller vi kan også få tilgang til den fra en annen assemblys avledede klasse.
15. Skille mellom «grensesnitt» og «abstrakt klasse».
Forventet svar: En klasse kan ikke bare arve fra en abstrakt klasse, men også flere grensesnitt, men grensesnittet arver bare fra et annet grensesnitt. Dessuten deklarerer grensesnittet bare metoder og egenskaper, men i sin tur kan abstrakt klasse ha metoder og egenskaper som den fullstendige koden.
De abstrakte klasseelementene kan ha tilgangsnivåer akkurat som den vanlige klassen, men dette er ikke tilfellet med grensesnitt, og de har ikke denne funksjonen.
Når vi legger dette til abstraktklassen, kan vi automatisk bruke metoden på alle underklasser. Men når vi legger til en metode i et grensesnitt, bør vi implementere dette til hver underklasse og med fullstendig kode.
Den abstrakte klassen inneholder en konstruktør, men grensesnittet gjør det ikke. Mens grensesnittet ikke er en klasse, er den abstrakte klassen en av klassetypene.
Hvorfor trenger du å ansette en C#-utvikler?
Nedenfor fører vi opp årsakene til at C# er et godt valg for implementering i virksomheten din. På bedriftsnivå er det et utmerket valg fordi
Det er et sikkert språk
Siden C# er basert på objektorientert programmering, er sikkerheten alltid sikret. Utviklerne kan enkelt definere strukturen og datatypen før de bruker visse funksjoner på dette. Enhver app kan deles opp i mindre deler enklere fordi OOP effektivt får dataene inn i objekter. Disse mindre appdelene administreres og kombineres deretter mye enklere. Apper produsert med språk med objektorientert programmering er lesbare og enklere å teste.
I seg selv er C# begrenset til Windows, men med .NET utvides bruken til flere plattformer. C#-utviklere bruker de ulike kjøretidsmiljøtypene .NET, som Microsoft CLI og Mono.
Det er verdt å nevne at det også er fordelen med interoperabilitet, der en kode i C# enkelt samhandler med apper som utviklere skriver i blant annet F# eller C++. Det praktiske fortsetter videre med de mange klassebibliotekene og de flerfoldige komponentene som også kan tilpasses.
Det har utmerkede muligheter for minnetilgang
Syntaksen til C# gjør det til et unikt språk fordi det er lett å lese og høyst forståelig. I likhet med menneskelig språksyntaks, gjør dette C# til et programmeringsspråk på høyt nivå, og som er lett å lese. Utviklere liker å jobbe med slike språk på grunn av syntaksens generelle enkelhet.
Det gjør annen språklæring enklere
Språkene i C-familien er koblet til C#, slik at hvis en utvikler mestrer C#, kan de mye enklere forstå og arbeide videre med Java, C eller C++.
Det gir bedre vedlikehold av appytelse
C# har en innebygd søppeloppsamler, som forbedrer minnetildelingsadministrasjon og appytelse. Når utviklere kan bruke automatisk minneadministrasjon, trenger de ikke lenger å skrive ekstra, spesielle kommandoer for ubrukte objekter. De trenger heller ikke lenger å tømme minnet.
Det tilbyr detaljert dokumentasjon
C# leveres med omfattende og detaljert dokumentasjon, som .NET. Microsoft gir en oppgradert, god dokumentasjon med forbedringene som er gjort i utgivelsene av .NET oppigjennom årene. Dette inkluderer informative videoer, opplæringsprogrammer og detaljerte forklaringer og svar som gjør utviklerens jobb enklere og bedre.
Det er typesikkert og dynamisk
Med C# forblir variabelen med en uendret type i koden, og oppførselen er forutsigbar på forhånd. Resultatet er en kildekode som er mye mindre utsatt for feil på et senere tidspunkt. Med dynamisk skriving i C# kan utvikleren enkelt fange opp en feil som oppstår ved kjøring.
Den har bred støtte i fellesskapet
Fordi C# er sammenvevd med .NET, dobles fellesskapet av utviklere i dette tilfellet, og sikrer dermed god støtte, idédeling og samarbeid.
Hva får du når du bruker C# for bedriften din?
Når du ansetter utviklere som ønsker å bruke C# i foretaket ditt, kan du forvente følgende:
- Høyhastighetsapper med åpen kildekode – Takket være alle løsningene for appvedlikehold og verktøy som er tilgjengelige med C#, fungerer utviklerne mye bedre og får mer støtte mot sluttmålet.
- Appsikkerhet – Siden utviklerne ikke trenger å gjøre noen «typekonvertering» med C#, sporer de data bedre og sikrer at ingenting går tapt noe sted.
- Logiske strukturer – C# sørger alltid for at strukturer er logiske og velorganiserte. All informasjon kommer til å følge et rent hierarki, noe som resulterer i et dokument som er pent bygget.
- Skalerbarhet og enkel oppdatering – C# er enkel å bruke og oppdatere, og den er også skalerbar.
Både fra et utviklerperspektiv og for selskapets fordeler totalt sett, er bruk av C# utrolig fordelaktig, og Sefa bekrefter fra sin egen erfaring med å bruke dette språket:
«Med C# kan du forvente høy grad av sikkerhet på grunn av objektorientert programmering og fantastiske minnetilgangsmuligheter. Den er funksjonell, kjører på flere plattformer og har mange nyttige .NET-rammeverk/.NET Core. Visual Studio som native IDE (Integrated Development Environment) er også et stort pluss, sammens med håndteringen av minneallokering og det store fellesskapet.»
Sefa Teyek
Populære merkevarenavn som bruker C#
Mange kjente merkevarenavn bruker C# i arbeidet sitt, som for eksempel
- Microsoft
- Stack Overflow
- Service Titan
- Trustpilot
- Venmo
- Alibaba Travels
- Test Gorilla
- City National Bank
- Accenture
- Deezer
Ulike bransjer og bruk av C#
Mange bransjer og bedrifter bruker C# i arbeidet sitt, men noen få skiller seg ut, som Sefa la merke til:
«Først og fremst ser vi bruken av C# i Microsoft-produkter og SaaS-plattformer for samarbeid, som Stack Overflow. C# brukes også i selskaper for omdømmeplattformer, applikasjoner innen turisme, økonomi og banknæringen.»
Sefa Teyek
Mulige utfordringer ved ansettelse av en C#-utvikler
Ansettelsesprosessen til utviklere, som enhver annen ansettelsesprosess, har sine potensielle utfordringer. Disse utfordringene kan variere litt mellom de ulike bransjene, men de overlapper i de fleste tilfeller, spesielt innen IT.
I utgangspunktet kan det være et stort utvalg av utviklere og jobbsøkere å velge mellom, men er for det meste fylt med ukvalifiserte kandidater. Dette kan gjøre søket ditt vanskelig, med tanke på antall søkere og å finne ut at ikke alle passer til kriteriene dine for jobben.
Et annet scenario er et stort jobbsøkerutvalg, men med bare noen få velkvalifiserte C#-utviklere. I et slikt scenario bør du forvente at ansettelsesprosessen tar lengre tid å fullføre på grunn av et lavere intervjutempo. Husk at når det er færre velkvalifiserte utviklere tilgjengelig, er sjansen for at de ber om høyere lønn en mulighet. Knappe ferdigheter eller etterspurte ferdigheter går vanligvis hånd i hånd med høyere kompensasjon på grunn av stor etterspørsel og mangel på kvalifiserte utviklere.
Med tanke på utgifter, er rekrutteringskostnader noe man må følge nøye med på. Når man rekrutterer internt blir prosessen ofte lengre. En mer langvarig rekrutterings- og intervjuprosess koster også mer penger, og til tross for dette må det ideelle resultatet fortsatt garanteres fullt ut.
Og når det kommer til kostnader, ikke glem at konkurrenter kan tilby mer enn det du gir for jobben. Sammen med lønn kan de tilby flere goder og fordeler for å tiltrekke seg kandidaten. Prøv å være så informert som mulig om arbeidsmarkedet og ansettelse av C#-utviklere – undersøk og gå gjennom profesjonelle plattformer og profesjonelle sosiale medier for å se på trender og ansettelsesmetoder.
Den gode nyheten er at det finnes en smart løsning som dekker alle utfordringene som er oppført her. Det finnes bedrifter for bemanning og distribuert teamdannelse som sikrer at du sparer tid og penger, uten å redusere kvaliteten på utviklerne du får.
Konklusjon
Når du er bedre informert om ansettelsesprosessen til en C#-utvikler, forbereder du deg mye bedre på eventuelle kommende utfordringer som alltid dukker opp under rekruttering og ansettelse. Du får også vite hva du kan forvente når du endelig ansetter en C#-utvikler – både for teamet og selskapets fordeler i det lange løp.