Jak dzielisz się swoim rzemiosłem z programistami?


43

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.


Taka jest natura zawodu: nie ma wielu wymiernych nagród za twój wysiłek, ponieważ jesteś jedynym, który rozumie, co robisz. Jednak wiedza, pieniądze są dla większości wystarczające.
Nikt


12
Ciesz się, że nie piszesz rzeczy dla bezpieczeństwa. Bezpieczeństwo jest jeszcze mniej widoczne niż cokolwiek innego. „Widzisz, robi to samo co wcześniej, tylko teraz jest bezpieczny ...”
Shawn D.,

2
Czy ktoś może mi wyjaśnić, do której kategorii to pytanie pasuje w programmers.stackexchange.com/faq
Noname

1
@Dave pasuje do kategorii pytań, które zostały opublikowane, gdy strona była jeszcze w fazie beta, jeśli pamięć dobrze mi służy. Zasady nie były wtedy do końca dopracowane.
EpsilonVector

Odpowiedzi:


31

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. :)


25
+1 za „I nawet wtedy trudno jest komuś zrozumieć, jak fajnie jest dobrze wykonana klasa z dobrym testem jednostkowym”. Trudno mi zrozumieć niektórych programistów.
CaffGeek

3
Jestem fanem wykorzystywania złych analogii do wyjaśniania ezoterycznych pojęć.
Malachi

49

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”


13
+1 - Cały czas używam tej metody. Jeśli naprawdę chcę, żeby wiedzieli, jak minął mój dzień, rzucę im kilka słów i zobaczę, jak szklisty wygląd przejmuje ich oczy. Potem ktoś zmienia temat.
Joel Etherton,

7
Przekonałem się, że ludzie zmieniają temat, gdy tylko wspomnę o komputerach. Albo to, albo zaczną narzekać na swój komputer i prosić o radę. Chyba lekarze mają ten sam problem.
Brian Ortiz

3
@Brian, z wyjątkiem większości lekarzy, naprawia problemy zamiast budować nowe systemy;)
Armand

2
Tak. Najłatwiejsza odpowiedź brzmi: „Tworzę rzeczy… a dokładniej tworzę system klastrowy w czasie rzeczywistym o wysokiej dostępności, dla…” - i już ich nie ma…
Sorantis

To jest to, co robie. Potem czekam na 5 sekund ciszy i mówię: „Annnnnd, ten zabójca rozmów jest na uboczu. Więc co robisz?”
pdr

12

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.


12

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:

Faktem jest, że cywilizacja wymaga niewolników. Grecy byli w tym miejscu. Jeśli nie ma niewolników do wykonywania brzydkiej, okropnej, nieciekawej pracy, kultura i kontemplacja stają się prawie niemożliwe. Ludzkie niewolnictwo jest złe, niepewne i demoralizujące. Od mechanicznego niewolnictwa, od niewolnictwa maszyny, przyszłość świata zależy.

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.


3
Czytałem, że jako początkowo komputer przekaźnikowy Harry'ego Pottera , magia jest często używana do opisania tego, co robimy, oczywiście;)
jk.

@jk: Założę się, że sam wprowadza uczniów w swoje zajęcia :)
Mike Dunlavey

@jk. Najczęściej w naszych pracach widzę czarną magię.
heishe

7

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.


1
+1 za koncentrację na relacjach ze współpracownikami. Każdy może odnosić się do tego rodzaju rzeczy. „Poszedłem na lunch z szefem, a on mówił…” jest o wiele bardziej powiązany niż „spędziłem pół dnia próbując usunąć warunki wyścigu”
Andy Hunt

3

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.


Ktoś powiedział, że buduje mechanicznych niewolników, po kolejnym „problemie” klienta, czuję się, jakbyśmy byli niewolnikami i budujemy mechaniczne dystopie, z którymi będziemy żyć.
gbjbaanb

2

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.


1

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.



1

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.


Byłby to bolesny świat, w którym nie można byłoby zaprogramować komputera, aby ułatwić programowanie („wizualne wyszukiwanie… błędnego przecinka”).
compman

1

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.


0

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 (:


0

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ść.


0

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ć.


0

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żą ...)


0

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ć.


-1

Po prostu mówię im, że robię to, co robię dla ich pracy i tworzę oprogramowanie komputerowe, które ułatwi ich pracę.


lub wymienić ich pracę, och nie !!!
jhocking

-2

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 ...


-2

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.