Таким людям надо рассказывать не языки, не ООП, не функциональное программирование, не то как правильно попилить программу на модули.
Этим людям в первую очередь стоит знать архитектуры под которые они будут писать, их возможности и ограничения, надо знать какие технологии (библиотеки) можно для этого использовать (уже существующие готовые решения И как это можно повторить самому), этим людям надо знать все тонкости IPC и еще до хрена и больше...
Извините но если вы собираетесь рассказывать им про кластера, распределнные системы и встраиваемые системы, то вам новички противопоказаны
Не та аудитория, совсем не та... Новичков можно заставить клепать интерфейсы на дельфе к БД и раскладывать синус в ряд Тейлора на сишнике. Все.
Ну, допустим, организацию процессов внутри кластера и его поддержание делают не новички. Это ядро команды есть и базовая структура функционирует и способна прокормить сама себя и своих учеников.
Нет задачи, чтобы люди завтра начали клепать готовые решения. Необходимо воспитать творческую смену старшему поколению, которая не просто будет делать что-то по готовым рецептам, но будет уметь самообучаться, подхватывать, расширять и модифицировать старое и осваивать новое. При этом крайне важно, чтобы люди были на своём месте - делали то к чему способны и что им нравится. Полностью так не бывает, но это - идеал, к которому стремимся. Поэтому хотелось бы изначально дать новичкам возможность освоиться и понять какие именно задачи из перечисленного широкого круга им наиболее близки.
Итак два компонента: понимание сути решаемых задач (этому мы более или менее умеем научить тех, кто сам хочет и способен) и умение воплощать их в эффективные программные продукты (с этим сложнее, поскольку по генезису у нас никто не программист - все самоучки).