Niedawno przygotowałem artykuł związany z ogólnymi wymaganiami, co do programisty PHP w postaci takiej Mind Map PHP (mapa myśli PHP). Jak się okazało, Potrzeby w zespole były trochę inne, i teraz przygotuję serie artykułów, która będzie mówiła o tym, co powinien znać progrmiasta junior, mid, a co powinien gdzieś tam reprezentować sobą senior. Oczywiście są to moje subiektywne odczucia względem potrzeb, jakie mamy w zespole, i jak je klasyfikujemy, dlatego proszę tego nie brać jako powszechność. Wynika to z tego, że wszystko zależy od firmy, od poziomu jej zaangażowania, sposobu realizacji projektu, wykorzystywanych technologii, a także tego jakie są tam projekty.
Tutaj znajduje się wspomniana wcześniej mapa myśli: https://miro.com/app/board/o9J_lmZC1Wg=/?invite_link_id=139629367417, a sam artykuł znajduje się tutaj: https://bojski.dev/mind-map-php-czyli-mapa-mysli-dla-programisty-php/
Z uwagi na fakt, że zajmuje się głównie aplikacją i projektem backendowym, to tutaj nie będę wspominał o frontowych częściach. Pamiętać należy przede wszystkim, że junior jest w zespole po to, aby się pytał, i zdobywał nowe umiejętności. Nie wymaga się od niego nie wiadomo jakiej wiedzy. Pamiętajmy jednak, ze nie oznacza to, ze taki junior ma kompletnie nic nie wiedzieć. Dlatego poniżej postaram się przybliżyć zakres tego, co umieć powinien.
Dziś w programowaniu, w języku PHP znajomość obiektowości jest podstawą. Nie ma co ukrywać, ale nie wykorzystuje się już zazwyczaj programowania strukturalnego, gdyż wprowadza ono bałagan, komplikacje w kodzie, jest niepraktycznie i niemodne, chociaż czasem kod obiektowy wygląda też koszmarnie – ale dziś nie o tym. Co więc należy wiedzieć o programowaniu obiektowym? Znajomość pojęć takich, jak obiekt, dziedziczenie, interfejs, klasa, enkapsulacja, polimorfizm, to podstawy. Na dzień pisania tego artykułu, jeżeli chodzi o język PHP to podstawą jest PHP 8 i jego składnia, silne typowanie, podstawowe umiejętności poruszania się po dokumentacji. Oprócz samego języka również warto się skupić na samym SQL, stosowaniu zapytań do bazy danych, z wykorzystaniem: SELECT, INSERT, UPDATE, DELETE, WHERE, UNION, HAVING, GROUP BY, ORDER BY itd. w kontekście MySQL lub Postgress.
Znajomość git, i tego jak działa system kontroli wersji, jest również dla juniora ważna. Większość firm wykorzystuje takie narzędzia, i można by rzecz – ich znajomość jest obowiązkowa. Jest to podstawa pracy w zespole, i daje możliwość uratowania w przypadku kryzysowych sytuacji, więc tego nie można pominąć w nauce.
Kolejny element, to istota działania composera. Na początek należy znać podstawowe komendy, i wiedzieć jak to działa. Jest to tak powszechne obecnie narzędzie, ze nie sposób je pominąć.
Kolejna rzecz, to PSR. Nazwa wywodzi się od PHP Standards Recommendations, a więcej informacji można znaleźć tutaj: https://www.php-fig.org/psr/. Znajomość wymagana jest głównie z tego powodu, że wykorzystanie tych standardów, daje nam możliwość pisania spójnego, jasnego i ustandaryzowanego kodu. Dzięki temu, każda osoba w zespole pisze taki sam kod, a sam projekt jest spójny.
Do dalej… ?
Jeżeli znamy już podstawy samego języka, wiemy jak wykorzystać pewne elementy, to warto się skupić również na narzędziach – czyli frameworkach. Jaki wybrać? Jeżeli mówię o własnym zespole, to odpowiem Symfony, gdyż właśnie to wykorzystujemy do naszych projektów. Natomiast, jeżeli brać ogół, to nie ma znaczenia, Laravel i Symfony są podobne, a Zend, Codeigniter i inne, mają podobną mechanikę działania. Różnią się one na pewno złożonością i ilością dostępnych rozwiązań. Osobiście działam na Symfony, pracowałem też na Laravel – obydwa frameworki są dla mnie okej, jednak z uwagi na pracę, wybrany został ten pierwszy.
Dlaczego iść w framework? Głównie dlatego, żeby poznać zasadę działania modelu MVC, nauczyć się wykorzystać dostępne funkcje, i prawidłowo z nich korzystać. Najlepszym sposobem na to, jest praktyka. Nic nie daje większego efektu niż praktyczne wykorzystanie frameworka w swoim małym projekcie np. strony internetowej, czy prostej aplikacji udostępniającej API. Jeżeli przeraża się wielkość symfony, warto zastanowić się na początku może nad zastosowaniem czegoś łatwiejszego, jak symfony skeleton – i zbudować sobie tylko api, lub CodeIgniter. Na pewno własny projekt pozwoli nam na to, żeby dojść do pewnej wprawy, a także nauczyć się poszukiwać rozwiązań i da nam ocenę wiedzy, jaką obecnie posiadamy, bo niestety, ale problemy – jak to wszędzie bywa, zawsze się pojawią.
Czy zatem to wystarczy?
Patrząc na to, co zaprezentowałem wyżej, myślę, że na stanowisko juniora tak. Ale to dopiero początek drogi. Nie można spocząć na laurach, i uznać, ze to wszystko. Droga do osiągnięcia czegoś więcej będzie się ciągnęła dalej, poprzez takie pojęcia jak KISS, DRY, SOLID, YAGNI, wzorce projektowe, architektura aplikacji i pojęcia takie jak DDD, CQS, CQRS, EVENT SOURCING, poznawanie nowych aplikacji, które wspomagają działania tego, co rozwijamy itd. Niestety praca na stanowisku programisty, to ciągła nauka, rozwój i poznawanie nowych rzeczy – ale czy to właśnie nie jest fascynujące? Kiedy praca stawia przed tobą kolejne wyzwania, a ty możesz zmieniać narzędzia na lepsze, tworzyć rozwiązania i być z nich dumny. To droga okupiona ciężką pracą, jednak satysfakcja jaka z niej jest czerpana na pewno będzie dla Ciebie cenna, jak dostaniesz swoją pierwszą pracę.