Jak zacząć karierę w IT?

2023-02-10

Tym wpisem chcę zacząć krótką serię artykułów na temat budowania kariery w IT. Ponieważ nie tylko, że pracuję aktywnie w IT, ale jeszcze jestem trenerem i mentorem, to zdarza się, że moi studenci pytają mnie o rady w tym zakresie. Tu próbuję je zebrać, żeby nie odpowiadać każdemu z osobna. Ale uwaga – nie jest to forma zbycia pytań. Uważam, że są one dobre i sensowne, a pisząc coś tutaj mogę to zrobić lepiej niż w „2 zdaniach na LinkedIn”.

Decyzja

Słowo wstępu. Pracuję w IT już dłuuugo, ale z wykształcenia jestem matematykiem. Szczęśliwie tak się złożyło, że ktoś kto wymyślał program nauczania na moich studiach, dodał tam sporo informatyki i dzięki temu robię dzisiaj to co lubię. Zdaję sobie sprawę z tego, że nie każdy od samego początku mógł się kształcić na programistę, administratora, analityka, czy kogokolwiek z zakresu IT. Wielu decyduje się na zmianę kariery później i musi to „okupić” dodatkowym wysiłkiem – godzeniem dorosłego życia i obowiązków z dodatkową pracą nad swoimi nowymi umiejętnościami.

Często w procesie re-kwalifikacji zadajemy sobie pytania:

  • czy to ma sens?
  • od czego zacząć?
  • w jakim kierunku podążać?
  •  jak szukać pierwszej pracy w IT?

Moim zdaniem, najważniejsze jest jednak pytanie, czy chcesz zająć sie IT, dlatego, że to lubisz, czy z innych powodów (np. dla pieniędzy). Jeśli kierujesz się zainteresowaniami, osobistą chęcią poznania czegoś nowego, to ma to sens i będzie chociaż trochę łatwiej. Gorzej jeśli IT jawi Ci się jako raj, w którym za „siedzenie” płacą kolosalne pieniądze. Nie wiem – może komuś się tak udaje, ale dla mnie praca w IT jest okupiona stresem, pracą wykonywaną nierzadko po nocach, pracą zabieraną z biura do domu, ograniczającą czas wolny i na dodatek wymagającą stałego kształcenia się i ciągłego uczucia, że przecież tylu rzeczy jeszcze nie wiem – poczucie „niespełnienia” w całej okazałości 🙂 Nie żebym tam jakoś szczególnie na to narzekał – a dlaczego? Bo to lubię! Dlatego właśnie uważam, że jeśli ktoś lubi swoją pracę, to jest w stanie przymknąć oko na pewne niedogodności. Jeśli z kolei przychodzisz do pracy tylko po pieniądze, to prędzej czy później ją znienawidzisz i znowu pomyślisz o zmianie.

Specjalizacja

Załóżmy, że już wiesz – „IT to coś dla mnie”. Co dalej? IT nie jest spójne, jest wiele specjalności, w których można pracować. Zaczynając od hardware, poprzez dobre doradztwo sprzedażowe, serwis, administrację, programowanie, wdrożenia, automatyzację, bazy danych, aplikacje, bezpieczeństwo, zarządzanie projektami, analitykę, data science, machine learning, architekturę i wiele innych. Każda z tych specjalności jest ważna, nie jest tak, że w IT są tylko programiści. Owszem, zarobki też są zmienne, ale zależą raczej od praktyki i stopnia specjalizacji w danej dziedzinie, a czasami od dobrych negocjacji, ale każdy z ludzi pracujących w IT jest ważny dla całego procesu IT. Osobiście znam ludzi, którzy mają smykałkę techniczną i nie boją się lutownicy, znam administratorów, którzy wolą pracować nad systemami, dbać o nie, żeby się nie psuły, grzebać w logach i usuwać błędy, znam też zapalonych programistów, którzy mają dwie lewe ręce jeśli chodzi o sprzęt (to np. ja). Nikt nie zna Ciebie lepiej niż Ty, dlatego samemu trzeba sobie wybrać to, co nas kręci.

Zmiany

