Dużo rzeczy potrafi wyrwać mnie z pracy i pochłonąć. Muzyka, rozmowa, filmiki, śmieszne obrazki, oferta nowego samochodu i tym podobne.
Nie ma w tym nic złego, o ile zdołasz zachować laserowy fokus w czasie, kiedy programujesz :)
Najlepiej jest moim zdaniem pracę dzielić na bardzo krótkie odcinki. Masz zadanie, które zajmie ci kilka dni, to zamiast myśleć o całym zadaniu to myślisz o "kolejnej rzeczy do zrobienia, która przybliży cię do celu".
Np. zaczynasz projekt, to musisz założyć repozytorium Gita, więc nawet jak oglądasz śmieszne obrazki, to i tak musisz się zmobilizować na tyle, żeby założyć nowy folder i zrobić "git init". I już jest jakiś progres.
A potem tak samo. Myślisz, co robisz w następnej kolejności. Masz zrobić złożony moduł, to go nie robisz w całości, tylko myślisz o konkretnych problemach - tak konkretnych, że jesteś je w stanie zrobić w bardzo krótkim czasie (dla mnie to jest między 5 a 120 minut, ale tak zwykle 40-60 myślę)*
Wtedy robisz coś, a potem wracasz do rozrywki, aż poczujesz w sobie potrzebę "obowiązku", że jednak ta rozrywka trwa za długo i powinieneś coś zrobić pożytecznego.
Czyli zamiast
Pracuję -> Nie chce mi się pracować -> Rozrywka -> Wyrzuty sumienia -> Praca
(I spadające poczucie wartości z powodu, że jesteś leniwy i za dużo czasu spędzasz na rozrywce)
To przestań pracować a zacznij rozwiązywać problemy, mini-taski:
Rozwiązuję problem X -> Hurra! Osiągnięcie -> Rozrywka -> Poczucie obowiązku -> Rozwiązuję problem Y
i tak dalej. I wtedy czujesz jednocześnie poczucie osiągnięcia, jak i to, że jesteś obowiązkowy, skoro potrafisz oderwać się od rozrywki.
Na podobnym rytmie pracy opiera się też technika Pomodoro, chociaż moim zdaniem Pomodoro jest zbyt sztywne i zbyt uzależnione od czasu. Ja tam wolę pracę uzależniać od konkretnych problemów, a nie na tym, że 25 minut minęło.
*w tym wszystkim jest pewna pułapka - nie zawsze wszystko jest oczywiste. Nie zawsze jest tak, że wiesz co masz robić i klepiesz "kolejną rzecz". Czasem musisz przemyśleć całe zadanie, sposób podejścia do implementacji, architekturę itp. I tego, w przeciwieństwie do programowania, często nie da się zamknąć w określonym czasie, czy nawet miejscu - w takich sytuacjach myśli mogą cię najść w kiblu czy w autobusie. A na rozwiązanie problemu możesz wpaść w 5 minut, albo dopiero po roku najdzie cię refleksja typu "gdybym miał robić ten projekt od zera, to zrobiłbym go kompletnie inaczej"
po prostu czasem trzeba przystanąć i przestać zarówno zapieprzać jak i poddawać się rozrywce, a zacząć myśleć