WN

WN (https://www.wn.se/forum/index.php)
-   Allmänt (https://www.wn.se/forum/forumdisplay.php?f=2)
-   -   PHP, arbetsprov (https://www.wn.se/forum/showthread.php?t=34013)

Sonec 2008-12-17 16:53

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

tartareandesire 2008-12-17 17:05

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.

Sonec 2008-12-17 17:08

Citat:

Originally posted by tartareandesire@Dec 17 2008, 18:05
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.

Sorry om jag var otydlig..=)

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..

tartareandesire 2008-12-17 17:15

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).

Björn 2008-12-17 17:25

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.

eg0master 2008-12-17 17:39

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.

tartareandesire 2008-12-17 17:50

Citat:

Originally posted by eg0master@Dec 17 2008, 18:39
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.

Håller till viss del med dig men det är nog inte riktigt så enkelt. Utifrån beskrivningen ovan verkar personens arbetsuppgifter vara mer eller mindre begränsade till PHP och mySQL så det förefaller ganska märkligt om man inte skulle testa inom just detta område. Visst kan en van programmerare lära sig detta utan större problem men alla språk tar tid att lära sig.

Sonec 2008-12-17 18:51

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...

iXam 2008-12-17 20:39

Att anställa en programmerare som inte har några egna saker att visa upp han/hon gjort tidigare låter fatalt.

Björn 2008-12-17 21:51

Citat:

Originally posted by eg0master@Dec 17 2008, 18:39
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.

Att korrekt kunna sätta sig in i och förstå kod, på begränsad tid, säger nånting om förståelsen. Det är knappast det enda test man kan eller bör göra. Men det kan absolut vara en del i att testa förståelse imo. På sätt och vis ett bättre test än att säga åt en person lösa problem i specifikt språk, eftersom programmering är mer än syntax.

Onkelborg 2008-12-17 21:54

Citat:

Originally posted by iXam@Dec 17 2008, 21:39
Att anställa en programmerare som inte har några egna saker att visa upp han/hon gjort tidigare låter fatalt.

Om det man gjort faller inom NDA-avtal?

eliasson 2008-12-18 07:15

Citat:

Ursprungligen postat av Onkelborg
Citat:

Ursprungligen postat av iXam
Att anställa en programmerare som inte har några egna saker att visa upp han/hon gjort tidigare låter fatalt.

Om det man gjort faller inom NDA-avtal?

Det ska mycket till om samtliga projekt man gjort är sekretessbelagda, för man har även en del privata.

al'Thor 2008-12-18 07:36

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.

tartareandesire 2008-12-18 07:36

Citat:

Originally posted by iXam@Dec 17 2008, 21:39
Att anställa en programmerare som inte har några egna saker att visa upp han/hon gjort tidigare låter fatalt.

Jag utgår från att det även finns några sådana...

Onkelborg 2008-12-18 08:14

Citat:

Ursprungligen postat av eliasson
Citat:

Originally posted by -Onkelborg@Dec 17 2008, 20:54
Citat:

Ursprungligen postat av iXam
Att anställa en programmerare som inte har några egna saker att visa upp han/hon gjort tidigare låter fatalt.

Om det man gjort faller inom NDA-avtal?


Det ska mycket till om samtliga projekt man gjort är sekretessbelagda, för man har även en del privata.

Jag skulle inte kalla det helt osannolikt, i mitt fall ligger nog det mesta jag gjort under nda, och det jag gjort privat är just för privat bruk, jag bryr mig inte om att lägga tid på att göra saker användarvänliga när det är jag som använder dem t.ex.

Conny Westh 2008-12-18 08:14

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.

eg0master 2008-12-18 08:52

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.

Conny Westh 2008-12-18 09:10

Citat:

Originally posted by Onkelborg@Dec 18 2008, 09:14
Jag skulle inte kalla det helt osannolikt, i mitt fall ligger nog det mesta jag gjort under nda, och det jag gjort privat är just för privat bruk, jag bryr mig inte om att lägga tid på att göra saker användarvänliga när det är jag som använder dem t.ex.
Jag har jobbat med utveckling på heltid sedan Juli 1988 dvs drygt 20 år. Innan dess hade jag hållit på att koda i jobbet på deltid något år och flera år privat innan dess. Jag började koda när jag var typ 14 bast eller så. Nu är jag 44 så 30 års erfarenhet av kodande.

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.

Daniel.st 2008-12-18 09:15

Är det inte det man har provanställning till?

WoxAnYv 2008-12-18 12:29

Citat:

Originally posted by eg0master@Dec 18 2008, 10:52
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.
Noteras bör att jag tror inte att jag är den enda men jag har möjlighet att utvecklas på mitt jobb, dvs. jag är inte såpass nedtyngd av mitt arbete att jag inte kan avsätta tid till att testa nya lösningar på arbetstid.

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.

eg0master 2008-12-18 17:22

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.

Forslunds 2008-12-18 17:28

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)!

andi 2008-12-24 11:37

Citat:

Originally posted by eg0master@Dec 18 2008, 18:22
... 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.
Vilket diskvalificerar alla som har familj, barn och ett liv utanför arbetet. Jag tror du missar en hel del bra utvecklare om du antar att du bara hittar dem i gruppen "ensamstående män mellan 20 och 30 år".

En välorganiserad arbetsplats där kompetensutveckling ingår som en naturlig del av verksamheten kanske är en bättre lösning.

eg0master 2008-12-25 18:02

Citat:

Originally posted by eg0master@Dec 18 2008, 18:22
[...] I princip alla jag känner (inkl mig själv) som skulle vilja köra ett hobbyprojekt har svårt att hinna med hobbyprojektet pga jobb, barn och andra intressen. [...]
@andi: Kul att du citerar en del och helt missar det jag skriver ett par meningar tidigare. Att ha en vilja och att faktiskt genomföra det man vill är två helt skilda saker. Så som jag skrev; missförstå mig rätt. Det finns massor av bra utvecklare som inte hinner med hobbyprojekt. Men det finns massor av duktiga utvecklare som inte har ambitionen att utvecklas annat än det de kan få genom jobbet och i mina ögon (oavsett hur stimulerande jobb man har) saknar man då det där lilla extra som gör dig till en riktigt bra utvecklare.

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"

webbhelp 2008-12-26 00:55

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.

dAEk 2008-12-27 02:09

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.

mrjb 2009-02-05 20:21

Citat:

Originally posted by Sonec@Dec 17 2008, 17:53
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.
Ett bra arbetsprov som jag kört med är att göra en helt vanlig gästbok. En sådan innefattar ju alla moment i en enkel webbapp.

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...

allstars 2009-02-06 08:12

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