Zaskakujący tytuł posta? Niestety rzeczywistość jest jeszcze bardziej zaskakująca! Długo zastanawiałem się czy napisać ten post i jak go napisać tak, aby nikt nie poczuł się urażony tym, co chcę przekazać. Krótko i na temat, przyszły Junior Java Developer musi znać podstawy obsługi komputera.
O tym, że sam język Java, to za mało pisałem już wcześniej, teraz dodam, że podstawy obsługi komputera, to niezbędna podstawa. Pisałem również o tym, co jest potrzebne do programowania. Dlaczego podstawy obsługi komputera są takie ważne? Ponieważ naturalnym, jedynym i używanym na co dzień środowiskiem pracy programisty jest komputer, a dokładniej, to system operacyjny, na którym pracuje programista.
Moim zdaniem każdy przyszły młodszy programista Java powinien znać środowisko, w którym będzie na co dzień pracował. Moim zdaniem problemy wynikają głównie z braku wiedzy i umiejętności w obsłudze komputera, np.:
Brak znajomość systemu operacyjnego, na którym pracujemy. Brak znajomość podstawowych skrótów klawiszowych. Strach przed używaniem terminala/konsoli/wiersza poleceń.
Znajomość systemu operacyjnego, na którym pracujemy, bez tego bardzo ciężko będzie programować i nie chodzi mi tu o znajomość technicznych elementów systemu jak np. współdzielenie wątków czy rodzaj systemu plików. Chodzi mi o nawigację po systemie plików z użyciem eksploratora plików, należy wiedzieć, gdzie jest główny dysk, gdzie mamy zainstalowane oprogramowanie i gdzie jest katalog domowy użytkownika. Zmienne środowiskowe, które są ustawiane dla narzędzi programistycznych i które są odczytywane przez oprogramowanie.
Nawigacja po systemie plików? Piszę tu o nawigacji z wykorzystaniem graficznego narzędzia do przeglądania plików i katalogów. Należy wiedzieć jak wyszukiwać pliki i katalogi, przechodzić pomiędzy katalogami, tworzyć, edytować i usuwać pliki. Do czego taka wiedza? Np. pakiety w języku Java, to katalogi, a klasy, to pliki. Jeżeli będziemy mieli niestandardowy błąd z plikiem, to musimy wiedzieć jak go odnaleźć i naprawić błąd. Niestandardowe problemu występują zadziwiająco często. Większość narzędzi dla programistów można zainstalować z kreatora bądź też po prostu rozpakować w wybranej przez nas lokalizacji. Preferuję rozpakowanie narzędzi i uruchamianie ich ręcznie z wiersza poleceń. Należy wiedzieć, gdzie dane narzędzie zostało zainstalowane, aby móc je uruchomić i/lub znaleźć pliki konfiguracyjne, które należy samemu zmienić. Będąc przy tym temacie, to rekomenduję instalacje/rozpakowanie narzędzi w jednym katalogu np. dev na głównym dysku, odradzam umieszczania wszystkiego na pulpicie. Moja struktura katalogów to:
~/dev - główny katalog dla development'u,
~/dev/install - wersje instalacyjne narzędzi - offline,
~/dev/docs - dokumentacja, książki - offline.
Zmienne środowiskowe? W telegraficznym skrócie, to informacje o położeniu zainstalowanych narzędzi. Na przykładzie narzędzia IntellJ przedstawię jak wiele zmiennych musielibyśmy samemu utworzyć, gdyby nie paczka z IntelliJ. Zapytasz zapewne, to po co mi wiedza o zmiennych środowiskowych? Potrzebna jest do niestandardowej konfiguracji wersji różnych narzędzi, a taka konfiguracja jest bardzo częsta. Sam IntelliJ zawiera wbudowaną wirtualną maszynę Java (JVM), narzędzia Maven i Gradle, gdyby ich nie było, to bez dodatkowej instalacji niemożliwe było by programowanie i budowanie projektów opartych o język Java. Bez tego programista musiałby samemu ręcznie ustawić zmienne środowiskowe dla Java (JAVA_HOME), Maven (np. MAVEN_HOME), Gradle (np. GRADLE_HOME). Do tego dochodzi np. Spring Boot, gdzie mamy wbudowany serwer Tomcat, bez tego trzeba ustawić TOMCAT_HOME. Przykład zmiennych środowiskowych:
JAVA_HOME=~/dev/java/jdk/11.0.9-zulu
MAVEN_HOME=~/dev/tools/maven/3.6.1
Brak znajomość podstawowych skrótów klawiszowych. Praca bez skrótów klawiszowych jest możliwa, ale bardzo uciążliwa. Narzędzie IntelliJ kładzie ogromny nacisk na używanie skrótów klawiszowych w IntelliJ prawie wszystko można wykonać bez używania myszki tylko korzystając ze skrótów klawiszowych. W tym miejscu piszę o tak podstawowych skrótach jak CTRL+C - kopiowanie plików i/lub tekstu, CTRL+F - wyszukiwanie plików i/lub tekstu. Czasem zdarza się, że nie można użyć myszki, a trzeba skopiować jakiś tekst lub plik, wtedy pomocne są skróty. W IntelliJ przydatnym skrótem jest "Double Shift" - wyszukaj wszędzie lub ALT+Insert - wygeneruj kod. Każdy przyszły młodszy programista Java musi znać skróty z "edytora tekstu/pakietu office".
Przydatne skróty klawiszowe:
Windows -
MacOS -
Linux:
Terminal -
Gnome -
KDE -
IntelliJ -
Przeglądarki internetowe -
Pakiet biurowy - Open Office -
Strach przed używaniem terminala/konsoli/wiersza poleceń. Na samym początku nadmienię, że nie wyobrażam sobie pracy bez wiersza poleceń. Większości konfiguracji dla zainstalowanych narzędzi programistycznych można wykonać tylko i wyłącznie za pomocą terminala/konsoli/wiersza poleceń. Przyszły młodszy programista Java powinien jak najszybciej oswajać się i zaznajomić z wierszem poleceń, bo będzie on towarzyszyć przez większość jego pracy. Do czego będzie potrzebny terminal? Do uruchomienia aplikacji napisanej w języku Java, do uruchomienia serwera aplikacyjnego w wybranym przez nas trybie i konfiguracji. Przykładem może być aplikacja napisana w Spring Boot, będzie można ją uruchomić z poziomu IntelliJ, ale często jest potrzebna "większa kontrola i/lub niestandardowe uruchomienie", wtedy skorzystamy z wiersza poleceń. Większość baz danych będzie uruchamiana z terminala. Ja, pracując z np. aplikacją trójwarstwową napisaną w Java za pomocą wiersza poleceń uruchamiam serwer aplikacyjny Tomcat, bazę danych PostgreSQL i narzędzie Gradle, które umieszcza aplikację na serwerze Tomcat. Często, żeby dodać nową funkcję do istniejącej aplikacji musimy uruchomić kilka modułów, bazę danych, serwer aplikacyjny itd.
Podsumowując, pracując jako programista, który tworzy aplikacje/systemy będziemy musieli znać bardzo dobrze swoje środowisko pracy (system operacyjny, skróty klawiszowe, wiersz poleceń), nie tylko od strony użytkownika np. systemu operacyjnego, ale również używać wiersza poleceń do konfiguracji różnych elementów własnej aplikacji jak i również narzędzi programistycznych. Wyżej opisane elementy są niezbędną podstawą. Idąc głębiej w temat zmierzamy w kierunku programisty jako tzw. DevOps, który zajmuje się nie tylko wytwarzaniem oprogramowania, kodowaniem, ale również wie jak uruchomić serwer, skonfigurować środowisko pracy.
Zapraszam do regularnego odwiedzania mojego bloga www.juniorjavadeveloper.pl, będą pojawiać się kolejne wpisy oraz do kontaktu przez email kontakt(at)juniorjavadeveloper.pl lub LinkedIn.
Aktualna oferta dostępna na https://www.juniorjavadeveloper.pl/oferta/
Leave a Comment