Jak wytłumaczyć laikowi, dlaczego programista nie powinien być przerywany, gdy szyje kodowanie? [Zamknięte]

92

Jeśli weźmiesz pod uwagę drugą część mojego pytania: „Dlaczego deweloper nie powinien być przerywany, gdy szykuje się głębokie kodowanie”, to wiele razy dyskutowali o tym mądrzy ludzie. Heck, nawet współzałożyciel SO, Joel Spolsky, napisał post na blogu o „dostaniu się do strefy” i „byciu wykluczonym ze strefy” oraz o tym, dlaczego osiągnięcie produktywności zajmuje średnio 15 minut, biorąc udział w kompleksie, zadania związane z tworzeniem oprogramowania. Myślę więc, dlaczego ustalono.

Interesuje mnie to, jak wyjaśnić to wszystko komuś, kto nie zna fasoli o Fasoli (khmm, mam na myśli tworzenie oprogramowania). Jak powiedzieć żonie, zabawnemu facetowi z księgowości w miejscu pracy lub długoletniemu przyjacielowi, który co 30 minut wysyła pingi do Skype'a „Wazzzzzzup ?!”, że wszystkie zakłócenia mają o wiele głębszy wpływ na twoją pracę niż oczywiste 30 sekund, które zajęli ci czas. Oczywiście nie można tego wytłumaczyć zdaniami typu: „Muszę żonglować wieloma nazwami zmiennych w mojej pamięci krótkoterminowej”, chyba że chcesz być celem pustych spojrzeń lub przyjaznych nadużyć.

Chciałbym być w stanie wyjaśnić to wszystko nie-programistom w sposób, który pozwoli im jasno zrozumieć - bez obraźliwego, elitarnego lub zbyt technicznego.

EDYCJA: Dziękuję wszystkim za ich świetne spostrzeżenia. Zaakceptowałem odpowiedź EpsilonVector, ponieważ jego analogia była najbliższa moim pierwotnym potrzebom. Wyjaśnienie „zasypiania” nie jest ani obraźliwe ani techniczne, prawie każdy może się do niego odnosić, a konsekwencje zakłócania się podczas zasypiania lub przebywania w strefie są bardzo podobne: doświadczasz frustracji i „tracisz” 15-20 minut czasu.

András Szepesházi
źródło
36
Niech zaczynają się od 0 i liczą do bardzo dużej liczby, w połowie krzyku ! wiewiórka!
Tim Post
8
Z pewnością odpowiednie dla większości zawodów, spróbuj zatrzymać chirurga w połowie przepływu.
ozz
24
wysiąść na skype w pracy.
Josh
6
„nie będąc obraźliwym”, wiedziałem, że gdzieś jest haczyk. :)
biziclop,
7
@Josh W pracy używamy Skype do komunikacji między biurami. Potrzebujemy go otworzyć. Mam osobne konto służbowe, ale nadal napotykasz te problemy.
Matthew Scharley,

Odpowiedzi:

124

Wypróbuj następujące analogie: Pierwsza: „Ile czasu zajmuje zasypianie?” „X minut” „Teraz wyobraź sobie, że kiedy jesteś bliski zaśnięcia, ktoś wchodzi i przeszkadza ci, ile czasu zajmie ci teraz zasypianie? Te kilka sekund, które mi pozostały, czy będziesz musiał zacząć od nowa, aby„ zatonąć z powrotem „tam, gdzie byłeś?” „Będę musiał zacząć od nowa” „Świetnie. To samo. Podobnie jak zasypianie, zajmuje mi trochę czasu, aby„ zapaść się ”w tryb ustawiania ostrości, a powrót do niego zajmuje trochę czasu, gdy mi przeszkadza, poza tym, że zapominam też o połowie tego, co robiłem. ”

Drugi: „Wiesz, kiedy czytasz książkę,„ w nią grzęźniesz ”- po chwili nawet nie zauważasz już słów, blokujesz wszystko wokół siebie i całkowicie zanurzasz się w obrazach mentalnych zobaczysz." "Tak." „Ile czasu zajmuje ci dotarcie?” „Około X minut” „Teraz wyobraź sobie, że gdy jesteś zanurzony w książce, ktoś wchodzi i przeszkadza, ile czasu zajmie ci powrót do tego? Czy to się stanie natychmiast, czy będziesz musiał zacząć od nowa zatonąć z powrotem „tam, gdzie byłeś?” „Będę musiał zacząć od nowa” „Świetnie. To samo. Podobnie jak w przypadku czytania, zajęło mi trochę czasu, aby„ zatonąć ”w trybie ostrości, jest to tak samo denerwujące, gdy ktoś mnie z tego wyrywa,

