Wojciech Niewiadomski

Wojciech Niewiadomski Programista Magento
- Backend

Temat: "... proszę o przysłanie przykladowego kodu."

Witam.

Tak czytając wypowiedzi na temat szukania pracowników, szukania pracy - czyli z obu stron - dochodzę do wniosku, że obie strony jakby nie chcą siebie na wzajem zauważyć. Szukający pracownika oczekuje, że poszukiwany wykona coś na czym szukający zarobi - jasna sprawa. Dokładnie tak samo jest w drugą stronę, szukający pracy oczekuje godziwej zapłaty za pracę, którą ma wykonać. Dla mnie to jest wszystko jasne i zrozumiałe.
Oczywiście jest kwestia weryfikacji kwalifikacji wykonawcy. Ten co szuka pracy chce wypaść jak najlepiej a ten co szuka pracownika chce najlepszego.
Ja szukam zleceń. Mam wole "moce przerobowe" i mam możliwość je wykorzystać poprzez wykonywanie zleceń. Z resztą forma pracy jest do ustalenia - wszystko jest kwestią dogadania się. Odpowiadam na ogłoszenia, staram się powiadomić jak najwięcej ludzi o tym, że mogę i jestem w stanie.
Najczęstsza odpowiedź jaką dostaję (jeżeli już dostaję) to "... proszę o przysłanie przykladowego kodu." Tylko jaki to kod?
Kilka razy, na taką odpowiedź, odpisałem z zapytaniem co do tego jaki to ma być kod - co ma sobą reprezentować?
W tym momencie odpowiedzi są przeróżne, np: "coś największego co Pan zrobił", "żebysmy wiedzieli, że Pan jest w stanie współpracować z innymi" ... ale dalej nic nie wiadomo.
Cokolwiek by nie pokazać, może się okazać, że akurat temu pracodawcy nie chodziło o to. Moim marzeniem jest zobaczyć kod idealny, który będzie dobry aby przesłać w odpowiedzi na "... proszę o przysłanie przykladowego kodu."
Czy w ogóle, ktoś bierze pod uwagę to coś, co się nazywa przykładowym kodem?
Czy taki kod jest miarodajny, jeżeli chodzi o selekcję pracowników?

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Dla mnie zawsze bardzo istotny jest ten kod i nigdy nie chodzi o napisanie niewiadomo czego np. prosta akcja do tworzenia zamówień w restauracji. Tutaj programiści zadają przeróżne pytania:
- co ma zwracać metoda
- jaki sposób przesyłania
- jaki sposób przechowywania danych
- itp. itd.
Na każde z powyższych odpowiadam w jeden sposób - "jak chcesz, wyobraź sobie, że to Ty stworzyłeś tą aplikację i realizujesz kolejną funkcjonalność. I wygląda dokładnie tak, jakbyś to Ty ją napisał."
Naprawdę sporo można dowiedzieć się o sposobie pisania oraz myślenia danego programisty na podstawie takiego kodu.

Niemniej jednak, gdy sam wysyłałem przykładowy kod, to też niekiedy się zastanawiałem co chcą zobaczyć? Umiejętność wykorzystania frameworka? Bibliotek? Jak radzę sobie z logiką biznesową? Czy testuje? I tak dalej.

Dlatego osobiście preferuję pair programming na interview (choćby pseudo-kod pisany na kartce), bo wtedy więcej można się dowiedzieć oraz szybciej wyjaśnić nieścisłości.

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Dla mnie sprawa jest prosta. Skoro pracodawcy potrzebują czegoś co powinno jakoś dobrze odzwierciedlać umiejętności programisty to projekt powinien być chyba najbardziej reprezentatywny. Często pracodawcy potrzebują programistów aplikacji webowych. Pokazać razem z kodem aplikację desktopową chyba nie jest miarodajnym miernikiem umiejętności. Nawet mobilne, które w zasadzie są na desktop ale na urządzenia mobilne pisze się inaczej.

Mam kilka projektów open source, są to biblioteki i aplikacje desktopowe w object pascal, C# oraz JAVA. Ktoś by poprosił o przesłanie przykładowego kodu? Sprawa jest prosta - wystarczy że podam linki do projektów na sourceforge. A to czy to jest miarodajne to inna sprawa, jako że komuś może nie spodobać się konstrukcja i założenia jakie przyjąłem w projektach. Moim zdaniem to jak rosyjska ruletka.

