Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Oferty pracy i próbki kodu
Forum PHP.pl > Inne > Hydepark
terabit
Witam winksmiley.jpg

W wielu ofertach z pracą oprócz oczywistego CV trzeba podesłać próbkę swojego kodu,
możecie dać przykłady jaki wy kod wysyłacie?

Oczywiście chodzi mi o to co ten kod robi, czym zajmuje się taka klasa która wysyłacie itp.

Z góry dzięki winksmiley.jpg
cojack
https://code.google.com/p/bdt-php/source/browse/#svn%2Ftrunk

Masz, nie zapomnij że to gpl 3, nie wolno Ci usunąć informacji o autorze ani zmienić licencji.
nasty
Nikt normalny nie traktuję "próbek kodu" poważnie a tym bardziej nie prosi o nie ;-)
Takie rzeczy są tylko w niektórych obszarach świata PHP i to też w tych mniej wyszukanych.
Speedy
Próbkę to można perfum wysłać, a nie kodu. Jeśli ktoś prosi o coś takiego podczas rekrutacji, to znaczy, że nie ma zbyt dużego pojęcia o programowaniu i projektowaniu jakiegokolwiek oprogramowania, bo jaki ma sens wysyłania jakiegoś wyrwanego z kontekstu fragmentu projektu?
Noidea
Wiadomo, że najlepiej mieć w CV wypisany przebieg swojej kariery i zakresy obowiązków z poprzednich firm. Tylko że jak ktoś ma zerowe/niewielkie doświadczenie komercyjne, to chyba lepiej, żeby się pochwalił kodem, niż wysłał szablonowe CV z wykształceniem i umiejętnościami.
Na podstawie takiego kodu można stwierdzić, czy autor potrafi rozłożyć problem na klasy, stosuje zasadę pojedynczej odpowiedzialności, rozdziela logikę biznesową od prezentacji, a także czy pisze czytelny kod (krótkie funkcje, zrozumiałe nazwy zmiennych, tylko język angielski itd.). Dodatkowo jeśli wymagany jest np. Symfony, to lepiej jest wysłać krótki kod opierający się na tym frameworku, niż po prostu dopisać "Symfony" do tych wszystkich trzyliterowców w umiejętnościach. Wiadomo, że jak ktoś (tak jak napisał terabit) wyśle jedną klasę, to zbyt wiele mu to nie pomoże, ale jak ktoś potrafi pisać porządnie, to dlaczego miałby się nie chwalić.

Do tego podczas rozmowy kwalifikacyjnej można poprosić o dodanie/zmodyfikowanie jakiejś funkcjonalności, tak żeby wymagana była lekka modyfikacja struktury klas i sprawdzić, czy taka osoba rozumie "swój" kod, potrafi wykonać zadanie bez psucia struktury oraz ile czasu jej to zajmie. Myślę, że takie krótkie zadanie praktyczne jest o wiele lepsze niż test, który promuje osoby potrafiące bez manuala rozróżnić funkcje haystack, needle od needle, haystack i znające na pamięć definicję pojęcia interfejs z wikipedii.

Obowiązek wysyłania próbki kodu rzeczywiście może być głupi, ale samo wysyłanie kodu jako dodatkowy załącznik na pewno bez sensu nie jest.
Daiquiri
Wiecie co, prośba o kawałek kodu nie musi być taka głupia. Jeżeli ktoś opcjonalnie pozwala Ci się pochwalić np. napisaną przez Ciebie klasą z której jesteś dumny - to czemu nie? Kawałek kodu może nie może przedstawić Cię jako super programistę, ale może pokazać, że kompletnie nie wiesz co robisz i tym sposobem zaoszczędzić zarówno Twój czas jak i czas potencjalnego rekrutującego smile.gif.
everth
"Proszę przysłać próbkę swojego kodu" - jest zupełnie bezsensowne (mi się kojarzy z listem motywacyjnym). Nie ma możliwości sprawdzenia czy osoba przesyłająca jest autorem czy po prostu potrafi używać Gugli. W necie są setki darmowych klas, modułów, całych CMSów z czego duża część na liberalnych licencjach. Znacznie lepiej to wygląda gdy w ofercie (lub w odpowiedzi na nią) zamieszczony jest opis problemu i wyszczególnione są punkty które musi spełniać rozwiązanie. Wtedy już ma to trochę wyższą wiarygodność.

Noidea
@everth Wtedy można poprosić znajomego programistę, żeby "za flaszke" taki kod napisał. Jasne że można załączyć cudzy kod, ale od tego jest rozmowa kwalifikacyjna, żeby takie rzeczy wyszły na jaw.

