У ещё одного клиента в пятницу вели проектную сессию. За день только-только успеваешь разобраться с вопросом "какая у нас система". До вида жизненного цикла, требований, архитектуры и всего прочего за день обычно не успеваешь добраться. Только разбиение (холархия с выходом на целевую систему в операционном окружении) и различение целевой системы и обеспечивающей системы. Если разбираться дальше, то одного дня абсолютно недостаточно, проверено многократно. Собственно, это и есть системная инженерия. Никто не обещает, что это быстро. Но потратить день-два-три на то, чтобы команда проекта делала одну и ту же систему, а не каждый свою -- это может сэкономить потом месяцы и месяцы застревания в ситуации "система готова на 95%". Для меня эта проектная сессия отличалась немного от аналогичных у других клиентов: ключевые сотрудники прочли полкнижки по системноинженерному мышлению, и я существенно опирался на этот материал. Мне очень понравилось, материал книжки позволяет двигаться с обсуждением много быстрее -- у меня ведь многолетний опыт ситуаций, когда команде проекта за день так и не удаётся разобраться с целевой системой. Жесткое следование предлагаемым в книжке паттернам системноинженерного мышления убирает буксование. Вот типовые ошибки:
-- система определяется по конструкции. Переход к определению по функции заставляет по-другому взглянуть на границы системы, стейкхолдеров
-- систем слишком много: тут и "новый рынок", и "продуктная линия" и "заказ XYZ", и "прототип чтобы научиться"
-- целевая система определяется не по стадии эксплуатации, конец жизненного цикла отбрасывается
-- указывается не на целевую систему, а на обеспечивающую
-- указывается не на целевую систему, а на описание системы
-- полная путаница, когда присутствует ещё и сервис
-- полная путаница, когда в работах есть исследования
Сделали сегодня очередной такт обсуждений по SysMoLan. Я хочу, чтобы это был язык системного моделирования, а не системного программирования. То есть операции программирования пусть там неудобно пишутся (программисты потерпят), а вот инженеры должны системы видеть, как на родном их языке (зачастую матерном, а не программирования). Не "программный код, а в скобочках описывающие систему данные", а "описывающие систему данные, а в скобочках программный код". Язык программирования/язык запросов/язык мэппинга там будет, причём расширяемый, куда ж без него. Но в основе языка должно лежать удобство работы с system designators (по ISO 81346, который про инженерные обозначения и структуру систем), а идентификаторы языка (для переменных, свойств, операторов, функций и т.д.) пусть будут отдельно. Чтобы было понятно: десигнатор по ISO 81346 выглядит примерно как =D12=W1=40, и там встречаются ещё минус, плюс, решётка, амперсенд и прочие приятные символы. И я хочу, чтобы эти десигнаторы не нужно было брать в кавычки или скобки, они должны писаться непосредственно, as is. А в скобки или кавычки можно брать всё остальное, если очень нужно. Я помню, как нехорошо стыкуется реальный мир и мир программирования: когда Винды не понимали русскоязычных имён файлов, всем было регулярно очень плохо. Тут именно такой случай, программисты должны подстроиться под инженеров. Это не "имена", это именно system designators (системные обозначения). Вокруг них всё и будет плясать.
В обучении языкам нашёл какое-то подтверждение моего любимого способа обучения как последовательности "относительно лёгких упражнений", тренирующих какие-то паттерны работы мозга (сегодня можно уже сказать, тренирующие нейронную сетку мозга, pun intended): для многих учащихся не работает эффект "погружения в проекты", и "объяснения материалы". Нет, работает тупое многочасовое прохождение относительно лёгких языковых упражнений, после которых владение языком переходит на уровень автоматизма (это я опять ссылаюсь на статью http://www.govtilr.org/Publications/TESOL03ReadingFull.htm). Простейшее из таких упражнений -- всем известные "карточки" для запоминания переводов слов и фраз при изучении иностранных языков. Для работы с этими карточками-запоминалками есть чудесная программа Anki (http://ankisrs.net/), которая использует Supermemo алгоритм, учитывающий характеристики людской забывчивости свежевыученного. Пример обсуждения эффективности подобных программ: http://polydog.org/index.php?threads/anki-vs-gold-lists-vs-iversen-style-wordlists.238/ (но самое большое число обсуждений того, как учить язык идёт тут: http://how-to-learn-any-language.com/forum/, к этому в паре есть и вики: http://learnanylanguage.wikia.com/wiki/Learn_Any_Language).
Интересное начинается тогда, когда нужно не столько запомнить значения слов (в обоих направлениях, вестимо), сколько натренировать мозг на синтаксические паттерны. Ибо обучать грамматике, объясняя паттерны, бесполезно -- не будет автоматизма. Фишка тут в том, как придумывать соответствующие наборы упражений. Вот пример идей в этом направлении: http://direct.fluent-forever.com/how-to-learn-german-grammar-with-anki/. Я вот думаю, нельзя ли учить таким образом языкам моделирования (паттернам моделирования). Там ведь фишка тоже в прогружении синтаксиса и семантики куда-то глубоко в недра мозга, на уровень интуиции и автоматизма. Напомню, что для программирования что-то подобное уже есть (опять приведу в пример автоматизированный курс Кириенко из 365 упражнений курса алгоритмики для Питона, в нём разве формата карточек нет: http://informatics.mccme.ru/course/view.php?id=156).
Вчера же я определял своё владение английским по европейской шкале CEF (http://www.examenglish.com/leveltest/index.php), а сегодня перепроверил. У меня дребезг между B2 и C1 по грамматике (я всё время путаюсь с http://en.wikipedia.org/wiki/James_while_John_had_had_had_had_had_had_had_had_had_had_had_a_better_effect_on_the_teacher), а по слушанию твёрдо С1. До С2 мне ещё лететь и лететь, чего уж там -- но C2 это уже практически native.
И тут меня развезло. Загрузил учебник, лингафонные материалы и Anki на телефон -- и занялся немецким (вместо совершенствования английского). Интересно, насколько меня хватит? Как я понимаю из интернетов, уровни А1 и А2 (то есть "турист") проходятся чуть ли не за пару-тройку месяцев.
Пару лет я был в оргкомитете Ontology Summit и тем самым попадал в соавторы Коммюнике, которое публикуется в Journal of Applied Ontology (http://www.iospress.nl/journal/applied-ontology/). То есть у меня по онтологии уже пара академических публикаций, кто б мог подумать? Но в этом журнале impact factor ниже плинтуса (в 2012 был 1.08, это очень мало. Например, для западного PhD требуется три публикации не на родном языке в журналах с IF>3).