Moje triki produktywności dla programistów i nie tylko

W tym artykule pokażę Tobie, z jakich narzędzi i technik korzystam na co dzień, aby przyspieszyć wykonywanie codziennych obowiązków.

Motywacją do napisania tego artykułu był widok moich, niekiedy bardzo doświadczonych i posiadających ogromną wiedzę kolegów i koleżanek, którzy często tracą czas, nie korzystając z niektórych opisanych tu ułatwień.

W zależności od tego ile czasu spędzasz na powtarzalnych czynnościach, tyle wolnych dni w roku możesz zyskać. Jednym z szacunków w trakcie typowej 8 godzinnej pracy jest utrata około 2 sekund na każdej minucie, gdy nie korzystamy ze skrótów klawiaturowych.

Daje to w roku bagatela 64 godziny stracone na manipulowanie tekstem jedynie przy użyciu myszki. Osobiście wydaje mi się, że liczbę utraconych ośmiu dni pracy można spokojnie pomnożyć przez dwa. Nierzadko jest tak, że przez brak używania historii komend, lub prawidłowego posługiwania się skrótami, tracimy dodatkowy czas na poprawianie źle przepisanych komend.

Jeszcze nie tak dawno, byłem bardzo zafascynowany ideą automatyzacji i wykonywania wszystkiego bez użycia myszki. Z czasem jednak moje obowiązki zawodowe zmieniły się na tyle, że programowanie nie było jedyną rzeczą, którą robiłem w ciągu dnia. Mimo wszystko pozostały mi pewne nawyki i warsztat, które sprawiają, że mogę zająć się tym, co rzeczywiście ważne.

Dla początkujących

Po pierwsze – Podstawowe skróty to must have.

Wydawałoby się, że skróty klawiaturowe znają wszyscy, zwłaszcza programiści prawda?

Bez względu na staż pracy w branży IT wielu osobom wciąż zdarza się wodzić myszką w poszukiwaniu ikony zapisu, albo kasować wszystkie znaki na drodze do poprawki jednego słowa używając backspace. Naprawdę warto porzucić stare nawyki i bez względu na przyzwyczajenia opanować następujące elementy:

W edytorach tekstu i kodu używaj

CTRL+S do zapisywania dokumentu odruchowo (wciąż za rzadko!)
CTRL+SHIFT+⬅ / ➡️ do zaznaczania słów i akapitów, które chcesz wyciąć lub skopiować
CTRL+ ⬅ / ➡️ do przemieszczania się między słowami (bardzo ważne – patrz Blokowa edycja). Skrót ten z powodzeniem działa w linii komend, dzięki czemu możemy poprawić sam błąd, bez kasowania reszty.

CTRL+Z jeżeli cofasz zmianę CTRL+Y jeżeli jednak chcesz ją przywrócić 🙂
Nie zapominaj o HOME oraz END aby przejść na początek lub koniec linii

W przeglądarce używaj

CTRL+A do zaznaczania tekstu w formularzach, których chcesz usunąć
CTRL+L do przechodzenia w pasek adresu i wpisywania nowej strony
CTRL+T oraz CTRL+W do otwierania i zamykania kart

CTRL+SHIFT+T do przywracania kart

Wyszukuj sensownie

Kiedy próbuję znaleźć rozwiązanie w google przede wszystkim
1) Zadaję pytanie po angielsku
2) Zawężam wyniki

Jeżeli mam błąd w najnowszej wersji kubernetesa, nie warto abym przeszukiwał zbiór rozwiązań z 2011 roku, prawda? Zaznaczenie opcji ostatni rok na prawdę potrafi czynić cuda, jeżeli chodzi o jakość odpowiedzi, których potrzebuję.

Korzystaj z dobrych narzędzi

Obecnie nie wyobrażam sobie pracy bez edytorów, które posiadają blokową edycję tekstu, albo umożliwiają mi szybki podgląd i zmianę korzystając z wyrażeń regularnych. Poniższe przykłady pochodzą z Visual Studio Code, ale każde szanujące się IDE powinno mieć ich odpowiednik.

Webdevelopment

