Czasami czuję się jak muzyk, który nie może grać na żywo. Programowanie to całkiem fajna umiejętność i bardzo szeroki świat, ale wiele z nich dzieje się „poza kamerą” - w twojej głowie, w biurze, z dala od widzów.
Możesz oczywiście rozmawiać o programowaniu z innymi programistami, istnieje programowanie równorzędne i możesz stworzyć coś, co możesz pokazać ludziom, ale jeśli chodzi o wyjaśnienie nieprogramiście, co to jest, lub jak to było Twój dzień w pracy jest dość trudny.
Jak sprawić, aby nieprogramiści w swoim życiu zrozumieli, co robisz?
UWAGA: nie jest to powtórka zachęcania nie-programistów do zrozumienia procesu programowania , ponieważ to pytanie dotyczyło zarządzania oczekiwaniami klientów.
development-process
communication
EpsilonVector
źródło
źródło
Odpowiedzi:
Trzy słowa:
dumb it down
Programowanie jest złożone. Zrozumienie tego wymaga dużo pracy. A radość z programowania jest jeszcze bardziej subtelna.
Aby móc przekazywać swoje sukcesy i tym podobne innym osobom (tj. Rodzinie), muszę komunikować się na bardziej powszechnym poziomie. Porównaj programowanie z normalnymi rzeczywistymi rzeczami.
(tj. przedmiot do samochodu z deską rozdzielczą i siedzeniami i ...)
Jeszcze lepiej, jeśli wiesz coś o swojej publiczności, ponieważ możesz używać zrozumiałych rzeczy, które są bardziej złożone niż zwykłe codzienne koncepcje.
Na przykład moja żona była nauczycielką w szkole, więc mogę porównać niektóre moje procesy tworzenia oprogramowania z procesami nauczania, z których musiała korzystać. Niezwykle pomaga.
Ale ostatecznie musisz uprościć, uprościć i uprościć jeszcze więcej. I nawet wtedy trudno jest przekonać kogoś, jak fajna jest dobrze wykonana klasa z dobrymi testami jednostkowymi. :)
źródło
Nawet nie próbuję. Jeśli nie są wystarczająco zorientowani technologicznie, aby mieć co najmniej podstawową wiedzę na temat programowania, nudzę ich tylko szczegółami. Zwykle wybieram coś na bardzo wysokim poziomie, np. „Tworzę strony internetowe” lub „piszę programy komputerowe do X”
źródło
Próbuję to wyjaśnić w kategoriach rozwiązania problemu. Po prostu wybrałem program komputerowy do rozwiązania problemu. W ten sposób możesz omówić swoje działania w zakresie problemu, który próbujesz rozwiązać. Kiedy już to zrozumieją, skok do rozwiązania problemu za pomocą programowania nie jest bardzo daleko i zwykle może być dokonany przez osoby niebędące specjalistami.
źródło
Poprosiłem mojego brata Roba o to. (Jest artystą i ilustratorem, jak książki dla dzieci, wnętrza muzeów itp.)
Próbowałem to wyjaśnić, pokazując mu Przekaźnikowy komputer Harry'ego Portera , ponieważ myślę, że oddaje on esencję komputerów i programowania w sposób, który wydaje się przeczuciem.
Nie tego chciał, a ja byłem trochę oszołomiony.
Dopiero później zdałem sobie sprawę z prawdziwej kwestii. Przypomniał mi się ten cytat Oscara Wilde'a:
Jako inżynier podnieca mnie to, że buduję mechanicznych niewolników. Jako dziecko chciałem umieścić tamę w potoku i mieć koło wodne wytwarzające prąd, żeby mogło coś dla mnie zrobić , gdy tylko patrzyłem. W silniku w samochodzie znajduje się wałek rozrządu. To właściwie prymitywny program. Otwiera i zamyka zawory, kiedy tego chcę, więc nie muszę tego robić.
Świat artysty jest zupełnie inny. Jeśli z zamkniętymi oczami słuchasz interpretacji 9. symfonii Beethovena, jesteś transportowany. Musisz poświęcić mu całą uwagę, a kiedy się skończy, tęsknisz za nim. Jeśli odwiedzisz arcydzieło Franka LLoyda Wrighta Falling Water, zostaniesz przewieziony. Naprawdę nie wiem, jak ktokolwiek mógłby w tym żyć. Gdzie możesz zrobić bałagan? Całkowicie Cię schwyta. To symfonia architektoniczna.
Sztuka nie coś zrobić dla ciebie, to ma coś do ciebie.
Próbowałem znaleźć sztukę w tym, co robię. Jest w tym piękno, jeśli patrzysz, ale musisz patrzeć. To by nas połączyło.
źródło
Opowiedzieć historię. Nie skupiaj się na tym, co robisz, ale na tym, jak się czujesz, kiedy jesteś w tym pasjonowany lub znudzony, na relacjach ze współpracownikami.
źródło
Moje dwie analogie do tego celu to: przepis i ogromna biurokracja. Właśnie to wyjaśniłem w tym QA: 30 minut na wyjaśnienie programowania 15-latkowi
Użyłem analogii przepisu wiele razy, aby wyjaśnić, w jaki sposób programowanie polega na pisaniu rygorystycznego zestawu instrukcji, które mają namacalny i przewidywalny rezultat, jeśli zostaną zastosowane.
Właściwie użyłem analogii biurokracji tylko kilka razy, ponieważ większość ludzi tak naprawdę nie musi rozumieć poza analogią przepisu, ale oba czasy były bardzo pouczające dla osoby. Wydawało im się, że programowanie oznacza całkowite przywołanie każdego wiersza kodu (np. „Ale jeśli masz tak kiepską pamięć, to jak możesz zaprogramować komputer?”), Ale tak naprawdę chodzi o zbudowanie wielu niezależnych modułów, które współpracują ze sobą aby osiągnąć większy cel. Moduły programu są jak działy w dużej firmie: samodzielne jednostki, które w większości zajmują się swoim własnym kawałkiem całości i komunikują się z innymi działami poprzez notatki.
źródło
Wydaje mi się, że najlepiej reaguję, gdy wyjaśniam coś w kategoriach idei kodu zamiast samego kodu. Po prostu usuwam cały techniczny żargon, unikam wspominania terminów związanych z programowaniem i po prostu mówię o pomyśle i tym, co faktycznie się dzieje .
Na przykład ostatnio próbowałem wyjaśnić, jak działa filtr spamu. Właśnie powiedziałem, że przechowuje zapis słów, które zwykle znajdują się w spamie i tych, których nie znaleziono w spamie. Rekord jest tworzony przy użyciu znanego spamu i wiadomości niebędących spamem. Następnie, za każdym razem, gdy nadejdzie nowy e-mail, sprawdzamy tylko, ile tam słów wygląda na spamowe (tj. Występuje w naszym rejestrze spamowych słów) i ile nie wygląda na spamowe. Jeśli jest za dużo spamowych słów, prawdopodobnie jest to spam, dlatego zostaje wysłany do kosza ze spamem. Ludzie bez technologii, z którymi rozmawiałem, całkiem dobrze podeszli do tego pomysłu.
źródło
Metafory
Wiele razy w ogóle nie opisuję tego jako programu, staram się przedstawić go jako zupełnie inną koncepcję o podobnych wzajemnych powiązaniach.
To sprawia, że wizualizacja programu jest o wiele bardziej interesująca i czasami pomaga mi spojrzeć na to w nowym świetle.
Nie opisujesz elektryczności komuś, kto nigdy z nią nie pracował, mówiąc o prądzie i napięciu, prawda? Co więcej, fajnie jest opisywać niektóre koncepcje, jakby jakiś bardzo świadomy proces komputerowy sprawiał, że działały one jak za pomocą magii. Odrobina wyobraźni nie zaszkodzi im, ponieważ rzeczywistość jest naprawdę zimna i racjonalna.
źródło
Odpowiedziałem bardziej szczegółowo na podobne pytanie , ale sedno brzmi: „Programowanie jest jak budowanie fabryki lub linii montażowej”.
źródło
Wiele osób, które nie programowały, wydaje się wierzyć, że programiści spędzają dużo czasu żmudnie polując na błędy, szukając wizualnie tysięcy wierszy kodu w poszukiwaniu błędnego przecinka. Najpierw zapewniam ich, że tak nie jest, a gdyby tak było, byłbym całkowicie beznadziejny.
Często porównuję programy komputerowe do pisania książki kucharskiej. Książka kucharska to zestaw instrukcji dla ludzi, podczas gdy program komputerowy to zestaw instrukcji dla komputera. Niektóre programy są znacznie bardziej złożone niż książki kucharskie, a programy są modyfikowane częściej, ale w strukturze jest pewne podobieństwo. Jeśli książka kucharska zawiera siedem kopii instrukcji przygotowania sosu, a przepis musi zostać zmieniony, ktoś musi znaleźć wszystkie te kopie i naprawić je wszystkie.
źródło
Myślę, że dobrą analogią jest budowa fabryki. Większość ludzi widziała coś w rodzaju „How it Made”, gdzie widzisz, jak jakiś przedmiot tasuje się przez różne przenośniki taśmowe i maszyny, mając nadzieję, że na końcu pojawi się gotowy produkt. Mówię ludziom, że buduję takie rzeczy, ale zamiast być fizycznymi fabrykami pracującymi na przedmiotach fizycznych, są wirtualni i pracują na danych. Oczywiście nie jest to dobra analogia do wszelkiego rodzaju programowania, ale myślę, że daje dobre wyobrażenie o złożoności i wykonuje równolegle wiele rodzajów aplikacji.
źródło
Tak naprawdę nie możesz dzielić się swoim rzemiosłem - po prostu nagłówki o swojej pracy z innymi
Możesz jednak zamiast dzielić się swoim rzemiosłem, dzielić swoje życie z ludźmi, którzy są w tym samym rzemiośle, co Ty (:
źródło
Zwykle nie mówię o tym, jak to się robi, ale o cechach pracy .
Zazwyczaj podkreślam, że jest to niezwykle skomplikowane, tak skomplikowane, że żadna osoba nie może mieć nadziei, że zacznie dokładnie rozumieć dokładnie, co się dzieje. Prawdopodobnie wymagałoby to 30 lat studiowania różnych interaktywnych części (elektronika poprzez frameworki), a także około godziny na aktywną linię kodu, a do tego czasu musiałbyś wrócić do nauki, ponieważ sprzęt zmieniłby się tak bardzo, że to kolejne 10 lat, czekając na najnowszą wersję.
Inną ważną częścią jest to, jak satysfakcjonujące może być stworzenie czegoś tak elastycznego, że tysiące, być może miliony ludzi mogłyby to wykorzystać do wzbogacenia życia, coś wyjątkowego (przynajmniej szczegółowo) i czegoś, z czego wiele się nauczyłeś.
Jeśli w tym momencie nikt nie napchał mi ust skarpetkami, z przyjemnością zademonstruję aplikację, pokazując nieco złożoność i możliwą elastyczność.
źródło
Mówię im, że poza pisaniem symfonii, tez i powieści matematycznych programowanie jest jedyną szansą na zaangażowanie się w zadania / struktury o tym poziomie złożoności i zawiłości. Oczywiście, nie mówiąc o tym, że przyzwoita aplikacja internetowa jest historycznym arcydziełem, ale gdy ludzie zdają sobie sprawę, że każdego dnia możesz używać swojego umysłu na takim poziomie, wtedy „rozumieją”. Wiele miejsc pracy jest godnych i dobrze płatnych, ale sprowadza się do dość prostego, proceduralnego zadania powtarzanego wielokrotnie.
Przynajmniej tak na to patrzę. Mogę się mylić.
źródło
Jako inne podejście do pozostałych 15 odpowiedzi ...
Zamiast wyjaśniać szczegóły mojej pracy (programowania), staram się skupić na rozwiązaniach, które rozwiązuje praca, tj. Jakie problemy rozwiązują dla mnie tworzone przeze mnie systemy / oprogramowanie. Zwykle jest to domena nieprogramująca, chyba że piszesz kompilator lub coś takiego, w takim przypadku musisz wyjaśnić, dlaczego jest to przydatne.
W ten sposób ułatwia ludziom zrozumienie, że jest to złożona natura i jak odnosi się do „prawdziwego świata”.
Jako analogię, jako średniowieczny kowal, prawdopodobnie wytłumaczyłbym (damie w miejscowej tawernie), że wykonuję miecze, aby hakować wroga na kawałki, a nie jak hartuję stal i wbijam w nią z pewnym kątem i siłą (chyba że pytają). Miejmy nadzieję, że zrozumie, że hakowanie wroga na kawałki jest przydatne (...) i może być trudne (niedobór stali, opancerzeni przeciwnicy, zadymione miejsce pracy itp.), Dzięki czemu zyskujesz uznanie za wykonanie złożonego zadania.
(Rzucanie kowadeł byłoby równoznaczne z tworzeniem kompilatorów i trzeba by było wyjaśnić, do czego służą ...)
źródło
Porównuję to do budowy domu, gdybyśmy żyli w dziwnym wszechświecie z egzotycznymi cząsteczkami i anty-czasem:
Masz pomysł na naprawdę fajny dom, więc zbudujesz przybliżony szkic tego, jak będzie wyglądał, i masz ogólny plan dalszego postępowania. Idziesz do sklepu z narzędziami i kupujesz drewno, aby zbudować ściany, ale one wciąż przewracają się, ponieważ ziemia jest nierówna. Więc idź i kupuj cement, aby założyć fundament, ale cement nie wyschnie i nie wiesz, dlaczego. Wracasz do sklepu z narzędziami i pytasz dlaczego, ale pracownik popada w katatonię. Idziesz do 8 różnych sklepów z narzędziami, dopóki jeden nie powie ci, że użyty cement został opracowany jesienią 1989 roku, ale kupiłeś swoją nieruchomość zimą 1989 roku, więc są one niezgodne, a on sprzedaje ci najnowszy cement 2013.1.1. Wracasz, aby położyć fundament, a gdy tylko to zrobisz, cement znika. Tym razem wszyscy pracownicy popadają w katatonię, więc przeszukujesz swój dom i okazuje się, że był to kiedyś ośrodek badań jądrowych. Następnie przejrzyj wyniki badań jądrowych na glebie i stwierdzisz, że powoduje ono wolne rodniki. Wyszukujesz to w Google i zaczynasz badać promieniowanie elektromagnetyczne, potem fermiony, potem bozon, potem teorię strun i coś o kocie. Nie chcesz się poddawać, ponieważ zmarnowałeś tyle czasu, więc mocno uderzyłeś w butelkę. Przychodzisz do domu późno i wyładowujesz gniew na żonie, twierdząc, że to ona jest powodem, dla którego nie możesz zbudować domu, ponieważ ona i dzieci zajmują cały twój czas ... Około 3 miesięcy po tym zdajesz sobie sprawę, że odszedłeś i coś o kocie. Nie chcesz się poddawać, ponieważ zmarnowałeś tyle czasu, więc mocno uderzyłeś w butelkę. Przychodzisz do domu późno i wyładowujesz gniew na żonie, twierdząc, że to ona jest powodem, dla którego nie możesz zbudować domu, ponieważ ona i dzieci zajmują cały twój czas ... Około 3 miesięcy po tym zdajesz sobie sprawę, że odszedłeś i coś o kocie. Nie chcesz się poddawać, ponieważ zmarnowałeś tyle czasu, więc mocno uderzyłeś w butelkę. Przychodzisz do domu późno i wyładowujesz gniew na żonie, twierdząc, że to ona jest powodem, dla którego nie możesz zbudować domu, ponieważ ona i dzieci zajmują cały twój czas ... Około 3 miesięcy po tym zdajesz sobie sprawę, że odszedłeśprawie kończąc dom, nawet nie wiedząc, dlaczego chciałeś go zbudować.
źródło
Po prostu mówię im, że robię to, co robię dla ich pracy i tworzę oprogramowanie komputerowe, które ułatwi ich pracę.
źródło
Jak niektórzy z was mówili, używajcie analogii, które mają dla nich sens. Zawsze staram się w jakiś sposób sprowadzić Google, jeśli mój kod działa jak Google, lub pokazuje korzyści finansowe lub w jaki sposób pomaga ludziom w jakiś sposób ...
źródło
Czasami poddaję się i po prostu mówię, że spędzam dzień na edytowaniu plików tekstowych. Co zwykle jest prawdą, jeśli nie cała historia.
źródło