Ciekawe materiały dotyczące metodyki pracy

0

Hej,
ostatnio naszła mnie chęć i potrzeba, by w jakiś sposób zoptymalizować swoją metodykę pracy. Usprawnić proces analizowania problemu, implementacji rozwiązania itd. Często brnę w jakąś ślepą uliczkę i marnuję czas na drążenie w miejscu, które okazuje się nietrafne. Czy znacie jakieś ciekawe i wartościowe artykuły dotyczące usprawniania performance'u w pracy

3

Pytanie jest tak ogólne, że trudno cokolwiek polecić.

Jeżeli chodzi o "część techniczną", to jest wiele obszarów do rozpatrzenia. Ile masz monitorów — niektórzy radzą sobie z jednym, ja pracuję wydajnie dopiero z trzema. Tak samo z wirtualnymi pulpitami — niektórym wystarczy jeden i ciągle przełączają się między aplikacjami, ja mam 10 i context switch jest u mnie o wiele szybszy i tańszy. Rozważ jakieś tiling managers. Zrób sensowne skróty klawiszowe, dobrą konsolę, nieinwazyjne powiadomienia z komunikatorów/maili itp. Naucz się narzędzi (porządnej obsługi IDE bez myszki, core utilsów itp). A przede wszystkim zagadaj do znajomych z zespołu i zapytaj, jak robią te same zadania, co i Ty — być może znaleźli lepsze sposoby i nie będzie trzeba wyważać drzwi od nowa.

Jak chodzi o "część koncepcyjną", to tutaj wszystko rozbija się o wiedzę i doświadczenie. Naucz się bebechów swojego systemu operacyjnego, języka, platformy, tak żeby prezentacje "internals of ..." na konferencjach były dla Ciebie nudne. Dopiero jak będziesz w stanie łączyć wiedzę z różnych obszarów (i na przykład bez googlowania porównać GC w javie, dotnecie, haskellu i lispie), to zauważysz, że nie musisz myśleć nad problemami, bo po prostu "wiesz", jak się je rozwiązuje. Tu fajnym testem jest zdekompilowanie cudzego kodu i zgadnięcie, gdzie znajduje się jakiś element — jeżeli od razu "widzisz", gdzie on powinien być, to sugeruje to, że masz już sporo doświadczenia w przemyśle.

Jak chodzi o "część organizacji pracy", to pewnie Getting Things Done da dobry wstęp. Kluczowe jest odciążenie umysłu, żeby w podświadomości nic się nie działo. Musisz wypracować system, gdzie nie będziesz wykonywał żadnej "emotional labour", którą może za Ciebie wykonać komputer. Wszelkiej maści "pamiętanie o…" trzeba zepchnąć na maszynę i przejść z trybu "pull" na tryb "push". Przykładowo maile — zamiast myśleć o tym, że musisz sprawdzić pocztę, to skonfiguruj wszystko tak, żeby poczta sprawdzała się sama i dodawała powiadomienia tam, gdzie będziesz je mógł sprawdzić trywialnie w ułamku sekundy. Potem dodaj do tego komunikator, powiadomienia z fejsbuka, for dyskusyjnych i całej reszty. Przy czym kluczowe jest tutaj, aby te powiadomienia czekały na Ciebie i nie zawadzały — zazwyczaj lista powiadomień na telefonie tego nie spełnia, bo wtedy wszystkie są wymieszane do kupy i nie wiesz, które są ważne, a które można zignorować. Przykładowo dobrym pomysłem może być tu wpięcie fejsbuka w RSS-y — przy przeglądaniu prasówki rano możesz też przelecieć szybko powiadomienia od znajomych w czytniku RSS i po sprawie, nie odrywa Cię to od pracy, nie wymaga pełnego skupienia. Jednocześnie jak dzieje się coś "ważnego", to ciągle możesz mieć powiadomienie push czy inne. Ja na przykład wszystkie nieważne powiadomienia wrzuciłem w RSS-y, wszystkie średnio ważne powiadomienia w komunikator, a dopiero te najważniejsze w SMS-y lub powiadomienie push. Ważne jest, żeby wyeliminować procesy powtarzalne — na przykład jeżeli codziennie sprawdzasz wyniki sportowe i robisz to ręcznie, to zautomatyzuj, żeby same przyszły na komunikator — wtedy umysł nie musi o nich pamiętać. Tu dochodzi też kwestia robienia notatek, kanbanów, karteczek, ale to każdy musi wypracować sobie własny system.

Dalej dochodzimy do optymalizacji na wyższym poziomie, której nie da się łatwo ubrać w reguły "to rób" a "tego nie". Przede wszystkim musisz mierzyć, mieć codzienne notatki ze swojej pracy (ile spędziłeś nad każdym zadaniem, co dokładnie zrobiłeś itp), potem co jakiś czas musisz zrobić statystyki i spróbować ustalić, czy jest obszar, który dałoby się poprawić. Mierzenie jest tak naprawdę kluczem, jak uświadomisz sobie, ile czasu marnujesz codziennie na głupoty, to nagle znajdziesz sposoby na optymalizację. Dobrą metodą jest też wzięcie na siebie więcej, niż wydaje się, że można udźwignąć — jak człowiek ma mniej czasu, to paradoksalnie nagle ma go więcej.

1

U mnie sprawdza się:

  1. Jeśli robisz rzeczy wymagające projektowania nie rób tego bezpośrednio przy komputerze. Tak się składa, że mózg ma dwie połówki, gdzie uwaga tylko jedna połówka może na raz dojść do głosu. Ta pierwsza jest spoko gdy chcesz się skupić na obróce kodu, natomiast ta druga działa inaczej, odpowiada na zadane pytania i dokonuje selekcji, szuka wzorców, aby znaleźć odpowiedź na zadane pytanie.

Aby przełączyć się wystarczy robić coś co nie wymaga myślenia sprzątanie / prysznic / ogródek :D /, ale też i sen jest bardzo pomocny. Oczywiście, aby łączenie wzorców miało sens mózg trzeba karmić informacjami.

  1. Jak każdy notuję spadki i zwrosty skupienia w kodzie. Najczęściej wzrost jest wtedy gdy mam bardziej przewidywalny kod np. dobrze dobrane nazwy, czyste funkcje, izolowane efekty uboczne, właściwie dobrne abstrakcje.

Spadki notuje, gdy muszę podejmować decyzje w obrębie paru warstw na raz. Także tak sobie dzielę pracę, abym nie musiał jednocześnie robić wszytkiego na raz, a zamiast tego bardziej zawieszam się na jakiejś warstwie.

  1. Obok przewidywalności bardzo pomocne są interaktywne narzędzia. Ja używam Clojure + repl i mogę w trakcie działania programu uruchamiać wybrane partie kodu, mogę zmieniać je od środka mając zachowany stan. Jest to podobne do hot reloadingu jaki jest np. we fluterze z tym, że mogę programowo wpływać na bieżący stan programu poprzez wywoływanie funkcji. Fajna rzecz jeśli pracuje się na danych, albo jeśli robisz rzecz z naciskiem na wygląd (np. stronki, okna, gry). Obok REPL stosuje też REBL jest to przeglądarka danych, która nasłuchuje na dane z poziomu REPL. Daje wgląd do danych, różne widoki i trzyma ich historię.

1 użytkowników online, w tym zalogowanych: 0, gości: 1