I de sidste par år er det blevet dyrere at bygge optimerede applikationer og hjemmesider, og samtidig er efterspørgslen efter kvalitetsudviklere også steget.
På den anden side beriger udviklere deres færdigheder med mere end blot én programmeringsfærdighed for at være mere konkurrencedygtige på markedet, især fullstack-udviklere, som der altid er stor efterspørgsel efter.
Spørgsmålet er stadig: Hvor finder man gode fullstack-udviklere, og hvordan ansætter man dem effektivt? Først starter du med en vindende Fullstack Developer job ad før noget andet.
Lad os komme i gang.
Hvad er fullstack-udvikling?
Fullstack-udvikling omfatter frontend (klientside) og backend (serverside) applikationsudvikling. Fullstack-udviklere arbejder med at designe komplette webapps, hjemmesider og anden software fra bunden. De foretager også fejlfinding, planlægger, koder og styrer udviklingsprocessen. På en måde påtager de sig rollen som en teamleder, der overvåger alle aspekter og stadier af udviklingen.
Flere teknologier, programmeringssprog og frameworks er relateret til fullstack webudvikling og er opdelt i frontend og backend.
Lad os bryde dette ned.
Frontend-teknologier
Frontend henviser til den del af applikationen, der er fuldt synlig for brugeren. Brugeren betjener elementerne på frontend, og denne interaktion resulterer i dårlig, god eller fremragende UX (brugeroplevelse) - afhængigt af dens kvalitet, hastighed og effektivitet. Men en god fullstack-udvikler vil dække og optimere alle tre aspekter.
Nogle af de sprog, der bruges til at skabe appens frontend, er:
-
HTML + CSS: HTML står for HyperText Markup Language, og CSS står for Cascading Style Sheets. De udgør den perfekte kombination til at bygge hjemmesider og skabe en problemfri brugeroplevelse på tværs af mange platforme, enheder og browsere. HTML fortæller browseren, hvad den skal vise, og CSS fortæller den hvordan.
-
JavaScript: JavaScript er et populært scriptsprog til at skabe, placere og overvåge flere interaktive elementer på et websted. Det centrale JavaScript-paradigme kombinerer sine mange rammer og biblioteker (Node.js, Vue.js, Next.js) for at skabe avancerede applikationer, hjemmesider og andre typer software efter behov. Dette sprog er meget anvendeligt og en vigtig del af både frontend og backend i app-udviklingsprocessen.
-
TypeScript: Hvis du fjerner typerne, bliver TypeScript hurtigt til JavaScript. Begge dele har samme arkitektur, fordi TypeScript er bygget oven på JavaScript, og hvis en udvikler er dygtig til det ene, vil han også være dygtig til det andet.
Frontend-frameworks
Frontend-sprogene "stoler" på kraften i frameworks og biblioteker for at forbedre app-funktionaliteten og gøre udviklerne mere produktive i det lange løb. Nogle af de mest bemærkelsesværdige frameworks til frontend development er:
-
Angular: Overordnet set er Angular blevet mere en platform til at opbygge store, robuste, dynamiske og effektive applikationer, forbedre kommunikationen på klientsiden og sikre, at opdateringer kører regelmæssigt.
-
React.js: Som JavaScript-framework bruges React.js til at opbygge intuitive brugergrænseflader og er et af de mest populære frontend-frameworks. Det er open source og bedst kendt for at håndtere appens visningslag uden at gå på kompromis med kvalitet, hastighed og effektivitet.
-
jQuery: En af hovedfunktionerne i jQuery er at forenkle dataudvekslingen mellem HTML-dokumenter, dvs. samspillet mellem DOM (Document Object Model) og JavaScript. Dette forbedrer DOM-animationerne og understøtter JavaScript-udvikling på tværs af browsere.
-
Vue.js: Vue.js repræsenterer en JavaScript-ramme, der er bygget oven på JavaScript, CSS og HTML. Udviklere bruger denne ramme til at bygge enkle eller komplekse brugergrænseflader.
Backend-teknologier
Backend- eller serversiden af en app eller et websted håndterer flere elementer, såsom korrekt API-integration, databasestyring og forespørgselsstyring, blandt andet. Nogle af de mest fremtrædende programmeringssprog, frameworks og biblioteker, der bruges til backend-udvikling, er:
-
PHP: Anses for at være et af de mest populære scriptsprog på serversiden, PHP bruges i vid udstrækning til backend til webudvikling. Udviklere kan lide at bruge det til at opbygge dynamisk indhold og nemt læse, skrive og slette filer på serveren, kryptere data, styre brugerrettigheder og meget mere.
-
C++: C++ er et fleksibelt, objektorienteret programmeringssprog, der optimerer hjemmesidens ydeevne, samtidig med at UX på frontenden forbliver intakt.
-
Python: Som et populært programmeringssprog er Python meget udbredt på grund af dets enkelhed, syntaks, der er let at lære, og problemfri integration af flere systemer, browsere og enheder.
-
Java: En erfaren fullstack-udvikler har ideelt set et fremragende kendskab til Java og til at skrive Java-kode med dette objektorienterede, skalerbare sprog.
-
Node.js: Der er forskellige definitioner af, hvad Node.js er, fra en ramme til et runtime-miljø, men det hele kan koges ned til at være en JavaScript-udvidelse til oprettelse, test og kørsel af backend-tjenester.
Backend-frameworks
Backend-frameworks er en afgørende del af fullstack-udvikling, og nogle af de mest populære er:
-
Django: Django er en open source Python-ramme til fremragende webdesign og -udvikling. Det er hurtigt og bruger MTV-arkitekturmønsteret (model-template-view).
-
Laravel: Dette er en pålidelig backend-API til Next.js, mobil og andre frontend-apps. Og Laravel er en PHP-ramme, der bruger MVC-arkitekturmønsteret.
-
RoR: Forkortelsen står for Ruby on Rails, og det er en robust backend-ramme baseret på sproget Ruby. Den er afhængig af JSON og XML til dataoverførsel og HTML, CSS og JavaScript til at stabilisere UI (brugergrænsefladen).
-
Spring: Som et af Javas backend-frameworks skiller Spring sig ud med en enkel syntaks og en stærk driftslogik til de mest komplekse operationer. Det hjælper udviklere med at skabe pålidelige og hurtige apps ved hjælp af POJO'er (Java-objekter).
-
Express.js: Express.js repræsenterer en Node.js webudviklingsramme til mobil- og webapps. Den gengiver sider dynamisk, definerer routingtabeller og udfører forskellige HTTP-handlinger.
Hvornår har du brug for en Fullstack-udvikler?
Der er stor efterspørgsel efter fullstack-udviklere derude, fordi de har flere kasketter på ved at dække både frontend- og backend-aspekterne af udviklingen. Med det bringer de fremragende problemløsningsevner til deres arbejde.
Men du har brug for en Fullstack Developer, hvis du vil have et produkt, der er skabt effektivt, med minimalt besvær, men som er yderst funktionelt - og udviklerne gør det mest på egen hånd uden væsentlig ekstern støtte.
En Fullstack Developer er bekendt med hele udviklingsprocessen fra startpunkt til slutpunkt eller fra den første idé til den fungerende prototype. Du har brug for en teknisk ekspert som denne, fordi en person med mange færdigheder er en fremragende investering for enhver virksomhed. At ansætte en fullstack-udvikler i stedet for flere tekniske eksperter, der er dygtige til meget mindre teknologier vil spare dig tid og penge i det lange løb.
Når du ansætter en fullstack-udvikler af høj kvalitet, vil de også overvåge hele engagementets arbejdsgang uafhængigt og mindske sandsynligheden for fejlkommunikation i de strenge og afgørende faser af app-udviklingscyklussen.
Lad os opsummere:
- De er mangesidede tekniske eksperter dygtige til frontend og backend
- De leverer pålidelig og robust kode
- De har flere års erfaring inden for en række forskellige områder og nicher
- De kan nemt skifte roller i farten (senior, debugger, projektleder og meget mere)
- De er omkostningseffektive tekniske eksperter
- De har god viden om fortid, nutid og potentiel fremtid udviklingstendenser
Hvor finder jeg fullstack-udviklere?
Du kan finde fullstack-udviklere forskellige steder, bl.a. på freelanceplatforme, sociale medier, kodelagre, mund-til-mund-anbefalinger og programmeringshjemmesider. Men med disse muligheder er du nødt til at foretage al research selv eller sammen med dit team af interne rekrutteringsmedarbejdere.
Antag i stedet, at du vil spare tid og forhindre risikoen for at forlænge og trække ansættelsen i langdrag. I så fald kan du altid gå efter tjenester, der matcher dig med arbejdsklare udviklere på få dage, såsom Proxify, hvor vi også står inde for udviklernes baggrund og deres tekniske viden, så du ikke behøver at gøre det hele selv.
Interview med fullstack-udviklere
Her er en tjekliste over tekniske færdigheder, som en Fullstack Developer skal kunne, og nogle interviewspørgsmål og svar, som du kan bruge til vurderingen.
Generel fullstack-viden
En erfaren fullstack-udvikler kender til datastrukturer, algoritmer, teori om programmeringssprog og netværksemner som OSI/RM- og TCP/IP-protokolmodeller.
De ved også, hvordan man arbejder med mindst tre forskellige programmeringssprog, og kan fremvise eksempler fra den virkelige verden på tidligere gennemførte opgaver.
Sidst, men ikke mindst, skal de teste og fejlfinde effektivt.
Tekniske færdigheder
Kort sagt skal de kombinere nogle (eller de fleste) af følgende færdigheder:
- HTML, CSS
- JavaScript, TypeScript
- React.js, Angular, Vue.js, Next.js, jQuery
- Node.js, Express.js
- Java, Spring
- Python, Django, Flask
- C++, C#
- PHP, Laravel
- Perl
- Ruby, Ruby on Rails
Men de skal først og fremmest vise usædvanlig viden om:
- Hvordan HTML og CSS fungerer, hver for sig og sammen
- HTML-kode på et overfladisk niveau
- De fleste JavaScript-frameworks udenad
- Java og de fleste af dets frameworks (Spring, Spring Boot)
- Kender Pythons frameworks udmærket (Django, Flask)
C++
- Databaser (såsom MongoDB, PostgreSQL, MySQL)
- Versionskontrolsystemer (såsom Git og GitHub)
- Cloud-hostingplatforme (såsom Heroku, AWS, Google Cloud og Microsoft Azure)
Interviewspørgsmål og -svar til vurdering af fullstack-udviklere
Vi kan opdele spørgsmålene i generelle og specifikke.
Generelle spørgsmål
1. Hvilke programmeringssprog har du mest erfaring med at arbejde med?
Eksempel på svar: Jeg har mest erfaring med at bygge applikationer i Python, Django og Vue.js, men jeg har også betydelig erfaring med JavaScript, SQL og Rust. Ikke desto mindre kan jeg godt lide den OS-uafhængighed, der følger med denne overordnede stak, da jeg altid kan være sikker på, at mine applikationer vil være kompatible med de mest populære operativsystemer i dag.
2. Hvad er dit foretrukne eller mest brugte programmeringssprog?
Note: Her skal intervieweren være åben over for kandidatens svar. Udvikleren kan foreslå et andet programmeringssprog end det, intervieweren havde i tankerne.
Eksempel på svar: Lige siden jeg startede, har jeg kunnet lide at arbejde med Python. Det har en meget intuitiv syntaks og en blid indlæringskurve (let at lære, svært at mestre), og det tilbyder en række biblioteker og frameworks, hvis du vil udvide mulighederne for, hvad du kan gøre, uden at gå på kompromis med kvaliteten af den endelige applikation.
Det er svært at vælge kun ét foretrukket programmeringssprog til fullstack-udvikling, så jeg vil også tilføje Node.js og C#. Node.js er fantastisk til skalerbarhed, øger ydeevnen og er omkostningseffektiv. Samtidig fremskynder C# udviklingsprocessen, arbejder med skalerbarhed og er enkel at vedligeholde. For en fullstack-udvikler er alle disse fordele en stor fordel, når de kombineres, hvilket gør vores arbejde mere tilgængeligt og mere effektivt og giver et fantastisk resultat.
3. Hvilke teknologier ville gøre det muligt for dig at bygge en applikation fra bunden?
Eksempel på svar: Med hensyn til udvikling på klientsiden foretrækker jeg det grundlæggende, dvs. HTML, CSS, JavaScript og måske TypeScript. For at løse databaseforespørgsler bør MySQL få arbejdet gjort. Når det kommer til det praktiske, foretrækker jeg at bruge Python med Django eller LAMP-stakken til mere komplekse opgaver. Jeg er også afhængig af Git og Github for lettere at kunne synkronisere med andre fullstack-udviklere.
4. Hvad er nogle af de seneste tendenser inden for fullstack-udvikling, som har overrasket dig?
Eksempel på et svar: Jeg er fascineret af fremkomsten (og den potentielle undergang) af NFT'er (non-fungible tokens). Tidligere blev programmering og kunst normalt betragtet som to separate discipliner. I dag ser det ud til, at grænserne bliver udvisket for hver dag, der går. For at skabe en NFT-samling skal du f.eks. være en god programmør med et unikt kunstnerisk touch. NFT'ernes verden (og kryptovaluta generelt) kan enten tage fart eller gå ned med et brag uden advarsel, hvilket jeg tænker på nu og da.
Derudover er der også værd at nævne som AI, som introducerer mange nye værktøjer, der vil hjælpe (næsten) alle med at udføre deres arbejde meget mere effektivt end før.
5. Var der tilfælde, hvor dine kolleger lavede en kodningsfejl? Hvad har du gjort?
*Bemærk: Intervieweren skal være forberedt på at høre udviklerens mulige svar, da dette er et lidt personligt spørgsmål.
Eksempel på svar: Ja. Engang arbejdede jeg på et JavaScript-projekt med en kollega, og koden kompilerede ikke korrekt. Jeg gennemgik det manuelt og fandt ud af, at de brugte parenteser, hvor de skulle have brugt parenteser, men jeg trådte til for at hjælpe med at rette fejlen.
6. Hvordan bygger man SEO-venlige webapplikationer?
Eksempel på svar: Jeg bruger et fremragende grundsprog (Python) sammen med en aktuel type ramme (Django) for at opnå effektivitet og hastighed. At bygge webapplikationer betyder, at du ikke har den luksus at "hamstre" ubrugte ressourcer, der optager unødvendig plads og trækker hele arbejdsgangen ned. SEO handler om hurtige indlæsningstider (brugere klikker normalt væk, hvis siden ikke indlæses på cirka to eller tre sekunder), så jeg forsøger at bruge en letvægtstilgang og løse SEO, før engagementet starter.
7. Hvordan fejlsøger man udfordrende programmer?
Eksempel på svar: En metode, som jeg gentagne gange bruger (og som jeg tror er mere effektiv, end udviklere normalt giver den kredit for), er den såkaldte "commenting out"-metode. Når jeg har mistanke om, at en fejlbehæftet del af koden forstyrrer resten af arbejdsgangen, kommenterer jeg den specifikke kode ud og kompilerer opgaven igen. Hvis problemet fortsætter, går jeg over til browserbaserede debuggere til webprojekter (Firefox og Chrome) eller desktopbaserede debuggere til Windows-projekter (Visual Studio Debugger).
8. Hvad er en almindelig udfordring i fullstack-udvikling, og hvordan løser man den bedst?
Eksempel på svar: Et indlysende svar er at opnå en balance mellem frontend og backend og at administrere dem godt. Det kan være en udfordring at opnå dette, fordi forskellige udviklere arbejder på andre ting af samme engagement, så synkronisering mellem teammedlemmer er grunden til denne situation.
9. Hvad er den bedste måde at optimere SQL-forespørgsler på?
Eksempel på svar: For at optimere disse forespørgsler er vi nødt til at kende de bedste teknikker til at forbedre SQL-forespørgslens ydeevne. Nogle af de bedste teknikker er:
- SELECT-forespørgsel i stedet for at bruge SELECT*
- Indeksering
- Aliaser til tabeller
- Der bruges ikke mange JOINs
- Underspørgsmål
- Jokertegn
- Optimering af databasedesign
10. Kan du definere Callback Hell?
Eksempel på svar: Callback Hell repræsenterer et anti-mønster, som vi kan se i asynkron programmeringskode (grundlæggende når mange funktioner kører samtidigt). Callback-helvedet er også kendt som Pyramid of Doom, og dybest set henviser disse navne til mange indlejrede "if"-funktioner eller -udsagn. Denne situation er, når mange async-funktioner eksisterer samtidigt og er afhængige af hinanden.
Det kan skabe rod, fordi mange tilbagekaldsfunktioner ligger i lag og er indlejrede. Så når vi bruger callback-funktioner, er der en kode tilbage, som er næsten umulig at vedligeholde eller læse, og som også ligner en pyramide. Appens flow kan heller ikke let identificeres, og alt dette er en hindring for debugging - derfor de helvedes sætninger i dette anti-mønster.
Specifikke spørgsmål
1. Er du bekendt med designmønstre? Hvordan har du brugt dem i dine opgaver?
Eksempel på svar: Generelt set er designmønstre tilgange til at løse en specifik udfordring inden for softwareteknik. Jeg har brugt kreative og strukturelle designmønstre i mine tidligere opgaver med stor succes. Jeg har brugt designmønstrene Singleton, Flyweight og Bridge.
2. Hvad er forskellen mellem interface og abstrakte klasser?
Eksempel på svar: Interface-klasser giver dig kun mulighed for at angive klassens funktionalitet, men ikke for at implementere den. Med abstrakte klasser kan du hurtigt implementere funktionalitet ved hjælp af underklasser.
3. Hvordan ville du definere en RESTful API?
Eksempel på svar: RESTful API er en type interface, som to computere (normalt en klient og en server) bruger til at kommunikere på nettet. RESTful API henter en record med en GET-anmodning, opretter en med en POST-anmodning og sletter en med en DELETE-anmodning.
4. Hvad er dit løsningsforslag til at forhindre en bot i at scrape et offentligt kendt API?
Eksempel på svar: Der er et par måder at gøre dette på. Du kan f.eks. kræve et brugernavn og en adgangskode af brugerne (for at oprette en konto) for at få adgang til indhold på webstedet. Eller du kan begrænse antallet af gange, en enkelt bruger kan foretage anmodninger ved hjælp af en identisk IP-adresse.
5. Hvad er forskellen på at normalisere og nulstille CSS?
Eksempel på svar: Normalisering vil kun fjerne et begrænset antal stylings, som browserne sender videre til elementerne på en side. Når du nulstiller, fjernes alle standardstylings.
6. Hvad er forskellen mellem blå-grøn udrulning og rullende udrulning?
Eksempel på svar: En rullende implementeringsstrategi har ikke flere staging-miljøer. Den udsender kun opdateringer efter behov. Blå-grøn udrulning gør brug af to udrulningsstrategier: blå og grøn. I den blå fase af BG's implementeringsstrategi gennemgår engagementet kvalitetssikring og test efter behov. Den grønne fase håndterer trafikken, indtil alt i den blå fase er gennemført i overensstemmelse hermed.
7. Hvor mange typer designmønstre findes der?
Eksempel på svar: Der er tre: strukturel, adfærdsmæssig og skabende. Strukturelle mønstre øger funktionaliteten af klasserne i koden uden væsentlige ændringer i sammensætningen. Adfærdsklasser afhænger af interkommunikationen mellem klasser. Oprettelsesmønstre er beregnet til instantiering af klasser. De er yderligere opdelt i objekt-kreationelle objekt-kreationelle og klasse-kreationelle mønstre.
8. Hvad er nogle af forskellene mellem REST og GraphQL?
Eksempel på svar: GraphQL er en serverside-teknologi, der udfører forespørgsler for at få fat i data. REST er en arkitektonisk stil, der begrænser, hvordan webapps oprettes. GraphQL bruger også skemaer, mens REST er afhængig af en række slutpunkter til udførelsen.
9. Hvordan vil du reducere indlæsningstiden for en webapplikation?
Eksempel på svar: På et par måder. Først kan du komprimere billederne og flytte stilarkreferencerne til begyndelsen af HTML-siden. Dernæst kan du flytte scriptreferencerne til slutningen af HTML-siden. Endelig kan du adskille JavaScript- og CSS-koden og placere dem uden for det primære HTML-dokument.
10. Hvorfor rydder man floats i CSS, og hvordan gør man det?
Eksempel på svar: Vi kan nemt placere elementer (for det meste billeder), så indholdet flyder pænt omkring dem ved hjælp af floats. Men når vi gør dette, kan resultatet være efterfølgende elementer omkring float-elementerne, så layoutet bliver brudt dårligt. For at forhindre dette rydder vi floats, og dermed har vi meget bedre kontrol over layoutet. Det er efter min mening de to mest almindelige og populære clearing floats-metoder derude:
- Clearfix er det mest almindelige, så vi er nødt til at anvende teknikken "clearfix" gennem et pseudo-element. Vi skal først oprette et usynligt element, der ryddes og flyder hurtigt. Ud fra dette kan du også forvente mere markup til HTML:
gruppe::efter {
indhold:"";
display:table;
clear:both;
}
11. Hvordan vil du mest effektivt fjerne ES6-array-duplikater?
Eksempel på svar: Den mest almindelige og bedste måde er at bruge et sæt - det giver mulighed for at gemme unikke værdier. Så når vi konverterer arrayet til et sæt, fjernes dobbelte værdier på denne måde. Det sidste trin er at foretage endnu en konvertering, denne gang til en sort, som den var før, med unikke værdier.
12. Kan du definere og skelne mellem async/await og Promises i JavaScript?
Eksempel på svar: Async/await repræsenterer et "syntaktisk sukker", der er bygget oven på Promises, og det får en asynkron kode til at ligne en synkron gennem brugen af async-funktioner og nøgleordet "await".
13. Hvordan vil du forklare processen med at debouncere funktioner i JavaScript?
Eksempel på svar: Når vi har brug for at udskyde udførelsen af en funktion, kaldes det debouncing. Vi udskyder for at forhindre, at tidskrævende opgaver sættes i gang for ofte. En måde at debounce en JavaScript-funktion på er:
funktion debounce(fn, forsinkelse) {
lad timeoutID;
return (...args) => {
clearTimeout(timeoutID);
timeoutID = setTimeout(() => fn.apply(this, argos), delay);
};
}
14. Hvad er formålet med Event-objekter for moduler som http eller fs i Node.js?
Eksempel på svar: Node.js-modulerne bruger Event-objekterne til at udsende hændelser, der signalerer tilstandsændringer, fejl eller ressourcetilgængelighed. Begivenhedsdrevet programmering er afhængig af brugen af begivenhedsobjekter for at opnå skalerbare og effektive apps. Dette er især tilfældet, når vi arbejder med workloads, der er I/O-bundne.
15. Hvad kan du sige om hukommelseslækager? Hvordan opdager, løser og forhindrer man dem?
Eksempel på svar: Hukommelseslækager (RAM-lækager) repræsenterer en del af en app, der bruger en bestemt hukommelse, men aldrig frigiver den bagefter. Når en app bruger meget hukommelse og ikke frigiver den, vil den udtømme hukommelsespuljen efter et stykke tid. Tidligere var hukommelseslækager almindelige, når udviklere brugte C++ og C. Det er ikke så svært at opdage dette, for det mest åbenlyse tegn er, at der ikke er nok hukommelse - systemet bliver langsommere, og appen begynder at gå ned. Det er heller ikke så svært at forhindre dette, vi har bare brug for en god garbage collector til at frigøre hukommelse.
En fullstack-udviklers synspunkt
I mellemtiden spurgte vi om fullstack-udvikling direkte til kilden, to Fullstack-udviklere fra Proxify, Martin Lucka og Dmitriy Zolotukhin. Vi spurgte om vigtige teknologier, de nødvendige forudsætninger, om fullstack-udviklere primært fokuserer på backend eller frontend, og hvordan de generelt bør gribe læring an.
Her er, hvad Martin havde at sige til at begynde med,
"En fullstack-udvikler er en professionel (svarende til en enhjørning), der kan udvikle en app fra nul til den endelige brugeroplevelse. Det omfatter muligheden for at bygge backend- (serverløs eller serverfyldt med databaser) og frontend- (web- eller app-) produkter."
Og han holder sig ikke tilbage med hensyn til de teknologier, man skal kende,
"Hvis du vælger en serverløs løsning, er det tilstrækkeligt kun at bruge frontend-teknologi - JavaScript/TypeScript, CSS, React (lær ikke Angular, Vue.js og andre frameworks, hvis de ikke er nødvendige)", siger han. "Hvis du vælger server-full, er kendskab til backend-sprog (Node.js + TS/JS, Java, C#, PHP) og databaser (SQL) også vigtigt."
Med hensyn til fokus og tid brugt på frontend eller backend gentog Martin,
"Normalt er fullstack bare et sæt af færdigheder, men de fleste engagementer har det adskilt, og så vælger udvikleren, hvilken karrierevej han vil gå. Små opgaver kan have serverløse løsninger, hvor begge vidensundergrupper vil blive anvendt (i så fald er det godt at have noget cloud-viden - GCP/Firebase, AWS, Azure, Back4app)."
Og til alle nyankomne i fullstack-udviklingens verden var dette det råd, han gav,
"Lær React og React Native, da jeg stadig mener, at de er de mest kraftfulde værktøjer på markedet. Lær ikke på den gamle måde med klasser; lær den funktionelle måde med hooks. Lær TypeScript, da det giver et stabilt fundament for ethvert engagement. Lær og øv dig; den bedste måde er at lave dit eget projekt. Hvis du ser, at nogle opgaver kun bruger JavaScript og klasser og ikke funktionel programmering og TypeScript, så løb væk så hurtigt som muligt."
Dmitriy deler sine tanker om, hvordan man bruger tiden bedst og fokuserer, når man udvikler,
"Når det gælder reel udvikling, kan du prøve at lave din egen app og bruge nye teknologier, frameworks og biblioteker. Læs om nye teknologier og prøv dem af, ikke bare se på fra siden eller læse. Installer og brug dem."
Og han tilføjer, at det er meget vigtigt at være næsten lige dygtig i backend og frontend. Alligevel kan udviklere i henhold til engagementskravene justere deres opmærksomhed til, hvor det er mest nødvendigt.