Jako że sam działam na zleceniach, to najprościej jest w przypadku aplikacji desktopowych. Jeśli na Androida problem jest taki że nie mam co pokazać. To samo jeśli chodzi o aplikacje webowe. Żeby mieć coś do pokazania, dla mnie oznacza to po prostu trochę darmowej pracy nad open source a nie mam na to ochoty.

Myślę że problem jest taki. Z jednej strony mówi się że brakuje programistów. Z drugiej strony jest pewnie wielu chętnych, którzy podjęliby się pracy jeśli tylko by im dano taką szansę. I jakiś taki mur pewnie dla wielu nie do przeskoczenia, wynikający z jakiejś nieufności, oczywiście zapewne uzasadnionej.
Wojciech Niewiadomski

Wojciech Niewiadomski Programista Magento
- Backend

Temat: "... proszę o przysłanie przykladowego kodu."

W sytuacji gdy kontaktuję się z kimś kto potencjalnie może miec dla mnie zlecenie i chce "przykładowy kod" ja proponuję "robótkę na próbę" - takie moje open source dla konkretnej osoby. Jestem świadomy, że ktoś może mi coś dać "na próbę" a da mi to co chciał zlecić i ma robotę zrobioną za free. Sęk jednak w tym, że marginalna ilość takich moich propozycji spotyka się z przystaniem na ten lub podobny układ. W całej reszcie przypadków skutkuje to brakiem dalszego kontaktu.

Zastanawiam się, co by nakłoniło takiego zleceniodawcę do tego aby dał szansę komuś kto nie ma czego pokazać? Właśnie problem w tym, że jak ktoś coś robi za pieniądze - jakieś projekty dla kogoś - to wiadomo, nie można się tym chwalić na lewo i prawo bo np. mam podpisane że zachowam poufność projektu - i klops. Tłumacz to komuś - wiadomo jaka będzie reakcja.

Rozumiem, że na tekst "przepraszam ale nie mogę pokazać kodu z którego jestem najbardziej dumny, bo akurat jest to projekt/fragment projektu przy którym muszę zachować poufność" ten pomyśli "tak, tak stary - nawijaj se makaron na uszy - po prostu nic nie masz". Ja też tak myślę jak mi ktoś tak odpowiada ale też mam refleksję na własne problemy z tego typu tłumaczeniem.

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Ten rynek to w dużej mierze agencie interaktywne i firmy outsorcingu, dużo jest takich zleceń chociażby na ZPN, większość to podzlecenia, inne to robótki na zaliczenie dla studentów. Praca jako podwykonawca to rzecz jasna trzymanie się określonych terminów i tu nie może być czegoś takiego, że freelancer nie wykona zlecenia. Zresztą na ZPN spotkałem się z dość rygorystycznymi warunkami w aukcjach, gdzie zleceniodawca po prostu od razu informował, że nie jest zainteresowany usługami kogoś kto jest dopiero początkujący. To jest jak najbardziej do zrozumienia.

Ja to bym raczej jasno przedstawił sprawę: albo firma mi ufa, albo do widzenia, bo kiedyś dostałem taki mały projekt w ramach sprawdzenia ale to był pierwszy i ostatni raz. Jak mam wykonywać tego typu prace bo takie jest widzimisię firmy przy małym prawdopodobieństwie dostania zlecenia, to już wolę pracować za darmo i umieścić coś na sourceforge, przynajmniej z tego będzie więcej korzyści.

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Pracodawcy chcą mieć jakieś potwierdzenie umiejętności. Jeśli dyplom uczelni nie jest żadnym potwierdzeniem umiejętności, a w CV każdy może sobie wpisać co chce, to sięga się po różne zadania rekrutacyjne, patrzy się na portfolio, prosi się o link do githuba, no i oczywiście prosi na rozmowę kwalifikacyjną.

