Kiedyś, dawno temu, będąc jeszcze studentem, poproszono mnie o wyjaśnienie czegoś podczas niedzielnego lunchu - jedno z najbardziej edukacyjnych doświadczeń, jakie kiedykolwiek miałem. Osoba, która zadała to pytanie, nie była głupia - ale nie miała doświadczenia, a poziom wiedzy, który zakładałem, po prostu nie istniał. Zacząłem odpowiadać, spojrzałem pusto, zmieniłem dół, nadal pusto, zmieniłem dół, wciąż pusty ... hmm ... więc zacząłem w ten sam sposób, w jaki zaczynasz budować aplikację, z małymi objaśnieniami, które możesz wbudować w coś bardziej znaczącego.
Kluczową częścią tej lekcji było dla mnie (i jest) to, jak bardzo zakładamy (nie tylko programistów, wszystkich) o wiedzy innych ludzi na temat naszej wybranej specjalizacji, podczas gdy w rzeczywistości można rozsądnie założyć, że większość ludzi wiedz, że 1 + 1 = 2, ale potem robi się ciekawie.
Tak więc pierwszą i najważniejszą rzeczą jest, aby zrozumieć, że ludzie nie wiedzą i nie rozumieją co ty zrobić - ale rozumiem, co oni robią i kiedy wyjaśniając rzeczy, które w związku z tym trzeba zacząć prosty i zatrzymać w odpowiednim poziom dla odbiorców.
Jeśli chodzi o konkretne techniki - myślę, że @Josh K ma to dość dobrze - i chciałbym podkreślić, że Analogie są absolutnym zwycięzcą.
Jeszcze jedna rzecz - od czasu do czasu dopuszczalne jest po prostu odpisywanie rzeczy jako „maniaków” ludzie nie zawsze chcą pełnych wyjaśnień, dlaczego i jeśli wcześniej wykazaliście chęć wyjaśnienia i zdolność do robienia więc w zrozumiały sposób ludzie będą skłonni Ci zaufać, gdy zasugerujesz, że mają zastosowanie „złożone powody techniczne” lub że ostatecznie możesz osiągnąć konkretny wynik poprzez „robienie rzeczy dla maniaków” (lub „rzeczy dla programistów” lub jakikolwiek termin, który działa dobrze w twoje otoczenie).
Przekazywanie technicznych informacji odbiorcom nietechnicznym (jednej lub więcej) to umiejętność, którą możesz rozwinąć i której potrzebujesz.