EpsilonVector
źródło
14
+1 doskonała, doskonała, szczególnie ta „zasypiająca”. Dokładnie takie wyjaśnienie, którego szukałem.
András Szepesházi,
1
Może nic nie poradzę - Mogę zasnąć od razu normalnie spać ...
Armand
1
@Alison, o której nie wiem, nie może, ale jest mnóstwo ludzi, którzy nie czytają, a zatem nie mogą odnosić się do drugiego punktu.
Matthew Scharley,
3
Uwielbiam zasypiającą metaforę, ale nie będę jej używał do wyjaśnienia mojej pracy mojej żonie w najbliższym czasie! ;>
dthorpe
7
Don't Wake Up the Programmer alexthunder.livejournal.com/309815.html
Chris Nava
30

Nie sądzę, aby stan zadumy opisany przez Joela był techniczny. Jest to ta sama zmiana dla prawego mózgu, której doświadcza każdy, gdy rysuje lub wpada pod urok naprawdę dobrej książki. (Betty Edwards „Rysowanie po prawej stronie mózgu” doskonale to opisuje.) Każdy doświadczył tego poczucia koncentracji, gdy nie jesteś świadomy upływu czasu.

Myślę, że protekcjonalne od samego początku jest wyobrażenie sobie, że jest to coś, co rozumieją tylko ludzie techniczni, że koncepcja ta musi zostać stępiona, aby osoby nie będące programistami zrozumiały. Po prostu wyjaśnij prostym językiem - zrozumieją.

duffymo
źródło
17
Z mojego doświadczenia wynika, że ​​niekoniecznie muszą to rozumieć - mogą zaakceptować to jako fakt, ale nadal nie mogą się z tym odnosić. Dla większości ludzi, których znam, praca jest po prostu pracą, którą można zawiesić lub kontynuować w dowolnym momencie.
3
Nie ludzie, z którymi rozmawiam. Z mojego doświadczenia wynika, że ​​każdy, kto wykonuje pracę wykonującą zadania inne niż rutynowe, byłby w stanie doskonale się odnosić. Może rozmawiasz ze zbyt wieloma osobami wykonującymi zadania na pamięć.
duffymo,
3
@duffymo: Hmm. Nie uważam sprzedawcy, który pisze spersonalizowaną ofertę dla klienta wykonującego zadanie rote. Jeśli jednak mu przeszkadzam, straci maksymalnie pół minuty, zanim wróci na właściwe tory. Właśnie to miałem na myśli - większość zadań jest znacznie łatwiej zawiesić / kontynuować niż nasza. MOIM ZDANIEM.
5
To zależy od tego, ile stracisz stanu. Programiści zwykle muszą utrzymywać cały stan programu w głowie podczas kodowania, ale inne zawody, które wymagają więcej pisania, utrzymują stan na tworzonym przez siebie dokumencie. Który stan jest łatwiejszy do przywrócenia?
Michael K
2
Myślę, że wiele zależy od tego, czy dana osoba faktycznie doświadcza stanu przepływu podczas swojej pracy (lub w czasie wolnym). Jeśli kiedykolwiek to zrobią, lepiej zrozumieją, co mamy na myśli.
Péter Török,
23

Przekieruj swój wewnętrzny wątek do werbalnego IO, tj. Odwróć się, gdy będą ci przeszkadzać, i wciąż mamrocząc kod i patrząc w środkową odległość, dopóki się nie poddadzą i odejdą. Jeśli mówią, po prostu mamrocz głośniej.

Piotr
źródło
16
LOL jest to dobre, ale z pewnością prowadzi do rozwodu, jeśli przerywającym jest żona.
András Szepesházi,
Jest to zdecydowanie szybsze i bardziej skuteczne podejście! : P
Robin Maben,
16

Powiedz im, że kodowanie (lub wstawienie tutaj innej aktywności o wysokim stężeniu) jest jak bycie wykonawcą cyrkowym, który działa na wirujących płytkach .

