Z jakich narzędzi i technologii korzysta programista
Jak chcesz dostać pierwszą pracę jako programista to niestety, w dzisiejszych realiach, sama znajomość języka programowania i Frameworwka do niego, może być nie wystarczająca. Przez to, iż programowanie staje się coraz modniejsze (głównie ze względu wysokich zarobków) to na każde jedno stanowisko na młodszego programistę ubiegają się dziesiątki osób, które podobnie jak ty chcą zostać programistą. Dlatego, żeby się wyróżnić na tle konkurencji, warto poznać dodatkowo różne narzędzia i technologie dla programisty, które pozwolą Ci osiągnąć cel.
W dzisiejszym wpisie przedstawiłem Ci kilkanaście narzędzi i technologii dla programisty z różnych kategorii, przez co każde z nich są niezależne od siebie. Dlatego nie ma znaczenia kolejność w jakiej będziesz się ich uczył.
Oczywiście nie musisz tych wszystkich narzędzi i technologii znać do zdobycia swojej pracy (niektóre jednak są wymagane). Natomiast im więcej ich będziesz znał i będziesz umiał wykazać się ich znajomość na rozmowie kwalifikacyjnej, tym łatwiej będzie Ci zdobyć swoją pierwszą pracę.
System operacyjny Linux
Ten nieszczęsny system operacyjny, o którym różne rzeczy mogłeś usłyszeć :). Liczę, iż mniej więcej wiesz czym jest Linux. Coś jak Windows, tylko trochę inny. Dla osób, które nigdy nie pracowały w tym systemie, TAK LINUX MA INTERFEJS GRAFICZNY, a nie tylko konsola, w której są jakieś znaczki (oczywiście istnieją takie dystrybucję, ale to bardziej pod wystawianie serwerów już dla klienta).
No dobra, pewnie się zastanawiasz dlaczego Linux, a nie Windows. Mógłbym Ci wymieniać cechy po kroju, iż jest szybszy czy bezpieczniejszy. Ale takie coś to możesz przeczytać na każdym lepszym blogu. Tak z własnego doświadczenia:
- Terminal. Dla mnie jest to jedna z największych zalet dlaczego używam właśnie tego systemu. Mnóstwo rzeczy można załatwić jedną komendą np. Instalacje programów czy kopiowanie i usuwanie danych.
- Pisanie skryptów. Pewnie zdarza Ci się, iż włączając komputer wykonujesz pewną sekwencje rzeczy. Włączasz program X, następnie robisz czynność Y itp. Co powiesz na opcję, w której odpalasz jeden mały skrypcik i te wszystkie czynności dzieją się automatycznie? Prawda, iż dobra opcja?
- Dużo mniej błędów podczas pisania projektów. Na Windowsie często miałem tak, iż dostawałem różne błędy z niczego. Kiedyś miałem choćby sytuację, iż cały Angular mi się wysypał i musiałem się mocno nakombinować, żeby go naprawić. W Linux-ie pewnie załatwiłbym to jedną/dwoma komendami.
A jaką dystrybucję Linuxa wybrać? Osobiście pracuję na Ubuntu (obecnie najpopularniejsza). Jakbym był na twoim miejscu to wybrałbym też właśnie tą. Głównie ze względu na to, iż są duże szanse, iż w niej będą pracować twoi koledzy z pracy. A zaufaj mi, iż warto jak wszyscy pracujecie na tej samej dystrybucji. Głównie za sprawą jak się coś komuś wysypie – dużo łatwiej będzie naprawić.
IDE
IDE, czyli zintegrowane środowisko programistyczne (ang. Integrated Development Environment). Jakby to wyjaśnić… Prawdą jest, iż możemy pisać kod w notatniku, odpalać go w terminalu i stworzona przez nas aplikacja będzie działać. Ale nie wydaje Ci się to trochę zbyt uciążliwe? Przy 1 – 2 plikach to jeszcze miałoby jakiś sens, natomiast przy dużych projektach, gdzie często są setki plików, raczej nikt przy zdrowych zmysłach tak by nie pracował. Dlatego stworzono różne IDE. Specjalne narzędzia/programy, które są dedykowana pod tworzenie projektów programistycznych. Poniżej wymieniłem najciekawsze w tej chwili IDE dla Java Developerów i Frontend Developerów:
- Intellij IDEA. Bardzo rozbudowane środowisko programistyczne z setkami dostępnych funkcji. Niestety część funkcji jest dodatkowo płatna, natomiast można sobie bez nich poradzić. Osobiście tego IDE używam i Tobie też polecam właśnie od tego zacząć.
- Visual Studio Code. Bardzo lekkie IDE. W podstawowej konfiguracji przypomina taki trochę rozbudowany notatnik. Jak chcemy mieć jego bardziej rozbudowaną wersję to musimy go sobie sami skonfigurować przy użyciu różnych wtyczek. Dlatego na początku może być to lekko uciążliwe. Natomiast ma to swoje plusy. Dostajemy środowisko programistyczne, które możemy skonfigurować w 100% pod siebie.
- Eclipse. Alternatywne środowisko programistyczne do Intellij IDEA.
GIT
GIT – rozproszony system kontroli wersji. Pewnie dużo mówi :). Najprościej, jest to takie narzędzie, które pozwala na zarządzanie projektami (najczęściej programistycznymi). W programowanie jest tak, iż projekty piszę się w zespole. Co za tym idzie, trzeba bardziej kontrolować co się dzieje w projekcie. Dlatego wymyślili właśnie takie narzędzie. Pozwala nam to kontrolować obecne etapy w projekcie, jakie zmiany mogą wejść do głównej części projektu czy patrzeć na historię zmian.
GIT stał się na tyle popularny, iż powstało wiele platform, które pozwalają na łatwą obsługę tego narzędzia oraz na przechowywanie projektów. Możemy wyróżnić 3 najpopularniejsze platformy:
- GitHub
- Bitbucket
- GitLab
Dobrze jakbyś znał chociaż jedną z nich przed podjęciem pierwszej pracy. No i oczywiście samego GITa.
Docker
Docker jest kolejnym bardzo przydatnym narzędziem dla programisty. Jest to oprogramowanie, które pozwala na uruchomienia aplikacji w wydzielonym kontenerze, bez konieczności emulowania całego systemu.
Najłatwiej będzie to pokazać na przykładzie. Załóżmy, iż chcemy przetestować sobie na gwałtownie jakąś bazę danych. W normalnej sytuacji, po prostu zainstalowalibyśmy interesującą nas bazę danych, skonfigurowali i zaczęli pracować. Jakie są wady takiego rozwiązania? Po pierwsze, niepotrzebne śmieci robią się w systemie. Po drugie musimy skonfigurować sobie bazę danych. No i po trzecie zawsze może coś nie działać. I tutaj z pomocą przychodzi Docker. Pozwala nam stworzyć w swoim środowisku kontener z tą bazą danych i automatycznie uruchomić z domyślnymi ustawieniami
Docker uruchamia tzw. obraz, w naszym przypadku jest to konkretny obraz bazy danych (obraz to taka spakowana wersja aplikacji wraz ze wszystkimi wymaganymi konfiguracjami do jej uruchomienia np. aplikacja potrzebuję konkretnej wersji JRE do uruchomienia? To możemy ją zawrzeć w obrazie). Po uruchomieniu obrazu mamy pewność, iż aplikacja będzie działać. Dlaczego? Docker nie uruchamia aplikacji bezpośrednio w naszym systemie, tylko w swoim wewnętrznym środowisku, a do tego wszystkie potrzebne konfiguracje zostały zawarte w obrazie. Na koniec jak skończymy pracować, to usuwamy ten kontener jedną komendą. To tyle. Nie musimy się martwić czy coś zostało po tej bazie w naszym systemie. Czy nie wydaje się to dużo lepszym rozwiązaniem?
Jak chcesz zobaczyć jak działa Docker w praktyce to zobacz sobie ten filmik na platformie YouTube (od 15 minuty rozpoczyna się). Na gwałtownie została przedstawiona koncepcja wraz z przykładem prostej aplikacji napisanej w Spring Boocie.
Postman
Postman jest narzędziem, które pozwala wysyłać nam żądania na konkretne adresy. Nieważne czy to będzie REST, SOAP, json, xml, różne metody http (get, post, put, delete, patch) czy może jakiś plik, ze wszystkim jesteśmy wstanie się komunikować przy użyciu tego narzędzia. Dlatego bardzo często wykorzystuje się je podczas testowanego napisanego przez nas kodu. Oczywiście takiego, gdzie wystawiamy jakąś usługę. Tak żebyśmy mieli możliwość komunikacji.
Postman oficjalny poradnik (język angielski). Na stronie Postmana jest podstrona, na której zostało przedstawione jak używać tego narzędzia. Według mnie, program jest na tyle intuicyjne, iż chwilę z nim popracujesz i powinieneś się go nauczyć. A jak czegoś nie będziesz wiedział, to dopiero wtedy będziesz szukał jak to zrobić.
RabbitMQ
RabbitMQ jest to technologia, którą wykorzystuje się w wysyłaniu wiadomości z użyciem mechanizmu kolejki. W najprostszym przypadku taka kolejka może zachowywać się jak ludzie stojący w kolejce do kasy w sklepie. Czyli wiadomo, osoba na początku kolejki jest obsługiwana jako pierwsza, bo pierwsza przyszła. W programowaniu taki mechanizm ma skrót FIFO (ang. First In, First Out). Oczywiście istnieją bardziej skomplikowane kolejki, ale to poznasz jak zaczniesz się już uczyć tego narzędzia.
Jeśli chodzi o naukę to Oficjalna strona Rabbit MQ (język angielski) ma naprawdę świetny kurs ze swojego narzędzia. Na początek powinien się nadać.
Podsumowanie
Przedstawiłem Ci narzędzia i technologie dla programisty. Jak widzisz trochę ich jest. Na pocieszenie jest to tylko mały fragment z jakimi technologiami możesz się spotkać. No ale dobrze. Nie chcę Cię straszyć. Zobaczysz, iż największą trudność sprawi Ci nauczenie się tej pierwszej. Każda kolejna już będzie dużo łatwiejsza. Mam w przygotowaniu dla Ciebie drugą część tego wpisu, po to żebyś poznał ich jak najwięcej. Dla osób, które będą Cię przepytywać na rozmowie kwalifikacyjnej, czasem choćby wystarczy, iż wiesz czym dana technologia jest. Nie musisz znać jej szczegółów czy jak się ją implementuje lub wdrażania. Wystarczy, iż pokażesz, iż interesujesz się branża i zdobędziesz dużo plusów.
Jeśli chodzi o naukę tych technologii to tak jak podkreśliłem na początku, nie musisz ich wszystkich znać. Natomiast są takie technologię, które trzeba znać i bez ich znajomości bardzo ciężko znaleźć pracę: dobra znajomość GITa, sprawne poruszanie się po wybranym IDE oraz podstawowa znajomość Linuxa (szczególnie dla Java Developerów). Jak będziesz się zaczynał ich uczyć to najlepiej zacznij w tej kolejności co napisałem. Ustawiłem je w kolejności od najważniejszej.