Z drugiej strony... portfolio nie musi być pełne z różnych względów (ja mam w swoim "portfolio" tylko gry przeglądarkowe, które tworzyłem głównie po godzinach), zadania rekrutacyjne mogą być przekombinowane, a na rozmowie kwalifikacyjnej można być zestresowanym. Nawet kod z githuba nie zawsze musi być super porządny... (mnie się zdarzyło pisać przekleństwa czy inne głupoty w chaotycznie zrobionym unit-teście). Można więc powiedzieć, że jakby nie było, ani kod, ani portfolio, ani rozmowa nie muszą być wcale dobrym miernikiem umiejętności.

A co jest miernikiem umiejętnosci? To samo, co zawsze, czyli społeczny dowód słuszności (pojęcie stworzone bodajże przez Cialdiniego w książce "Wywieranie wpływu na ludzi"), innymi słowy - dobry doświadczony programista po prostu "jedzie na opinii", którą mu wystawili poprzedni pracodawcy/klienci. On nie musi robić zadań rekrutacyjnych, bo przecież jeśli pracował dla firmy X, która jest znana w branży, a potem dla firmy Y, to znaczy, że jest dobry (skoro firmy X i Y go zatrudniły, to i rekruter z firmy Z uzna, że dany pracownik się nadaje. W końcu został "sprawdzony" przez poprzednie firmy).

Dlatego też wymaga się portfolio. Jeśli freelancer zrobił n rzeczy dla x różnych firm - to znaczy, że jest dobry, skoro x różnych klientów z nim zgodziło się współpracować.

Dlatego też dużo osób znajduje pracę po znajomości - jeśli pan Kowalski osobiście poleca pana Nowaka, to znaczy że pan Nowak musi być dobry/warto go zatrudnić.

Może przesadzam (oprócz informatyki interesuję się naukami społecznymi), ale dla mnie to opiera się na zasadach psychologii społecznej... bardziej niż na informatyce ;)Ten post został edytowany przez Autora dnia 07.03.14 o godzinie 13:41
Wojciech Niewiadomski

Wojciech Niewiadomski Programista Magento
- Backend

Temat: "... proszę o przysłanie przykladowego kodu."

HA!

Odwróciłem trochę role, zarzuciłem przynętę (dałem ogłoszenie w znanym serwisie z ogłoszeniami darmowymi) że programista poszukuje zleceń. Odezwał się pewien mniej-więcej zdecydowany Pan, który zaprosił mnie na rozmowę na temat projektu nad którym miałbym pracować.
Przybyłem na spotkanie, rozpoczęliśmy rozmowę. Bardzo miła i rzeczowa rozmowa, wnet Pan przechodzi do kolejnego etapu rozmowy: "pozwoli Pan, że zadam kilka pytań które przygotował mi inny programista - ..., prosilibyśmy o przedstawienie przykładowego kodu ...". Zbaraniałem, pewnie wyglądałem jakby mi ktoś matkę gazetą zabił. No to zapytałem, cóż ten kod ma sobą prezentować bo nie chcę śmiecia pokazywać tylko coś rzeczowego i dla nich wartościowego. Na to moje zapytanie, miły Pan odchrząknął i gubiąc się w tym co mówi, stwierdził, że może pokażę coś co już robiłem, etc.
Dochodzę do wniosku, że tego "przykładowego kodu" i tak nikt nie sprawdza. Dlaczego tak uważam? Ano dlatego, że dla mnie (jako programisty) każdy kod/program - jest właściwy i zawsze, ale to zawsze!, spełnia prawidłowo swoją rolę - co najwyżej niewłaściwe mogą być oczekiwania człowieka w stosunku do tego jaki efekt działania tego kodu/programu ma być!

Bo nigdy nie ma źle działającego programu - są tylko programy, które nie robią tego czego by oczekiwał od nich użytkownik.
Igor Janicki

Igor Janicki Software maker.
Java, Perl ...

Temat: "... proszę o przysłanie przykladowego kodu."

Wojciech N.:
HA!

Odwróciłem trochę role, zarzuciłem przynętę (dałem ogłoszenie w znanym serwisie z ogłoszeniami darmowymi) że programista poszukuje zleceń.

a można spytać jaki to jest serwis ?
Wojciech Niewiadomski

Wojciech Niewiadomski Programista Magento
- Backend

