In de afgelopen jaren is het bouwen van geoptimaliseerde applicaties en websites duurder geworden en tegelijkertijd is de vraag naar kwaliteitsontwikkelaars ook gestegen.
Aan de andere kant verrijken ontwikkelaars hun vaardigheden met meer dan slechts één programmeervaardigheid om beter te kunnen concurreren op de markt, vooral fullstack ontwikkelaars, waar altijd veel vraag naar is.
De vraag blijft: Waar vind je goede fullstack ontwikkelaars en hoe huur je ze efficiënt in? Ten eerste begin je met een winnende Fullstack Developer vacature voor iets anders.
Laten we beginnen.
Wat is fullstack-ontwikkeling?
Fullstack-ontwikkeling omvat de ontwikkeling van applicaties aan de voorkant (client-side) en achterkant (server-side). Fullstack ontwikkelaars werken aan het ontwerpen van volledige webapps, websites en andere software vanaf nul. Ze debuggen, plannen, coderen en beheren het ontwikkelingsproces. In zekere zin nemen ze de rol aan van een teamleider die toezicht houdt op alle aspecten en stadia van de ontwikkeling.
Meerdere technologieën, programmeertalen en frameworks zijn gerelateerd aan fullstack webontwikkeling en zijn onderverdeeld in frontend en backend.
Laten we dit opsplitsen.
Frontend-technologieën
De voorkant verwijst naar het applicatiegedeelte dat volledig zichtbaar is voor de gebruiker. De gebruiker bedient de elementen op de voorkant en deze interactie resulteert in een slechte, goede of uitstekende UX (gebruikerservaring) - afhankelijk van de kwaliteit, snelheid en efficiëntie. Maar een goede fullstack ontwikkelaar zal alle drie de aspecten behandelen en optimaliseren.
Enkele van de talen die worden gebruikt om de app frontend te maken zijn:
-
HTML + CSS: HTML staat voor HyperText Markup Language en CSS staat voor Cascading Style Sheets. Ze vormen de perfecte combinatie voor het bouwen van websites en het creëren van een naadloze gebruikerservaring op vele platforms, apparaten en browsers. HTML vertelt de browser wat hij moet laten zien en CSS vertelt hoe.
-
JavaScript: JavaScript is een populaire scripttaal voor het maken, plaatsen en bewaken van meerdere interactieve elementen op een website. Het centrale JavaScript-paradigma combineert zijn vele frameworks en bibliotheken (Node.js, Vue.js, Next.js) om state-of-the-art applicaties, websites en andere soorten software te maken, zoals dat nodig is. Deze taal is enorm toepasbaar en een vitaal onderdeel van zowel de frontend als de backend van het app-ontwikkelingsproces.
-
TypeScript: Als je de types verwijdert, wordt TypeScript al snel JavaScript. Beide delen dezelfde architectuur omdat TypeScript bovenop JavaScript is gebouwd, en als een ontwikkelaar bedreven is in het ene, zal hij ook bedreven zijn in het andere.
Frontend kaders
De frontend talen "vertrouwen" op de kracht van frameworks en bibliotheken om de functionaliteit van apps te verbeteren en ontwikkelaars op de lange termijn productiever te maken. Enkele van de meest opvallende frameworks voor frontend development zijn:
-
Angular: Over het algemeen is Angular meer een platform geworden voor het bouwen van grootschalige robuuste, dynamische, performante applicaties, het verbeteren van client-side communicatie en het regelmatig uitvoeren van updates.
-
React.js: Als JavaScript-framework wordt React.js gebruikt voor het bouwen van intuïtieve gebruikersinterfaces en is het een van de populairste frontend-frameworks. Het is open-source en het meest bekend voor het afhandelen van de view layer van de app zonder afbreuk te doen aan de kwaliteit, snelheid en efficiëntie.
jQuery: Een van de belangrijkste functies van jQuery is het vereenvoudigen van de gegevensuitwisseling tussen HTML-documenten, d.w.z. de interacties tussen het DOM (Document Object Model) en JavaScript. Dit verbetert de DOM-animaties en ondersteunt cross-browser JavaScript-ontwikkeling.
- Vue.js: Vue.js vertegenwoordigt een JavaScript-raamwerk dat is gebouwd bovenop JavaScript, CSS en HTML. Ontwikkelaars gebruiken dit framework om eenvoudige of complexe gebruikersinterfaces te bouwen.
Achterliggende technologieën
De backend of serverkant van een app of website handelt meerdere elementen af, zoals een goede API-integratie, databasebeheer en querybeheer. Enkele van de meest prominente programmeertalen, frameworks en bibliotheken die worden gebruikt voor backendontwikkeling zijn:
-
PHP: Beschouwd als een van de populairste server-side scripting talen, wordt PHP veel gebruikt voor webontwikkeling backend. Ontwikkelaars gebruiken het graag om dynamische inhoud te bouwen en eenvoudig bestanden op de server te lezen, schrijven en verwijderen, gegevens te versleutelen, gebruikersrechten te beheren en nog veel meer.
-
C++: C++ is een flexibele, objectgeoriënteerde programmeertaal die de prestaties van websites optimaliseert terwijl de UX aan de voorkant intact blijft.
-
Python: Als populaire programmeertaal wordt Python veel gebruikt vanwege zijn eenvoud, makkelijk te leren syntaxis en naadloze integratie van meerdere systemen, browsers en apparaten.
-
Java: Een doorgewinterde fullstack ontwikkelaar heeft idealiter een uitstekende kennis van Java en het schrijven van Java-code met deze objectgeoriënteerde schaalbare taal.
-
Node.js: Er zijn verschillende definities van wat Node.js is, van een framework tot een runtime-omgeving, maar het komt er allemaal op neer dat het een JavaScript-extensie is voor het maken, testen en uitvoeren van backendservices.
Backend raamwerken
Backend frameworks zijn een cruciaal onderdeel van fullstack ontwikkeling, en enkele van de populairste zijn:
-
Django: Django is een open-source Python framework voor uitmuntend webontwerp en -ontwikkeling. Het is snel en gebruikt het architectuurpatroon MTV (model-template-view).
-
Laravel: Dit is een betrouwbare backend API voor Next.js, mobiele en andere frontend apps. En, Laravel is een PHP framework dat het MVC architectuurpatroon gebruikt.
-
RoR: De afkorting staat voor Ruby on Rails, en dit is een robuust backend framework gebaseerd op de taal Ruby. Het vertrouwt op JSON en XML voor gegevensoverdracht en HTML, CSS en JavaScript om de UI (gebruikersinterface) te stabiliseren.
-
Spring: Als een van Java's backend frameworks onderscheidt Spring zich met een eenvoudige syntaxis en krachtige operationele logica voor de meest complexe bewerkingen. Het helpt ontwikkelaars om betrouwbare en snelle apps te maken met behulp van POJO's (Java-objecten).
-
Express.js: Express.js vertegenwoordigt een Node.js webontwikkelingsraamwerk voor mobiele en webapps. Het rendert pagina's dynamisch, definieert routeringstabellen en voert verschillende HTTP-acties uit.
Wanneer hebt u een Fullstack Developer nodig?
Er is een opmerkelijke vraag naar fullstack ontwikkelaars omdat ze meerdere petten dragen door zowel de frontend als de backend aspecten van ontwikkeling te dekken. Daarmee brengen ze uitstekende probleemoplossende vaardigheden in hun werk.
Maar u hebt een Fullstack Developer nodig als u een product wilt dat efficiënt en met zo min mogelijk poespas is gemaakt, maar wel zeer functioneel is - en de ontwikkelaars maken het grotendeels zelf zonder noemenswaardige externe ondersteuning.
Een Fullstack Developer is bekend met het hele ontwikkelingsproces, van het beginpunt tot het eindpunt of van het eerste idee tot het werkende prototype. Je hebt zo'n technische expert nodig omdat één persoon met meerdere vaardigheden een uitstekende investering is voor elk bedrijf. Door één fullstack ontwikkelaar in te huren in plaats van meerdere tech experts die bedreven zijn in veel minder technologieën bespaar je tijd en geld op de lange termijn.
Als je een fullstack ontwikkelaar van hoge kwaliteit inhuurt, overziet deze de hele workflow van de opdracht onafhankelijk en vermindert deze de kans op miscommunicatie in de strikte en cruciale fasen van de ontwikkelingscyclus van de app.
Laten we samenvatten:
- Ze zijn veelzijdige technische experts bedreven in frontend en backend.
- Ze leveren betrouwbare en robuuste code.
- Ze hebben meerdere jaren ervaring op verschillende gebieden en niches
- Ze kunnen gemakkelijk rollen wisselen (senior, debugger, projectleider en meer)
- Het zijn kosteneffectieve technische experts.
- Ze hebben een goede kennis van het verleden, het heden en de mogelijke toekomst trends in ontwikkeling
Waar vind ik fullstack ontwikkelaars?
Je kunt fullstack ontwikkelaars op verschillende plaatsen vinden, waaronder freelance platforms, sociale media, code repositories, mond-tot-mond aanbevelingen en programmeerwebsites. Met deze opties moet je echter al het onderzoek zelf doen of met je team van interne recruiters.
Stel in plaats daarvan dat je tijd wilt besparen en het risico wilt voorkomen dat het inhuren wordt verlengd en uitgesteld. In dat geval kunt u altijd terecht bij diensten die u in slechts enkele dagen matchen met kant-en-klare ontwikkelaars, zoals Proxify, waar we ook instaan voor de achtergrond van ontwikkelaars en hun technische kennis, zodat u het niet allemaal zelf hoeft te doen.
Fullstack-ontwikkelaars interviewen
Hier is een checklist met technische vaardigheden die een Fullstack Developer moet kennen en enkele interviewvragen en -antwoorden die je kunt gebruiken voor de beoordeling.
Algemene fullstack-kennis
Een ervaren fulllstack ontwikkelaar kent de ins en outs van datastructuren, algoritmen, programmeertaaltheorie en netwerkonderwerpen zoals OSI/RM en TCP/IP protocolmodellen.
Ze weten ook hoe ze met minstens drie verschillende programmeertalen moeten werken en kunnen praktijkvoorbeelden laten zien van voltooide opdrachten in het verleden.
Ten slotte moeten ze efficiënt testen en debuggen.
Technische vaardigheden
Kortom, ze moeten enkele (of de meeste) van de volgende vaardigheden combineren:
- 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
Maar ze moeten vooral uitzonderlijke kennis in laten zien:
- Hoe HTML en CSS werken, afzonderlijk en samen
- HTML-code op een vluchtig niveau
- De meeste JavaScript-raamwerken uit het hoofd
- Java en de meeste frameworks (Spring, Spring Boot)
- Ken de frameworks van Python uitstekend (Django, Flask)
C++
- Databases (zoals MongoDB, PostgreSQL, MySQL)
- Versiebeheersystemen (zoals Git en GitHub)
- Cloud hosting platforms (zoals Heroku, AWS, Google Cloud, en Microsoft Azure)
Interviewvragen en antwoorden voor de beoordeling van fullstack-ontwikkelaars
We kunnen de vragen verdelen in algemeen en specifiek.
Algemene vragen
1. Met welke programmeertalen heb je de meeste ervaring?
Voorbeeld antwoord: Ik heb de meeste ervaring met het bouwen van applicaties in Python, Django en Vue.js, maar ik heb ook aanzienlijke ervaring met JavaScript, SQL en Rust. Desalniettemin hou ik van de OS-onafhankelijkheid die deze algemene stack met zich meebrengt, omdat ik er altijd zeker van kan zijn dat mijn applicaties compatibel zijn met de populairste besturingssystemen van dit moment.
2. Wat is je favoriete of meest gebruikte programmeertaal?
Opmerking: Hier moet de interviewer openstaan voor de antwoorden van de kandidaat. De ontwikkelaar kan een andere programmeertaal voorstellen dan degene die de interviewer in gedachten had.
Voorbeeld antwoord: Sinds ik begon, werkte ik graag met Python. Het heeft een zeer intuïtieve syntaxis en zachte leercurve (eenvoudig te leren, moeilijk te beheersen), en het biedt een verscheidenheid aan bibliotheken en frameworks als je de mogelijkheden van wat je kunt doen wilt uitbreiden zonder afbreuk te doen aan de kwaliteit van de uiteindelijke applicatie.
Het is moeilijk om slechts één favoriete programmeertaal voor fullstack-ontwikkeling te kiezen, dus ik zou ook Node.js en C# willen toevoegen. Node.js is geweldig voor schaalbaarheid, het verbeteren van prestaties en is kosteneffectief. Tegelijkertijd versnelt C# het ontwikkelproces, werkt het aan schaalbaarheid en is het eenvoudig te onderhouden. Voor een rol als fullstack ontwikkelaar zijn al deze voordelen in combinatie erg nuttig en maken ze ons werk toegankelijker en effectiever voor een prachtig resultaat.
3. Met welke technologieën zou je een applicatie vanaf nul kunnen bouwen?
Voorbeeld van antwoord: Wat betreft client-side ontwikkeling geef ik de voorkeur aan de basis, d.w.z. HTML, CSS, JavaScript en misschien TypeScript. Om databasevragen op te lossen, zou MySQL de klus moeten klaren. Voor de details gebruik ik liever Python met Django of de LAMP-stack voor complexere opdrachten. Ik vertrouw ook op Git en Github om gemakkelijker te kunnen synchroniseren met andere fullstack ontwikkelaars.
4. Wat zijn enkele van de recente trends in fullstack-ontwikkeling die je hebben verrast?
Voorbeeld van een antwoord: Ik ben gefascineerd door de opkomst (en mogelijke ondergang) van NFT's (non-fungible tokens). In het verleden werden programmeren en kunst meestal beschouwd als twee aparte disciplines. Tegenwoordig lijkt het alsof de grenzen met de dag vervagen. Om bijvoorbeeld een NFT-collectie te maken, moet je een goede programmeur zijn met een unieke artistieke touch. De wereld van NFT's (en cryptocurrency in het algemeen) kan zonder waarschuwing een hoge vlucht nemen of spectaculair crashen, iets waar ik af en toe aan denk.
Daarnaast zijn er ook waardige vermeldingen zoals AI die veel nieuwe hulpmiddelen introduceert die (bijna) iedereen zullen helpen zijn werk veel efficiënter te doen dan voorheen.
5. Is het voorgekomen dat je collega's een codeerfout hebben gemaakt? Wat heb je gedaan?
Noot: De interviewer moet bereid zijn om het mogelijke antwoord van de ontwikkelaar te horen, omdat dit een enigszins persoonlijke vraag is.
Voorbeeld antwoord: Ja. Ik werkte eens aan een JavaScript-opdracht met een collega en de code werd niet goed gecompileerd. Ik heb het handmatig nagekeken en ontdekte dat ze haakjes gebruikten waar ze haakjes hadden moeten gebruiken, maar ik heb geholpen de fout te herstellen.
6. Hoe bouw je SEO-vriendelijke webapplicaties?
Voorbeeld antwoord: Ik gebruik een uitstekende basistaal (Python) in combinatie met een actueel type framework (Django) om efficiëntie en snelheid te bereiken. Het bouwen van webapplicaties betekent dat je niet de luxe hebt van het "oppotten" van ongebruikte bronnen die onnodig veel ruimte innemen en de hele workflow vertragen. SEO draait allemaal om snelle laadtijden (gebruikers klikken meestal weg als de site niet binnen twee of drie seconden laadt), dus ik probeer een lichtgewicht aanpak te gebruiken en SEO op te lossen voordat de betrokkenheid begint.
7. Hoe debug je uitdagende programma's?
Voorbeeld antwoord: Een methode die ik regelmatig gebruik (en die volgens mij effectiever is dan ontwikkelaars meestal denken) is de zogenaamde "commenting out" methode. Zodra ik vermoed dat een foutief stuk code de rest van de workflow verstoort, verwijder ik dat specifieke stuk code en compileer ik de opdracht opnieuw. Als het probleem aanhoudt, ga ik over op browsergebaseerde debuggers voor webprojecten (Firefox en Chrome) of desktopgebaseerde debuggers voor Windows-projecten (Visual Studio Debugger).
8. Wat is een veelvoorkomende uitdaging bij fullstack ontwikkeling en wat is de beste aanpak om deze op te lossen?
Voorbeeld antwoord: Een voor de hand liggende is het bereiken van een balans tussen de frontend en backend en deze goed beheren. Het kan een uitdaging zijn om dit te bereiken omdat verschillende ontwikkelaars aan andere dingen van dezelfde opdracht werken, dus synchronisatie tussen teamleden is de reden achter deze situatie.
9. Wat is de beste manier om SQL-query's te optimaliseren?
Voorbeeld antwoord: Om deze query's te optimaliseren, moeten we de beste technieken herkennen om de prestaties van de SQL-query te verbeteren. Enkele van de beste technieken zijn:
- SELECT-query in plaats van SELECT* gebruiken
- Indexering
- Tabel aliassen
- Er worden niet veel JOIN's gebruikt
- Subvragen
- Jokertekens
- Databaseontwerp optimaliseren
10. Kun je de Callback-hel definiëren?
Voorbeeld antwoord: De Callback Hell vertegenwoordigt een antipatroon dat we kunnen zien in de async programmeercode (in principe wanneer veel functies tegelijkertijd worden uitgevoerd). De Callback Hell staat ook bekend als de Pyramid of Doom, en in principe verwijzen deze namen naar vele geneste "if" functies of verklaringen. Deze situatie doet zich voor wanneer veel async functies tegelijkertijd bestaan en van elkaar afhankelijk zijn.
Dit kan een puinhoop veroorzaken omdat veel callbackfuncties allemaal in lagen staan en genest zijn. Als we dus callback-functies gebruiken, blijft er een code over die bijna onmogelijk te onderhouden of te lezen is en die ook nog eens lijkt op een piramidevorm. De flow van de app kan ook niet gemakkelijk worden geïdentificeerd, en dit alles is een obstakel bij het debuggen - vandaar de helse zinnen van dit antipatroon.
Specifieke vragen
1. Ben je bekend met ontwerppatronen? Hoe heb je ze gebruikt in je opdrachten?
Voorbeeldantwoord: Over het algemeen zijn design patterns benaderingen om een specifieke uitdaging in software engineering op te lossen. Ik heb in mijn vorige opdrachten met veel succes gebruik gemaakt van creatieve en structurele ontwerppatronen. Ik heb de ontwerppatronen Singleton, Flyweight en Bridge gebruikt.
2. Wat is het verschil tussen interface en abstracte klassen?
Voorbeeld antwoord: Met interfaceklassen kun je alleen de functionaliteit van de klasse aangeven, maar niet implementeren. Met abstracte klassen kun je snel functionaliteit implementeren met behulp van subklassen.
3. Hoe zou je een RESTful API definiëren?
Voorbeeld antwoord: RESTful API is een soort interface die twee computers (meestal een client en een server) gebruiken om te communiceren op het web. De RESTful API haalt een record op met een GET-verzoek, maakt er een aan met een POST-verzoek en verwijdert er een met een DELETE-verzoek.
4. Wat is uw voorgestelde oplossing om te voorkomen dat een bot een publiekelijk bekende API schraapt?
Voorbeeld antwoord: Er zijn een paar manieren om dit te doen. U kunt bijvoorbeeld een gebruikersnaam en wachtwoord van de gebruikers vragen (om een account aan te maken) om toegang te krijgen tot inhoud op de site. Je kunt ook het aantal keren beperken dat een enkele gebruiker aanvragen kan doen met een identiek IP-adres.
5. Wat is het verschil tussen het normaliseren en resetten van CSS?
Voorbeeld antwoord: Normaliseren verwijdert slechts een beperkt aantal stylings die de browsers doorgeven aan de elementen op een pagina. Bij het resetten worden alle standaardstijlen verwijderd.
6. Wat is het verschil tussen blue-green deployment en rolling deployment?
Voorbeeld antwoord: Een rolling deployment strategie heeft niet meerdere staging omgevingen. Het implementeert updates alleen op een per-noodzakelijke basis. Blauw-groene inzet maakt gebruik van twee inzetstrategieën: blauw en groen. In de blauwe fase van de BG-implementatiestrategie ondergaat de verbintenis kwaliteitsborging en testen zoals vereist. De groene fase handelt het verkeer af totdat alles in de blauwe fase is voltooid.
7. Hoeveel soorten ontwerppatronen zijn er?
Voorbeeld antwoord: Er zijn er drie: structureel, gedragsmatig en scheppend. Structurele patronen vergroten de functionaliteit van de klassen in de code zonder significante wijzigingen in de samenstelling. Gedragsklassen zijn afhankelijk van de intercommuniceerbaarheid tussen klassen. Creatieve patronen zijn bedoeld voor class instantiation. Ze worden verder onderverdeeld in object-creationele en klasse-creationele patronen.
8. Wat zijn enkele van de verschillen tussen REST en GraphQL?
Voorbeeld antwoord: GraphQL is een server-side technologie die query's uitvoert om gegevens in handen te krijgen. REST is een architectuurstijl die beperkingen oplegt aan de manier waarop webapps worden gemaakt. GraphQL gebruikt ook schema's, terwijl REST vertrouwt op een reeks eindpunten voor de uitvoering.
9. Hoe kun je de laadtijd van een webapplicatie verkorten?
Voorbeeld antwoord: Op een paar manieren. Eerst kun je de afbeeldingen comprimeren en de stylesheetverwijzingen naar het begin van de HTML-pagina verplaatsen. Vervolgens kun je de scriptverwijzingen naar het einde van de HTML-pagina verplaatsen. Ten slotte kun je de JavaScript- en CSS-code scheiden en buiten het hoofd-HTML-document plaatsen.
10. Waarom zou je floats wissen in CSS en hoe doe je dat?
Voorbeeld antwoord: We kunnen elementen (meestal afbeeldingen) gemakkelijk zo positioneren dat de inhoud er mooi omheen vloeit via floats. Maar als we dit doen, kan het resultaat opeenvolgende elementen rond de float-items zijn, waardoor de lay-out slecht wordt verbroken. Om dit te voorkomen, wissen we de floats en hebben we dus veel betere controle over de opmaak. Dit zijn, naar mijn mening, de twee meest voorkomende en populaire clearing floats methodes die er zijn:
- Clearfix is de meest voorkomende, dus we moeten de techniek "clearfix" toepassen via een pseudo-element. We moeten eerst een onzichtbaar element maken dat snel opruimt en zweeft. Verwacht hiervan ook meer markup in de HTML:
groep::na {
inhoud:"";
weergave:tabel;
duidelijk:beide;
}
11. Hoe zou je op de meest efficiënte manier ES6 array duplicaten verwijderen?
Voorbeeld antwoord: De meest gebruikelijke en beste manier is door een set te gebruiken - hiermee kunnen unieke waarden worden opgeslagen. Wanneer we de array omzetten in een set, worden dubbele waarden op deze manier verwijderd. De laatste stap is om nog een conversie te doen, dit keer ingesteld op een variëteit zoals het eerder was, met unieke waarden.
12. Kun je definiëren en onderscheid maken tussen async/await en Promises in JavaScript?
Voorbeeld antwoord: Async/await vertegenwoordigt een 'syntactische suiker' die bovenop Promises is gebouwd, en het laat een asynchrone code op een synchrone lijken door het gebruik van async-functies en het sleutelwoord "await".
13. Hoe zou je het proces van het debouncen van functies in JavaScript uitleggen?
Voorbeeld antwoord: Wanneer we de uitvoering van een functie moeten uitstellen, heet dit debouncen. We doen het uitstellen om te voorkomen dat tijdrovende taken te vaak worden gestart. Een manier om een JavaScript-functie te debouncen is:
functie debounce(fn, delay) {
laat timeoutID;
return (...args) => {
clearTimeout(timeoutID);
timeoutID = setTimeout() => fn.apply(this, argos), delay);
};
}
14. Wat is het doel van Event-objecten voor modules zoals http of fs in Node.js?
Voorbeeld antwoord: De Node.js-modules gebruiken de Event-objecten om gebeurtenissen uit te zenden die toestandswijzigingen, fouten of beschikbaarheid van bronnen signaleren. Event-driven programmeren moet vertrouwen op het gebruik van Event-objecten om schaalbare en efficiënte apps te maken. Dit is met name het geval wanneer we werken met werklasten die I/O-gebonden zijn.
15. Wat zou je kunnen zeggen over geheugenlekken? Hoe ze te herkennen, op te lossen en te voorkomen?
Voorbeeld antwoord: Geheugenlekken (RAM-lekken) vertegenwoordigen een deel van een app dat een bepaald geheugen gebruikt, maar het daarna nooit meer vrijgeeft. Als een app veel geheugen gebruikt en dit niet vrijmaakt, raakt de geheugenpool na een tijdje uitgeput. In het verleden kwamen geheugenlekken vaak voor wanneer ontwikkelaars C++ en C gebruikten. Het is niet al te moeilijk om dit te ontdekken, want het meest voor de hand liggende teken is dat er niet genoeg geheugen is - het systeem wordt trager en de app begint te crashen. Het is ook niet zo moeilijk om dit te voorkomen, we hebben alleen een goede garbage collector nodig om geheugen vrij te maken.
Het standpunt van een fullstack ontwikkelaar
Ondertussen hebben we navraag gedaan over fullstack development rechtstreeks bij de bron, twee Fullstack Developers van Proxify, Martin Lucka, en Dmitriy Zolotukhin. We vroegen naar essentiële technologieën, de vereisten die je moet kennen, of fullstack-ontwikkelaars zich vooral richten op de backend of de frontend, en hoe ze leren in het algemeen moeten benaderen.
Dit is wat Martin in eerste instantie te zeggen had,
"Een fullstack developer is een professional (vergelijkbaar met een eenhoorn) die een app kan ontwikkelen van nul tot de uiteindelijke gebruikerservaring. Dat omvat de mogelijkheid om backend (serverloos of servervol met databases) en frontend (web of app) producten te bouwen."
En hij houdt zich niet in met betrekking tot de technologieën die je moet kennen,
"Als je kiest voor een serverloze oplossing, dan is het voldoende om alleen frontend-technologie te gebruiken - JavaScript/TypeScript, CSS, React (leer Angular, Vue.js en andere frameworks niet als ze niet nodig zijn)", zegt hij. "Als je kiest voor server-full, is kennis van backend talen (Node.js + TS/JS, Java, C#, PHP) en databases (SQL) ook belangrijk."
Met betrekking tot de focus en tijd die wordt besteed aan de frontend of backend, herhaalde Martin,
"Meestal is de fullstack gewoon de set vaardigheden, maar bij de meeste opdrachten is het gescheiden en dan kiest de ontwikkelaar welk carrièrepad hij wil bewandelen. Kleine opdrachten kunnen serverloze oplossingen hebben, waarbij beide subsets van kennis worden toegepast (in dat geval is het goed om wat cloudkennis te hebben - GCP/Firebase, AWS, Azure, Back4app)."
En voor nieuwkomers in de wereld van fullstack ontwikkeling was dit het advies dat hij gaf,
"Leer React en React Native omdat ik nog steeds geloof dat dit de krachtigste tools op de markt zijn. Leer niet op de oude manier met classes; leer op de functionele manier met hooks. Leer TypeScript omdat het een stabiele basis geeft voor elke opdracht. Leer en oefen; de beste manier is om je eigen project te doen. Als je ziet dat sommige opdrachten alleen JavaScript en klassen gebruiken en niet functioneel programmeren en TypeScript, ren dan zo snel mogelijk weg."
Dmitriy, deelt zijn gedachten over hoe je je tijd het beste kunt besteden en hoe je je het beste kunt concentreren tijdens het ontwikkelen,
"Probeer bij echte ontwikkeling je eigen app te maken en nieuwe technologieën, frameworks en bibliotheken te gebruiken. Lees over nieuwe technologieën en probeer ze uit, niet alleen vanaf de zijlijn kijken of lezen. Installeer en gebruik ze."
En hij voegt eraan toe dat het van vitaal belang is om bijna identiek vaardig te zijn in backend en frontend. Toch kunnen ontwikkelaars, afhankelijk van de opdrachtvereisten, hun aandacht aanpassen aan waar dat het meest nodig is.