Najpierw zacznij od zakręcenia jedną płytką na patyku, zacznij kręcić, a następnie zacznij kręcić drugą płytką, zacznij kręcić, wróć do pierwszej płyty, daj jej trochę dodatkowego obrotu, aby ją utrzymać, a następnie zacznij kręcić trzecią płytą , uruchom go, a następnie wróć do drugiej płytki, trochę dodatkowego wirowania, pierwszego dodatkowego wirowania, trzeciego dodatkowego wirowania, a następnie zacznij wirować czwartego itp.

Następnie telefon dzwoni i wszystkie płyty spadają.

Stan przepływu zniknął. Teraz musisz zacząć wszystko od nowa. Uzyskaj jeden talerz obracający się ...

Lubię myśleć o każdej płycie jako kawałku danych, zmiennej, koncepcji, stanu itp., Które musisz zachować w swojej głowie.

Wyczerpanie
źródło
13

Kilka miesięcy temu ktoś wszedł do mojej kostki i wyciągnął moje słuchawki douszne podczas kodowania. Pomijając wewnętrzną furię, moje podejście polegało na wyjaśnieniu, że często programiści pogrążeni są w logicznej myśli, która wymaga innego i skoncentrowanego podejścia do myślenia i że nagłe przerwanie może naprawdę zakłócić proces myślenia. To się nie powtórzyło od tej osoby, więc może zadziałało. Inną rzeczą, którą możesz wziąć pod uwagę, jest znak „zajęty / wolny”. Mam przyjaciela, który robi algorytmy, a on ma dwustronny znak, który z jednej strony mówi „Kodowanie - nie przerywaj”, az drugiej „Wolny czat”. Kluczem jest tutaj usunięcie niejasności.

n1reu
źródło
16
Dopóki pozostawiasz stronę „Free to Chat” w rozsądnym czasie. Jeśli strona „Nie przeszkadzać” jest zawsze podniesiona, równie dobrze możesz nie mieć znaku ...
Dean Harding
4
Wygląda na to, że byłoby denerwujące, ponieważ musiałem cały czas odwracać znak.
Nikt
3
Możesz mieć Myślącą Czapkę zamiast znaku. Za każdym razem, gdy masz na sobie Myślącą Czapkę, ludzie nie powinni ci przeszkadzać.
Ant
3
Czy „Free to chat” nie sugeruje (menedżerom): „Nie mam dość pracy do wykonania”?
badgerr,
8
W moim miejscu pracy naszym nieudokumentowanym wskaźnikiem „w strefie” jest obecność słuchawek. Szef powiedział: „nawet jeśli niczego nie słuchasz, załóż je, jeśli się koncentrujesz. Przyjmiemy, że jesteś zajęty”.
JYelton,
12

Ok, dodaję własną odpowiedź (wiem, że to trochę dziwne, ale może rzuca dodatkowe światło na to, do czego dążyłem).

Powiedziałem komuś, kto mi ostatnio przeszkodził w złym momencie: „Opracowywanie oprogramowania jest jak jazda samochodem po bardzo ruchliwej drodze po raz pierwszy w życiu. Cała uwaga skupiona jest na kierownicy, pedałach i samochodach pędząc wokół ciebie i po prostu nie masz dodatkowej uwagi na fajną pogawędkę. Jeśli zaczniesz skupiać się na tym, o czym jest czat, na pewno stracisz kontrolę nad samochodem i skończysz wypadek".

To było coś, z czym osoba może się odnosić, ale nie jest to dobra analogia. Jeśli dostanę przerwę, konsekwencja będzie zupełnie inna niż wypadek. Zajmuję się programowaniem SW od dwóch dekad, więc dlaczego porównuję to do czegoś, co jest robione po raz pierwszy. I tak dalej.

András Szepesházi
źródło
1
To dobra analogia. Wystarczy usunąć część „za pierwszym razem” i podkreślić, że jest to bardzo ruchliwa droga, z dużą ilością skrzyżowań, sygnalizacji świetlnej, ciężarówek i rowerów i to wszystko. Zwłaszcza, że ​​skrzyżowanie jest dobre do przedstawienia wszystkich decyzji, które musisz podjąć, nie zawsze wiedząc, co może trafić samochód za zakręt.
Goran Jovic
Nie sądzę, że jest to dobra analogia i myślę, że sam to przyznajesz, ale jeśli skłoni to ich do szanowania twojego czasu rozwoju, użyj go.
Bernard,
To nie jest złe.
Marcie,
4
Dodaj tylko, że z tyłu jest już troje krzyczących dzieci, które starasz się zignorować (wszystkie twoje naturalne rozproszenia).
Benjol,
7