Pomijając sprawdzanie wiarygodności podczas rozmowy kwalifikacyjnej, to "zadanie do wykonania" w ofercie też jest ok. Różnica jest taka, że w przypadku zadania do wykonania łatwiej jest rekrutującemu (wszyscy wysyłają mu kod na jeden temat - łatwiejsze do sprawdzania), a trudniej rekrutowi (pisze osobne kody dla każdej z firm, do której aplikuje, nawet jeśli już ma portfolio). Wybór zależy od zasobów ludzkich w firmie i jej podejściu do przyszłych pracowników.
Daiquiri
Pewnie, ze ktoś może po prostu skorzystać z google, tylko po co? Zasadniczo straci tylko swój czas jak się przejedzie na rozmowę i wyjdzie na głupka smile.gif. Spotkałam się z prośbą o kod, aczkolwiek rekrutujący nie chciał zobaczyć jak pięknie ogarniamy pętle i warunki. To było raczej w kwestii dodatkowego "popisania" się fajnym rozwiązaniem jakiegoś problemu - być może były za to "dodatkowe punkty" smile.gif. Prawda jest taka, że sporo osób rozsyła CV gdzie popadnie, nawet nie mając podstawowych kwalifikacji.

Tak na marginesie, listy motywacyjne to temat na elaborat. No bo jak napisać stronę o tym dlaczego człowiek chce tak bardzo pracować w supermarkecie?
konys
To ciekawe jak male znaczenie ma dla Was czyjs kod. Przypuszczam, ze gdybym zajmowal sie szeroko pojetym "programowaniem PHP" moglbym miec podobne zapatrywanie na temat, ale jako ze programuje w Magento, probka kodu jest dla mnie glownym wyznacznikiem tego, czy ktos ma pojecie o temacie. Bywalo, ze po probce kodu bylo jasne, ze kandydat sie nie nadaje, ale tez raz gosc podeslal swoj projekt w ZF nie majac doswiadczenia w Magento i wiedzialem, ze da sobie rade (zreszta jest teraz swietnym Magentowcem). Innym razem firma, dla ktorej pracowalem, przerabiala kod po innej (konkurencyjnej) i po kodzie tez widac bylo, ze programista stawial pierwsze kroki w Magento, ale naprawde dobrze sobie radzil - nawet firma probowala go namierzyc celem podkupienia. Takze dla mnie kod ma wieksze znaczenie niz CV - moze to tylko kwestia specjalizacji.
Speedy
Cytat
programuje w Magento

Jeden wuj. A Magento to niby w czym jest napisane? Jak ktoś jest pojętny, to nauczy się programować w każdym języku i będzie mógł wdrażać lub rozwijać dowolną aplikację.
Proszenie o próbki kodu jest bez sensu. Jeśli rekrutujący już naprawdę chce zweryfikować to, czy ktoś potrafi programować i na jakim poziomie, to może zadać zadanie polegające na napisaniu jakiegoś prostego programu lub aplikacji, w której można wykorzystać mechanizmy dostępne w danym języku. W ten sposób możemy od razu sprawdzić terminowość kandydata i szybkość z jaką wykonuje powierzone zadania.
konys
Cytat
Cytat
programuje w Magento

Jeden wuj. A Magento to niby w czym jest napisane? Jak ktoś jest pojętny, to nauczy się programować w każdym języku i będzie mógł wdrażać lub rozwijać dowolną aplikację.
Proszenie o próbki kodu jest bez sensu.


