Article

Header2.jpg

Category: Expertise strategy

Poradnik dla specjalistów IT: W jaki sposób odciążyć umysł w pracy

Kamil Naja, Programista Front-end emagine, 26/09/2023

Od kilku lat interesuję się wydajnością pracy i w tym artykule chciałbym przedstawić najważniejsze metody, które wg mnie pozwolą pracować łatwiej i wydajniej w środowisku IT.

Szacuje się, że człowiek potrafi pracować w skupieniu jedynie przez około 3 - 4 godziny dziennie, a dalsza praca powoduje spadek wydajności oraz mniejszą skuteczność wykonywanych działań. Jedna osoba potrafi idealnie zorganizować sobie stanowisko i środowisko pracy, inna zaś, z powodów które przedstawię dalej, będzie przysłowiowo potykała się o własne nogi. Najlepiej jest więc poświęcić czas na naukę pewnych nawyków, aby pracować wydajnie a tym samym zdobywać coraz to lepsze projekty, rozwijać karierę i samodoskonalić się w zawodzie.

Sprawdź, jak maksymalnie wykorzystać czas skupienia. A jeśli masz inne pomysły na usprawnienie pracy, napisz o tym na info@emagine.pl.

 

Zapomnij o tym, co jest potrzebne:

Ciągłe przypominanie sobie rzeczy jest obciążające mentalnie. Uczestnik standardowego projektu informatycznego musi pamiętać o:

 

  1. hasłach
  2. różnych środowiskach, linkach prowadzących do narzędzi CI
  3. wymaganiach użytkownika
  4. różnych informacjach przekazywanych od współpracowników
  5. terminach, na przykład dotyczących odnowienia certyfikatów

 

Aby odciążyć umysł, należy zastosować odpowiednie narzędzia do zapisania sobie tych rzeczy.

Hasła można trzymać w managerze haseł, takim jak na przykład:

Keepass

który zadba o szyfrowanie.

Listę środowisk i związanych z nimi linków można rozpisać sobie w formie pliku tekstowego, notatki w One Note / Evernote, albo (moja preferowana opcja), w formie mapy myśli. Klikanie w linki przedstawione w wizualnej formie jest znacznie prostsze, niż zaglądanie za każdym razem do folderu zakładek. Przeszukiwanie bałaganu jest stresujące i męczące.

Wymagania dotyczące projektu, różne procedury i przydatne informacje można spisać w formie współdzielonego dokumentu, na przykład przechowywanego w systemie Confluence.

Ważne terminy najlepiej będzie zanotować w miejscu, do którego często zaglądamy. Dla mnie takim kalendarzem jest ten powiązany z firmowym chatem, np wbudowany w system Microsoft Teams.

Ta wiedza wydaje się banalna, ale byłem świadkiem wielu sytuacji, w których całe systemy przestawały działać przez prosty błąd człowieka związany z nieodnowieniem certyfikatu.

Informacje przekazane nam przez współpracowników i związane z jakimiś zadaniami warto przechowywać od razu w formie zadania. Aplikacja Jira pozwala na dodawanie komentarzy, które przydadzą się w późniejszych pracach nad projektem.

Notatki mają sens tylko wtedy, kiedy regularnie do nich zaglądasz. Moim sekretnym sposobem na zapamiętanie rzeczy związanych z projektem jest używanie:

spaced repetition

czyli tworzenie karteczek w aplikacji Anki. Wrzucam tam na przykład błędy i problemy z jakimi się spotkałem, albo nowe rzeczy których nauczyłem się podczas pracy.


 

Jeśli chcesz poznać więcej informacji na temat przechowywania notatek w komputerze, polecam Ci książkę "Getting Things Done" Davida Allena. 

Kamil Naja

Body2-1.jpg

Przesyłaj rzeczy w formie łatwej do udostępnienia: 

Dwie najważniejsze rzeczy przesyłane w projektach to:

 

  1. numery zadań z Jiry
  2. numery weryfikacyjne albo loginy użytkowników, wykorzystywane do logowania w różnych środowiskach IT.

Załóżmy teraz, że kolega wysyła Ci numer Jiry, o którą chce zapytać, po prostu jako tekst. W takiej sytuacji, musisz:

 

  1. wejść do systemu
  2. wyszukać jakiś dowolne zadanie
  3. wejść w zadanie
  4. zastąpić jego nazwę w URL nazwą przesłaną przez kolegę (jest to szybsze niż szukanie za pomocą wbudowanego mechanizmu Jiry) i ponownie rozpocząć wyszukiwanie

 

Bardzo proste zadanie odnalezienia taska, składa się z 5 kroków. Przesłanie linka do zadania trwa nawet krócej niż nazwy (wystarczy skopiować URL), a od osoby która go dostanie, wymaga jedynie wklejenia zawartości do przeglądarki.

