Frontend

Któż z nas nie przeglądał choć raz branżowych ofert pracy, gdzie w ogłoszeniach dla tzw. frontendowców padają z reguły trzy magiczne słowa: Wymagana znajomość technologii XHTML, CSS, JavaScript. Czy aby na pewno powyższe trio miało sens?

Utrwaliło się dość mocno w świadomości pracodawców i wszelakich branżowych decydentów, że Pan od wyglądu zewnętrznego aplikacji powinien znać także JavaScript. W swojej 6-letniej karierze webdevelopera jako takiego, wykonywałem prace frontendowca, jak i backendowca. I znacząco twierdzę, że obecny podział ról jest czasem (podkreślmy – czasem) dość rujnujący.

Doświadczenie nakazuje mi sądzić, że zrzucanie na frontendowca obowiązków, związanych z JavaScript nie jest zawsze słuszne. Prowadzi to często do dość drastycznych nieporozumień. Do wzajemnej irytacji dochodzi w momencie, kiedy backendowiec wchodzi na grunt frontendowca. Ma to miejsce w kilku punktach zapalnych, jak np. przy okazji implementacji przez backend wszelakich skryptów autosearch, autocomplete itd. i innych, całkiem już niecodziennych sytuacjach, przeważnie jednak wtedy, kiedy należy pobrać coś via AJAX i dodać różne efekty.

Nie każdy, kto zna CSS&HTML, ma też zmysł programistyczny. Nie ukrywajmy, że implementacja różnych animacji i bardziej skomplikowanych efektów wymaga dobrego przemyślenia problemu. jQuery, które przyszło na świat, zbawiając wielu koderów CSS, w większości nie pomoże, gdy przyjdzie zakodować coś bardziej innowacyjnego. Czy ktoś, kto posiada zmysł artystyczny i estetyczny, zakoduje, w miarę sensownie, małą webaplikację, o którą proszą się od miesięcy backendowcy dla ich CMSa?

Osobiście znam kilku świetnych koderów CSS, którzy z JS są na bakier, przyznając jednocześnie, że to ich boli i stawia w trudnej roli na rynku pracy:

Po prostu nie mam smykałki do tego – mam okrutnie schematyczny mózg. HTML i CSS maja swoje reguły, które łatwo pojąc, JS nie ogranicza nic i to mnie właśnie przeraża.

Są oni za to świetnymi grafikami, co z kolei nie zawsze idzie w parze z naszym kochanym, frontendowym trio (CSS, JS, HTML). Wypada znaleźć alfę i omegę, prawda?

W zasadzie można by wyróżnić trzy profile frontendowca:

Oczywiście najlepszym wyborem jest pierwsza opcja. Zna się na programowaniu, ma zmysł graficzny. W swoim życiu spotkałem tylko jedną, no, może dwie takie osoby, w dodatku jedna z nich, z tego, co wiem, absolutnie oddała się teraz kodowaniu. Trudnodostępny okaz, potwierdzający regułę, że umie się wszystko i nic. Połączenie tych funkcji doprowadziłoby do eksploatacji jego chęci i entuzjazmu do pracy na miarę kopalni węgla w Wałbrzychu.

Druga opcja to dobry wybór, jeśli mamy w zespole grafika, który zajmuje się tylko i wyłącznie… grafiką. Z reguły duet ten sprawdza się świetnie i jest najpopularniejszym rozwiązaniem – mamy w zespole artystów pędzla i klawiatury. Trzeci typ to także popularna konfiguracja, która nastręcza jednak dużo problemów, ze względu na nieznajomość JavaScript. Pytanie, co zrobić? Nauczyć się JS albo zginąć? Odpowiedź jest dwuznaczna – rynek jest bezlitosny i znajdzie się niejeden, kto nie wyobraża sobie zatrudnienia osoby bez znajomości JS, całkiem słusznie zresztą. W takim razie, w okolicznościach kompletnej i permanentnej niechęci do programowania, wypada zainwestować w grafikę bądź… liczyć na pracodawców, którzy preferują rozdzielenie funkcji na kodera JS i kodera CSS&HTML. Takich spotkałem za granicą, a w Polsce, paradoksalnie, w Gronie…

Aktualnie pracujemy nad nową wersją Drawtera, gdzie możemy pozwolić sobie na duży rozrzut obowiązków. Jedna osoba zajmuje się tylko i wyłącznie ergonomicznym designem, druga tworzy semantyczny kod CSS&HTML, a trzecia zajmuje się JS i sprawami backend. Nie wyobrażam sobie stresu i nawału pracy, jaki spotkałby kodera, łączącego te dwie pierwsze funkcje, a już na pewno nie wszystkie na raz. W przypadku małych serwisów może by się to udało, jeśli chodzi zaś o większe – uważam to za katorgę.