Temat: "... proszę o przysłanie przykladowego kodu."

Ten serwis to gumtre, chociaż na http://uniwizard.com myślę postawić podobny serwis ale nie wiem czy to ma sens przy obecnej mnogości podobnych serwisów w internecie.

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

A czego można się spodziewać po takim "bazarze" jak Gumtree.pl? Dobra, powiedzmy że odpowiem na jedno lub więcej ukazujących się tam ogłoszeń pracy zdalnej. Jako programista aplikacji mobilnych, gdzie narazie nie mam co pokazać. Można się spodziewać:

a) prośby o przesłanie przykładowego kodu aplikacji na androida (tylko jakiej, skoro nie mam co pokazać a przecież nie pochwalę się tym co realizowałem jako freelancer)
b) pracy "na próbę", oczywiście za darmo
c) testów w rodzaju Codility czy SCJP

Może się też zdarzyć, że ktoś mi zaufa ale to mniej prawdopodobne, jako że aplikacje desktopowe na Windows raczej nie będą wskazywać na jakieś umiejętności a androidzie. Prędzej Windows Mobile.

A tych serwisów jest więcej i praktycznie wszędzie można by się reklamować, tylko z jakim skutkiem, bo przecież nie chodzi tylko o to, żeby na sprawdzeniu kandydata się skończyło.

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Może się też zdarzyć, że ktoś mi zaufa ale to mniej prawdopodobne, jako że aplikacje desktopowe na Windows raczej nie będą wskazywać na jakieś umiejętności a androidzie. Prędzej Windows Mobile.

dlatego ja wolę pisać w JavaScripcie, bo w jS można łatwo pisać wieloplatformowo. Znając webowe biblioteki JavaScript, możesz równie dobrze napisać aplikację desktopową (z użyciem np. NodeWebkit). Znając jakiś framework mobilny JS możesz napisać w JavaScripcie aplikację mobilną... możesz też pisać stronę serwerową w NodeJS... JavaScript to ostatnimi czasy jeden z najbardziej przenośnych i wieloplatformowych ekosystemów...
i nabyte umiejętnosci się kumulują. W końcu cały czas człowiek poznaje po prostu głębiej ekosystem JS, a nie robi czegoś kompletnie od zera.
Wojciech Niewiadomski

Wojciech Niewiadomski Programista Magento
- Backend

Temat: "... proszę o przysłanie przykladowego kodu."

Łukasz L.:
... JavaScript to ostatnimi czasy jeden z najbardziej przenośnych i wieloplatformowych ekosystemów...
i nabyte umiejętnosci się kumulują. W końcu cały czas człowiek poznaje po prostu głębiej ekosystem JS, a nie robi czegoś kompletnie od zera.

... tak możnaby powiedzieć o dowolnym języku programowania czy dowolnym środowisku. Przecież każdy twórca języka czy frameworka dąży do najuniwersalniejszego zastosowania tego co stworzył.
Czy to będzie JavaScript, Java, HTML5, CGI ... wszystko to pozwala zrealizować pewne cele za pomocą tylko przeglądarki internetowej. Właściwie mało kogo obchodzi co siedzi na serwerze a nawet co siedzi za interfejsem, który wyświetla się w przeglądarce.
Jakbym dostał stado krasnoludków, które będą realizowały dokładnie to samo i tak samo jak program w JavaScript - ja to biorę i działam!
Język czy technologia nie ma żadnego znaczenia - znaczenie ma rezultat i to co można osiągnąć.

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Wojciech N.:
Język czy technologia nie ma żadnego znaczenia - znaczenie ma rezultat i to co można osiągnąć.

Owszem ma. W końcu nie C#, JAVA, Python, PHP, Ruby nie wymyślono talk bez powodu. Zbyt obszerny temat żeby to tak tu króciutko streścić.

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Wojciech N.:
Łukasz L.:
... JavaScript to ostatnimi czasy jeden z najbardziej przenośnych i wieloplatformowych ekosystemów...
i nabyte umiejętnosci się kumulują. W końcu cały czas człowiek poznaje po prostu głębiej ekosystem JS, a nie robi czegoś kompletnie od zera.