Jeśli tester zauważy błąd, który może zależeć od specyficznego użytkownika i jedynie zamieści screenshot w zadaniu, odtworzenie buga przez programistę wymaga następujących kroków:

 

  1. Wejścia na dany ekran
  2. Spróbowanie odtworzenia błędu na kilku danych różnych użytkowników
  3. Po nieudanej próbie odtworzenia, programista kontaktuje się z testerem, który przesyła właściwy login użytkownika.

 

Sytuacja może wyglądać nieco lepiej, gdy dane użytkownika są widoczne na zrzucie ekranu z błędem. Wtedy programista musi mozolnie przepisać je do systemu (zapewne myląc się po drodze), co również nie ułatwia sprawy. Ktoś sprytny może skorzystać z systemu OCR.

Dążę do tego, że dużym ułatwieniem sobie życia jest tworzenie zadań z wszystkimi danymi koniecznymi do odtworzenia danego błędu w formie gotowej do użycia, czyli możliwej do skopiowania.

Twórz listy zadań:

W pracy używamy zwykle Jiry lub innego programu do wysokopoziomowego zarządzania zadaniami. Każde zadanie składa się jednak z kilku faz. Przykładowo dla zadania front-endowego, jest to:

 

  1. utworzenie brancha w GIT
  2. stworzenie implementacji
  3. wgranie zmian na środowisko IT
  4. przesunięcie zadania w systemie na odpowiedni status
  5. powiadomienie testera o zmianach

 

Te kroki zwykle nie są opisane w systemie do zadań. Często zdarza się nam pracować wielotorowo, przykładowo, podczas kroku tworzenia implementacji dostajemy informację od testera, że nasze rozwiązanie poprzedniego zadania nie działa. W takiej sytuacji łatwo jest stracić panowanie nad naszymi procesami.

Moim zdaniem dobrze jest mieć pod ręką dodatkowe narzędzie - listę zadań, w której będziemy trzymali zarówno krótkoterminowe, jak i długoterminowe zadania. Zadania mogą być dowolnie tagowane, warto też przypisywać im priorytety. Ponieważ nie są one powiązane z systemem zadań używanym w projekcie, możesz nimi swobodnie zarządzać i zmieniać tak, jak Ci odpowiada.

Wybierając narzędzie tego typu, warto kierować się prostotą i dobrym UX. Gorąco polecam aplikację:

pomodoro tracker

nawet, jeśli nie używasz techniki Pomodoro. Dobrym rozwiązaniem jest też:

todo.txt.

kamil-naja-blog

Drugim typem list są zadania, które zawsze mają taki sam przebieg. Przykładowo, jeśli wykonujesz deploy z konsoli, możesz zapisać sobie jego pojedyncze kroki w formie tekstowej i wykonywać je jeden po drugim. Jeśli coś w procesie deploy'u się zmieni, zmieniasz to najpierw w Twojej liście. Dzięki takiej pracy masz pewność, że wykonujesz rzeczy w poprawnej kolejności i o niczym nie zapomnisz. Wszystkie powtarzalne rzeczy zapisuję sobie w jednym miejscu, co znacznie odciąża mój umysł.

 


 

Jeśli chcesz dowiedzieć się więcej na temat tworzenia list zadań, zapraszam do lektury książek:

 

  • "Zjedz tę żabę" - Brian Tracy
  • "Potęga checklisty" - Atul Gawande

Kamil Naja

Poznaj wszystkie możliwości narzędzi, których używasz:

Pisząc ten tekst tworzyłem nagłówki. Google Docs posiada świetną funkcję, jeśli wpiszesz przed znakiem umieszczonym w nowej linii pojedynczy znak #, utworzy nagłówek pierwszego rzędu, jeśli podwójny, drugiego i tak dalej. Początkujący programista, gdy chce skasować wiersz, mozolnie zaznacza go myszką i następnie klika przycisk Delete. Profesjonalista zna skrót na skasowanie całego wiersza od razu. Podobnych sztuczek są setki.

Nauka takich podstawowych rzeczy procentuje, ponieważ pracujemy szybciej i mniej się męczymy.

Specjalista w dziedzinie IT powinien raz na jakiś czas przeglądać nagrania na temat działania i wydajnego używania narzędzi, z którymi się spotyka w pracy. W wielu z nich można importować skróty klawiszowe, dzięki czemu zapewniamy sobie takie samo działanie aplikacji na wielu systemach i na każdym komputerze. Używanie skrótów klawiszowych samo w sobie odciąża umysł, odbywa się automatycznie, w przeciwieństwie do każdorazowego szukania analogicznej opcji w menu jakiejś aplikacji.

Więcej na ten temat znajdziesz w książce:

Pragmatyczny Programista.

Wszystko na raz?:

Jeśli mamy do zrobienia wiele podobnych zadań i proces, który stosujemy nie może zostać zautomatyzowany, najlepiej jest wykonywać zadania na raz, jedno po drugim. W taki sposób oszczędzamy czas i możemy zauważyć różnego typu braki w naszym procesie. Nie musimy się też przełączać pomiędzy różnymi narzędziami, co jest normą, jeśli robimy jakieś wieloetapowe zadanie. Oszczędność nawet kilku sekund na jednym zadaniu, przekłada się na wiele minut w ciągu dnia.

Przykładowo, jeśli masz do zrobienia kilka bardzo małych zadań, najpierw jest najlepiej:

 

  1. zrobić implementację wielu zadań
  2. następnie zdeploy'ować je razem
  3. razem je sprawdzić w środowisku IT
  4. i na koniec zmienić status wszystkich zadań

I na koniec - automatyzuj, co trzeba:

Nowoczesne środowisko pracy pozwala na automatyzację wielu procesów. Podam tutaj kilka, z którymi najczęściej spotykam się w pracy.

Codziennością dewelopera jest tworzenie nazw branchy w systemie kontroli wersji. Najszybszym rozwiązaniem dostępnym w systemie Bitbucket i Github jest tworzenie branchy, których nazwy nadają się automatycznie, na podstawie zadania.

kamil-naja-blog_1

Wydaje się to oczywistością, ale w niektórych projektach używa się nazw branchy, które są wymyślone przez dewelopera. Wiąże się to z wysiłkiem mentalnym, bo nazwę trzeba wymyślić, zastanowić się nad nimi. W innym projekcie spotkałem się z tym, że nazwa była robiona na podstawie zadania, ale deweloper każdorazowo kopiował nazwę zadania, następnie przerabiał spacje na myślniki (ręcznie!) i dopiero taką nazwę wykorzystywał w projekcie. Każdego dnia tracił na to kilka minut dziennie.

Niezbyt pochlebną praktyką jest też standard formatowania kodu. Można oczywiście formatować kod tak, jak wyobrażają to sobie najbardziej doświadczone osoby w projekcie, pilnować każdorazowo na code review, czy kod jest prawidłowo sformatowany i zgłaszać uwagi. Można też ustawić:

ESlint

lub

Prettier

, ustawić jeden spójny sposób formatowania i analizy plików w TS i zaoszczędzić rocznie setki godzin pracy zespołu.

Narzędzia oparte na sztucznej inteligencji także pozwalają na ogromne zaoszczędzenie czasu. Przykładowo, Github Copilot pozwala na błyskawiczne generowanie kodu i tworzenie testów, podpowiada składnię i podpowiada programiście różne rozwiązania. Moim zdaniem główną zaletą systemów AI jest to, że odciążają programistę mentalnie i pozwalają skupić się na ważniejszych problemach.

Podsumowując, warto przyglądać się temu w jaki sposób pracujemy i wprowadzać stałe ulepszenia. Naszą pracę możemy podzielić też na najczęściej wykonywane zadania i zastanowić się, jak ulepszyć każde z nich chociażby o 1%. Dzięki temu z biegiem czasu, będziemy w nich coraz lepsi, a na dodatek, będziemy mniej się męczyć z codziennymi obowiązkami. A to także najłatwiejsza droga do uniknięcia wypalenia zawodowego. 

Kamil

Kamil Naja

Programista front-end
Specjalista realizujący projekty dla klientów emagine. Programista Front-end od początków kariery w IT, którą rozpoczynał w 2016 r. Blogger i propagator wiedzy w swojej dziedzinie.

Chcesz wiedzieć więcej?

Pomożemy Ci odnieść sukces w roli niezależnego konsultanta IT.

Blog

Więcej wpisów na blogu

left-arrow
right-arrow

Grafowa baza danych rewolucjonizuje zarządzanie informacjami
Expert stories
Webinar

Grafowa baza danych rewolucjonizuje zarządzanie informacjami – odpal zapis webinaru

Już jest! Zapis webinaru pt. Grafowa baza danych rewolucjonizuje zarządzanie informacjami… czyli o Neo4j z perspektywy front-endowca.

Expert stories

Crunch w IT – czy wiesz, jak mu zapobiec?

Temat crunchu pojawia się zwykle w kontekście branży, która tworzy gry komputerowe. Problem jednak nie dotyczy tylko tego sektora rynku. Crunch zdarza się wszędzie. Są jednak sposoby, aby mu zapobiec.

Expert stories

Idealna współpraca testera z programistą – czy to w ogóle możliwe?

W idealnym zespole programistycznym feedback od klienta przekłada się na świetne wymagania. Są one następnie zamieniane na dokładnie opisane zadania, w których jest wszystko ,co niezbędne do wykonania i testowania aplikacji. W rzeczywistości jednak taka sytuacja nigdy nie występuje. Jak to zmienić?