Przede wszystkim pracuję z narzędziami, które od razu wskazują mi błąd i podpowiadają wynik. Edytor Visual Studio Code koloruje wszystkie składnie, zaznacza nieprawidłowo zamknięte znaczniki, a także pokazuje kolor atrybutów css.
Jeżeli robisz dużo prototypów html używaj emmet do szybkiego budowania struktury strony

Development

Blokowa edycja tekstu to naprawdę niesamowite udogodnienie, które pozwala mi poświęcać czas na myślenie, zamiast wykonywanie tej samej operacji wielokrotnie. W Visual Studio Code można to osiągnąć poprzez skórt ALT+CTRL+⬆ / ⬇. IntelliJ ma opcję Column Selection Mode zaś VIM ma swój nieco ograniczony odpowiednik w ramach Visual Block.

Co najważniejsze, w trakcie blokowej edycji działają najważniejsze skróty, można zaznaczyć całe słowa, niezależnie od ich długości, przeskoczyć na koniec każdej linii, ominąć średnik lub przecinek

FiraCode

Jeśli jeszcze nie znasz, po prostu zainstaluj font FiraCode i używaj go przy pisaniu kodu. Znacznie poprawia czytelność, zwłaszcza przy lambdach i javascript.

RegEx

Bardzo często stosuję wyrażenia regularne, gdy blokowa edycja kodu nie wystarcza. W zasadzie każde większe zadanie, które wymaga ode mnie zmian w wielu wierszach i kolumnach, takie jak edycja plików CSV, albo modyfikacja zagnieżdżonych elementów, jest przeze mnie wykonywana za pomocą wyrażeń regularnych.

Warto rozważyć także dodatki do naszego edytora, które pozwalają na swobodne nawigowanie po całym zestawie plików. W Visual Studio Code tę opcję zapewnia CTRL+P,  ReSharper oraz IntelliJ w zależności od ustawień CTRL+N lub CTRL+T

Zapisuj komendy jako skrypty

Generalnie, jeżeli przetestowałem jakiś zestaw komend, dosyć łatwo jest wyświetlić historię i przerzucić je do skryptów. O ile zadbam o sensowne nazwy i układa katalogów, raz wykonana praca, będzie wymagała jedynie drobnych poprawek.

Co więcej, skryptem jest nie tylko skrypt basha, ale także package.json lub Dockerfile. Proces budowania, lintowania, testowania, nie dość że funkcjonuje jako plik, który mogę wykonać w dowolnym momencie, to jeszcze z powodzeniem mogę się nim dzielić ze współpracownikami.

GIT

Koniecznie ustaw aliasy na najczęstsze komendy oraz używaj terminalu, który wskazuje aktualną gałąź (potrafi oszczędzić sporo nerwów i konieczności używania refloga).

Osobiście używam tylko tych 6 komend tworzonych przy pomocy git config alias
git st (git config.alias status)
git ci (git config.alias commit)
git cob (git config.alias 'checkout -b')
git up (git config.alias '!git stash && git pull && git stash pop')
git rbi (git config.alias 'rebase -i')
git pull

Poznaj linię komend i używaj jej prawidłowo

W Windows przede wszystkim nie korzystaj z ograniczonego cmd. Rozważ PowerShell albo dostępnego od wersji Windows 10 basha. Zarówno bash jak i powershell mają CTRL+R pozwalające wyszukiwać historię.

Oba terminale pozwalają także na łatwe zaznaczanie i wklejanie fragmentów komend.