Powiedzmy, że już coś masz wybrane. Co dalej? Często nawet, niezależnie od tego co tam sobie wybierzesz, trzeba przejść przez pewne kroki/etapy, które są wspólne dla różnych specjalności. Każdy powinien chociaż trochę znać systemy operacyjne (ale admin szczególnie), każdy powinien umieć programować (ale programista szczególnie), każdy powinien wiedzieć, jak pracują bazy danych (ale analityk, czy data-scientist – szczególnie). Taka litania mogła by być długa. Dlatego wydaje mi się, że z zakresu „dla początkujących” – brać można wszystko. Potencjalnie może się zdarzyć nawet tak, że po kilku pierwszych kursach/książkach, dojdziesz do wniosku, że to jednak nie to, albo, że chociaż początkowo programowanie wyglądało bardzo atrakcyjnie, to jednak chyba bardziej ciągnie cię do znajdowania błędów w programach, a to już bliżej pracy testera, czy specjalisty security.  Myślę więc, że trzeba spróbować kilku rzeczy, posmakować różnych smaków, a potem wybrać ten najlepszy.

Wytrwałość

Tak wiem, to jest trudne, zwłaszcza jeśli zaczynamy od zera. Człowiek się uczy, a do głowy nie wchodzi. Co z tym zrobić? Mam jedną radę. Po prostu o tym nie myśleć. Kiedy byliśmy dzieciakami, chodziliśmy do szkoły. Kazano nam, to chodziliśmy. Może coś tam w tej szkole nam się podobało, może czasami zdarzyło się nam powiedzieć „bez sensu”, ale chodziliśmy… Nie zadawaliśmy sobie pytań „a co by to było jakbym przestał chodzić do szkoły”, bo gdzieś wewnętrznie wiedzieliśmy, że to raczej nie jest opcja, tylko dość obowiązkowa rzecz.

Teraz, jako dorośli, często zadajemy sobie pytania – czy to ma sens, czy nie zmienić decyzji. Te pytania są ważne, bo jakbyśmy nigdy nad niczym się nie zastanawiali i nigdy nie zmienialibyśmy decyzji, to… byłoby głupio na świecie. Istotne jest tylko, żeby tego pytania nie zadawać sobie codziennie. Daj sobie czas: 100 dni, albo rok i w tym czasie nie zadawaj sobie tego pytania. Jeśli taka myśl na ciebie przyjdzie – powiedz jej STOP – poczekaj aż minie te 100 dni czy rok. Często przy zmianie rządu nasi politycy ogłaszają program na 100 dni. Nie wiem czy to mądre (w ich wykonaniu), ale w sytuacji startującego do czegoś nowego – szczerze polecam taki model.

Po tym zadanym czasie, owszem zadaj sobie to pytanie i odpowiedz. Podejrzewam, że jeśli pomyśł przekwalifikowania sie wynikał z wewnętrznych zainteresowań, to po 100 dniach uczciwej pracy zauważysz, że jest lepiej, że wiesz więcej, że zaczynasz rozumieć, że jest znaczna różnicą między tobą dzisiaj, a 100 dni temu. I o to tu właśnie chodzi!

Drążenie i dążenie

Kolejny krok, to decyzja o specjalizacji. I tu jest często problem. Bo jeśli spodobało mi się dajmy na to programowanie i zrobiłem już kurs podstaw programowania, to co mam zrobić dalej? Kolejny kurs programowania? No ale chyba nie dla początkujących? No chyba, że z innego języka?

Rzeczywiście jest tak, że programista docelowo powinien znać kilka języków. Każdy kolejny przychodzi oczywiście odrobinę łatwiej, ale jak zwykle – początki są trudne. Zwykle też jeden, no może dwa języki są tymi „pierwszymi”. Sam programuję w wielu językach i przez długi czas tym pierwszym był dla mnie C#. Potem zająłem się Pythonem i chyba mogę powiedzieć, że aktualnie jest to dla mnie numer jeden. Nim jednak przejdziesz do poznawania wielu języków, sugerowałbym głębsze poznanie jedego z nich. Dlatego już na etapie szukania pierwszych kursów czy książek, myśl o tym, czy autor daje jakieś szanse kontynuacji. Jeśli tak, to jest to plus. Jeśli nie – też nic straconego. Od czasu do czasu warto zmienić autora, żeby zobaczyć, jak ktoś inny widzi i przedstawia podobne problemy. W przypadku administratora sprawa ma się podobnie, tylko zamiast mówić o językach programowania należałoby mówić o systemach operacyjnych, czy chmurach.

