Een degelijke vacature maken naar een Symfony-ontwikkelaar inhuren is geen breezer. Het kost tijd en kennis van technische details en bijzonderheden, en dat is nog maar het begin van het hele wervingsproces, inclusief het promoten van de advertentie, het zoeken naar technische experts op de juiste plaatsen, het zorgvuldig selecteren van kandidaten en het plannen van sollicitatiegesprekken. En als je dit allemaal alleen doet, wordt het nog uitdagender.
Je moet alle technische factoren in overweging nemen voordat je met de werving begint - professionele achtergrond, expertise, opleiding, werkervaring, interviewvragen, technische testresultaten en dergelijke. Laten we beginnen.
Over Symfony
Symfony staat voor een erkend en stabiel PHP-framework voor webontwikkeling en tegelijkertijd voor een complete set herbruikbare PHP-componenten. Als framework versnelt het het maken en onderhouden van webapps en als set componenten biedt het 50 herbruikbare, op zichzelf staande componenten die de kosten op de lange termijn verlagen en een basis vormen voor PHP-apps van hoge kwaliteit.
De beste manier waarop ontwikkelaars Symfony gebruiken is als een kant-en-klaar fullstack framework voor het bouwen van schaalbare webapps en nieuwe frameworks. De architectuur van Symfony is MVC (model-view-controller), wat helpt om snel webapps te maken op een goed gestructureerde, gelaagde en logische manier. Met Symfony kunnen ontwikkelaars software eenvoudig opdelen in kleinere delen voor eenvoudige implementatie en onderhoud. Dit framework is ook populair omdat het coderen vereenvoudigt, een modulaire structuur biedt, gebruiksvriendelijke functies, soepele functionaliteit en open-source code.
Een Symfony-ontwikkelaar vinden en interviewen
Laten we de aanwervingspraktijken en het interviewen van Symfony-ontwikkelaars uit elkaar halen met verschillende aspecten om in gedachten te houden.
Tips voor recruiters en aanwervende managers
De zoektocht naar een goede Symfony-ontwikkelaar is alleen succesvol als je begint met een goed opgestelde vacature. Het sjabloon van de vacature moet precies geformuleerd zijn, de sollicitant moet precies begrijpen wat er voor die functie nodig is en het hele sjabloon moet zo beknopt mogelijk zijn. Als je nog aan het bepalen bent met welke advertentiestructuur je verder wilt gaan, kun je eenvoudig bestaande vacaturetemplates gebruiken en bewerken. Het promoten van de vacature op zoekplatforms voor vacatures is een populaire manier om Symfony-ontwikkelaars te vinden en in te huren, maar je kunt ook een technisch expert in je basis van vroeger.
Laten we eens kijken wat er in de vacature moet staan, d.w.z. vaardigheden en vereisten.
Checklist technische vaardigheden
Een uitstekende Symfony-ontwikkelaar heeft idealiter uitgebreide kennis van en ervaring met:
-
Symfony - Een Symfony-ontwikkelaar moet uit zijn hoofd weten hoe hij met dit framework moet werken en efficiënt en snel apps bouwen. Ze moeten hier minstens drie jaar ervaring mee hebben.
-
PHP - Er zijn veel PHP componenten in Symfony, dus minstens vier jaar met PHP werken is ook een vereiste.
-
Frontend-technologieën - Een gevorderde kennis van frontend-technologieën, zoals JavaScript, HTML en CSS, is vereist om soepel te kunnen communiceren met andere frontend-ontwikkelaars.
-
TDD (Test-Driven Development) - Het gebruik van TDD is essentieel voor het produceren van uitstekende, schone code.
-
OOP (Object Georiënteerd Programmeren) - OOP maakt het onderhoud en de wijzigingen van de code eenvoudig. De ontwikkelaar kan nieuwe objecten maken over bestaande met minimale wijzigingen.
-
Git en versiebeheer - Met Git en andere versiebeheerprogramma's kunnen ontwikkelaars hun algehele efficiëntie verhogen, ontwikkeling versnellen en code efficiënter volgen en beheren.
-
MySQL - De ontwikkelaar moet werken met MySQL voor eenvoudiger beheer van databasesystemen en efficiëntere datawarehousing.
Voorkeursvereisten checklist
-
Een graad (Bachelor) in Informatica
-
Goede kennis van Docker, en Kubernetes containerisatie
-
Ervaring met andere talen die relevant zijn voor deze functie: Java, Go, C#, en Python.
-
Ervaring met React.js, maar ook met andere frameworks (Vue.js, Node.js, Angular)
-
Ervaring met andere PHP frameworks zoals Laravel en Slim
-
Goede kennis van cloudplatforms zoals AWS (bijv. Dynamo, EC2, S3, Lambda, ECS, IoT en Cognito).
-
Goed begrip van NoSQL databases zoals MongoDB, Redis, Neo4J, Cosmos DB, en meer.
We spraken met Ben Kachoud Hicham, een Fullstack Developer bij Proxify, en vroegen meer over wat een Symfony-ontwikkelaar moet weten:
"Een goede Symfony ontwikkelaar moet zich kunnen aanpassen aan veranderingen en regelmatig volgen wat er nieuw is in de ontwikkelaarsgemeenschap. Ze moeten de Symfony-componenten begrijpen, met de nadruk op onder andere Security en Form. De Symfony ontwikkelaar moet ook goede ervaring hebben met design patterns, OOP en SOLID principes. Ze moeten ook de best practices van Symfony beheersen en zich richten op het grondig lezen van de officiële documentatie."
Interview vragen en antwoorden
Je kunt de onderstaande vragen gebruiken voor het interviewen van de Symfony-ontwikkelaar en hun kennis beoordelen op basis van deze verwachte antwoorden.
1. Kun je de correlatie tussen Symfony en Laravel uitleggen?
Voorbeeld antwoord: De primaire verbinding tussen de twee zit in de database-interactie. Laravel gebruikt Eloquent (object-relational mapper - ORM) als onafhankelijke bibliotheek, terwijl Symfony Doctrine (een project van derden) gebruikt voor database-interactie. Deze twee hebben veel gemeen, maar Laravel gebruikt in eerste instantie veel Symfony-componenten.
2. Wat is Symfony Controller?
Voorbeeld antwoord: Een Symfony-controller vertegenwoordigt een klassemethode voor requests' die een Response-object accepteert en retourneert. De controller is toegankelijk en wordt weergegeven wanneer deze vooraf in kaart is gebracht met de URL. Simpel gezegd is een Symfony-controller een PHP-functie die HTTP-verzoekinformatie ophaalt en omzet in een HTTP-antwoord. Dit antwoord kan variëren en onder andere worden weergegeven als XML-indeling, 404-fout, redirect of HTML-pagina.
3. Wat zijn Symfony Annotaties?
Voorbeeld antwoord: We gebruiken annotaties voor het in kaart brengen van informatie (Doctrine en configuratie valideren). We kunnen dit doen met YAML, XML en PHP, en het voordeel van annotaties is dat ze gemakkelijker te definiëren zijn binnen één bestand. Voor een betere ondersteuning van annotaties zijn er ook de bundels JMSSecurityExtraBundle en SensioFrameworkExtraBundle. De laatste bundel van deze twee wordt niet sterk aanbevolen als onderdeel van de nieuwste Symfony-versie en elke annotatie van deze bundel is nu een PHP ingebouwd attribuut in symfony.
4. Zijn er serververeisten voor de installatie van Symfony? Zo ja, welke zijn dat?
Voorbeeld antwoord: Voor Symfony installatie, zorg ervoor dat je PHP 8.1 of hoger hebt, en onthoud dat v.8.2 al is uitgebracht. Je moet ook Install Composer installeren. Je hebt ook PHP-extensies nodig (bijvoorbeeld Session, Ctype, PCRE, iconv, Tokenizer en SimpleXML. Als alternatief kun je de Symfony CLI installeren als een andere optie, waardoor je een binary met tools krijgt voor de lokale app die draait.
5. Wat zijn Symfony-bundels?
Voorbeeld antwoord: De bundels in Symfony zijn mappen en bestanden georganiseerd in een specifieke structuur. We kunnen de bundel specifiek verpakken in een app zoals AdminBundle of BlogBundle. Bundels zijn de plugins in Symfony:
- Bronnen/weergaven/directory
- Bronnen/publiek/Directory
- Bronnen/config/Directory
- Directory afhankelijkheidsinjectie
- Regelaar directory
- Tests/Directory
Na Symfony v 4.0 wordt het aanbevolen om bundels uitsluitend te gebruiken voor het delen van code en het delen van functies tussen meerdere apps.
6. Kun je het aanmaken van een nieuwe bundel in Symfony met alle stappen uitleggen?
Voorbeeld antwoord: We kunnen een nieuwe bundel maken met de volgende eenvoudige stappen.
- Voor de bundel moeten we eerst een nieuwe map maken, in het Symfony project, onder /src directory
- Dan maken we in de nieuwe map een nieuwe PHP klasse voor de bundel. Er moet een uitbreiding komen van deze nieuwe klasse naar de klasse Shymfony.
- Ten derde is het tijd voor bundelregistratie in het bestand app/AppKernel.php.file
- Vervolgens moet de routing van de bundel worden geconfigureerd in het bestand app/config/routing.yml
- Als we nu controller klassen nodig hebben voor de bundel, dan is dit het juiste moment om ze te maken. Hetzelfde geldt voor alle benodigde sjabloonbestanden.
7. Welke map slaat Symfony logs op?
Voorbeeld antwoord: We kunnen alle Symfony logs vinden die zijn opgeslagen in myproject/log/directory. Per omgeving en toepassing is er maar één bestand. De standaard mapstructuur kan ook worden aangepast (overschrijven van de cache map, de logs map, de web map en de leveranciers map)
***8. Wat zijn Symfony-formulieren?
Voorbeeld antwoord: Symfony Forms helpt ons, ontwikkelaars, bij het maken en verwerken van HTML formulieren, en we doen dit door repetitieve dingen te abstraheren. Met de formulierveldhulpen krijgen we waardevolle hulpmiddelen voor het renderen van formulierinhoud van render-all.
9. Wat is een Symfony standaard poort, of hoe wordt het genoemd?
Voorbeeld antwoord: Een standaardpoort is een webserverpoort als logisch eindpunt van de verbinding met een netwerk. De standaardpoort van Symfony is 8000. Om de ingebouwde PHP webserver optimaal te gebruiken, moeten we het server:start commando uitvoeren: $ php bin/console server:start, waardoor de server start op localhost:8000 op de achtergrond van de Symfony app.
10. Kun je meer vertellen over de Symfony Console component?
Voorbeeld antwoord: Symfony Console component is een krachtige tool die ontwikkelaars helpt command-line apps te maken met zijn object-georiënteerde interface. Er zijn ook 'commando-argumenten', invoer/uitvoer-hulpen, optie-parsing en interactieve dialogen. Symfony Console wil ons een consistente en stabiele interface geven om snel en efficiënt commandoregel-apps te maken en uit te voeren.
11. Wat is de Symfony Serializer?
Voorbeeld antwoord: Symfony Serializer is een component dat wordt gebruikt voor het geven van een specifiek formaat aan objecten (JSON, YAML, XML, onder andere). Hetzelfde geldt voor de tegenovergestelde situatie wanneer we een format in een object moeten veranderen.
12. Kun je uitleggen hoe je de cache in Symfony wist?
Voorbeeld antwoord: De beste manier om de cache te wissen is met de opdracht cache:pool:clear, en wat dit doet is alle gegevens van de opslagmap nemen en deze wissen. In Symfony zijn hiervoor drie standaardinstellingen opgenomen:
- cache.app_clearer
- cache.global_clearer
- cache.systeem_verduidelijker
13. Wat kun je ons vertellen over het maken van een aangepaste omgeving bedoeld voor een Symfony app?
Voorbeeld antwoord: Dit is mogelijk om te doen, en het is ook relatief eenvoudig. Eerst maken we een nieuw bestand aan in app/config/directory. Dan voegen we deze code toe:
parameters:
env(SYMFONY_ENV): my_custom_environment
Zodra dit is gedaan, kunnen we toegang krijgen tot de aangepaste omgeving, maar voordat we dat doen, is er nog een laatste stap: een ander commando:
php app/console -env=mijn_gewone_omgeving
14. Kunt u meer vertellen over de OAuth2-authenticatie en is het mogelijk om dit in Symfony te implementeren?
Voorbeeld antwoord: Het is mogelijk om OAuth2 te implementeren in Symfony. Hiervoor vinden we de bibliotheek FrendsOfSymfony/OAuth2-Server-Bundle en gebruiken deze voor het toevoegen van de server functionaliteit OAuth2 aan een Symfony app.
15. Kun je dieper ingaan op de Cache component en cache adapters in Symfony?
Voorbeeld antwoord: De Cache component geeft ons handige functies voor caching behoeften, van eenvoudig tot complex. Het implementeert de Cache Contracts (voor interoperabiliteit) en PSR-6 (een caching interface). De Cache component heeft uitstekende veerkracht, prestaties en kant-en-klare adapters die toepasbaar zijn op vele caching backends. Met de Cache-component kunnen we ook taggebaseerde ongeldigverklaring eenvoudig inschakelen. Maar ook, door het vergrendelen en vroegtijdig verlopen, kunnen we gemakkelijk cache stampede bescherming toestaan.
De beste Symfony-ontwikkelaar herkennen en selecteren
De grote Symfony-ontwikkelaars zullen meer jaren ervaring hebben, en zij gebruikten Symfony voornamelijk in hun werk.
Goede Symfony developer kandidaten presteren ook uitzonderlijk goed op technische tests en alle andere interviewstadia. Hun antwoorden waren uitgebreid en correct, en hun code was leesbaar en schoon.
Ben ook toegevoegd:
"Een goede Symfony-ontwikkelaar weet meer over dit framework en beantwoordt elke vraag die hem wordt gesteld. Natuurlijk moeten ze meer zijn dan alleen gevorderd, en de titel "expert" is iets om je meer op te richten. Ook zullen ze alles tot in detail weten over de onderdelen van het framework."
Mogelijke uitdagingen bij het inhuren van een Symfony-ontwikkelaar
De mogelijke uitdagingen rond het inhuren van een Symfony-ontwikkelaar zijn de gebruikelijke uitdagingen die verwacht kunnen worden tijdens elk wervings- en aanwervingsproces.
-
Geen planning en structuur - Organiseer de werving en volg een stappenplan voor alle fasen. Zorg voor een goed samengestelde vacature, weet hoe je de beste ontwikkelaars uit de pool van sollicitanten selecteert en gebruik relevante interviewvragen.
-
Budgetbeperkingen - Zorg ervoor dat je genoeg budget vrijmaakt voor het hele proces; onder andere voor de recruiters, (inhuur)managers en ontwikkelaars. Soms moet je zelfs grotere bedragen uittrekken voor de ontwikkelaar zelf, als er vraag naar is, als hij uitstekende vaardigheden heeft en als hij ook gewild is bij je concurrenten.
-
Schaarste aan technische experts - Als al het bovenstaande tegelijk gebeurt, heb je duidelijk externe hulp nodig om een Symfony-ontwikkelaar in te huren. In het ideale geval zou u geen tijd verspillen, en zou u vertrouwen op betaalbare diensten, zoals Proxify, om u in slechts enkele dagen te matchen met geschikte ontwikkelaars, en om ook in te staan voor hun expertise.
Het juiste moment om Symfony te gebruiken
Overweeg om Symfony te gebruiken als dat nodig is:
-
Om grote webapps te maken - Symfony vereenvoudigt het werk van ontwikkelaars en bespaart op de lange termijn tijd en geld. Ontwikkelaars kunnen ook veel sneller en efficiënter testen met behulp van de PHPUnit Independent Library. Omdat Symfony minder geheugen gebruikt en ingebouwde functies heeft om de prestaties te versnellen, is het perfect voor het optimaliseren van een grote workflow.
-
Trouwen op een snel en betrouwbaar framework - Met de snelheid die Symfony biedt, is de ontwikkelaar sneller klaar dan verwacht. Symfony werkt ook prima op verschillende hostingoplossingen vanwege de snelheid. Het is een handig framework met tools voor eenvoudige codecorrecties en het oplossen van beveiligingsproblemen.
-
Flexibiliteit en aanpassingsvermogen voor verschillende verbintenissen - Symfony biedt een goed aanpassingsvermogen dat cruciaal is voor degenen die voortdurend de soorten verbintenissen veranderen. Symfony werkt goed met de meeste webprogramma's, sites, netwerken en CMS'en (Content Management Systemen). Er zijn gestandaardiseerde hulpmiddelen die nuttig kunnen zijn en toegepast kunnen worden op verschillende situaties in ontwikkeling (zoals rijke bibliotheken die de ontwikkelaar helpen om repetitieve taken te vermijden.
-
Prachtige documentatie - Met Symfony is de documentatie netjes georganiseerd en kunnen ontwikkelaars hun werk makkelijker plannen.
-
Deel uitmaken van een behulpzame en uitgebreide gemeenschap - Het is goed om te weten dat er altijd een brede gemeenschap van ontwikkelaars is die elkaar regelmatig bijwerken of verschillende nuttige oplossingen bieden.
Zakelijke voordelen van het gebruik van Symfony
-
Tijd en geld besparen - De time-to-market wordt versneld met Symfony, en de tijd voor ontwikkeling wordt aanzienlijk verkort door de vele handige functies.
-
Flexibiliteit - Er is volledige configuratiecontrole, compatibiliteit met databasesystemen en de optie om extra functionaliteiten toe te voegen.
-
Simpliciteit - Symfony heeft gedetailleerde documentatie die het gebruik ervan eenvoudig maakt, met name door de praktische voorbeelden voor het maken van webapps. Er is ook een handige werkbalk die het voor ontwikkelaars gemakkelijker maakt om te debuggen en alle benodigde richtlijnen duidelijk weer te geven. Bovendien is het automatiseren van processen erg gemakkelijk en kan de implementatie ook veel gemakkelijker worden voltooid.
-
Aanpasbaarheid - Enkele opvallende aanpassingsmogelijkheden van Symfony zijn:
- Micro framework voor het ontwikkelen van specifieke functionaliteiten (ontwikkelaars kunnen dit uit elkaar halen en gebruiken wat apart nodig is)
- Brick by brick voor het gebruik van bepaalde functies die de ontwikkelaar nodig heeft voor het maken van een aangepaste app met selectieve (maar beperkte) functies.
- Fullstack is een perfecte optie voor het maken van een multifunctioneel product.
-
Probleemloos testen - Testen was nog nooit zo eenvoudig als nu met de PHP Unit Independent Library. Het helpt bij het stimuleren van HTTP-verzoeken, automatiseert functioneel testen en biedt waardevolle hulpmiddelen voor ontwikkelaars (voor gedragstesten, eenheidstesten en functioneel testen).
-
Totaal gemak - Symfony maakt productontwikkeling naadloos en klantgericht, en ontwikkelaars kunnen eenvoudig alle tools gebruiken om problemen met beveiliging of codefouten op te lossen.
-
Brede community support - Ontwikkelaars zullen nooit een tekort hebben aan tools, methodes, informatie, tips, oplossingen of bronnen die online beschikbaar zijn in de brede Symfony-gemeenschappen.
-
Ben voegde zijn standpunt toe over de voordelen die hij waardeert met Symfony:
"Een van de vele voordelen van het gebruik van Symfony is de grote gemeenschap van ontwikkelaars die continu werkt aan het verbeteren van dit framework en het delen van nuttige informatie. Trouwens, met dit framework kunnen ontwikkelaars functies gebruiken die ze nodig hebben en hoeven ze niet afhankelijk te zijn van het gebruik van alles tegelijk. Bovendien is OOP een ander groot voordeel voor het werk in het algemeen. Bedrijven profiteren enorm wanneer de ontwikkelaars Symfony gebruiken - het is verbazingwekkend hoe volledige engagementen en microservices gemakkelijk en snel kunnen worden afgewerkt."