Całkowicie się nie zgadzam, gdy ludzie mówią „tak, wielozadaniowość jest normalna”
To nie jest normalne! Wcale nie jest to bardzo nienaturalne, że programista może wykonywać wiele zadań w kilku projektach (wyjaśnię to później). Z drugiej strony wielozadaniowość jest bardzo powszechna wśród programistów. To zdecydowanie coś, do czego powinieneś się przyzwyczaić. Tak więc prawdziwa odpowiedź na twoje pytanie brzmi: jak wykonywać wiele zadań?
Przede wszystkim nie powinieneś po prostu akceptować swojego losu, ponieważ „jesteś tak doskonałym pracownikiem”, a to oznacza, że musisz podjąć więcej zadań niż jesteś w stanie wykonać. Wcale nie. Czasami ludzie mają wiele zadań, ponieważ nie ma nikogo innego. Czasami menedżerowie nie mogą obsłużyć swojej pracy, więc delegują zadania, wymuszając wielozadaniowość w swoim zespole, ponieważ nie potrafią właściwie obsłużyć harmonogramu projektu. Dlatego zdecydowanie powinieneś spróbować ustalić, czy jesteś proszony o wielozadaniowość, ponieważ jest to część twojej pracy lub dlatego, że inni ludzie są niekompetentni. Tak czy inaczej, możesz sam ocenić, czy jest to do przyjęcia, czy nie. Jeśli nie czujesz się komfortowo [w pracy], są inne miejsca, w których możesz znaleźć pracę. [Ty, deweloper, jesteś towarem. Pracodawcy wiedzą o tym i modlą się, abyś nigdy tego nie rozumiał.]
Jeśli chodzi o wielozadaniowość, nie zgadzam się w 100%, gdy ludzie mówią „tak, po prostu przełączaj się tam iz powrotem i upewnij się, że robisz tyle samo przy każdym projekcie”. Przepraszam, ale to bardzo zła rada.
Najpierw musisz zdać sobie sprawę z tego, jak działa mózg, gdy tworzysz oprogramowanie (wiem, że wiążą się z tym inne zadania, ale skupmy się na tym). Najpierw musisz „podłączyć się”, co oznacza, że musisz się dużo skoncentrować i ustawić umysł w pozycji, w której masz wszystko zmapowane w głowie. Wszystkie nazwy zmiennych i metod, przepływ pracy twojego kodu, model obiektowy, wątki idące obok siebie, wszystko. Zazwyczaj zajmuje mi to 15, 20 minut, aby dostać się do strefy.
Kiedy dojdziesz do tego stanu, naprawdę lecisz i piszesz kod, jakbyś jeździł na rowerze. W chwili, gdy zostaniesz przerwany, możesz wszystko stracić. Jeśli przerwa jest wystarczająco długa (5, 10, może 30 minut), stracisz ten stan umysłu i będziesz musiał zacząć wszystko od nowa.
Wielozadaniowość jest więc okropna, ponieważ zmusza cię do opuszczenia „strefy” i przejścia do czegoś innego. Jeśli ciągle się zmieniasz, oznacza to, że nie jesteś produktywny, ponieważ za każdym razem, gdy zmieniasz się na nowe zadanie / projekt, musisz stracić 15-20 minut na ponowne wejście do strefy (nie wspominając o tym, że powoli topi mózg).
To jak wielowątkowość: w pewnym momencie koszt przełączania kontekstu wątku co kilka cykli jest zbyt wysoki, więc procesor spędza więcej czasu na przełączaniu kontekstów niż na wykonywaniu rzeczywistych zadań.
Bardzo polecam przeczytanie artykułu Joela Spolsky'ego na ten temat:
http://www.joelonsoftware.com/articles/fog0000000022.html
Więc moja rada: spróbuj nauczyć się (nie) wielozadaniowości, ponieważ jest to naprawdę powszechne. Ale upewnij się również, że czujesz się komfortowo. Niektóre osoby mogą poświęcić więcej czasu na koncentrację i cierpią bardziej niż inne, gdy wykonują wiele zadań; i to też jest w porządku. Nie dlatego, że często uważa się to za normalne.
Joel dobrze to ujął, gdy powiedział:
W rzeczywistości prawdziwa lekcja z tego wszystkiego jest taka, że nigdy nie powinieneś pozwalać ludziom pracować nad więcej niż jedną rzeczą na raz. Upewnij się, że wiedzą, co to jest. Dobrzy menedżerowie postrzegają swoją odpowiedzialność za usuwanie przeszkód, aby ludzie mogli skupić się na jednej rzeczy i naprawdę to zrobić.