Mam bardzo trudny czas koncentrując się na tym, co robię (programowo), gdy coś (kompilacja, czas uruchamiania itp.) Zajmuje więcej niż kilka sekund. Anegdotycznie wydaje się, że próg wynosi około 10 sekund (i przypominam sobie czytanie o badaniu, które mówiło to samo, chociaż nie mogę go teraz znaleźć). Więc zwykle dzieje się to, że dokonuję zmiany, a następnie uruchamiam program, aby go przetestować. Zajmuje to około 30 sekund, więc zaczynam czytać coś innego, a zanim się zorientuję, minęło 20 minut, a następnie zajmuje (jeśli mam szczęście!) Kolejne 10 minut, aby poradzić sobie z przełączaniem kontekstu na powrót do programowania .
Nie jest przesadą stwierdzenie, że niektóre rzeczy, które powinny zająć mi kilka minut, dosłownie zajmują godziny.
Jestem bardzo ciekawy, co robią inni programiści, aby zwalczyć tę tendencję (lub czy jestem wyjątkowy i nie mają takiej tendencji?). Sugestie wszelkiego rodzaju są mile widziane - wszystko, od „usiądź na rękach po naciśnięciu przycisku kompilacji”, po mentalne sztuczki, po „jeśli uruchomienie czegoś w celu przetestowania zmiany zajmie 30 sekund, to coś jest nie tak z twoim procesem rozwoju ! ”
źródło
Odpowiedzi:
Napisałem małe narzędzie wiersza polecenia o nazwie „alert”, które spowoduje, że komputer wyda sygnał dźwiękowy / odtworzy dźwięk / itd. Następnie, gdy mam długie polecenie do uruchomienia, takie jak a
make
, uruchamiammake; alert
. Tam, gdzie mogę, poproszę również o wzięcie argumentu, aby w zależności od argumentu wydawał inny dźwięk. W ten sposób mogę to zrobićmake; alert $?
i będę wiedział, że a) kompilacja jest zakończona, i b) przeszła pomyślnie lub zakończyła się niepowodzeniem. Nie musisz się tym zachowywać; wystarczy iecho -e "\a"
może wystarczyć.Jeśli chcesz być naprawdę fantazyjny / irytujący, użyj pakietu zamiany tekstu na mowę i uruchom okno dialogowe.
Główną ideą tutaj jest przerwanie rozproszenia, gdy tylko zakończy się zadanie związane z pracą.
źródło
MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
;
zamiast&&
. Twój drugi przykład zostanie uruchomiony tylkoshow_message
wtedymake
, gdy się powiedzie, co nie jest dokładnie tym, czego chcesz. Dla jasności: podoba mi się podany przez ciebie przykład, jestem wybredny co do szczegółów implementacji. ;)command; alert
a po zakończeniu otrzymasz alert na pulpicie, określając, które polecenie zostało zakończone. Naprawdę przydatne w przypadku długich kompilacji lub testów.Mam ten sam problem, a rozwiązaniem dla mnie było spędzanie czasu na robieniu czegoś, co cię nie wciągnie. Dla mnie zwykle jest to (1) napełnianie butelki z wodą lub (2) wstawanie i 30-sekundowy spacer po biurze, aby rozprostować nogi, które i tak potrzebują ruchu. Możesz zgubić się podczas przeglądania Internetu; rzadko gubisz się, chodząc po własnej kabinie.
źródło
Zrób coś dla swojego zdrowia:
Wstań, odejdź od komputera i wykonaj ćwiczenia rozciągające dłonie i ramiona. Zajmie to maksymalnie 2-5 minut. Twoje przyszłe ja, nie cierpiące na RSI, podziękuje ci za to.
Ponadto, jeśli chodzi o 2-5 minutową przerwę, zapoznaj się z techniką Pomodoro . Jest to oparte na pomyśle częstych krótkich przerw, aby oderwać się od bieżącego zadania i pozwolić, aby sprawy trochę się zapadły. Jest to wystarczająco krótka przerwa, aby nie stracić całkowicie myśli, ale wystarczająco długa, aby dać mózgowi wytchnienie.
źródło
Rozwój jest procesem twórczym. Nie możesz być ciągle produktywny, szczególnie jeśli w twoim biurze jest dużo zakłóceń. Dlatego test Joela sugeruje ciche warunki pracy.
Joel Spolsky wyjaśnia również , co to znaczy „nie być w strefie” . Za każdym razem, gdy coś uniemożliwia ci pracę, musisz poświęcić dziesięć minut, często więcej, aby wrócić do strefy i znów stać się produktywnym.
Istnieje wiele czynników rozpraszających:
Nie ma z tym nic wspólnego. Jedyne, co możesz zrobić, to usunąć same zakłócenia:
W twoim przypadku, jeśli to kompilator Cię rozprasza, spróbuj skrócić czas kompilacji przez:
źródło
Myślę, że to ja to powiem, ale powinieneś po prostu usiąść i poczekać, aż to się skończy.
Musisz się przekwalifikować, aby nie odczuwać potrzeby ciągłego działania i aktywnego działania. Jest to bardzo szkodliwy problem, który dotyka nie tylko programistów, ale wszystkich ludzi. Społeczeństwo ma obsesję na punkcie ciągłej stymulacji (wizualnej, dźwiękowej, mentalnej). Wygląda na to, że nikt nie może stać bezczynnie dłużej niż 30 sekund bez wyciągania telefonu i pisania SMS-ów, surfowania w Internecie, sprawdzania Facebooka itp.
Jeśli skompilujesz kompilację, a zajmie to około minuty, zastanów się, że to świetna okazja, aby po prostu usiąść i zrelaksować mózg. Oprzyj się pokusie zrobienia czegoś stymulującego i ciesz się chwilą braku aktywności.
Z czasem stanie się to łatwiejsze, a przekonasz się, że będziesz mieć o wiele lepsze doświadczenia zawodowe, gdy przestaniesz próbować utrzymać mózg na poziomie 100% przez cały dzień.
źródło
Zgadzam się z tym, co sugeruje @retracile, ale zauważ, że zgodnie z zasadami programowania Zen powinieneś skupiać się tylko na jednym zadaniu na raz. Odbieranie połączeń telefonicznych, przeglądanie Internetu, sieci społecznościowe, a nawet wykonywanie zadań wielozadaniowych najprawdopodobniej obniży Twoją wydajność. Wykorzystaj krótkie opóźnienie oczekiwania, aby pomyśleć o istniejącym zadaniu / rozwiązaniu i co możesz zrobić, aby je poprawić.
źródło
Do drzwi mam przymocowany pręt
Mogę wykonać tylko 5 podciągnięć, więc zajmuje to mniej niż minutę. Albo robię herbatę.
źródło
Dla mnie sposobem na skupienie się jest bezwzględność w utrzymywaniu czystej przestrzeni roboczej, niezależnie od tego, jaka to przestrzeń robocza może być. Wszystko, co nie jest częścią mojego obecnego projektu, to hałas w uświęconym stosunku sygnału do szumu. Istotną częścią utrzymania ostrości jest utrzymanie wysokiego stosunku sygnału do szumu.
Kiedy koduję, oznacza to zamykanie programów, których ostatnio nie używałem, regularne przycinanie kart przeglądarki i utrzymywanie pulpitu z dala od elementów, które nie są bezpośrednio związane z moimi bieżącymi projektami. Używam dziesięciosekundowych opóźnień do „rund”, że tak powiem - zamykania kart, zamykania programów, usuwania plików tymczasowych i archiwizowania tego, co należy zarchiwizować itp.
Przyzwyczajenie się do „robienia rund” pomaga również uniknąć śladów królików, ponieważ zmusza mnie do ciągłej oceny - i przypominania - o bieżących zadaniach.
Za ponowne otwarcie karty, którą już dziś otworzyłeś 5 razy, lub ponowne uruchomienie wiersza polecenia z podwyższonymi uprawnieniami po raz 15, trzeba zapłacić niewielką cenę, ale użycie akceleratorów takich jak skróty klawiaturowe może to zmniejszyć naprawdę bardzo niska cena.
źródło
Uważam, że pomaga śledzić faktyczny czas, który spędzam niepracując
Możesz użyć do tego dowolnej liczby rzeczy. Wiem, że istnieje wiele darmowych aplikacji, które możesz pobrać, aby to dla Ciebie zrobić (nie mogę teraz wymyślić żadnego z głowy, ale jeśli ktoś mi coś da, dodam je do tej odpowiedzi) lub bardzo łatwo jest stworzyć własny. Zwykle używam jednego, który stworzyłem, czyli małego okna w rogu ekranu z przyciskami
Working
/NotWorking
, i po prostu klikam to, na którym jestem, za każdym razem, gdy zmieniam fokus.Działa także zegar szachowy
Samo śledzenie twojego czasu sprawia, że jesteś bardziej świadomy tego, ile tracisz czasu, który powinieneś spędzić na pracy, i uważam, że to sprawia, że jestem bardziej produktywny, ponieważ zmuszę się do opuszczenia tego bardzo interesującego pytania dotyczącego przepełnienia stosu lub bloga artykuł i wróć do pracy
źródło
Aby utrzymać moją uwagę, używam doodli. Zawsze mam za klawiaturą długopis i notatnik i rysuję. Nie jest to nic innego jak zebranie kartki papieru bez żadnego znaczenia, ale utrzymuje moją uwagę wystarczająco wysoko i nie rozprasza mnie, więc mogę wrócić do tego, nad czym pracowałem.
Robiłem to przez całe życie nieświadomie, ale ostatnio znalazłem wiki na ten temat: http://en.wikipedia.org/wiki/Doodle
źródło
Cokolwiek robisz , nie wchodź na żadną stronę StackExchange. Wciągną cię :)
Mówiąc poważniej, przeglądanie Internetu w oczekiwaniu na ukończenie nie jest dobre dla wydajności (chyba że szukasz czegoś związanego z bieżącym zadaniem).
Zwykle wykonuję kilka drobnych zadań, które nie potrwają dłużej niż 1-2 minuty. (sprzątanie, pisanie komentarzy, notatek).
źródło
W twoim przypadku wstań i chodź trochę. Jeśli trudno jest wrócić do „strefy”, to prawdopodobnie dlatego, że jesteś za daleko. Robienie rzeczy w Internecie to tylko kolejna strefa, w której łatwo stracić poczucie czasu. Daj mózgowi przerwę, której wyraźnie pragnie i iść na spacer, wziąć czarodzieja, najlepiej w toalecie, lub porozmawiać z przypadkowym współpracownikiem. Robimy wiele rzeczy za kulisami na auto-pilocie. Przerwy nie są złe dla kodowania, są dobre, ale pomysł polega na tym, aby przestać strzelać na wszystkie cylindry na chwilę i zobaczyć, co wymyślą twoje palniki, podczas gdy bardziej świadoma część twojego umysłu odpoczywa. Dobrzy deweloperzy nie są ludzkimi kalkulatorami. Pozwól, aby części twojego mózgu, które wykonują wszystkie intuicyjne i dopasowane do wzorca rzeczy na autopilocie, zrobiły to przez chwilę.
Jeśli nie jest to tylko problem z kodowaniem, możesz rozważyć dodanie.
źródło
Sugestie, aby wstać i spacerować itp. Są dobre, jeśli twoje cykle są długie (około godziny). Ale kiedy czasy cykli się skracają, a ja co chwila miotam się między vimem i robię co kilka minut, wtedy pozostaję w strefie, pozostając w kolejce: podczas gdy kompilacja lub zestaw testowy jest uruchomiony, zwykle wracam i przejrzyj kod, a następnie zacznij pracę nad kolejnym fragmentem, który i tak bym zrobił, jeśli kompilacja lub testy się powiodą.
źródło
Na początku każdego dnia zaplanuj, jak wykorzystać ten „wolny czas”. Może to obejmować
lub cokolwiek innego naprawdę.
Niech to dodatkowe zadanie będzie zawsze otwarte w oknie gdzieś na pulpicie. Gdy tylko naciśniesz przycisk „kompiluj” (lub cokolwiek innego, co zajmuje ci więcej niż 30 sekund), przełącz się na drugorzędne zadanie i poświęć wystarczająco dużo czasu, aby przejść dalej, co może potrwać kilka minut, lub może być mniej.
Kiedy wykonujesz drugorzędne zadanie, pamiętaj, aby nie skupiać się na mózgu. Myśl o programowaniu. To nie jest łatwe; nadal będziesz cierpieć z powodu zmiany kontekstu częściej niż nie.
Jeśli to zrobisz, nawet jeśli wiele razy stracisz kontekst, stracony czas nie jest rzeczywiście straconym czasem i masz coś do pokazania na koniec dnia. Ale najważniejsze jest zaplanowanie na początku dnia, jakie będzie drugorzędne zadanie tego dnia.
źródło
Przypuszczam, że możemy wykorzystać czas kompilacji do udokumentowania kodu, czyszczenia kodu, odpowiedniego wyrównania kodu, abyśmy nie odeszli od IDE i nadal poprawiali jakość kodu.
źródło
Zazwyczaj w międzyczasie staram się poszukać błędów, literówek lub sposobów na ulepszenie stylu kodu. To sprawia, że patrzę na kod, ale nie (zawsze) rozprasza mnie coś interesującego. Także to !
źródło
Możliwe, że masz trochę ADHD. Wiele osób tak robi. Mechanizmy radzenia sobie są podane w innych odpowiedziach (lub ewentualnie lekach).
źródło
W ciągu tych 10-30 sekund idź i zrób coś:
W tym czasie nie rób rzeczy, o których wiesz, że zajmie ci to dużo czasu (chyba że możesz sobie pozwolić na spędzenie czasu), takich jak:
Nie instaluj też alarmów dźwiękowych sygnalizujących zakończenie kompilacji. Twoi koledzy to docenią.
źródło
Jeśli chodzi o rozrywkę w Internecie podczas pracy, sugeruję wtyczkę Pomodoro, jeśli używasz Google Chrome
Osobiście uważam, że nie możesz być produktywny przez cały czas pracy! ponieważ kompilujesz, oznacza to, że dołożyłeś wystarczających starań, aby wziąć oddech ... aby nie nadużywać ani wyjść z kontekstu, zastanowić się nad następnym krokiem, jeśli kompilacja nie generuje błędów ... Lub wyczyść swoją pracę obszar: Pulpit, Tabs, Explorer ...
źródło
To, co opisujesz, jest całkowicie normalne.
Kiedy robiliśmy badania użyteczności, patrzyliśmy na opóźnienia według rzędu wielkości. Kiedy użytkownik klika przycisk, jak długo musi czekać?
Istnieje wiele wyjątków, takich jak operacje złożone, takie jak pisanie.
Podczas wykonywania zadań związanych z wydajnością często zadawaliśmy pytanie „jak szybka powinna być operacja X?” Odpowiedź brzmi: tak długo, jak użytkownik może dostrzec opóźnienie, lepiej byłoby szybciej.
W twoim przypadku osiągasz próg 10s, a twoja uwaga odpływa. Najlepsze, co możesz zrobić, to zmniejszyć opóźnienie. Im krótsze opóźnienie, tym większa produktywność. Wyobraź sobie, że masz kod po lewej stronie ekranu, a uruchomioną aplikację po prawej. Podczas edycji kodu aplikacja zmienia się w czasie rzeczywistym. Dopóki tam nie będziesz, masz miejsce na poprawę.
Zobacz także najnowszy post Jeffa (mnóstwo dobrych treści, do których prowadzi): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html
Jeśli zamierzasz przejść na coś innego, wybierz coś, co nie angażuje twojego mózgu w taki sam sposób jak praca, którą wykonywałeś. Oczyść biurko, medytuj, rozciągaj, pompki, dzieła sztuki, wyjrzyj przez okno.
źródło
Podczas wykonywania pracy ad hoc w SAS uważam, że następujący wiersz jest bardzo przydatny:
Powoduje to wyświetlenie wyskakującego okna dialogowego po zakończeniu wykonywania całego poprzedniego kodu. Jestem pewien, że istnieją odpowiedniki w innych językach. Umieściłbym to jako komentarz do odpowiedzi retracila, ale nie mam wystarczającej reputacji.
źródło