Pomożemy Ci odnieść sukces w roli niezależnego konsultanta IT.
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.
Category: Expertise strategy
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 [email protected].
Ciągłe przypominanie sobie rzeczy jest obciążające mentalnie. Uczestnik standardowego projektu informatycznego musi pamiętać o:
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:
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:
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.
Kamil Naja
Dwie najważniejsze rzeczy przesyłane w projektach to:
Załóżmy teraz, że kolega wysyła Ci numer Jiry, o którą chce zapytać, po prostu jako tekst. W takiej sytuacji, musisz:
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:
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.
Przeczytaj także:
Microsoft Dev Box - nowoczesna maszyna robocza
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:
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ę:
nawet, jeśli nie używasz techniki Pomodoro. Dobrym rozwiązaniem jest też:
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ł.
Kamil Naja
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:
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:
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.
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ć:
lub
, 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.
Pomożemy Ci odnieść sukces w roli niezależnego konsultanta IT.