Do tego dochodzi też sprawa tego, że o ile jest dużo materiałów dla początkujących, to już znalezienie dobrych opracować głębszych tematów jest znacznie trudniejsze, ale nie miej o to żalu. Po prostu w pewnym momencie, jak ptak wylatujący po raz pierwszy ze swojego gniazda, musisz zacząć machać swoimi skrzydłami. Ważne tylko, żeby ten moment nie nastąpił za wcześnie. Dopóki potrafisz znależć dobre materiały, korzystaj z nich. A kiedy takich materiałów już nie będzie – zacznij je tworzyć samodzielnie.

Przygotowanie do nowej pracy

W pewnym momencie pomyślisz o tym, że może to już pora na poważną zmianę. Zostawic ten „zapiecek”, gdzie jesteś aktualnie, zaryzykować i pójść do pracy w IT. To odważna decyzja, ale cóż – trzeba ją podjąć. I tu spotka Cię kolejny kłopot, bo żeby zmienić pracę, trzeba sie do niej dostać, a żeby się dostać trzeba przejść przez rekrutacyjne sito. Są jednak pewne rzeczy, które można zrobić, żeby zwiększyć swoje szanse. Oto kilka pomysłów:

  • Otwórz konto na GitHub. Publikuj tam swoje skrypty, programy itp. Rekruter techniczny, który zobaczy, że nie tylko mówisz, ale jeszcze robisz, może nawet całkiem zrezygnować z testów i „głębokiego wywiadu”
  • Pisz bloga. To nie wymaga nawet nakładów finansowych. Pisz co robisz, czego się uczysz. Z czasem ten blog będzie Twoją własną skarbnicą wiedzy. Sam to robię, więc wiem co mówię 🙂 Nie raz zapominam jak coś zrobić, ale wiem, że o tym pisałem, przeszukuję bloga i… Bingo!
  • Nie ograniczaj sie do przeglądania LinkedIn – zacznij pisać
  • Udzielaj sie forach, grupach dyskusyjnych. To świetny sposób nauki, kiedy nie masz jeszcze swoich własnych „produkcyjnych problemów”, ale możesz poczytać o problemach innych ludzi i im przy tym pomóc. Nie zrażaj sie, jeśli ktoś Cie skrytykuje, tylko ciesz się ilekroć zobaczysz, że w ogóle rozumiesz, o co pytają!
  • Czytaj ogłoszenia o pracę. Analizuj je. Zadawaj sobie pytanie, co jeszcze muszę umieć, aby zaaplikować na to stanowisko. To pomoże Ci ustalić, czego jeszcze Ci brak i nad czym należy popracować.
  • Twórz własne mini-projekty. Czy to mini-programiki, czy mini-konfiguracje. Każda taka rzecz bedzie jak znalazł na rozmowie z rekruterem, gdy zada pytanie o doświadczenie praktyczne

Zdobycie pracy będzie pewnie wymagało kolejnej dozy wytrwałości i cierpliości. Trzeba by mieć wyjątkowe szczęście, żeby po złożeniu pierwszego CV i po pierwszej rozmowie zostać przyjętym, ale – nie zrażaj się. Kropla drąży kamień. W końcu się uda!

Praca

Praca to tylko okazja do tego, żeby pogłębiać swoją wiedzę i nabywać doświadczenia. Dlatego nie osiadaj na laurach, tylko czerp z doświadczeń kolegów, klientów, ucz się i rozwijaj. Stosuj te same praktyki, które pozwoliły ci zdobyć tą pracę tu i teraz. Dzięki temu rośniesz i nabywasz siły. Jeśli masz pecha i dostajesz nudną pracę, staraj sie ją uatrakcyjnić. Zautomatyzuj to, co aktualnie jest robione ręcznie, zrób lepiej to, co aktualnie działa kiepsko. W mądrej firmie za to Cię docenią, a w głupiej… no cóż – prędzej czy póżniej zostaną bez Ciebie.