... tak możnaby powiedzieć o dowolnym języku programowania czy dowolnym środowisku. Przecież każdy twórca języka czy frameworka dąży do najuniwersalniejszego zastosowania tego co stworzył.
Czy to będzie JavaScript, Java, HTML5, CGI ... wszystko to pozwala zrealizować pewne cele za pomocą tylko przeglądarki internetowej. Właściwie mało kogo obchodzi co siedzi na serwerze a nawet co siedzi za interfejsem, który wyświetla się w przeglądarce
z jednej strony tak - z drugiej strony ważne jest community, liczba dostępnych narzędzi i różnorodność ich. Np. weźmy taki język PHP, niby bardzo popularny ale z drugiej strony większość frameworków w PHP dotyczy tworzenia skryptów po stronie serwera tylko i wylacznie.
Nawet w przeglądarce nie można za bardzo programowac w pehapie (dałoby się teoretycznie, ale nikt tego nie robi )
Ruby, podobnie. Niby taki cudowny dynamiczny język porównywany czasem z Pythonem, ale większośc projektów w Ruby to rzeczy okołowebowe (wliczając w to SASS). Wtyczki do edytorów robi się w Pythonie. Aplikacje okienkowe też w Pythonie bardziej.Skrypty narzędziowe też prędzej w Pythonie, bashu, perlu. Silników do gier też pewnie więcej jest takich, w których sie pisze w pythonie niż w rubym.

Albo Java. Niby język ogólnego zastosowania, ale skomplikowany, z rozbudowanymi API i znając API Androida chyba niekoniecznie dałoby szybko się przestawić na pisanie aplikacji serwerowej. czy nawet desktopowej.

Z drugiej strony biblioteki do JS są zwykle na jedno kopyto (np. niepisana zasada, że metoda 'on' sluzy do dodania funkcji obsługi zdarzenia ), plus pewne narzędzia i biblioteki sie powtarzają, niezaleznie co się robi. Bardziej zestandardyzosany ekosystem jak dla mnie (nie znaczy to, że jest to super cudowne, aplikacje w JS mogą mieć problemy z wydajnoscia, i. być wolniejsze od natywnych rozwiązań)Ten post został edytowany przez Autora dnia 15.03.14 o godzinie 17:14

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Łukasz L.:
Albo Java. Niby język ogólnego zastosowania, ale skomplikowany, z rozbudowanymi API i znając API Androida chyba niekoniecznie dałoby szybko się przestawić na pisanie aplikacji serwerowej. czy nawet desktopowej.

Jak na moje doświadczenia z JAVA to mógłbym z całą odpowiedzialnością powiedzieć że aplikacje na desktop, na androida i webowe to zupełnie inna bajka. Nawet rozszerzając zakres działań z aplikacji desktopowych na android, przekonałem się że pisanie a co bardziej istotne debugowanie i wykrywanie ewentualnych błędów w aplikacji na android, korzystając jeszcze z emulatora to trudne zadanie. Emulator ładuje się dość wolno. A i jeszcze jest kwestia uprawnień bo pliki generowane przez program też nie mogą być zapisane byle gdzie. Co zaś do oprogramowania zdarzeń kliknięcia na buttonach, jest to tylko kwestia dodania event listenerów ale nie jest to tak trudna sprawa.

Ogólnie jednak w JAVA ogarnięcie jak się tworzy aplikacje desktopowe czy mobilne na androida nie powinno być specjalnym problemem, tyle że android ma po prostu ograniczenia i w porównianiu do aplikacji desktopowej wiele takiej aplikacji brakuje chociażby ze zwględu na GUI.

konto usunięte

Temat: "... proszę o przysłanie przykladowego kodu."

Dariusz R.:
>
Nawet rozszerzając zakres działań z aplikacji desktopowych na android, przekonałem się że pisanie a co bardziej istotne debugowanie i wykrywanie ewentualnych błędów w aplikacji na android, korzystając jeszcze z emulatora to trudne zadanie.
to nie emulator, to zamulator ;) na szczęście można podłączyć telefon do USB i bezpośrednio z Eclipse odpalać aplikację wprost na telefonie, więc o tyle dobrze.



Wyślij zaproszenie do