Mihaly Csikszentmihalyi on flow ” to dobra dyskusja TED na temat tego, jak być naprawdę produktywnym w pewnych warunkach, które mogą, ale nie muszą, przemawiać do ludzi. Nie zapominaj, że dla niektórych osób mogą nigdy nie chcieć zrozumieć wyjaśnienia, dlatego jest to coś w rodzaju rekurencyjnego bicia martwego konia w nieskończoność.

JB King
źródło
+1 Byłem w trakcie pisania odpowiedzi na Flow: en.wikipedia.org/wiki/Flow_%28psychology%29
StuperUser
+1 Oprócz dobrego odniesienia do przepływu uważam, że część „bicia martwego konia rekurencyjnie ad infinitum” jest po prostu zabawna.
András Szepesházi
4

Nazywam to transem programistów. Jest tu wiele dobrych analogii, więc co jeszcze? Jak powiedziano wcześniej, programista będzie mentalnie poruszał się po kilku różnych przepływach logicznych, aż pojawi się właściwy. Następnie zostaje zapisany w kodzie i zapisany na komputerze.

Powiedzmy, że piszesz papier terminowy lub ważny dokument. Myśli płyną w słowa do komputera, ale zmiany nie zostały jeszcze zapisane. Potem kupa, moc się wyłącza lub komputer ulega awarii. Odzyskanie tego wszystkiego zajmie tak długo lub dłużej i nigdy nie będzie takie samo jak oryginał. (Ilu z nas, starych zegarów, miało to TO?)

Tak dzieje się z kodem w twojej głowie, gdy zostanie przerwany. Myśli są delikatne jak dym. Jeśli nie zostali jeszcze uratowani i coś im przeszkodzi, już ich nie ma.

R Hughes
źródło
Najbardziej podoba mi się ten, ponieważ wiele osób go zrozumie, a ponieważ wystarczająco wyraża, że ​​powrót do niego nie zajmie 15 minut, potrwa dłużej niż za pierwszym razem i przy gorszych wynikach.,
orbfish
3

Drogi Szanowny Współpracowniku. Aby zwiększyć wydajność, koncentruję się na swojej pracy i odpowiadam na pytania za pośrednictwem poczty e-mail w chwilach między pracą, aby zachować minimum przerw w pracy, aby lepiej służyć Tobie i nazwie firmy _ . Proszę napisz do mnie, a skontaktuję się z Tobą jak najszybciej. Dziękuję Ci.

użytkownik16784
źródło
2

Jeśli słuchasz muzyki, postaw znak, który mówi coś w stylu

Headphones on? Please do not interrupt.

Jest to skuteczne tylko wtedy, gdy ktoś czyta i nie zawsze masz włączone słuchawki.

Ian Potter
źródło
Dla mnie byłoby odwrotnie. Słuchanie muzyki i głęboka koncentracja nie pasują do mnie.
CodesInChaos
2

Myślę o tym jak o dużej sieci złożonych połączeń, które muszę zbudować w mojej głowie, strukturze powiązanych ze sobą relacji, które wpływają na siebie na różne, nie zawsze oczywiste sposoby, z których wszystkie muszą być zrozumiane i utrzymywane w sposób jasny w centrum uwagi podczas pisania kodu. Budowanie tej sieci zajmuje od 5 do 15 minut na projekcie, który znam dość dobrze, i kilka razy mniej na jednym, mniej intymnym.

Gdy moja koncentracja zostaje przerwana, sieć zaczyna się rozpadać, a jeśli przerwa trwa dłużej niż kilka sekund lub muszę pomyśleć o czymś innym, nawet nieco złożonym („Kiedy serwer upadł w zeszłym tygodniu, co zrobiłeś? powiedzieć klientowi? ”), sieć całkowicie się zawala. Kiedy przerwa się skończy, muszę ponownie zbudować całą sieć, głównie od zera.

Jeśli zbudowanie sieci zajmuje mi 10 minut, a ja przeszkadzam tylko 2 minuty trzy razy na godzinę, musisz zrozumieć, że zamiast kodować przez 50 minut, mam tylko 24 minuty pracy. Te 3 małe zakłócenia zmniejszyły moją wydajność o połowę .

Matthew Frederick
źródło
1