By Rafał Kraik in Kariera

Visual Studio Code: Podkreśla nazwy importowanych modułów

2023-02-10

Zazwyczaj VSC (a dokładniej rozszerzenie pylance) podkreślna nazwy modułów, które nie są zainstalowane. W celu instalacji wykonaj polecenie

pip install nazwa_modułu

np.

pip install scikit-learn

Problem w tym, że czasami moduł jest zainstalowany, a VSC i tak go podświetla. Co może być przyczyną?

Otóż domyślnie pylance sprawdza obecność modułów tylko w środowisku wirtualnym, tymczasem część modułów instaluje się w domyślnym katalogu, w którym zainstalowano Pythona – ot uparciuchy!

Wtedy otwórz settings: File >> Preferences >> Settings

U góry w polu tekstowym wpisz „python.analysis.extrapaths”

Właśnie w tym miejscu możesz podać ścieżkę dostępu do katalogu, w którym zostały zainstalowane dodatkowe „uparte” moduły.

By Rafał Kraik in Helpdesk

Helpdesk: Obejście zablokowanego zaznaczania tekstu i menu prawej myszki z zabezpieczonej strony

2023-01-21

Internet to miejsce, w którym sie dzielimy tym co mamy. Nie oznacza to, że w internecie wszystko można skopiować, zabrać i może jeszcze wypuścić pod własną marką. Prawa autorskie są ważne i nie wolno ich łamać.

Jeśli już jednak coś w tym internecie jest i jest to za darmo, bez rejestracji, to zabezpieczanie np. strony internetowej przed kopiowaniem danych wydaje się co najmniej dziwne. Coś na zasadzie dam, ale nie dam… Zwykłe utrudnianie życia, bo jak sie chce, to takie zabezpieczenia i tak się nie sprawdzą.

Jak można obejść kwestię zablokowanego prawego przycisku myszy, a dokładniej menu kontekstowego, które w takim przypadku się pojawia, a pozwala na np. wydrukowanie strony. Prosto!

W Chrome przejdź do ustawień i poszukaj słowa javascript. Można skopiować ten adres i wkleić do przeglądarki:

chrome://settings/content/javascript?search=javascript

Odszukaj ustawień Java Script:

Jak widać javascript domyślnie jest włączony, ale można go wyłaczyć dla wybranej strony:

To odblokuje menu kontekstowe na stronie.

To teraz zabierzmy sie za możliwość zaznaczenia fragmentu tekstu, np po to aby go następnie skopiować. Będzie – no jasne – prosto! W Chrome naciśnij F12. Uruchomi to narzędzia developerskie. Teraz poszukaj w środkowej części znacznika HTML, po prawej stronie widać okienko Styles, a w nim opcję user-select: none oraz webkit-user-select:none. Wystarczy je „odhaczyć”, kliknąć na stronie widocznej po lewej i… już można zaznaczać tekst.

Dzięki temu nieśmiali blogerzy, którzy chcą całemu światu opowiedzieć o swojej miłości, ale trochę się wstydzą i nie pozwalają np. na skopiowanie, wydrukowanie (do celów prywatnych) fragmentu swojej historii, zostają uwolnieni. A tak na poważnie – po co utrudniać sobie życie, skoro takie dane i tak, jak widać, można obejść?

By Rafał Kraik in Helpdesk

Linux: definiowanie crontab dla innego użytkownika

2023-01-14

Cron pozwala na automatyzację zadań na systemie Linux. Czasami chcemy aby te automaty działały na wybranym koncie, bo to konto ma już zdefiniowane odpowiednie dostępy, alebo też dlatego, że automatycznie uruchamiany skrypt będzie tworzył pliki, katalogi, do ktorych tylko ot konto powinno mieć dostęp.