Nie, no jesli masz czas i srodki na szkolenie kandydata to faktycznie badziej sie licza jego mozliwosci niz juz przyswojona wiedza. Jako ze pracuje na kontrakcie, nie mam komfortu wyszkolenia sobie pracownika, musze znalezc kogos kto dane umiejetnosci juz posiada i moze wykorzystac od pierwszego dnia pracy. Jesli chodzi o Magento (chociaz pewnie mozna to powiedziec o kazdym powazniejszym systemie), to okreslenie poziomu kandydata po kawalku kodu jest naprawde proste i miarodajne. Jesli gosc zamiesci cudzy kod (ktorego sam nie jest w stanie stworzyc) to wychodzi to po pierwszym dniu pracy. Oczekiwanie od kandydata wykonania probnego zadania jest wedlug mnie oznaka braku szacunku dla jego czasu. Wole, zeby pochwalil sie czyms co juz stworzyl, a na wykonanie moich zlecen przyjdzie pora podczas okresu probnego, kiedy ma za to placone.
thek
A kto każe jako zadanie przywalenie całego CMS? Wystarczy coś z podstaw, które normalnie programista zrobi w 5-10 minut. Powiedz by takie proste zadanie wymyślił ktoś z działu programistów. U mnie szef tak zrobił. Przyszedł do mnie i kumpla i otwarcie powiedział: "Wymyślcie jakieś proste zadanko do testu kwalifikacji. Nie za trudne. Tak na kilka minut do zrobienia w php.". I wiesz co? Nie okresliliśmy, że ma to być czysty php. Ludzie czasem walnęli coś w nim, innym razem kawałek kodu z użyciem jakiegoś FW (dzięki temu wiedzieliśmy już też czy używa do pracy jakiegoś, nawet jeśli nie zawarł tego w CV). Sensownie, prosto i bez upierdliwości. Na rozmowie tylko oprócz normalnych rzeczy szef się pytał kolesia o kod by coś tam mu wyjaśnił (copy-paste a wytłumaczenie logiki kodu zazwyczaj nie idą w parze winksmiley.jpg ) i wiedział wszystko, a dodatkowo kilka pierwszych dni wszystko powiedziało czego na rozmowie nie poruszono. Koleś dostaje do tej pory zlecenia i utrzymujemy z nim współpracę. Mimo faktu, że korzysta z innego FW niż u nas w pracy zwyczajowy (on Symfony, u nas czysty php lub Kohana) współpraca trwa. A wystarczyło jedno zadanko by wielu poległo bo kod albo straszny, albo jakiś dziwoląg, najpewniej sklejany z jakichś gotowców.
Daiquiri
Kiedyś czytałam o ciekawym sprawdzeniu potencjalnej wiedzy programisty podczas rozmowy kwalifikacyjnej. Zadanie było proste: napisać skrypt, który będzie wypisywał liczby od 1 do 100 z czego przy tych podzielnych przez 3 (bez reszty oczywiście) wypisze dodatkowy tekst, a przy tych, które są zarówno podzielne przez trzy jak i parzyste mamy zobaczyć nie liczbę a jakiś konkretny wyraz (nie pamiętam jaki). Zadanie można rozpisać w porywach do 2 minut na kartce, jednak spora część "kandydatów" poległa.

thek
To zadanie jest proste, tyle że nie każdy to szybko zobaczy smile.gif Dla kumatych nic trudnego. Kwestia "widzenia" gdzie się modulo robi i przy jakich wynikach co robić dalej. W wersji bardzo łopatologicznej i chyba jednej z prostszych implementacji:
  1. for($i = 1; $i <=100; $i++) {
  2. if( $i%3 ) {
  3. echo $i.'<br />'."\n";
  4. } else {
  5. if( $i%2 ) {
  6. echo $i.' cuda wianki<br />'."\n";
  7. } else {
  8. echo 'Magia słowa<br />'."\n";
  9. }
  10. }
  11. }
Ale to prawda, gdyż wiele osób na tym się wyłoży. Podobnie jak na 2+2*2 a już gwoździem do trumny wyłoby 2+2*2^2 tongue.gif Ciekawe ile osób w tym ostatnim przypadku wstawiło by 64, ile 10, a ile jeszcze inne wyniki smile.gif
batman
Proszenie o próbkę kodu zostało wymyślone przez nieznających rynku rekruterów lub osoby chcące po prostu dostać coś za darmo.
Nigdy nie wysłałem CV do firmy, która chciała próbki kodu. O poziomie programisty powinny mówić zrealizowane projekty oraz zadanie do wykonania podczas rekrutacji (przy czym zadanie nie musi koniecznie być rozwiązane, czasami wystarczy opisać sposób rozwiązania).
Speedy
Cytat(thek @ 24.01.2011, 13:24:20 ) *
To zadanie jest proste, tyle że nie każdy to szybko zobaczy smile.gif Dla kumatych nic trudnego. Kwestia "widzenia" gdzie się modulo robi i przy jakich wynikach co robić dalej. W wersji bardzo łopatologicznej i chyba jednej z prostszych implementacji:
  1. for($i = 1; $i <=100; $i++) {
  2. if( $i%3 ) {
  3. echo $i.'<br />'."\n";
  4. } else {
  5. if( $i%2 ) {
  6. echo $i.' cuda wianki<br />'."\n";
  7. } else {
  8. echo 'Magia słowa<br />'."\n";
  9. }
  10. }
  11. }
Ale to prawda, gdyż wiele osób na tym się wyłoży. Podobnie jak na 2+2*2 a już gwoździem do trumny wyłoby 2+2*2^2 tongue.gif Ciekawe ile osób w tym ostatnim przypadku wstawiło by 64, ile 10, a ile jeszcze inne wyniki smile.gif


