Близится новый учебный год, остался месяц, чтобы переосмыслить свои взгляды и скорректировать свою учебную программу, т.к. прошлый был не очень удачным. В ходе наблюдений за своими учениками в прошлые годы, пришел к выводу, что есть три основных навыка, которые и являются определяющими/ключевыми факторами в инженерной деятельности, программировании в частности:
Логическое мышление Системное мышление Аналитический склад ума
Логическое мышление — способность выстраивать цепь логических рассуждений. Тут по идее и комментарии излишни, без этого точно никуда.
Системное мышление — способность раскладывать по полочкам полученные знания. Вытаскивать из полочек и применять эти знания там, где это нужно. Иметь некий порядок у себя в голове.
Аналитический склад ума — способность уметь делать анализ ситуации, моделировать и делать выводы.
(не претендую на точность определений, изложил свое понимание этих понятий, если что не так, поправляйте)
Может я что еще важное упустил?
Следующий у меня вопрос, о котором я еще не думал, это то, как эти навыки развить. На практике наблюдаю, у кого-то не хватает того или иного навыка. У кого-то бардак в голове, а кто-то не умеет делать анализ и выводы. Пока у меня в голове только мысль крутится, это небольшие научные исследования, типа тех, которые проводил Google, кажется называлось Google Science Fair. Вообщем, прошу помощи зала.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re: Размышления на тему ключевых навыков инженера...
Здравствуйте, __lambda__, Вы писали:
___>Может я что еще важное упустил?
Безусловно. Ты пропустил самое важное: критическое отношение к любым теориям и стремление проверять их практикой. Без этого инженер немыслим, все остальные пункты опциональные.
Впрочем, к ученым это тоже относится.
Re: Размышления на тему ключевых навыков инженера...
Здравствуйте, boot, Вы писали:
B>Здравствуйте, __lambda__, Вы писали:
B>
B> Логическое мышление B> Системное мышление B> Аналитический склад ума B>
B>Перечисленные свойства являются отличительными признаками вычислительной системы. B>Человеку достаточно любви к Истине. B>Инженер прежде всего Человек.
Добавлю, при наличии желания, эти качества, да и любые другие, практически каждый способен развить.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re: Размышления на тему ключевых навыков инженера...
Здравствуйте, __lambda__, Вы писали:
___>* Логическое мышление ___>* Системное мышление ___>* Аналитический склад ума
___>Следующий у меня вопрос, о котором я еще не думал, это то, как эти навыки развить. На практике наблюдаю, у кого-то не хватает того или иного навыка. У кого-то бардак в голове, а кто-то не умеет делать анализ и выводы. Пока у меня в голове только мысль крутится, это небольшие научные исследования, типа тех, которые проводил Google, кажется называлось Google Science Fair. Вообщем, прошу помощи зала.
Все перечисленные пункты являются частью понятия описываемого первым пунктом.
Как и любой другой навык (умение, знание, скил, ...) логическое мышление поддается тренировке. Есть учебные курсы и учебники по "бытовой" логике. Вот их нужно и применять. Если у человека плохо с логикой, то ему нужно рекомендовать (заставить, если возможно) подкачать этот скил.
Причем очень советую не обольщаться по этому поводу. Умение логически мыслить тренируется годами. Лично я осваивал эту науку лет пять. Казалось бы примитивные постулаты: последовательность, непротиворечивость и полнота. Но чтобы уметь их все выдерживать при анализе реальных проблем, а тем более чужих суждений (в которых логические ошибки встречаются сплошь и рядом).
Для "прокачки" логики очень хорошо подходит общение на форумах. Не так важно о чем общаться, как важно последовательно проверять свои и чужие суждение на те самые факторы (последовательность, непротиворечивость и полноту). Ну, и естественно И/ИЛИ/НЕТ должны просто отлетать от зубов. Если человек путается в выражениях вроде x && || !y (причем не только в ЯП), то дальше двигаться не куда.
Очень важным фактором, на мой взгляд, является умение корректно выражать свои мысли на естественном языке (русском в нашем случае). Если человек не умеет связанно и грамотно выразить мысль на русском (основном) языке, то программы у него будут еще хуже. Отличным приемом будет давать людям вместо (перед) написания программ писать изложение мыслей о том как нужно решать задачу. Важно чтобы человек умел описать решение не в терминах знакомого ему языка, а в терминах предметной области.
Это что касается логического мышления. Теперь о других качествах. Не скажу за всех инженеров, но хорошему программисту нужны следующие качества:
1. Отменное логическое мышление. Тут все понятно.
2. Абстрактное мышление (сам мальца грешен в этом вопросе). Умение абстрагироваться от неважных деталей и выделять суть задачи/предмета для его более глубокого анализа. От части — это тоже относится к логическому мышлению, но лучше прокачивать этот скил отдельно. Как прокачивать абстрактное мышление я не знаю. Наверно тут подойдет возня с высшкой (высшей математикой), где много А, Б и Ц .
3. Базовые знания. Конкретные знания он почерпнет в Интернене, из книг или у коллег, а вот базовые только в вузе или из книг. В прочем, это настолько базовая задача для вузов, что обсуждать тут не чего.
4. Настойчивость. Без нее в нашем деле никуда. Тут путь только один — решать сложные задачи (сложность котрых на гране или чуть выше реальных возможностей ученика, т.е. как в естественных условиях). Лучшим способом тут является участие в открытых или коммерческих проектах. Игрушки вроде решения ребусов или участие в олимпиадах, на мой взгляд, смысла не имеет. Смелость тоже не помешает. И ее тоже нужно развивать. Если человек боится что не решит задачу, то он наверняка ее не решит.
5. Реальная заинтересованность в развитии/обучении (последняя по счету, но не последняя по значению!). Без нее никуда. Заставить развиваться человека невозможно. Можно только подтолкнуть. И тут лучший вариант соревнования и личный пример. Опять же открытие проекты очень хорошо способствуют.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Размышления на тему ключевых навыков инженера...
Здравствуйте, __lambda__, Вы писали:
___>Близится новый учебный год, остался месяц, чтобы переосмыслить свои взгляды и скорректировать свою учебную программу, т.к. прошлый был не очень удачным. В ходе наблюдений за своими учениками в прошлые годы, пришел к выводу, что есть три основных навыка, которые и являются определяющими/ключевыми факторами в инженерной деятельности, программировании в частности:
___>
___> Логическое мышление ___> Системное мышление ___> Аналитический склад ума ___>
Кнут, когда сравнивает алгоритмическое и математическое мышление, выделяет:
1. Операции с формулами.
2. Отражение действительности.
3. Поведение функций.
4. Сведение к более простому случаю.
5. Операции с бесконечностью.
6. Обобщение.
7. Абстрактные рассуждения.
8. Использование структур данных.
9. Алгоритмы.
Re[2]: Размышления на тему ключевых навыков инженера...
Здравствуйте, Klatu, Вы писали:
K>Безусловно. Ты пропустил самое важное: критическое отношение к любым теориям и стремление проверять их практикой. Без этого инженер немыслим, все остальные пункты опциональные.
Мне кажется это все же является подмножеством аналитического склада ума. Но все равно спасибо, как-то упустил такой момент. У нас в школе навыки критического мышления тренируют, но по другим предметам и другие педагоги. Видимо поэтому я даже и не задумался об этом
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[3]: Размышления на тему ключевых навыков инженера...
Здравствуйте, __lambda__, Вы писали:
___>Мне кажется это все же является подмножеством аналитического склада ума.
Пример использования "аналитического склада ума" в чистом рафинированном виде — это средневековая схоластика.
___>Но все равно спасибо, как-то упустил такой момент. У нас в школе навыки критического мышления тренируют, но по другим предметам и другие педагоги. Видимо поэтому я даже и не задумался об этом
Важно не только критическое мышление, но и практическая проверка, то есть эксперимент.
Re: Размышления на тему ключевых навыков инженера...
Здравствуйте, __lambda__, Вы писали:
___>Системное мышление — способность раскладывать по полочкам полученные знания. Вытаскивать из полочек и применять эти знания там, где это нужно. Иметь некий порядок у себя в голове.
Мне кажется, тут вы ошиблись в определении.
Системное мышление — это умение видеть, как содержимое одной полочки связано с содержимым другой и как новые знания впишутся в существующую систему.
Re[2]: Размышления на тему ключевых навыков инженера...
Здравствуйте, VladD2, Вы писали:
VD>Все перечисленные пункты являются частью понятия описываемого первым пунктом.
Не совсем согласен. Мне кажется они просто очень тесно между собой интегрированы, при этом являясь отдельными понятиями. Например, для анализа, чтобы делать выводы из каких-либо наблюдений, нужна логика. Полученные знания, в ходе логических измышлений, нужно внести в свою систему в голове. Ну или перестроить ту самую систему, если находится более логически стройная теория.
VD>Как и любой другой навык (умение, знание, скил, ...) логическое мышление поддается тренировке. Есть учебные курсы и учебники по "бытовой" логике. Вот их нужно и применять. Если у человека плохо с логикой, то ему нужно рекомендовать (заставить, если возможно) подкачать этот скил.
Да, это все понятно. Вопрос в том, как именно лучше всего качать эти скиллы.
VD>Для "прокачки" логики очень хорошо подходит общение на форумах. Не так важно о чем общаться, как важно последовательно проверять свои и чужие суждение на те самые факторы (последовательность, непротиворечивость и полноту). Ну, и естественно И/ИЛИ/НЕТ должны просто отлетать от зубов. Если человек путается в выражениях вроде x && || !y (причем не только в ЯП), то дальше двигаться не куда.
Согласен.
VD>Очень важным фактором, на мой взгляд, является умение корректно выражать свои мысли на естественном языке (русском в нашем случае). Если человек не умеет связанно и грамотно выразить мысль на русском (основном) языке, то программы у него будут еще хуже. Отличным приемом будет давать людям вместо (перед) написания программ писать изложение мыслей о том как нужно решать задачу. Важно чтобы человек умел описать решение не в терминах знакомого ему языка, а в терминах предметной области.
+100. Да, у нас в педагогике есть такая методика. Безотносительно, программирование это или математике, физика, и т.д. Лично я, когда у моих учеников появляются затруднения в решении каких-либо задач или написании какого-либо куска кода, прошу их сначала рассказать о том, в чем проблема и как он ее собирается решать.
VD>1. Отменное логическое мышление. Тут все понятно.
Да, с этим все понятно.
VD>2. Абстрактное мышление (сам мальца грешен в этом вопросе). Умение абстрагироваться от неважных деталей и выделять суть задачи/предмета для его более глубокого анализа. От части — это тоже относится к логическому мышлению, но лучше прокачивать этот скил отдельно. Как прокачивать абстрактное мышление я не знаю. Наверно тут подойдет возня с высшкой (высшей математикой), где много А, Б и Ц .
Вот про это я забыл указать, да. И да, тут вроде математика сильно должна тянуть. Ну и я про свои черные ящики и декомпозиции рассказываю.
VD>3. Базовые знания. Конкретные знания он почерпнет в Интернене, из книг или у коллег, а вот базовые только в вузе или из книг. В прочем, это настолько базовая задача для вузов, что обсуждать тут не чего.
Согласен, но я пока про навыки.
VD>4. Настойчивость. Без нее в нашем деле никуда. Тут путь только один — решать сложные задачи (сложность котрых на гране или чуть выше реальных возможностей ученика, т.е. как в естественных условиях). Лучшим способом тут является участие в открытых или коммерческих проектах. Игрушки вроде решения ребусов или участие в олимпиадах, на мой взгляд, смысла не имеет. Смелость тоже не помешает. И ее тоже нужно развивать. Если человек боится что не решит задачу, то он наверняка ее не решит.
Абсолютно согласен с настойчивостью. Но не согласен с тем, что нужно браться сразу за сложные задачи, предпочитаю начать с малого. Т.к. сразу большая задача имеет большой риск быть не решенным, что может травмировать психологически и убить всякий дальнейший интерес. Хотя это к навыкам тоже отношения не имеет, это скорее из личностных качеств и психологии.
VD>5. Реальная заинтересованность в развитии/обучении (последняя по счету, но не последняя по значению!). Без нее никуда. Заставить развиваться человека невозможно. Можно только подтолкнуть. И тут лучший вариант соревнования и личный пример. Опять же открытие проекты очень хорошо способствуют.
+100. Тут без комментариев.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[2]: Размышления на тему ключевых навыков инженера...
Здравствуйте, Lloyd, Вы писали:
L>Мне кажется, тут вы ошиблись в определении. L>Системное мышление — это умение видеть, как содержимое одной полочки связано с содержимым другой и как новые знания впишутся в существующую систему.
Спасибо, да, так лучше звучит. Я бы еще как-то туда добавил возможность по необходимости перестраивать существующую систему.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re: Размышления на тему ключевых навыков инженера...
Здравствуйте, __lambda__, Вы писали:
___>Это вряд ли можно отнести к навыкам, а так, все верно конечно.
Ну, если придираться, то ваши 3 пункта тоже не относятся к навыкам
Re: Размышления на тему ключевых навыков инженера...
___> Логическое мышление ___> Системное мышление ___> Аналитический склад ума ___>
___>Логическое мышление — способность выстраивать цепь логических рассуждений. Тут по идее и комментарии излишни, без этого точно никуда.
___>Системное мышление — способность раскладывать по полочкам полученные знания. Вытаскивать из полочек и применять эти знания там, где это нужно. Иметь некий порядок у себя в голове.
___>Аналитический склад ума — способность уметь делать анализ ситуации, моделировать и делать выводы.
___>(не претендую на точность определений, изложил свое понимание этих понятий, если что не так, поправляйте)
___>Может я что еще важное упустил?
Мое дополнение к списку (Порядок, в котором приведены эти качества, не отражает их важности — важны все одинаково).
Абстрактное мышление — умение рассматривать любую систему, не выходя за пределы определенного уровня "погружения". Недостаток абстрактного мышления приводит к неправильному делению на подсистемы/модули/подпрограммы, и в конечном счете приводит к "спагетти-коду". Человек без абстрактного мышления может быть максимум — кодером, работающим по подробным спецификациям. Часто такие люди, получив образование как программисты, уходят в тестировщики. Для развития этого качества, наверное, можно придумать задачи типа: Вот тебе диаграмма системы, вот описание системы в целом, вот описание отдельных модулей. Выдели в описании модулей характеристики, влияющие на (а) функциональность системы в целом, (б) на межмодульные связи, (в) влияющие только на внутреннюю реализацию модуля.. По крайней мере, набить руку на таких задачах можно. Широкий кругозор. Я бы даже сказал — любовь к самому процессу получения знаний. Лично меня напрягают люди, говорящие: "Ну, с этой технологией я еще не сталкивался, поэтому и ничего сказать не могу". Гораздо лучше, когда человек говорит: "С этой технологией я на практике не сталкивался, но кое-что читал, пробовал примеры запускать." Причем речь идет не только о профессиональных знаниях, но и о любых знаниях вообще. Если программист на досуге интересуется, например, спутниками, то в очередном проекте по написанию системы управления для спутников ему будет проще освоиться. Думаю, в ВУЗе любовь к знаниям развивать поздно. Как правило, она формируется в подростковом возрасте стараниями близких — в семье. Наша школа, к сожалению, любовь к знаниям не формирует. Аккуратность и внимательность к мелочам. Как правило, это качество отсутствует у т.н. "олимпиадников", но без этого эффективное программирование в составе команды невозможно, а тем более невозможно сопровождение чужого кода. Развивать это качество можно только участием в "промышленном" (в отличие от "олимпиадного") программировании.
Re[3]: Размышления на тему ключевых навыков инженера...
B>> Логическое мышление B>> Системное мышление B>> Аналитический склад ума B>>
B>>Перечисленные свойства являются отличительными признаками вычислительной системы. B>>Человеку достаточно любви к Истине. B>>Инженер прежде всего Человек.
AC>Добавлю, при наличии желания, эти качества, да и любые другие, практически каждый способен развить.
Я лично был знаком с человеком, который тоже так думал. Был убеждён, что программировать в принципе можно научить любого, хотя бы на началтьном уровне Был готов до хрипоты спорить об этом.
А потом он пошёл преподавать... В приличную, кстати, школу (номер не помню) города Питера. Разочарованию его не было предела. Из класса было человека 2-3, которые что-то понимали.
Re[3]: Размышления на тему ключевых навыков инженера...
Здравствуйте, AlexCab, Вы писали:
AC>Добавлю, при наличии желания, эти качества, да и любые другие, практически каждый способен развить.
Это называют по разному. Вы понимаете о чем речь. Желание, по моему, смахивает на фрейдизм. В Университете Калгари, например (ссылка), ясно прописана миссия "seek truth and disseminate knowledge", а в это время в России из Университетов выпускают ВАЛЛ·И, которых хлебом не корми, дай только выполнить забитую в них учебную программку, точнее то, что от нее осталось .
Жизнеспособность прямо пропорциональна простоте!
Re: Размышления на тему ключевых навыков инженера...
Здравствуйте, __lambda__, Вы писали:
___>Может я что еще важное упустил?
Самый важный навык инженера это образное мышление, т.е. способность представить решаемую задачу. Если образного мышления нет, то все остальные навыки бесполезны.
Re[4]: Размышления на тему ключевых навыков инженера...
Здравствуйте, vmpire, Вы писали: AC>>Добавлю, при наличии желания, эти качества, да и любые другие, практически каждый способен развить. V>Я лично был знаком с человеком, который тоже так думал. Был убеждён, что программировать в принципе можно научить любого, ...
Можно научить _почти_ любого кто _хочет_ научится.
V>А потом он пошёл преподавать... В приличную, кстати, школу (номер не помню) города Питера. Разочарованию его не было предела. Из класса было человека 2-3, которые что-то понимали.
Нельзя научить в принципе, того кто не хочет учится.
Ткие дела.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)