Dodatki:

  • Przez jakiś czas dosyć mocno korzystałem z wtyczek ze składnią VIM do przeglądarek. Niestety część z nich ostatnio źle współpracuje z firefoxem na niektórych stronach, z których korzystam. Testuję głównie vimium.
  • Wcześniej używałem KeyPass do szybkiego i bezpiecznego kopiowania zarówno nazw użytkownika jak i haseł. Obecnie przerzucam się na standard GPG z pass storem.
  • Do synchronizacji kodu używam publicznego gita lub Bitbucket, który zapewnia darmowe repozytoria. Używając jednocześnie szyfrowanego rclone do synchronizacji pozostałych danych, mogę na każdej maszynie pobrać zaszyfrowany i zabezpieczony hasłem klucz ssh
  • Osobom, które bardzo często używają tych samych fragmentów tekstu polecam Ditto lub TextExpander. Zrezygnowałem z tego pierwszego, ponieważ trzeba dbać aby kolega zza biurka nie podejrzał hasła.
  • Chocolatey to bardzo dobry package manager dla Windowsa, który pozwala zaoszczędzić czas przy instalacjach. Paczki są sprawdzane pod kątem wirusów, ponadto nie trzeba przechodzić przez kilka stron z instalkami, aby postawić szybko swoje środowisko.
  • Miałem kiedyś plan aby trzymać stan lokalnego linuxa jako playbook ansible, ale zwykły shell okazał się łatwiejszy w codziennym użyciu
  • Jeżeli dłużej pracuję z Linuxem, nie wyobrażam sobie braku odpowiednio skonfigurowanego VIM oraz Tmuxa.
  • Do testów nowych aplikacji praktycznie zawsze wykorzystuję Dockera. Instaluję w ten sposób bazy danych, systemy agregacji logów, a nawet używam do uruchamiania pythona.

A jak wyglądają Twoje narzędzia i sposoby na optymalizację codziennych zadań? Chętnie dowiem się od Ciebie – daj mi znać w komentarzu!

Narzędzia wspomniane w artykule:

Animacje gif zostały utworzone przy pomocy https://www.screentogif.com/

Może Ci się również spodoba

4 komentarze

  1. KreatywnyDzokej pisze:

    Programuje 20 lat i mi tam wystarczy edytor z formatowaniem i podpowiadaczka. Kodu nie pisze na czas. Produktywności to żadnej nie zmieni bo nie z tego ona wynika u programisty. Klepanie literek to nie programowanie. Z mojego doświadczenia programiści którzy najbardziej naciskają na narzędzia i tego typu „triki” 😉 są słabi. Nie narzędzia czynią dobrym i produktywnym programista. Ja tam se pisze powoli mój kod. Małpim koderem nie jestem i wole zmienić branże niż nim być.

    • Marcin pisze:

      Zgodzę się z Tobą jedynie w części. To prawda, że kodu nie pisze się na czas, jednak ktoś kto traci czas na „ręczne” zmiany, nie ma tego czasu na inne sprawy (jak planowanie, testowanie itp.).
      Ponadto uwierz mi, wiele razy widziałem, jak brak stosowania narzędzi odbijał się na całej pracy programisty – od drobnych literówek przy przepisywaniu tekstu, po błędy „runtime” w językach takich ja python.Odbija się to także niekiedy na czystości kodu, gdy wprowadzenie jednolitej konwencji nazewniczej „zajmuje za dużo czasu”. 🙂
      Zatem skoro nie narzędzia czynią programistę naprawdę produktywnym – to nie czynią go także jak to określiłeś „słabym”, po prostu mogą pomóc tam, gdzie jest to potrzebne.

  2. Damian Płaza pisze:

    Uwielbiam Visual Studio Code, między innymi za możliwość instalowania pluginów. Mogę polecić dwa dodatkowe:
    1. jumpy – https://marketplace.visualstudio.com/items?itemName=wmaurer.vscode-jumpy
    2. atom keymap – https://marketplace.visualstudio.com/items?itemName=ms-vscode.atom-keybindings

    Pierwszy z nich pozwala na szybszą nawigację w kodzie.
    Drugi natomiast zmienia domyślne skróty klawiszowe na te, które są używane w edytorze Atom (wg. mnie są dużo bardziej naturalne, aczkolwiek mogłem po prostu się przyzwyczaić).

    Skróty klawiszowe to podstawa w pracy z komputerem (nie chodzi tylko o branże IT). Narzędziem pracy programisty jest klawiatura, więc umiejętność dobrej nawigacji przy użyciu klawiatury wg. mnie może być ogromnym bonusem, szczególnie przy wchodzeniu w stan „flow”.

    • Marcin pisze:

      Bardzo fajny komentarz pod kątem „flow” – rzeczywiście jest tak, że gdy poruszanie się po środowisku idzie płynnie, to reszta rzeczy też staje się płynna. Dzięki wielkie za dodatki. Przetestuję atom keymap, chociaż nie wiem, czy pozbędę się przyzwyczajeń 🙂

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.