W takim przypadku może się przydać zaplanowanie zadań do wykonania dla innego użytkownika.

Tak oto uruchomisz polecenie pozwalające edytować harmonogram zadań dla użytkownika:

crobtab -e -u redis

Jak tylko uruchomi się edytor wprowadź definicję polecenia, które ma się regularnie uruchamiać. Np aby co minutę zapisać aktualną datę w pliku użyj takiej linijki:

*/1 * * * * date >> /tmp/my_date.txt

Po zapisaniu definicji, możesz skontrolować, czy wszystko jest ok:

crontab -l -u redis

Co ciekawe, zadania w crontab można definiować nawet jeśli wybrany użytkownik używa shella nologin!

Dodajmy jeszcze, że ewentualne sprawdzenie działania crona można wykonać uruchamiając

grep CRON /var/log/syslog
By Rafał Kraik in Linuxy

Linux: Polecenie su

2023-01-07

Polecenie su może służyć do zmiany tożsamości w sesji Linux. Jednak w tym przypadku pojawił sie błąd:

sudo su - redis
This account is currently not available.

O co chodzi? Chodzi o to, że użytkownik redis nie ma przypisanego żadnego shella, a właściwie to ma… nologin:

grep redis: /etc/passwd
redis:x:113:118::/var/lib/redis:/usr/sbin/nologin

Jeśli koniecznie chcesz wykonać su na to konto, to można by ten shell zmienić na /bin/bash, ale… jeśli ktoś pomyślał o takim skonfigurowaniu konta, to pewnie miał ku temu powody.

sudo usermod -s /bin/bash redis

No to co można zrobić dalej? Może wcale nie trzeba przełączać się na to konto, może po prostu wystarczy uruchamiać pojedyncze polecenia? Jeśli tak, to zobacz:

 sudo -u redis -s /bin/bash -c "whoami" 
redis

sudo może na koncie wskazywanym opcją -u z wykorzystaniem shella wskazywanym przez opcję -s wykonać polecenie! To super. Jeśli to polecenie miałobybyć bradziej złożone, np. miałoby więcej opcji, przekierowywałoby output do pliku itp. to nie zapomnij o umieszczeniu komendy w cudzysłowach lub apostrofach.

By Rafał Kraik in Linuxy

Linux: czyszczenie logów journald

2022-12-27

W katalogu /var/log/journal odkładają się logi generowane przez journal. Logi to jedna z ważniejszych rzeczy w pracy administratora, więc to dobrze, że się tam odkładają. Jeśli jednak jest ich zbyt dużo, to też niedobrze.

Po pierwsze można sprawdzić, ile miejsca te logi zajmują:

journalctl --disk-usage

Po drugie, można usunać stare logi, zostawiając tylko wskazaną ilość miejsca:

journalctl --vacuum-size=200M

No i po trzecie, można skonfigurować journal, do przechowywania tylko zadanej ilości logów. Plik konfiguracyjny to /etc/systemd/journald.conf. Linijka definiująca ile miejsca można przeznaczyć na logi to SystemMaxUse:

SystemMaxUse=200M

Po zmianach w pliku journald powinien zostać zrestartowany:

sudo systemctl restart systemd-journald

Więcej informacji o journal.conf:

man journal.conf

 

By Rafał Kraik in Linuxy

Linux Ubuntu – listowanie ostatnio zainstalowanych pakietów

2022-12-27

Co to ja  właściwie zainstalowałem? No cóż – takie pytanie można zadawać sobie czasami i całkiem na trzeźwo. Żeby sprawdzić, co ostatnio było instalowane na Ubuntu można posłużyć się poleceniem:

grep install /var/log/dpkg.log

Jeśli plik w między czasie już się zrollował, to można dodać jeszcze jego wcześniejszą wersję:

grep install /var/log/dpkg.log /var/log/dpkg.log.1

Mając taką komendę można następnie budować sprytniejsze raporty, o których można poczytać tutaj:

https://unix.stackexchange.com/questions/12578/list-packages-on-an-apt-based-system-by-installation-date

W moim przypadku w/w komenda była wystarczająca

By Rafał Kraik in Linuxy