Neil Ford powiedział o tym w ostatnim Devoxxie. Napisał o tym książkę: Wydajny programista. Wyjaśnia wskazówki dotyczące wyłączników „przepływowych”. Jeśli płyniesz, jesteś w najwyższym punkcie koncentracji. Ale jeśli zostaniesz przerwany, powrót do przepływu zajmie + -20 minut.

Możesz je wytłumaczyć, jeśli wyjdziesz z obiegu, pamięć o swobodnym dostępie w mózgu traci dane o tym, co pracujesz i potrzebujesz 20 minut, aby odzyskać dane w pamięci RAM;)

Jeff
źródło
Mówiąc o przypadkowym dostępie i utracie pamięci, wydaje mi się, że cel „nie być techniczny”.
András Szepesházi
0

Zwykle umieszczam następujący status na moich klientach czatu:

Jestem w pracy, a ponieważ nie mogę wykonywać wielu zadań, proszę nie przeszkadzaj mi ...

Przynajmniej wydaje się to załatwić sprawę

długoletni przyjaciel, który wysyła do ciebie ping co 30 minut za pomocą „Wazzzzzzup ?!”

Yaneeve
źródło
1
Wiesz, że możesz przejść do trybu offline lub po prostu wyjść z klienta IM, Skype itp.
Spoike
@Spoike Nie, jeśli komunikator jest również używany do pracy, jak to często bywa.
Eric Wilson,
1
@EricWilson Zarejestruj inne konto do użytku w pracy i nie mów przyjacielowi, który wysyła Ci pingi co 30 minut za pomocą „Wazzzzzzup ?!”
Daniel Beck,
@EricWilson: Jeśli chcesz skupić się na swojej pracy przez pewien czas, możesz nadal wyłączyć lub wylogować się z wiadomości błyskawicznych / e-mail, nawet jeśli są używane do pracy. Mogłem to zrobić w miejscach, w których pracowałem.
Spoike
0

Możesz spróbować wyjaśnić, ale możesz także spróbować:

Państwo przerwać je , gdy robią coś, co wymaga głębokiej koncentracji, czy to czytając, oglądając film, obliczanie lub nawet lepiej licząc coś. Następnie wszystko, co musisz wyjaśnić, to to , że dokładnie tak jest dla ciebie, gdy ci przeszkadzają. Powinien załatwić sprawę. Tylko proszę, nie przeszkadzaj im podczas jazdy lub coś takiego :).

Goran Jovic
źródło
Ktoś oczywiście nie podoba mi się moje podejście do problemu, ale czasami jedynym sposobem jest wyjaśnienie za pomocą przykładu . Zwłaszcza jeśli temat jest niejasny dla osób, którym go wyjaśniasz.
Goran Jovic,
To nie brzmi jak wyjaśnienie przez przykład. To brzmi jak „zemścić się”.
Marcie,
0

Nie tłumaczę Uprzejmie informuję ich, że przerwa spowodowała dodanie 6 tygodni do harmonogramu.

Powrót 1986
źródło
4
Ta sugestia jest taka sama jak „bądź niegrzeczny, a ludzie przestaną cię niepokoić”. Może to być skuteczne, ale nie jest dobrym sposobem na pracę w zespole.
Marcie,
Nie uważam, że „dobry sposób pracy w zespole” został określony jako wymóg :) Jak rozumiem, pytanie dotyczyło przerw - które mogą, ale nie muszą być prostopadłe do członkostwa w zespole.
Throwback1986
0

To, co robię w biurze, to znajdowanie miejsc hotdesk (kryjówek) w różnych działach w biurze, w ten sposób nikt nie wie, gdzie jesteś i nie może ci przeszkadzać, ale jeśli nie jest to opcja, po prostu zdobądź znak i wyjaśnij, że chyba że ma to istotne znaczenie, nie przeszkadzaj!

Kyndigs
źródło
0

Nie znam reszty, ale przynajmniej dla Skype'a sugerowałbym użycie trybu „Nie przeszkadzać”. A jeśli musisz go używać do komunikacji w pracy, posiadaj drugie konto tylko do pracy, którego nie udostępniasz nikomu, komu nie chcesz przeszkadzać w pracy :)

satuon
źródło
0

To nie musi być skomplikowane. Coś tak prostego i nieprzyjaznego jak: „Pracuję nad czymś, co wymaga dużej koncentracji. Czy można to podać w wiadomości e-mail? Obiecuję, że przyjrzę się temu, jak tylko tu skończę”.

Andy Lester
źródło