Moja konkluzja jest następująca – najbardziej wydajnym eksperymentem jest rozdzielnie funkcji na programistę JS oraz CSS&HTML, ale tylko wtedy, jeśli to ma rzeczywisty sens projektowy – tzn. wtedy, kiedy koder JS będzie miał dwa razy więcej pracy, niż normalnie. Nielogiczne byłoby rozdzielnie tych obowiązków w obliczu klepania skryptów accordion.

Jeśli zaś chodzi o normalne warunki pracy frontend – warto, by programiści backend znali dobrze JS – pozwala to uniknąć kilku nieporozumień. Co z koderami CSS bez znajomości JS? Czy skazani są na grafikę bądź nowoczesnych pracodawców, mających dla nich zbawienny etat? Z chęcią poznam Wasze opinie!

Komentarze

1

Z mojego punktu widzenia (programisty PHP), JS powinni pisać programiści, a nie człowiek od HTMLa i CSS.
Oczywiście zależy to też od serwisu, który przygotowujemy. W serwisach z małą ilością JavaScriptu osoba od HTMLa może bez przeszkód napisać troszkę kodu JS, np. rozwijane menu, ukrywanie/pokazywanie warstw, proste animacje (przy użyciu ulubionego frameworka) itp.
Bardziej skomplikowane rzeczy jak AJAX, modyfikowanie HTMLa za pomocą DOM, itd. powinni pisać już typowi programiści.

A najgorszym rozwiązaniem jest (jak już zauważyłeś), jak jedna osoba robi wszystko. Nie wiem jak patrzą na to inni „PHPowcy”, ale gdy ja muszę „pociąć” grafikę i napisać HTMLa z CSSem, to chodze potem wnerwiony przez kilka dni. Siada mi morale. Nie dlatego, że nie znam HTMLa. Dlatego, że tego po prostu nie lubię a także dlatego, że nie to jest w opisie mojego stanowiska pracy.

renq
2

renq, co do drugiego akapitu – bardzo popularna przypadlosc, oj, bardzo :-)

Co jeszcze moge dodac do artykulu w kwestii rozdzielenia obowiazkow – czesto dzieki JS mozemy naprawic jakies bugi przegladarki. To tez wazna kwestia, bo z reguly to CSSowiec jest najbardziej na czasie z cross-browser.

3

Niestety wiem. Zawodowo w branży robię dopiero od roku (i jednego dnia). Przez ten okres pracowałem w dwóch różnych firmach. Małej 6 osobowej firmie i dosyć sporej agencji zatrudniającej prawie 50 osób.
W pierwszej firmie na grafiku spoczywało pisanie HTMLa i CSSa (no i oczywiście tworzenie PSDków i ich cięcie). W drugiej firmie graficy robią tylko PSDki (HTMLa nie znają), a często programista musi je obrabiać.
Z dwóch tych rozwiązań, wydaje mi się, że pierwsze jest lepsze. Graficy nie znający HTMLa mają tendencję do wymyślania nierealnych rozwiązań. :)

renq
4

IMO najrozsądniej jest jak dzieli się obowiązki do konkretów. Oddzielnie grafika, oddzielnie HTML/CSS, oddziejnie JS (do skomplikowanych rzeczy, bo tak jak mówili poprzednicy – proste rzeczy powinien potrafić napisać byle koder, używając frameworka chociażby), oddzielnie PHP.

Tyle, że grafik powinien znać podstawy HTML/CSS i usability. Nie musi znać szczegółów i pamiętać o konkretach. Nie musi znać bugów IE, ale pownien wiedzieć co można przenieść na kod, a czego nie, żeby potem nie wychodziły cuda na kiju przy próbuie zakodowania takiego designu.

Do tego ktoś od HTML/CSS powinien znać się i na usability i na dostępności. Powinien znać jakieś podstawy JS, żeby mógł swobodnie zakodować proste rzeczy, jak chociażby wspomniane rozwijane warstwy.

A w rzeczywistości wiadomo. Chcemy zarobić jak najwięcej, więc nie dzielimy się pracą (a to też nie jest łatwe, bo brakuje miejsc, gdzie moglibyśmy znaleźć kogoś do pomocy) – im więcej ‚odwalimy’ my, tym większa część wypłaty pójdzie na nasze konto. Co niestety ma najczęściej odzwiercidlenie na końcu.

zx
5

graficy nie znający HTMLa mają tendencję do wymyślania nierealnych rozwiązań. :)

Oj tak… niesamowite przejścia gardientowe, zakończenia, zaokrąglenia, których po prostu nie da się zakodować w prosty sposób bez niepotrzebnego divitis czy classitis.

Sam jestem programistą PHP, choć xHTML czy CSS nie jest mi straszny, layout także potrafię pociąć i poskładać tak jak trzeba, jednak grafiki już nie narysuję… mogę jedynie wy edytować jeśli grafik za bardzo poszalał.

A jeśli chodzi o oferty pracy to pracodawcy nie tylko łączą CSS, HTML i JS nierzadko wymaga się do tego znajomości PHP, SQL i Flash.

Tak jak ktoś już pisał za granicą jest całkiem inaczej, mają osobnego grafika, który ma pojęcie o tym jak wygląda praca frontendowca żeby nie rysować rzeczy niemożliwych do poskładania.
Mają frontendowca, którego zadaniem jest pocięcie layoutu i poskładanie czyli xHTML i CSS (+ ta drobna umiejętność cięcia – co nie jest niczym trudnym)
No i na koniec w końcu backendowca – czyli programistów (PHP, JS, AJAX).
Jeśli chodzi o sql to myślę, że może to wchodzić w zakres programisty.

6

Trudno się nie zgodzić.
Wydaje mi się, że szczególnie ważne jest, żeby zarówno grafik jak i koder HTML/CSS obowiązkowo znali chociaż podstawy usability i accessibility. Aż głupio czasami kodować coś, co już na pierwszy rzut oka wygląda na ‚nieużywalne’.

Może i macie rację, że pisaniem dużych aplikacji w JS powinien zajmować się kto inny niż HTMLem i CSS, ale ja muszę przyznać, że do tej pory frontendowcy, z którymi miałem do czynienia, to właśnie HTML + CSS + JS i to nie tyle z obowiązku, co raczej z kierunku rozwoju. Dla mnie właściwie też była to naturalna kolej rzeczy, kiedy po opanowaniu HTML i CSS na chyba dość wysokim poziomie (razem z usability itp) zabrałem się za JS. Na samym HTMLu się nie wyżyje, więc za coś trzeba się wziąść. Poza tym, coś trzeba zrobić z głodem wiedzy i nowych umiejęności. ;) Często spotykam się z podobnym podejściem, więc może nie jest to taki zły podział.

7

Nalezy odroznic robienie HTML+CSS+JS, od opierania 90% funkcjonalnosci strony na AJAxie. Bo o ile taki frontendowiec moze znac JS by zrobic show/hide, zrobic jakis bajerek layoutowy czy animowane przejscie, to o tyle chocby usuniecie kawalka listy to nie jest wyrzucenie kawalka HTMLa, ale pod maska pracuje silnik oparty na AJAXie (czyli dziala serwer, czyli PHP) i w tym momencie gdyby przyszedl do mnie taki frontendowiec, ze on chce miec bajerek i zebym mu zakodowal to by mnie krew zalala. Odroznijmy te 2 rzeczy bo wiedze, ze nie jest to jasne.

Chlebik
8

Podział ról powinien być zgoła inny. Powinien być architekt przedsięwzięcia, który zna się na WSZYSTKICH aspektach aplikacji. Powinien on określić protokoły wymiany danych z uwzględnieniem specyfiki każdego modułu. Moduły są następujące: baza danych, środowisko serwerowe (system operacyjny, serwer WWW, języki skryptowe), dzielenie zadań na systemy komputerowe oraz określanie ich konfiguracji, protokół HTTP i protokoły aplikacyjne tj XML, SOAP, JSON, REST, środowiska przeglądarek (tych które dla systemu są kluczowe = te których wymaga klient). Protokołem wymiany danych jest też HTML! Ten format nie musi wcale służyć do wyświetlania stron internetowych. Może np przechowywać dane dla komponentów JS (co jest o wiele szybsze niż generowanie HTMLa w JS). Architekt oczywiście nie musi znać dokładnie poszczególnych modułów ale powinien wiedzieć co można w nich zrobić. Głównym jego zadanie jest określenie formatów danych przekazywanych między modułami i specyfikacja ich zadań. Musi też wybrać samą architekturę – tak całego systemu (czy baza będzie na tym samym serwerze co serwer WWW?) jak i modułów (czy będą one oparte na architekturze warstwowej?).
Każdy moduł oddaje do opieki osobnej osobie, która dokładnie wie jaki interfejs oraz zadania ma jego moduł. Jedną z tych osób jest powiedzmy „szef od przeglądarek”. On ma za zadanie orientować się we wszystkich technologiach po stronie przeglądarki. Składają się na to: HTML, XML, XSLT, JS, frameworki, informacje ogólne o tym co można wycisnąć z przeglądarki. Osoba taka ma za zadanie opracować interfejsy poszczególnych modułów, zasadę działania itp. Dopiero pod nim są koderzy, którzy dostają zadanie: napisz funkcję, napisz widget itp. Zadanie musi być zaopatrzone w szczegółową specyfikację.
Ja jestem architektem głównym i chierarchia ta się sprawdza. Niestety trudno dzisiaj o pracowników za rozsądną cenę więc męczymy się w czwórkę plus zlecenia zewnętrzne. Przez to, że umiem co nieco (no może trochę więcej) każde środowisko jakiego używamy (oprócz grafiki) nie mamy wpadek tj dublowanie kodu czy widget, który dodany do całości nie działa.
Myślę, że większość firm nie ma architektów i tu jest jedyny problem. Nie mówię żeby opisywać wszystko w Rational Rose ale ktoś kto orientuje się w całości jest niezbędny.
Ja nigdy nie oddam opracowania struktury dokumentu HTML pracownikowi. W takich aplikacjach jest to główne zadanie architekta. Podział ról natomiast jest taki, że jedna osoba robi CSS (skórkę) a inna JS (program).

Adrian Kalbarczyk
9

chierarchia –> hierarchia, Panie architekcie

wielbiciel ortografii
10

[…] dla “kombajnów”, to jestem zwolennikiem dzielenia kompetencji i podobnie uważam jak Damian Wielgosik w swoim wpisie sprzed kilku miesięcy o frontendowcach, że taka praktyka ma po pro…. Otwarcie przyznaję, że JS mi nie leży i wolę tę działkę zostawić prawdziwym wyjadaczom. […]

11

1. Znać podstawy HTML/CSS/JS/PHP/SQL powinien każdy kto zajmuje się www (czyli jak chcę sobie przez php zainkludować już istniejącego HTML to nie pędzę do kodera php aby mi to zrobił, tylko po odpaleniu googli jestem w stanie to zrobić, jak koduje php to nie pędzę do specjalisty od HTML aby mi wstawił dwie linijki kodu…)
2. Obecnie technologia HTML/CSS jest tak rozbudowana i daje takie możliwości (do rozwijanego menu nie trzeba zapuszczać JS :) a w css3 do okrągłych rogów nie trzeba JS lub wklejania grafiki) więc nie widzę powodów dla którego osoba znająca biegle(!!!) HTML/CSS musiała tracić czas na poznawanie wszystkich zawiłości JS. Bardzo często nieznajomość możliwości HTML/CSS pcha ludzi w kierunku JS.
3. Podział powinien być dostosowany do potrzeb: jak firma robi głownie wizytówki to można wepchnąć razem HTML+CSS+JS jak firma robi głownie poważne aplikacje webowe to HTML+CSS a kodowanie druga kupka JS+PHP, jak firma nastawila się na wizytówki „graficzne” z wodotryskami to niech szuka dobrego grafiki i specjalistę od flash

uzi123
12

Przypadkiem znowu wpadłem na ten artykuł. Oczywiście wielbiciela ortografii nie skomentuje – najwyraźniej sprawia mu/jej przyjemność szukania literówek w postach pisanych „na szybko”.
Skomentuję natomiast wypowiedz Uzi123 aby osoby czytający komentarze mieli pełniejszy obraz sprawy:
1. Osoba od JS nie musi znać SQL. W pewnych przypadkach SQLa nie muszą znać ludzie od PHP. To jest kompletna bzdura, tak samo jak to, żeby pozwalać losowym osobom grzebać w kodzie PHP.
2. Polecam zapoznanie się z JavaScriptem – w szczególności z Google Gears. HTML i CSS jest tak rozbudowany jak budowa cepa. Każdy kumaty licealista-humanista go zrozumie i będzie umiał zastosować po miesiącu nauki.
3. Nikt nie mówi o wizytówkach. W artykule była mowa o poważnej aplikacji internetowej. PHP do JS ma się tak do siebie jak PHP do assemblera. JS jest językiem funkcyjnym a PHP obiektowym. Trzeba być chyba robotem żeby rano trzymać się sztywnych reguł klasyfikacji obiektów, a wieczorem robić z nimi co się chce (a raczej ze słownikami a nie obiektami bo tak to się powinno nazywać w JS). I jeszcze jedno. Podział przede wszystkim zależy od zespołu jakim się dysponuje. Ja opisałem sytuację idealną – algorytm na stworzenie dobrze prosperującego zespołu. Może się okazać, że nie znajdziemy odpowiedniej osoby na któreś stanowisko i trzeba będzie połączyć pewne funkcje.
Mam nadzieję, że czytelnicy zrozumieją na czym polega różnica między wytwarzaniem profesjonalnych aplikacji a projektami „chałupniczymi” i nikt nie będzie w podobnej dyskusji podawał argumentów na podstawie doświadczenia w pisaniu wizytówek.

PS. CSS pozwala na implementację rozwijanych menu co nie znaczy, że to działa w przeglądarkach. CSS nie pozwala na animację rozwijania menu itp itd.
PS2. Nie ma czegoś takiego jak „silnik oparty na AJAXie” dla jasności. Sam AJAX to niewiele mówiąca nazwa. Przeglądarka składa się z: silnika HTML, JS i DOM. Więcej w wykładach Crockforda.

Adrian Kalbarczyk
13

Często mam przyjemność pracować z grafikami nie znającymi się kompletnie na HTML, CSS. Wizja artystyczna to jedno jest świetna ale zakodowanie tego… masakra

14

A ja znam dość dobrze (x)HTML i CSS. Dodatkowo Photoshop jest mi bardzo dobrze znany więc cięcie to dla mnie taka sama praca jak narysowanie łezki w paincie. JS i PHP tylko na podstawie tutoriali on-line i ewentualnie jak coś trzeba skumać z kodu i lekko to zmienić to też da radę, ale jakbym miał napisać coś z palca w jednym, czy drugim to już gorzej, a jeszcze jakby mi kazano trzymać się jakichś określonych reguł (jak np. obiektowy, a nie strukturalny kod PHP, czy inne dziwo) to siadam i milczę…

Nie przeczę, HTML i CSS są bardzo proste, ale i w tej dziedzinie liczy się doświadczenie, znajomość pewnych sztuczek, zagadnień z dziedziny usability i dostępności (choćby po to, by być zgodnym z WAI i/lub 508). Nie bez znaczenia jest też wiedza na temat tego co obsługują popularne przeglądarki (niewiele przeglądarek wspiera w pełni CSS2.1, a już tym bardziej CSS3, w którym można zaokrąglać rogi).

Trzeba dobrze poznać wroga (różnie interpretujące kod przeglądarki) i wiedzieć jakiej broni przeciw nim użyć, by było jak najmniej szkód (po co robić kod napchany hackami lub warunkami pod IE, czy głowić się nad niuansami innych przeglądarek, skoro można to napisać w jednym, walidującym się CSS-ie i dostępnym, niezaśmieconym zbędnymi DIV-ami (x)HTML-u).

Na koniec dodam, że bolączka wymagającego pracodawcy teraz i mnie dotyka… Szukam pracy już od jakiegoś czasu i zawsze (jak do tej pory) byłem odrzucany właśnie za brak znajomości JS. Na dodatek marny angielski dodatkowo nie pozwala mi nauczyć się jakiegokolwiek frameworka… Chyba, że znacie jakiś dobry kurs w sieci lub dobrą książkę, dzięki której poprawię tą paskudną sytuację ;)

GoON
15

[…] Front-end […]

16

A jak wygląda sytuacja na dzisiejsze czasy (połowa 2011) :P?
btw. według mnie front-endowiec każdy język powinien znać chociaż z podstawy i logiki – takie moje zdanie, jestem matematykiem mózgowo, ale narysować na kartce arcydzieło też potrafię [co się przenosi na photoshopa].
Moim zdaniem, jeżeli ktoś nie rozumie języka programistycznego, powinien przysiąść nad matematyką i analizować kod logicznie.

Matikx
17

Aktualnie jestem podczas poszukiwań pracy. Ostatnio byłem na rozmowie jako uwaga, FRONT-END no i dostałem pytanie czy znam PHP. Jako, że skupiłem się na HTML/CSS i JS powiedziałem, że nie nawet podstaw. Zaraz po tym pytaniu dostałem kolejne czy znam Zend… No ja p…! Czy w tych firmach pracują na prawdę takie ulungi? Rozumiem, że to Polska i jako, że jesteśmy jednymi z najlepszych informatyków na świecie powinniśmy w podstawie znać HTML, PHP i JS. Ale czasem po prostu wydaję mi się, że aktualnie pracodawcy poszukuję po prostu murzynów do robienia wszystkiego a najlepiej jak jeszcze by się po godzinach zostawało i w soboty i niedziele robiło…

Dodaj komentarz

Dozwolone tagi: <blockquote>, <code>, <strong>