Tak kozaczysz tutaj, a sam napisałeś źle ten skrypt winksmiley.jpg. Wziąłeś pod uwagę tylko przypadki:
- kiedy liczba jest podzielna tylko przez 3
- kiedy liczba jest podzielna tylko przez 2
- resztę

Nie wziąłeś pod uwagę przypadku, kiedy liczba jest podzielna zarówno przez 3, jak i 2.
krzysiek_raven
Sprawdzanie wiedzy kandydata każąc mu pisać skrypt na kartce, dodatkowo dając mu na to 2 min jest moim zdaniem pomyłką. Wiadomo że nawet przy bardzo prostym skrypcie można popełnić błąd, szczególnie że na rozmowie o prace dochodzi jeszcze stres.
Pierwszy raz pisząc sobie to zadanko, które podała Daiquiri też wyszło mi coś źle, ale widząc że coś jest nie tak szybko mogłem poprawić a pisząc na kartce nie ma takiej możliwości.

A to mój skrypt, mam nadziej że działa dobrze tongue.gif
  1. for ($i = 1; $i <= 100; $i++){
  2. if ($i % 3 == 0)
  3. echo('(podzielna przez 3) ');
  4. if (($i % 3 == 0) && ($i % 2 == 0))
  5. echo(' (podzielna przez 2 i 3)');
  6. else
  7. echo($i);
  8. echo '<br/>';
  9. }
Daiquiri
@krzysiek_raven - czytamy ze zrozumieniem. Napisałam, że skrypt jest do napisania na kartce w porywach do 2 minut smile.gif. W sensie, że można to napisać w chwilkę, nie jest to zadanie na pół godziny. Jest dosyć "fajnie" wymyślone, że sprawdza logiczne myślenie, a nie to, czy zrobisz literówkę w funkcji klepanej z pamięci smile.gif. Ma raczej za zadanie oddzielić ludzi, którzy cokolwiek wiedzą, od tych którzy PHP kojarzą tylko z wpisu we własnym CV.
thek
Cytat
Nie wziąłeś pod uwagę przypadku, kiedy liczba jest podzielna zarówno przez 3, jak i 2.
Odpal kod i sprawdź jaki daje rezultaty bo jak widzę logika Ci szwankuje biggrin.gif
  1. if( $i%3 )

to nie to samo co
  1. if( $i%3 == 0 )
Jeśli nie widzisz to...
  1. if( $i%3 ) {
  2. echo $i.'<br />'."\n";
  3. }
Wykonuje się gdy liczba NIE JEST podzielna przez 3, co implikuje, że wszystko w else JEST podzielne przez 3. Skoro tak, to tam dopiero sprawdzam czy liczba jest podzielna przez 2 i w zależności od tego, albo dodaję do liczby jakiś napis, albo liczbę nim zastępuję. Jak widzę zamiast kod przetestować to chciałeś zabłysnąć poprzez wytknięcie moderatorowi byka. Szkoda tylko, że to TY go walnąłeś.
terabit
Ciekawa dyskusja...

jednak dalej zastanawiam się co warto wysyłać,
przypuśćmy dla frameworka kohanaphp, co warto napisać żeby to było wartościowe dla potencjalnego pracodawcy...
krzysiek_raven
Daiquiri - No w sumie jako takie dodatkowe zadanko to może byćwinksmiley.jpg ale nie każdemu uda sie odrazu na kartce napisać dobrze (chodzi o błąd logiczny) a na kompie zauważysz ten błąd, poprawisz i zadanko zrobisz dobrze smile.gif
Zresztą mój skrypt troche źle działa bo przy podzielnej przez 3 i 2 wyświetla sie jeszcze napis z warunku gdy jest podzielna tylko przez 3 a chyba nie powinien:)
Speedy
Zwracam honor Panie moderatorze i chylę czoła przed Twym intelektem i bezbłędną logiką. Wszak każdy robi błędy i nikt nie jest nieomylny.

EDIT: [thek]: Nie chodziło mi o pokazanie "jestem pr0", ale fakt, że nie przetestowałeś kodu zanim mi wytknąłeś błąd. Mi także zdarzały się głupie błędy na forum, także gdy byłem juz modem. Najważniejsze to umieć się przyznać do błędu. A o to coraz trudniej. Troszkę sarkazmem trąci pierwsze zdanie, ale zrzucę to na karb mojego wyczulenia pod tym względem smile.gif
koreja
Jeśli chodzi o Kohane, to chyba najlepszym wyjściem jest napisanie bardzo prostego helpera i przykład jego użycia w kontrolerze. Wtedy wykażesz się znajomością Kohany i PHP. Ja przynajmniej miałem coś takiego i przeszło smile.gif Ale firma, w której pracowałem faktycznie nie miała większego pojęcia co się dzieje (oprócz głównego programisty), także jeśli o mnie chodzi, bogatszy o kilka doświadczeń jestem na nie, gdy idzie o wysyłanie próbek kodu smile.gif
everth
Cytat
Ale firma, w której pracowałem faktycznie nie miała większego pojęcia co się dzieje

