![]() |
Hej!
Jag har fått blackout, och vill ha lite tips på ett bra arbetsprov på en kille som eventuellt ska bli anställd av oss. Provet ska baseras på php och mysql. Har du några tips så skriv :D |
Det är svårt att ge något lämpligt förslag utan att veta vad för typ av verksamhet det rör. Det är ganska stor skillnad på att installera e-butiker och att administrera en proteindatabas.
|
Citat:
Det rör sig om generell programmering, då vi driver en webbyrå krävs det att man kan lösa alla sorters av program/script. hmm.. mitt huvud knakar snart i sönder, ska inte vara för stort och inte för lätt.. |
Som du säger får det inte vara något särskilt stort. De flesta typer av problem som uppstår hittar man ganska lätt lösningar till på nätet. Det bästa arbetsprovet tror jag är ett riktigt mindre uppdrag och sedan timrekrytering alternativt provanställning för att se hur det fungerar "på riktigt".
Om du måste ha ett arbetsprov är mitt förslag någon form av reg.ex.-användning med skapande av tillhörande databas och eventuellt ett korrekt databasschema (det senare mest relevant om jobbet innefattar mer komplexa databasupplägg). |
Ett annat sätt är att låta personen kommentera, och förklara befintlig kod. Ta ett relativt komplicerat script, som är representativt för den nivå ni kräver, och ge personen x antal minuter.
|
Att kunna kommentera befintlig kod säger ju absolut inget om hur personen själv kodar... och om du vill ha ngn som är duktig på att koda så skulle jag inte begränsa mig till PHP... Vanliga arbetsprov jag hört talas om är mine sweeper och space invaders. Någon kodkata (http://codekata.pragprog.com/) bör också kunna fungera.
personligen skulle jag nog genomföra testet tvådelat. En programmeringsuppgift för at se om det finns vettiga programmeringskunskaper och sedan en separat design av databas-fråga för att se om den kunskapen finns. En riktigt duktig person kan alltid lära sig databaser, PHP och SQL om det behövs. Men at vara en riktigt duktig programmerare är betydligt svårare att lärasig omallt man kan är PHP & MySQL. |
Citat:
|
Tack för alla svar, jag bad honom göra någon som han kände bevisade hans kunskaper..
Inget 100 timmars jobb, utan mer i stil med fin och organiserad kod... |
Att anställa en programmerare som inte har några egna saker att visa upp han/hon gjort tidigare låter fatalt.
|
Citat:
|
Citat:
|
Citat:
|
De gånger vi anställt folk har vi alltid kört trial-by-fire... Jag skulle inte lita på kod som de lämnar över som de gjort sedan tidigare. Finns inget som övertygar mig om att de är deras egen kod då. Inte för att jag inte litar på folk, men rent generellt finns det på tok för många jeppar...
Vi kör principen att när vi har hittat någon som verkligen verkar intressant så får han/hon köra par-programmering med någon i teamet under en dag. På så sätt märks det ganska snabbt hur personen jobbar och hur den är att jobba tillsammans med vilket är mycket viktigt eftersom det inte är en individuell programmerare man vill ha utan en som passar bra i teamet. När de har klarat av det "testet" så får de ett trail-by-fire-test då de får en svår och komplex uppgift som skall lösas på allt för kort tid för att se hur de agerar under press.... Principen är att uppgiften egentligen inte skall gå att lösa på den tiden som är utstakad. Vår samlade erfarenhet av detta tillvägagångssätt har fallit mycket väl ut i 20 fall av 21. I det fallet då det inte var så lyckat var det inte personen det hängde på utan vår problemställning. Vi gav personen ett problem som personen omdefinierade till ett mycket enklare problem, men som fortfarande uppfyllde de kraven vi hade dokumenterat på det. |
Citat:
|
Citat:
|
Vad har programmeraren gjort tidigare, är det en person med många uppdrag bakom sig så bör de kunna lösa problem som de aldrig gjort tidigare.
Man kan ju provanställa som någon mer föreslog och du märker på de två första veckorna hur de funkar med personkemin. Parprogrammering håller jag med om att det är en bra idé att köra med. Men det är viktigt att personen får en fair chans att göra ett bra jobb. Parprogrammering brukar anses som ksotsamt men enligt min egen erfarenhet så gör två personer som fungerar bra ihop tre mans jobb på samma tid. Dessutom är det mer kompetensutvecklande för de enskilda individerna än någon annan arbetsform jag testat (inkluderat lärarledd utbildning). Ett stort problem i alla projekt är kontinuerlig kompetensöverföring mellan individer. Det kan man oftast lösa med just parprogrammering. Dessutom höjs kvaliten och buggar minskar. Är det en nybörjare så kan man aldrig använda stresstest för att testa dem, då måste de ha betydligt längre tid på sig typ 6 månader. Men då är oxo kraven man kan ställa betydligt lägre, det är ju en newbie, alla har varit newbie en gång i tiden. Generellt är stresstester för att testa programmerare väldigt felriktade. En programmerare ska vara en lugn och sansad person som verkligen sätter av tid för att fundera på att ta fram en bra lösning. Det är totalt kontraproduktivt att göra stresstester på den typen av kompetens. Man riskerar tvärtom att få slarvputtar som klarar detta men som inte klarar att lösa komplexa problem. Bättre anser jag det är att använda en kravspec som är realistisk från ett tidigare litet projekt med funktionella krav (dvs verksamhetskrav) och se hur programmeraren lägger upp sitt arbete och hur programmeraren lägger upp en metod för att lösa problemet. En programmerare som självständigt klarar att lägga upp en tillförlitlig metodik för hur han ska lösa ett problem är det sannolikt mycket högre chans att de kan lösa komplexa problem i framtiden. Det är mycket kontraproduktivt att testa befintliga kunskaper i ett specifikt programspråk. Pogramspråken kommer och går, de växlar hela tiden men arbetsmetodiken för att lösa problem är mer generisk och tidlös. Det är viktigt att programmeraren har en analytisk och kreativ inställning (ja det är en paradox) och att man är unlyssnande till beställarens krav. |
Att utgå ifrån att alla programmerare har en "portfölj" att visa upp är nog iofs sant. Den programmerare som inte kan visa upp något litet hobbyprojekt har sällan en riktig passion för jobbet. Alla riktigt duktiga utvecklare jag känner kodar på fritiden för att lära sig nya saker. Sedan finns det en hel del hyfsat bra utvecklare som inte har några hobbyprojekt också och även dessa skulle jag anställa.
Dock faller hela "portfölj"-tanken påen annan sak... En duktig utvecklare utvecklas hela tiden. personligen skulle jag (efter mer än 10 år i branchen) inte vilja visa uppden kod jag skrev för ett år sedan. Knappt ens 6 månader sedan. Den koden är inte representativ för hur jag arbetar idag. Därför tror jag ett färskt arbetsprov måste till. Jag håller med om att "trial under fire" som någon skrev ofta säger mer än att lösa en enkeluppgift. Och appropåparprogrammering läste jag någonstans om en amerikan som genomförde sina intervjuer genom att säga "OK, kom och sätt dig bredvid mig så parprogrammerar vi en timme". På så sätt lärde han sig mycket om hur killen tänkte och arbetade samtidigt som han hela tiden kunde styra lösningen i rätt riktning för att verifiera tekniska detaljer. |
Citat:
Jag har i alla mina kundavtal en klausul om NDA så jag kan aldrig visa upp kundkod för en ny kund. Nya kunder får ta mitt ord på att jag kan lösa problem. Kunden kan ju alltid avsluta kontraktet när de vill i alla fall så det är inget problem i realitetetn. Den kod jag skriver är ju helt och hållet individuellt anpassad efter varje specifik kunds önskemål, ofta har de krav på att man ska följa en mall de använt sedan tidigare och det har hittils aldrig hänt att det har varit "den ultimata koden" utan det har ofta varit snabbhack som gjorts av personer som testar-hur-det-funkar, trist men så är det oftast. Det skulle mao ord vara totalt missvisande att visa upp denna typ av kod för en ny kund. Jag gör ju oxo så att jag alltid anpassar mitt arbetssätt till det projekt jag jobbar med. Även då blir gamla arbetsprov totalt missvisande. Jag kan omöjligt i förväg veta vilken kodningsstandard som används hos varje enskild kund. Det finns inga generella kodningsregler som används fullt ut hos någon kund eller arbetsgivare jag någonsin jobbat med. Alla kodare utvecklas ju mer man kodar och jag skulle inte heller anse att kod jag skrev för ens 6 månader sedan representerar hur jag skriver koden idag, det kommer alltid nya influenser som är bättre än det man gjort tidigare. Ju mer man programmerar/parprogrammerar desto snabbare ökar takten på stegvis förfining. |
Är det inte det man har provanställning till?
|
Citat:
Således får jag ut den där utvecklningsbiten på arbetet och känner att jag inte vill sitta framför datorn 24/7 som vissa andra gör, ett liv bortom datorn är inte en så dum grej. På så vis orkar jag koncentera mig bra mycket bättre på arbetstid. Man blir ju less på saker och ting ifall man kontinuerligt gör det. |
Missförstå mig rätt...
Jag känner massor av duktiga utvecklare som lär sig massor på arbetstid. I princip alla jag känner (inklmig själv) som skulle vilja köra ett hobbyprojekt har svårt att hinna med hobbyprojektet pga jobb, barn och andra intressen. Min poäng va dock att de riktigt, riktigt, riktigt duktiga utvecklarna jag känner har haft hobbyprojekt tidigare och drömmer om mer tid för at hinna med hobbyprojekt nu. Jag tror inte att det är en slump att de med sådan passion för yrket att de vill hålla på även på fritiden är de absolut bästa utvecklarna jag känner. jag tror viljan att bli bättre och att lära sig nya saker även utanför jobbet är en av de faktorer som skiljer agnarna från vetet i det här sammanhanget. Själv är jag övertygad om att även om jag hade det ultimata jobbet där jag fick göra allt precis som jag ville så skulle jag ändå ägna en del av min fritid åt att lära mig nya saker. Kanske inte i form av ett omfattande hobbyprojekt men i form av att läsa på om nya saker som jag sedan skulle kunna använda i jobbet. |
Ge han ett case från nuvarande eller gamla projekt. Be han fixa ett fel i koden/lägga till, alternativt snygga till..
Ser man om han kan ta åt sig annans kod snabbt, förståelse och därefter se om han klarar uppgiften. En av mina första anställningar kan liknas vid det försöket. Började med att jag skulle bygga till en tävlingsfunktion till en site dom skötte efter bara kunnat ge han muntliga referenser... slutade med att jag gjorde om all kod på hela siten då jag klagade på hur dåligt gjord den va.. anställningskontraktet flög fram.. Dvs ge han en provanställning om du redan har gallrat ut han genom muntligt/cv(papper)! |
Citat:
En välorganiserad arbetsplats där kompetensutveckling ingår som en naturlig del av verksamheten kanske är en bättre lösning. |
Citat:
Låt oss ta ett exempel. Två personer som är lika duktiga jobbar på samma ställe (ett stimulerande ställe) där de båda lär sig massor av nya fiffiga saker. Den ena personen är nöjd med det för han lär sig ju så mycket varje dag. Den andra personen har ett gammalt hobbyprojekt han skulle vilja jobba på, men som han aldrig hinner med pga familjen och "livet utanför jobbet". - Vem av de två skulle du helst anställa? Vem verkar brinna mest för sitt jobb? Om du tycker dessa personer är likvärdiga så låt den andra personen utnyttja den lilla tid han får över till att läsa någon intressant jobbrelaterad bok, typ på T-banan till & från jobbet. Är personerna fortfarande likvärdiga? Sedan talar jag som sagt av erfarenhet. Jag har intervjuat massor av folk och anställt en hel del. De allra flesta är sådana som är "nöjda" med vad de lär sig på jobbet och ägnar all fritid till annat. Eftersom jag anställt dem har de varit bra. Men de som som har haft (eller ännu bättre har aktiva) hobbyprojekt är generellt sett bättre (inte alla, men medelkompetensen är definitivt högre). Och när vi ändå håller på och generaliserar... Ett hyfsat relevant citat är: "Det finns två typer av människor på en arbetsplats; de som vill göra ett bra jobb och de som bara vill gå hem" |
Om jag skulle anställt en PHP kodare (Det skulle jag aldrig gjort för jag kodar själv :P )
Då skulle jag som sagt gått igenom referenser, tidigare projekt och jag skulle även varit nyfiken på arbetsförmågan, alltså, om kodaren kan göra klart arbeten i tid och är en motiverad kodare. Att lära sig PHP tar tid men nästan alla kan, men hur man arbetar är stor skillnad. Många tar lite i taget istället för att kodar effektivt och gör klart produkten och kunden blir missnöjd och kommer aldrig igen :P . Så du bör ta reda på det på något sätt. Men PHP generellt: Man kan ju börja med att fråga om han kan arbeta mot database XD Nej men om du vill göra ett prov som han ska göra: Man ska kunna registrera sig logga in Skriva till en databas, t.ex. blogga hämta från databas t.ex. hämta bloggmeddelande Uppdatera Databas Ta bort från databas När man kodar PHP så använder man nästan alltid databas så att man kan lagra och hämta värden därför är det en viktig grej. men låt han göra ett mini community utan design. registrera logga in blogga redigera blogginlägg ta bort blogginlägg visa blogginlägg sök på bloggar/blogginlägg Det är viktigt att han även tar egna initiativ och inte bara gör klart det som står på pappret utan även extra funktioner som många vill ha. SÄKERHETEN är bland de viktigaste, de måste du testa han på något sätt. Kodar han inte säkert kan vem sol helst ta över databasen och radera allt som finns i databasen eller få fram lösenord och liknande. |
Vet inte hur trådmodellen ser ut i PHP men när jag sökte en tidigare Java-tjänst fick jag till uppgift att göra en flertrådad bloggpingserver samt klienter till denna.
Den uppgiften kanske inte går att applicera i och med att det är PHP som ska användas här. Jag kan inte tillräckligt om PHP för att avgöra det men ett förslag kanske det kan vara trots allt. |
Citat:
Se till att databastabeller är normaliserade och indexerade, ställ krav på OO, en enklare templatemotor eller iaf uppdelning av affärslogik och presentation, separat konfigurering, skyddad mot SQL-injections och XSS-attacker, spam. Sen i ditt fall kanske det ska till lite Ajax-magi oxo eftersom du eftersöker en del frontend-kunskaper oxo. Sist men inte minst, kolla igenom koden och sök på Google efter utvalda avsnitt. Somliga nötter snor en gästbok från nätet och modiferar den lite lätt bara... |
Precis, en gästbok skall nog räcka.
Man kan bedöma den genererade markupen och säkerhetsaspekter som mrjb skriver ovan. Ajax är väl bra att ha med i arbetsprovet men skall kanske inte vara det essentiella imho, det kanske räcker med referens i detta avseende. |
Alla tider är GMT +2. Klockan är nu 00:04. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson