Język HTML jest w takim samym stopniu językiem programowania, jak dokument tekstowy OpenOffice. Oczywiście mógłbym bez trudu stworzyć w miarę logiczny ciąg myślowy wiążący te dwie kwestie, ale byłoby to takim samym nadużyciem, jak nazwanie mechanika samochodowego fizykiem. Pani księgowej nie każe się znać formatu, w jakim Excel zapisuje swoje pliki. Grafik komputerowy nie musi znać formatu JPEG. Co więc w ogłoszeniach o pracę dla programistów PHP robi zazwyczaj bardzo dobra znajomość HTML i CSS?

Akademickich definicji języka programowania przytaczać nie będę, ale nawet na podstawie artykułu z Wikipedii łatwo wywnioskować - jest to formalny zapis pozwalający realizować za pomocą komputera algorytmy. W przypadku HTML-a wniosek jest prosty - nie jest to język programowania, bo nie pozwala on na wykonywania algorytmów. Czym on zatem jest? Jest to język formatowania dokumentów. On jedynie informuje o sposobie prezentacji treści. To taki odpowiednik formatu dokumentów w internecie. Nie każdy język używany w informatyce jest od razu językiem programowania.

HTML, a PHP

W większości ogłoszeń, w których pracodawca poszukuje programisty PHP przewija się wymaganie bardzo dobra znajomość HTML i CSS. Co u licha? Jestem w stanie zrozumieć "podstawową znajomość", albo "pozwalającą zrozumieć", ale "bardzo dobra"? Tytuł tego wpisu miał być dość autoironiczny, ale tak na prawdę już kilkakrotnie spotkałem się wręcz z takim nagłówkiem w ogłoszeniu (nie żebym się nimi interesował, ale czasem chcąc nie chcąc jakieś przed oczami mi przemknie). Mało tego, że samo określenie programista HTML jest moim zdaniem oksymoronem, to (parafrazując pewne powiedzenie) miałby on tyle wspólnego z programowaniem, co mechanik z mechaniką kwantową. Widząc tego typu ogłoszenie można sobie śmiało wyobrazić, jak takie firmy działają. Albo rekrutację prowadzi osoba, która nie ma o tym zielonego pojęcia (te, Zdzichu, podaj mi jakieś trudne fachowe słówka z tymi stronkami, bo nie wiem o co pytać), albo firma leci masówkę bez ładu i składu (skoro programista PHP ma się tam zajmować layoutem, pewnie też od razu designem i marketingiem - bądźmy szczerzy: nawet jeśli się taki ktoś trafi, to marne szanse, że będzie w którejkolwiek z tych rzeczy lepszy niż przeciętniak). Chociaż o dziwo często można spotkać takie wymagania nawet w firmach dość sporych i z wyrobioną marką.

Serwer versus klient

Niezrozumiałe jest dla mnie już samo bezkrytyczne łączenie tych dwóch języków w nierozerwalną jedność. Te języki wykorzystywane są w zupełnie inny sposób. HTML jest wykorzystywany przez aplikacje użytkownika do wizualizacji. PHP to język przetwarzania danych działający po stronie serwera. Mało tego - on nawet nie musi generować stron w HTML-u: może generować grafikę, może działać jako program w linii komend, może nawet za pośrednictwem PHP-GTK działać w postaci aplikacji biurkowej. Może o wiele więcej, po prostu generowanie HTML-a jest najczęstszą pracą, do której zostaje zaprzęgnięty.

Programista nie jest grafikiem

HTML służy przedstawianiu danych w dokumencie - jak już wspomniałem jestem w stanie zrozumieć, że programista PHP nawet powinien znać jego podstawy, aby móc przynajmniej pobieżnie przedstawić dane, które przetwarza jego kod. Ale po kiego kija mu ta wymagana bardzo dobra znajomość? Bardzo dobra znajomość HTML oznacza zazwyczaj nie tyle znajomość samego standardu, co umiejętność jego zastosowania pod przeglądarkę - wiedza o tym jak ułożyć HTML, żeby nawet oporne przeglądarki go poprawnie wyświetliły; albo jeszcze lepiej - umiejętność takiego poupychania HTML-a, żeby był gotowy layout. Przykład? Nagłówek tekstu (dajmy na to pierwszego rzędu). Służy do tego znacznik <h1>. Programista takie podstawy zna i wpisze w swoim PHP:

<h1><?php echo $title; ?></h1>

Rolą osoby, która tnie layout będzie dobranie odpowiedniego układu do wizualizacji - to, czy ten nagłówek to jeszcze trzeba w DIVa wrzucić, czy może zastąpić nagłówkiem niższego rzędu, bo się style gryzą nie ma nic wspólnego z PHP. O znajomości CSS wspominać aż mi głupio - po cholerę to programiście? CSS z samej definicji ma za zadanie jedynie opisywać sposób wizualnej (choć nie tylko) prezentacji treści zawartej w dokumencie. Pobieżną znajomość CSS praktycznie każdy programista PHP z braku laku i tak zna, ale bardzo dobrze? Czyli co, ma znać tajniki pozycjonowania absolutnego, modelu pudełkowego i jeszcze do tego kruczki poszczególnych przeglądarek?

Albo jeszcze lepiej, może programista ma od razu dobierać kolorystykę, styl i do tego grafikę robić? Nie twierdzę, że żaden programista nie ma poczucia stylu, albo zmysłu estetycznego. Ba, może znajdzie się jakiś uzdolniony artystycznie, ale stawiać to jako wymaganie i to na poziomie bardzo dobrym?

Zakres kompetencji

Oczywiste jest, że w celu współpracy w zespole, programista musi wiedzieć, w jaki sposób jego program ma się komunikować ze środowiskiem, w którym się go umieści. Ale nie mylmy pojęć - grafik komputerowy nie musi znać formatu, w jakim zapisane są jego pliki; ani tez programista piszący program graficzny nie musi mieć zmysłu estetycznego, bo w zakresie jego prac nijak się to do mechaniki obróbki obrazów nie ima - jego nie obchodzi, czy gradient z żółtego w brązowy będzie pasować kolorystycznie. Księgowa także nie musi wiedzieć jak zapisywane są dane w arkuszu kalkulacyjny. Nawet jeśli PHP w większości przypadków jest wykorzystywany do generowania stron w technologii HTML, to nie znaczy, że programista PHP jest webdesignerem.

To działa też zresztą w drugą stronę - osoba znająca HTML i CSS niekoniecznie musi znać PHP na poziomie chociaż dobrym. Wymaganie od kogoś, kto zajmuje się aspektami wizualnymi znajomości PHP jest chore. Potem siedzą tacy i myślą, że są informatykami, bo po studiach ekonomicznych potrafią postawić Joomlę, ale nie wiedzą, co to za jakaś dziwna linijka w HTML-u z odwołaniem do pola obiektu. PHP nie jest pięknym językiem i niestety robi się wiele (jeśli nie wszystko), żeby taki stan utrzymać. Jednak większość problemów z nim związanych nie wynika z tego, że samo środowisko uruchamiania jest źle skonstruowane, tylko stąd, że w większości programy piszą pod nie właśnie osoby nie mające zielonego pojęcia nie tylko o tym języku, ale o programowaniu, czy nawet informatyce ogólnie pojętej. Webdesigner, który chce wypisać komentarze wraz z awatarami na forum nie ma zrozumie, dlaczego wykonywanie operacji na bazie danych z poziomu szablonu jest złe. Nieraz nawet nie ma pojęcia co to jest ta baza danych, a zapytania SQL kopiuje z innego skryptu i dziwi się, że jakieś nazwy się różnią; że nie wszyscy w swoich skryptach używają jedynej słusznej nazwy pola (on nawet nie wie co to jest pole w tabeli).

JavaScript

Oprócz HTML i CSS, bardzo często w ogłoszeniach tego typu przewija się jeszcze jedno hasło - JavaScript. Ok, to już jest język programowania, ale nadal nie rozumiem, dlaczego programista PHP co do zasady ma znać też JavaScript. To pierwsze w przypadku aplikacji internetowych służy do przetwarzania danych, obsługiwania żądań, kontroli działania strony, utrzymywaniem całej aplikacji w ryzach. Drugi z tych języków jest wykorzystywane w tego typu aplikacjach jako uzupełnienie HTML+CSS - jest to technologia umożliwiająca tworzenie dynamicznego interfejsu użytkownika, obsługę wielu rzeczy po stronie klienta. Jeśli już ktoś ma znać JavaScript, to właśnie webdesigner - to on wie gdzie, co i jak ma się na stronie pojawić, zniknąć, przesunąć…

Programista PHP ma na głowie całą masę innych rzeczy (mam na myśli prawdziwego programistę, a nie studenta europeistyki, który "robi strony") - musi znać de facto co najmniej naprawdę dobrze język SQL, jak i sam konkretny system bazy danych, pod który pisze aplikację. Musi mieć co najmniej dobre pojęcie o projektowaniu aplikacji od strony interakcji ze środowiskiem zewnętrznych, jak i od strony wewnętrznej (przepływ danych, projekt UML itp.); musi zazwyczaj znać wiele pokrewnych technologii, gdyż dziś nawet na najprostszej witrynie używa się wielu dodatkowych udogodnień, jak chociażby RSS, SOAP, czy RESTowe API wielu popularnych serwisów. Musi myśleć analitycznie i potrafić chociażby przewidzieć luki w bezpieczeństwie witryny. W końcu musi mieć przynajmniej dobre pojęcie o konfiguracji usług sieciowych jak i całego serwera, bo nawet jeśli to nie on jest za to odpowiedzialny, to musi wiedzieć z czego korzysta, albo podać administratorowi wymagania, jakie stawia tworzona aplikacja.

Może jestem zbytnim idealistą, ale nie zrozumiem po prostu, kto wpada na pomysł stawiania tego typu wymagań programiście. My, w Chillout Development jesteśmy zdania, że każdy ma swoją dziedzinę i powinien być w czymś specjalistą. Im więcej potrafi tym lepiej, ale czasy "ludzi-orkiestr" minęły mniej więcej z prowadzeniem trybu VGA i kart muzycznych 16bit.

Tagi: , , , .

Thunderer (środa, 14 kwiecień 2010 - 13:49:25)

Re: Programista HTML

Używanie pojęcia "Programista HTML" jest faktycznie sporym nadużyciem - u mnie zwykle powoduje małe parsknięcie śmiechem, szczególnie jak ktoś sam w swej niewiedzy "tytułuje" się takim "zawodem". Rynek pracy co prawda poradził sobie z tym problemem tworząc pojęcie WebDevelopera, aczkolwiek jakaś "dziura" nazewnicza zawsze pozostaje. WebDeveloper to po prostu "koleś od stronek", więc obowiązkowo HTML + CSS, powinien znać też JavaScript, a cechuje go właściwie tylko technologia / język serwerowy w którym "siedzi" [ASP, PHP, Java, itp.]. Tak to wygląda z mojej strony. ;]

Aby pisać komentarze musisz być zalogowany.