Moja pierwsza rada: nie ograniczaj się wyłącznie do jednej roli. Wspaniale jest być specjalistą i mieć głęboką wiedzę na temat określonego zestawu umiejętności (na przykład PHP). Jednak równie ważne jest posiadanie szerokiej wiedzy, która obejmuje całą resztę domeny.
Z mojego doświadczenia wynika, że większość zespołów nie chce zatrudnić kogoś, kto ma wiedzę, aby przepisać podstawową funkcjonalność PHP, ale raczej kogoś, kto poradzi sobie z każdym problemem, który zostanie im zgłoszony (chociaż posiadanie takiego poziomu wiedzy z pewnością nie zaszkodzi). Lub przynajmniej ktoś, kto może pomóc rozwiązać wszelkie problemy napotkane przez zespół. Wyobraź sobie na przykład sytuację, w której aplikacja przestaje działać i dotyczy to klientów. Możesz albo podnieść ręce i powiedzieć „Nie mam pojęcia, co robić ...”, albo SSH na serwer, rozpocząć skanowanie dzienników, zauważyć, że przestrzeń dyskowa określonego systemu plików jest pełna i przystąpić do jej wyczyszczenia. To niewielki przykład, ale myślę, że sprawa jest jasna. Dzięki tej podstawowej wiedzy, jako programista, możesz napisać skrypt, który monitoruje ten konkretny system plików i czyści go, gdy osiągnie określony próg. Stałeś się teraz o wiele bardziej wartościowy dla swojego menedżera.
Kolejną rzeczą, której nauczyłem się podczas mojej kariery, jest to, że wszystko idzie szybko i jeśli nie nadążasz, zostaniesz w tyle. Im więcej wiesz o całym środowisku (w tym o aspektach biznesowych), tym lepiej. Nie oznacza to, że musisz być ekspertem we wszystkim, co robisz, ale przynajmniej posiadaj wiedzę, aby nie być oznaczonym jako nieświadomy. Im bardziej jesteś zaznajomiony, tym lepiej się dostosowujesz, a tym bardziej cenny jest Twój atut dla Twojej firmy.
Aby dokładnie odpowiedzieć na pytania ...
- Jakie elementy serwera powinienem znać jako programista?
Zapoznaj się z całym stosem aplikacji. Dowiedz się, jakiego serwera, bazy danych, mechanizmów buforowania itp. Używasz. I które wersje też. Posiadaj wystarczającą wiedzę, że możesz odtworzyć środowisko na własnym serwerze. Co samo w sobie jest niezwykle ważne. Powinieneś dążyć do tego, aby mniej więcej mieć takie same środowiska w fazie projektowania i produkcji, ponieważ zmniejsza to niespodzianki ( http://12factor.net/dev-prod-parity ).
- Jako programista, jakie masz kontakty z serwerem?
To naprawdę zależy od zespołu. W moim szczególnym przypadku programiści odgrywają ogromną rolę w przygotowaniu środowiska. Jesteśmy najbardziej zaznajomieni z wewnętrznym działaniem aplikacji i dlatego jesteśmy w stanie najlepiej określić, jakie technologie serwerowe są w stanie ją uruchomić. Wyobrażam sobie, że nie wszystkie zespoły mają takie praktyczne podejście, ale posiadanie wystarczającej wiedzy, aby móc zaangażować się w dyskusje, jest wielką zaletą. W szczególności, jeśli chodzi o kontrolę wersji, to jako programista masz duży wpływ na to, która technologia zostanie wybrana (Git, Subversion, Mercurial itp.), I dlatego powinieneś starać się zaangażować w proces decyzyjny.
I co teraz?
Co do mojej sugestii, jak najlepiej podejść do nauki tego wszystkiego? Poruszaj stopami . Nie martw się, że spróbujesz przeczytać wszystko, co możesz na ten temat, większość z nich prawdopodobnie po prostu wycieknie z twojego mózgu, zanim skończysz. Zamiast tego zacznij opracowywać coś od podstaw. Zacznij od Vagrant ; pozwoli ci łatwo stworzyć maszynę wirtualną i zarządzać nią, którą możesz wykorzystać jako nowy plac zabaw. Następnie zainstaluj serwer WWW i bazę danych i zacznij tworzyć. Jeśli masz pomysł na aplikację, idealna, wybierz ją ... jeśli nie, znajdź samouczek lub spróbuj odtworzyć istniejącą aplikację. Chodzi o to, aby zapoznać się z całym procesem. Jako programista PHP koniecznie sprawdź PHP: The Right Way... naprawdę zawiera wiele doskonałych informacji. A co najważniejsze, nie stresuj się. Wyobrażam sobie, że podążałeś ścieżką programisty, ponieważ jest to coś, co sprawia ci przyjemność i jest pasjonatem ... nie trać tego z oczu!