Under de senaste åren har det blivit dyrare att bygga optimerade applikationer och webbplatser, och samtidigt har efterfrågan på kvalitetsutvecklare också ökat.
Å andra sidan berikar utvecklare sina färdigheter med mer än bara en programmeringsfärdighet för att bli mer konkurrenskraftiga på marknaden, särskilt fullstack-utvecklare, som alltid är mycket efterfrågade.
Frågan kvarstår: Var hittar man bra fullstack-utvecklare och hur anställer man dem effektivt? Först börjar du med en vinnande Fullstack Developer jobbannons före allt annat.
Låt oss börja.
Vad är fullstack-utveckling?
Fullstack-utveckling omfattar applikationsutveckling för frontend (klientsidan) och backend (serversidan). Fullstack-utvecklare arbetar med att utforma fullständiga webbappar, webbplatser och annan programvara från grunden. De felsöker, planerar, kodar och hanterar även utvecklingsprocessen. På sätt och vis tar de på sig rollen som en team lead som övervakar alla aspekter och stadier av utvecklingen.
Flera tekniker, programmeringsspråk och ramverk är relaterade till fullstack webbutveckling och är indelade i frontend och backend.
Låt oss bryta ner det här.
Frontend-teknik
Frontend avser den del av applikationen som är fullt synlig för användaren. Användaren använder elementen på frontend, och denna interaktion resulterar i dålig, bra eller utmärkt UX (användarupplevelse) - beroende på dess kvalitet, hastighet och effektivitet. Men en bra fullstack-utvecklare kommer att täcka och optimera alla tre aspekterna.
Några av de språk som används för att skapa appens frontend är:
-
HTML + CSS: HTML står för HyperText Markup Language och CSS står för Cascading Style Sheets. De utgör den perfekta kombinationen för att bygga webbplatser och skapa en sömlös användarupplevelse på många plattformar, enheter och webbläsare. HTML talar om för webbläsaren vad som ska visas och CSS talar om hur det ska göras.
-
JavaScript: JavaScript är ett populärt skriptspråk för att skapa, placera och övervaka flera interaktiva element på en webbplats. Det centrala JavaScript-paradigmet kombinerar sina många ramverk och bibliotek (Node.js, Vue.js, Next.js) för att skapa toppmoderna applikationer, webbplatser och andra typer av programvara efter behov. Det här språket är mycket användbart och en viktig del av både frontend och backend i apputvecklingsprocessen.
-
TypeScript: Om du tar bort typerna blir TypeScript snabbt JavaScript. Båda dessa delar samma arkitektur eftersom TypeScript är byggt ovanpå JavaScript, och om en utvecklare är skicklig i det ena kommer de att vara skickliga i det andra.
Ramverk för frontend
Frontend-språken "förlitar sig" på kraften i ramverk och bibliotek för att förbättra appfunktionaliteten och göra utvecklare mer produktiva på lång sikt. Några av de mest anmärkningsvärda ramverken för frontend-utveckling är:
-
Angular: Överlag har Angular blivit mer av en plattform för att bygga storskaliga, robusta, dynamiska och högpresterande applikationer, förbättra kommunikationen på klientsidan och säkerställa att uppdateringar körs regelbundet.
-
React.js: Som ett JavaScript-ramverk används React.js för att bygga intuitiva användargränssnitt och är ett av de mest populära frontend-ramverken. Det är öppen källkod och mest känt för att hantera appens vylager utan att kompromissa med dess kvalitet, hastighet och effektivitet.
-
jQuery: En av huvudfunktionerna i jQuery är att förenkla datautbytet mellan HTML-dokument, dvs. interaktionen mellan DOM (Document Object Model) och JavaScript. Detta förbättrar DOM-animationerna och stöder JavaScript-utveckling över flera webbläsare.
-
Vue.js: Vue.js är ett JavaScript-ramverk som bygger på JavaScript, CSS och HTML. Utvecklare använder detta ramverk för att bygga enkla eller komplexa användargränssnitt.
Backend-teknik
Backend eller serversidan av en app eller webbplats hanterar flera element, till exempel korrekt API-integration, databashantering och frågehantering, bland annat. Några av de mest framträdande programmeringsspråken, ramverken och biblioteken som används för backend-utveckling är:
-
PHP: Betraktas som ett av de mest populära skriptspråken på serversidan, PHP används ofta för backend för webbutveckling. Utvecklare gillar att använda det för att bygga dynamiskt innehåll och enkelt läsa, skriva och radera filer på servern, kryptera data, hantera kontrollanvändarbehörigheter och mycket mer.
-
C++: C++ är ett flexibelt, objektorienterat programmeringsspråk som optimerar webbplatsens prestanda samtidigt som UX på frontend lämnas intakt.
-
Python: Som ett populärt programmeringsspråk används Python ofta för sin enkelhet, lättlärda syntax och sömlösa integration av flera system, webbläsare och enheter.
-
Java: En erfaren fullstack-utvecklare har helst en utmärkt kunskap om Java och att skriva Java-kod med detta objektorienterade skalbara språk.
-
Node.js: Det finns olika definitioner av vad Node.js är, från ett ramverk till en körtidsmiljö, men allt handlar om att det är ett JavaScript-tillägg för att skapa, testa och köra backendtjänster.
Ramverk för backend
Backend-ramverk är en viktig del av fullstack-utvecklingen, och några av de mest populära är:
-
Django: Django är ett Python-ramverk med öppen källkod för enastående webbdesign och -utveckling. Den är snabb och använder MTV:s arkitekturmönster (model-template-view).
-
Laravel: Detta är ett pålitligt backend-API för Next.js, mobila och andra frontend-appar. Och, Laravel är ett PHP-ramverk som använder MVC-arkitekturmönstret.
-
RoR: Förkortningen står för Ruby on Rails, och detta är ett robust backend-ramverk baserat på språket Ruby. Den förlitar sig på JSON och XML för dataöverföring och HTML, CSS och JavaScript för att stabilisera UI (användargränssnitt).
-
Spring: Som ett av Javas backend-ramverk sticker Spring ut med en enkel syntax och kraftfull operativ logik för de mest komplexa operationerna. Det hjälper utvecklare att skapa tillförlitliga och snabba appar genom POJO:er (Java-objekt).
-
Express.js: Express.js representerar ett Node.js webbutvecklingsramverk för mobil- och webbappar. Den renderar sidor dynamiskt, definierar routningstabeller och utför olika HTTP-åtgärder.
När behöver du en Fullstack-utvecklare?
Det finns en anmärkningsvärd efterfrågan på fullstack-utvecklare där ute eftersom de bär flera hattar genom att täcka både frontend- och backend-aspekterna av utvecklingen. Med det tar de med sig utmärkta problemlösningsförmågor till sitt arbete.
Men du behöver en Fullstack Developer om du vill ha en produkt som skapas effektivt, med minimalt krångel, men som är mycket funktionell - och utvecklarna gör det mestadels på egen hand utan betydande externt stöd.
En Fullstack Developer är bekant med hela utvecklingsprocessen från startpunkt till slutpunkt eller från den första idén till den fungerande prototypen. Du behöver en teknisk expert som denna eftersom en person som är multikompetent är en utmärkt investering för alla företag. Att anställa en fullstack-utvecklare istället för flera tekniska experter som är kunniga i mycket mindre tekniker kommer att spara tid och pengar på lång sikt .
När du anställer en fullstack-utvecklare av hög kvalitet kommer de också att övervaka hela engagemangets arbetsflöde oberoende och mildra sannolikheten för missförstånd i de strikta och avgörande stadierna i apputvecklingscykeln.
Låt oss sammanfatta:
- De är mångfacetterade tekniska experter skickliga i frontend och backend
- De levererar pålitlig och robust kod
- De har flera års erfarenhet inom en mängd olika områden och nischer
- De kan enkelt byta roller i farten (senior, felsökare, projektledare med mera)
- De är kostnadseffektiva tekniska experter
- De har god kunskap om det förflutna, nutiden och den potentiella framtiden utvecklingstrender
Var hittar jag fullstack-utvecklare?
Du kan hitta fullstack-utvecklare på olika platser, inklusive frilansplattformar, sociala medier, kodförvar, muntliga rekommendationer och programmeringswebbplatser. Med dessa alternativ måste du dock göra alla efterforskningar på egen hand eller med ditt team av interna rekryterare.
Anta i stället att du vill spara tid och förhindra risken för att anställningen drar ut på tiden. I så fall kan du alltid använda dig av tjänster som matchar dig med färdiga utvecklare på bara några dagar, till exempel Proxify, där vi också går i god för utvecklarnas bakgrund och deras tekniska kunskaper, så att du inte behöver göra allt själv.
Intervjua Fullstack-utvecklare
Här är en checklista över tekniska färdigheter som en Fullstack Developer behöver känna till och några intervjufrågor och svar som du kan använda för bedömningen.
Allmän kunskap om fullstack
En erfaren fullstack-utvecklare kan allt om datastrukturer, algoritmer, programmeringsspråksteori och nätverksämnen som OSI/RM- och TCP/IP-protokollmodeller.
De ska också veta hur man arbetar med minst tre olika programmeringsspråk och kan visa upp verkliga exempel på tidigare genomförda uppdrag.
Sist men inte minst måste de testa och felsöka på ett effektivt sätt.
Tekniska färdigheter
Kort sagt kommer de att behöva kombinera några (eller de flesta) av följande färdigheter:
- 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 bör framför allt visa exceptionella kunskaper i:
- Hur HTML och CSS fungerar, separat och tillsammans
- HTML-kod på en flyktig nivå
- De flesta JavaScript-ramverken utantill
- Java och de flesta av dess ramverk (Spring, Spring Boot)
- Känna till Pythons ramverk utmärkt (Django, Flask)
C++
- Databaser (t.ex. MongoDB, PostgreSQL, MySQL)
- Versionskontrollsystem (som Git och GitHub)
- Molnbaserade värdplattformar (t.ex. Heroku, AWS, Google Cloud och Microsoft Azure)
Intervjufrågor och svar för bedömning av fullstack-utvecklare
Vi kan dela in frågorna i allmänna och specifika.
Allmänna frågor
1. Vilka programmeringsspråk har du mest erfarenhet av att arbeta med?
Exempelsvar: Jag har mest erfarenhet av att bygga applikationer i Python, Django och Vue.js, men jag har också betydande erfarenhet av JavaScript, SQL och Rust. Ändå gillar jag OS-oberoendet som kommer med denna övergripande stack, eftersom jag alltid kan vara säker på att mina applikationer kommer att vara kompatibla med de mest populära operativsystemen idag.
2. Vilket är ditt favorit- eller mest använda programmeringsspråk?
Anmärkning: Här bör intervjuaren ha ett öppet sinne för kandidatens svar. Utvecklaren kan föreslå ett annat programmeringsspråk än det som intervjuaren hade i åtanke.
Exempel på svar: Ända sedan jag började gillade jag att arbeta med Python. Det har en mycket intuitiv syntax och en mild inlärningskurva (enkelt att lära sig, svårt att bemästra), och det erbjuder en mängd olika bibliotek och ramverk om du vill utöka möjligheterna för vad du kan göra utan att kompromissa med kvaliteten på den slutliga applikationen.
Att välja bara ett favoritprogrammeringsspråk för fullstack-utveckling är svårt, så jag skulle också lägga till Node.js och C #. Node.js är utmärkt för skalbarhet, ökad prestanda och är kostnadseffektivt. Samtidigt snabbar C# upp utvecklingsprocessen, arbetar med skalbarhet och är enkelt att underhålla. För en fullstack-utvecklare är alla dessa fördelar mycket viktiga när de kombineras, vilket gör vårt arbete mer tillgängligt och mer effektivt för ett fantastiskt resultat.
3. Vilka tekniker skulle göra det möjligt för dig att bygga en applikation från grunden?
Exempel på svar: När det gäller utveckling på klientsidan föredrar jag grunderna, dvs. HTML, CSS, JavaScript och kanske TypeScript. För att lösa databasfrågor bör MySQL få jobbet gjort. För mer komplexa uppdrag föredrar jag att använda Python med Django eller LAMP-stacken. Jag förlitar mig också på Git och Github för enklare synkronisering med andra fullstack-utvecklare.
4. Vilka är några av de senaste fullstack-utvecklingstrenderna som överraskade dig?
Exempel på ett svar: Jag är fascinerad av uppkomsten (och den potentiella nedgången) av NFT (non-fungible tokens). Tidigare betraktades programmering och konst vanligtvis som två separata discipliner. Nuförtiden verkar det som om gränserna suddas ut för varje dag som går. För att till exempel skapa en NFT-samling måste du vara en anständig programmerare med en unik konstnärlig touch. Världen av NFT (och kryptovaluta i allmänhet) kan antingen ta fart eller krascha spektakulärt utan varning, vilket jag tänker på då och då.
Förutom detta finns det också värdiga omnämnanden som AI som introducerar många nya verktyg som kommer att hjälpa (nästan) alla att göra sitt jobb mycket effektivare än tidigare.
5. Fanns det tillfällen då dina kollegor gjorde ett kodningsmisstag? Vad gjorde du?
*Notera: Intervjuaren bör vara beredd på att höra utvecklarens möjliga svar, eftersom detta är en fråga som i viss mån handlar om personliga åsikter.
Exempel på svar: Ja, det gör jag. En gång arbetade jag på ett JavaScript-engagemang med en kollega, och koden kompilerades inte korrekt. Jag gick igenom det manuellt och fann att de använde parenteser där de borde ha använt parenteser, men jag gick upp för att hjälpa till att åtgärda felet.
6. Hur bygger du SEO-vänliga webbapplikationer?
Exempel på svar: Jag använder ett utmärkt grundspråk (Python) i kombination med en aktuell typ av ramverk (Django) för att lösa effektivitet och snabbhet. Att bygga webbapplikationer innebär att du inte har lyxen att "hamstra" oanvända resurser som tar upp onödigt utrymme och drar ner hela arbetsflödet. SEO handlar om snabba laddningstider (användare klickar vanligtvis bort om webbplatsen inte laddas på cirka två eller tre sekunder), så jag försöker använda ett lättviktigt tillvägagångssätt och lösa SEO innan engagemanget börjar.
7. Hur debuggar man utmanande program?
Exempel på svar: En metod som jag ofta använder (och som jag tror är mer effektiv än vad utvecklare vanligtvis ger den kredit för) är den så kallade "kommentera ut"-metoden. När jag misstänker att en felaktig del av koden stör resten av arbetsflödet kommenterar jag ut den specifika koden och kompilerar om uppdraget. Om problemet kvarstår går jag över till webbläsarbaserade debuggers för webbprojekt (Firefox och Chrome) eller skrivbordsbaserade debuggers för Windows-projekt (Visual Studio Debugger).
8. Vad är en vanlig utmaning inom fullstack-utveckling och hur löser man den bäst?
Exempel på svar: Ett uppenbart svar är att uppnå en balans mellan frontend och backend och att hantera dem väl. Det kan vara utmanande att åstadkomma detta eftersom olika utvecklare arbetar med andra saker av samma engagemang, så synkronisering mellan teammedlemmar är anledningen till denna situation.
9. Vad är det bästa sättet att optimera SQL-frågor?
Exempelsvar: För att optimera dessa frågor måste vi känna till de bästa teknikerna för att förbättra SQL-frågans prestanda. Några av de bästa teknikerna är:
- SELECT-fråga istället för att använda SELECT*
- Indexering
- Alias för tabell
- Inte många JOINs används
- Underfrågor
- Jokertecken
- Databasdesign optimering
10. Kan du definiera Callback Hell?
Exempel på svar: Callback Hell representerar ett anti-mönster som vi kan se i asynkron programmeringskod (i princip när många funktioner körs samtidigt). Callback Hell är också känt som Pyramid of Doom, och i grund och botten hänvisar dessa namn till det till många kapslade "if" -funktioner eller uttalanden. Denna situation är när många asynkrona funktioner existerar samtidigt och är beroende av varandra.
Detta kan skapa en röra eftersom många återuppringningsfunktioner är alla i lager och kapslade. Så när vi använder callback-funktioner är det som återstår en kod som är nästan omöjlig att underhålla eller läsa och som också liknar en pyramidform. Appens flöde kan inte heller enkelt identifieras, och allt detta är ett hinder för felsökning - därav de helvetiska fraserna i detta anti-mönster.
Specifika frågor
1. Är du bekant med designmönster? Hur har du använt dem i dina uppdrag?
Exempel på svar: Generellt sett är designmönster tillvägagångssätt för att lösa en specifik utmaning inom programvaruteknik. Jag har använt kreativa och strukturella designmönster i mina tidigare uppdrag med stor framgång. Jag har använt designmönstren Singleton, Flyweight och Bridge.
2. Vad är skillnaden mellan gränssnitt och abstrakta klasser?
Exempel på svar: Gränssnittsklasser tillåter dig bara att ange klassens funktionalitet men inte att implementera den. Med abstrakta klasser kan du snabbt implementera funktionalitet med hjälp av underklasser.
3. Hur skulle du definiera ett RESTful API?
Exempel på svar: RESTful API är en typ av gränssnitt som två datorer (vanligtvis en klient och en server) använder för att kommunicera på webben. RESTful API hämtar en post med en GET-begäran, skapar en genom en POST-begäran och tar bort en med en DELETE-begäran.
4. Vad är din föreslagna lösning för att förhindra en bot från att skrapa ett offentligt känt API?
Exempel på svar: Det finns ett par olika sätt att göra detta på. Du kan t.ex. kräva användarnamn och lösenord av användarna (för att skapa ett konto) för att få tillgång till innehåll på webbplatsen. Eller så kan du begränsa antalet gånger en enskild användare kan göra förfrågningar med en identisk IP-adress.
5. Vad är skillnaden mellan normalisering och återställning av CSS?
Exempel på svar: Normalisering kommer bara att ta bort ett begränsat antal stylings som webbläsarna skickar ner till elementen på en sida. Vid återställning tas alla förvalda stilar bort.
6. Vad är skillnaden mellan blågrön utrullning och rullande utrullning?
Exempel på svar: En strategi för rullande distribution har inte flera mellanlagringsmiljöer. Den distribuerar uppdateringar endast vid behov. Blå-grön distribution använder sig av två distributionsstrategier: blå och grön. I den blå fasen av BG:s utplaceringsstrategi genomgår uppdraget kvalitetssäkring och testning efter behov. Den gröna fasen hanterar trafiken tills allt i den blå fasen har slutförts i enlighet med detta.
7. Hur många typer av designmönster finns det?
Exempel på svar: Det finns tre: strukturell, beteendemässig och skapande. Strukturella mönster ökar funktionaliteten hos klasserna i koden utan betydande förändringar av kompositionen. Beteendemässiga klasser är beroende av att klasserna kan kommunicera med varandra. Skapande mönster är avsedda för klassinstansiering. De är vidare indelade i objektkreationella objektkreationella och klassreationella mönster.
8. Vilka är några av skillnaderna mellan REST och GraphQL?
Exempel på svar: GraphQL är en teknik på serversidan som exekverar frågor för att få tag på data. REST är en arkitektonisk stil som begränsar hur webbappar skapas. GraphQL använder också schema, medan REST förlitar sig på en serie slutpunkter för sitt utförande.
9. Hur skulle du minska laddningstiden för en webbapplikation?
Exempel på svar: På ett par olika sätt. Först kan du komprimera bilderna och flytta stylesheet-referenserna till början av HTML-sidan. Därefter kan du flytta skriptreferenserna till slutet av HTML-sidan. Slutligen kan du separera JavaScript- och CSS-koden och placera dem utanför det huvudsakliga HTML-dokumentet.
10. Varför ska man rensa floats i CSS, och hur gör man det?
Exempel på svar: Vi kan enkelt positionera element (mestadels bilder) så att innehållet flyter snyggt runt dem genom flottörer. Men när vi gör detta kan resultatet bli efterföljande element runt float-objekten, så att layouten bryts dåligt. För att förhindra detta rensar vi flottörerna, och därmed har vi mycket bättre kontroll över layouten. Dessa är, enligt min mening, de två vanligaste och mest populära clearing floats metoderna där ute:
- Clearfix är det vanligaste, så vi måste tillämpa tekniken "clearfix" genom ett pseudoelement. Vi måste först skapa ett osynligt element som rensas och flyter snabbt. Från detta, förvänta dig mer markering till HTML också:
grupp::efter {
innehåll:"";
display:tabell;
rensa:båda;
}
11. Hur skulle du mest effektivt ta bort ES6-arrayduplikat?
Exempel på svar: Det vanligaste och bästa sättet är att använda ett set - det gör det möjligt att lagra unika värden. Så när vi konverterar matrisen till en uppsättning tas dubbla värden bort på det här sättet. Det sista steget är att göra en ny konvertering, den här gången inställd på en sort som den var tidigare, med unika värden.
12. Kan du definiera och skilja mellan async/await och Promises i JavaScript?
Exempel på svar: Async/await representerar ett "syntaktiskt socker" byggt på Promises ovanpå det, och det får en asynkron kod att likna en synkron genom användning av async-funktioner och nyckelordet "await".
13. Hur skulle du förklara processen med att debounca funktioner i JavaScript?
Exempel på svar: När vi behöver skjuta upp utförandet av en funktion kallas detta för debouncing. Vi gör uppskjutandet för att förhindra att tidskrävande uppgifter påbörjas för ofta. Ett sätt att debounca en JavaScript-funktion är:
funktion debounce(fn, fördröjning) {
låt timeoutID;
returnera (...args) => {
clearTimeout(timeoutID);
timeoutID = setTimeout(() => fn.apply(this, argos), delay);
};
}
14. Vad är syftet med Event-objekt för moduler som http eller fs i Node.js?
Exempel på svar: Node.js-modulerna använder Event-objekten för att avge händelser som signalerar eventuella tillståndsändringar, fel eller resurstillgänglighet. Händelsestyrd programmering måste förlita sig på användning av händelseobjekt för att uppnå skalbara och effektiva appar. Detta är fallet särskilt när vi arbetar med arbetsbelastningar som är I/O-bundna.
15. Vad kan du säga om minnesläckor? Hur kan man upptäcka, lösa och förhindra dem?
Exempel på svar: Minnesläckor (RAM) representerar en del av en app som använder ett visst minne men aldrig frigör det efteråt. När en app använder mycket minne och inte frigör det, kommer den att tömma minnespoolen efter ett tag. Tidigare var det vanligt med minnesläckor när utvecklare använde C++ och C. Att upptäcka detta är inte alltför svårt eftersom det mest uppenbara tecknet är att inte ha tillräckligt med minne - systemet saktar ner och appen börjar krascha. Att förhindra detta är inte så svårt heller, vi behöver bara en bra skräpsamlare för att frigöra minne.
En fullstack-utvecklares synvinkel
Under tiden frågade vi om fullstack-utveckling direkt till källan, två Fullstack-utvecklare av Proxify, Martin Lucka och Dmitriy Zolotukhin. Vi frågade om viktiga tekniker, förutsättningar som man måste känna till, om fullstack-utvecklare främst fokuserar på backend eller frontend och hur de i allmänhet bör närma sig inlärning.
Här är vad Martin hade att säga inledningsvis,
"En fullstack-utvecklare är en professionell person (liknande en enhörning) som kan utveckla en app från noll till den slutliga användarupplevelsen. Det inkluderar möjligheten att bygga backend- (serverlös eller serverfylld med databaser) och frontend- (webb- eller app-) produkter."
Och han håller inte tillbaka när det gäller teknik som man måste känna till,
"Om du väljer en serverlös lösning räcker det med att använda frontend-teknik - JavaScript/TypeScript, CSS, React (lär dig inte Angular, Vue.js och andra ramverk om de inte behövs)", säger han. "Om du väljer server-full är kunskap om backendspråk (Node.js + TS/JS, Java, C#, PHP) och databaser (SQL) också viktigt."
När det gäller fokus och tid som läggs på frontend eller backend upprepade Martin,
"Vanligtvis är fullstack bara en uppsättning färdigheter, men de flesta uppdrag har det separerat, och sedan väljer utvecklaren vilken karriärväg han vill gå. Små uppdrag kan ha serverlösa lösningar, där båda kunskapsunderuppsättningarna skulle tillämpas (i så fall är det bra att ha viss molnkunskap - GCP/Firebase, AWS, Azure, Back4app)."
Och för alla nykomlingar som kommer till världen av fullstack-utveckling var detta det råd han gav,
"Lär dig React och React Native eftersom jag fortfarande tror att de är de mest kraftfulla verktygen på marknaden. Lär dig inte på det gamla sättet med klasser; lär dig det funktionella sättet med krokar. Lär dig TypeScript eftersom det ger en stabil grund för alla engagemang. Lär dig och öva; det bästa sättet är att göra ditt eget projekt. Om du ser att vissa uppdrag bara använder JavaScript och klasser och inte funktionell programmering och TypeScript, spring iväg så fort som möjligt."
Dmitriy, delar med sig av sina tankar om hur man bäst spenderar tid och fokuserar när man utvecklar,
"När det gäller verklig utveckling kan du försöka skapa din egen app och använda nya tekniker, ramverk och bibliotek. Läs om ny teknik och prova den, inte bara titta på eller läsa. Installera och använd dem."
Och han tillägger att det är mycket viktigt att vara nästan identiskt skicklig i backend och frontend. Enligt engagemangskraven kan utvecklare ändå justera sin uppmärksamhet till var det behövs mest.