W zasadzie to może wystarczyć za podsumowanie całej dyskusji o próbkach kodu. Firmy które czegoś takiego wymagają albo nie wiedzą w czym robią (choć kiedy sobie przypominam że to Polska, to przestaje mnie to dziwić) albo rekrutują przez firmy zewnętrzne (też słabej jakości). Sama próbka kodu nic nie pokazuje - może poza przyzwyczajeniami w kwestii formatu kodu.

Swoją drogą zastanawia mnie ile osób by się wykruszyło, gdyby na rozmowie kwalifikacyjnej dać do zaprogramowania choćby jedno łatwiejsze zadanie z takiego np. SPOJa. Choć ostatecznie mogłoby się to obrócić przeciwko pracodawcy (zostali by ci co naprawdę myślą - a ci z reguły drogo się cenią biggrin.gif).
batman
Testowanie wiedzy programisty na kartce jest bardzo dobrym rozwiązaniem, pod warunkiem, że nie zostało wymyślone przez tego samego "geniusza", który wymaga próbek kodu. W takich testach nie chodzi o sprawdzenie, czy programista ma w głowie kompilator/parser, a o upewnienie się, że ktoś taki potrafi myśleć bez Google'a i czy nie jest programistą copy-paste.
Theqos
To zadanko było troche bardziej skomplikowane winksmiley.jpg

Cytat
Napisz program, który wypisuje liczby od 1 do 100. Ale dla wielokrotności trójki wyświetl "Fizz" zamiast liczby oraz dla wielokrotności piątki wyświetl "Buzz". Dla liczb będących wielokrotnościami trójki oraz piątki wyświetl "FizzBuzz".
thek
Ale tylko niewiele smile.gif Z tego co kojarzę, to nawet na forum chyba już te zadanie się przewinęło kiedyś. Zgadzam się na pewno z jednym. Testowanie znajomości kodu ma sens. Co do sprawdzania wiedzy to o tym zresztą wspomniałem wcześniej, że szef zapytał o jakiś fragment "bo nie rozumiał" i chciał by mu koleś na rozmowie wytłumaczył. To był właśnie test na sprawdzenie czy mamy do czynienia z copy-pasterem. Osoba samodzielnie pisząca wie co w trawie piszczy. Zawsze może powiedzieć, że wnętrza metody/funkcji nie zna bo to wewnętrzna implementacja frameworka i będzie ok. Nikt nie wymaga znajomości aż takich rzeczy. FW się używa i nie trzeba znać kodu za nim stojącego (choć niewątpliwie przydaje się to czasem). Jak wspomniał batman - koleś ma znać rozwiązanie lub umieć do niego dojść logiką, a nie tylko poprzez google. Mi by wystarczyło gdyby podczas rozmowy osoba starająca się wymyśliła poprawny algorytm i podała jakich mniej więcej funkcji by użyła oraz gdzie, bo to wystarczy tak naprawdę do stwierdzenia czy rozumie zadanie. Nie musi mi od razu kodem sypać. Mogła by nawet kartki i długopisa nie tknąć.
darko
Ostatnio aplikując na stanowisko programistyczne wysłałem pierwszą lepszą klasę jaką znalazłem w jakimś starym projekcie dodałem tylko w osobnym pliku rozbudowany komentarz, w którym napisałem, że jest to pierwsza z brzegu wzięta klasa. Myślę, że nikt z pracodawców nie traktuje próbek kodu poważnie, stąd nie staram się w ogóle robić jakiś dziwactw w tym miejscu. A widziałem wiele, np. osobno generowaną doxygenem dokumentację do jednej prostej klasy z kilkoma getterami i setterami + osobno wykupiony hosting tylko na potrzeby tego jednego punktu w ofercie pracy. Podsumowując, jeśli na codzień piszemy kod zgodny z jakąkolwiek konwencją stylistyczną i konsekwentnie się tego trzymamy pamiętając o dokumentowaniu kodu phpDociem @ to nie ma się czego wstydzić i można śmiało wysłać cokolwiek, w końcu to ma być próbka kodu, a nie specjalnie wyselekcjonowane komponenty, które powstawały tygodniami, bo to od razu widać, jeśli ktoś coś takiego wyśle pracodawcy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.