Une fois, il y a longtemps, alors que j'étais encore étudiant, on m'a demandé d'expliquer quelque chose au cours du déjeuner du dimanche - l'une des expériences les plus éducatives que j'ai jamais eues. La personne qui posait la question n'était manifestement pas stupide - mais n'avait aucune formation, le niveau de connaissances que je supposais n'était tout simplement pas là. J'ai commencé à répondre, j'ai un regard vide, changé, toujours vide, changé à nouveau, toujours vide ... hmm ... alors j'ai commencé de la même manière que vous commencez à créer une application, avec de petits blocs d'explication que vous pouvez intégrer quelque chose de plus substantiel.
La partie clé de cette leçon, pour moi, était (et est) juste combien nous supposons (pas seulement les programmeurs, tout le monde) sur la connaissance des autres de notre spécialité choisie alors qu'en fait, même, vous pourriez raisonnablement supposer que la majorité des gens sachez que 1 + 1 = 2 mais après cela devient intéressant.
Donc, la première chose et la plus importante à comprendre est que les gens ne savent pas et ne comprennent pas ce que vous faites - mais ils comprennent ce qu'ils font et lorsque vous expliquez des choses, vous devez donc commencer simplement et rester à un niveau approprié niveau pour votre public.
En termes de techniques spécifiques - je pense que @Josh K a assez couvert - et je tiens à souligner que les analogies sont un gagnant absolu.
Une dernière chose - il peut être, de temps en temps, acceptable de simplement écrire les choses comme des "trucs de geek" les gens ne veulent pas toujours des explications complètes sur pourquoi et si vous avez déjà démontré une volonté d'expliquer et une capacité à faire Donc, d'une manière compréhensible, les gens seront enclins à vous faire confiance lorsque vous suggérerez que des "raisons techniques complexes" s'appliquent ou que, finalement, vous pouvez obtenir un résultat particulier en "faisant des trucs de geek" (ou des "trucs de programmeur" ou tout autre terme qui fonctionne bien dans vos environs).
Communiquer des choses techniques à un public non technique (d'un ou plusieurs) est une compétence que vous pouvez développer et dont vous avez besoin.