Пользователь
0,0
рейтинг
16 января 2014 в 21:11

Разное → Как научить программировать гуманитария из песочницы

Приветствую всех!

В этой статье я хотел бы осветить особенности обучения программированию гуманитариев, обучаемых технарём, на основе своего небольшого опыта. Специфика состоит в том, что у меня не было возможности всесторонне исследовать разные типы гуманитариев и подходы к ним. В основном я работал с теми, кто в качестве основного пути выбрал философию. Преимущественно в разрезе философов дальше и пойдёт детализация.

image

Мой опыт, на основании которого я сделал описываемые выводы, возник из примерно 6-летней в общей сумме работы с людьми, желавшими или думавшими, что желают, обучиться программированию. В процессе работы велись как групповые, так и индивидуальные занятия с обучающимися (возрастом от 16 до 26 лет), величина групп была в среднем около 11 человек, по несколько групп параллельно.

Группы были поделены по способам мышления и в среднем имели сравнимый уровень интеллекта. Это дало мне возможность наблюдать живьём, как сильно отличается скорость восприятия в разных областях программирования, что укрепило меня в подозрениях, что при вариации путей обучения скорость отстающих можно заметно повысить, если использовать базис, понимаемый в их системе координат и на уровне способа обработки информации. Попытки нащупать правильный подход к людям гуманитарного склада ума осуществлялись постепенно, без использования методических и психологических пособий, ориентированных конкретно на гуманитариев. Большинство прошедших мой курс в конце успешно ориентировались в подходах к решению некоторых задач, возникающих у них в хобби, и к которым применение программирования имеет (во всяком случае, видимый мне) смысл.

Стоит отметить, что решение задачи «сделать из гуманитария программиста» я разделяю на 3 больших вопроса.
1. Вопрос мотивации, или «зачем мне это надо?»
2. Вопрос способа обучения, или «как мне сделать так, чтобы компьютер меня понял?»
3. Вопрос поиска точки входа, или «с чего начать, когда передо мной встала конкретная задача?»

В основном в статье я постараюсь раскрыть именно второй вопрос, но кратко пройдусь и по остальным.
Кстати, статья большая. Если надоест читать, но интересны выводы, которые я сделал, — итоги в конце.

Сразу отмечу, что ни в коей мере не претендую на истину как в последней, так и в предпоследней инстанции, либо широкий, обобщённый подход: всё, что я расскажу — просто изложение наиболее эффективного найденного мной способа научить гуманитария, в основном философа, программировать. Разные люди имеют свои отличия, в статье будут перечислены только основные, характерные для подавляющего большинства обучающихся-гуманитариев, с которыми я сталкивался.

Вопрос мотивации


Думаю, не ошибусь, если скажу, что подавляющее большинство активных программистов, равно как и тех, кто этому обучает, — это люди технического склада ума. Среди технарей вопрос о мотивации — зачем им нужно учиться программировать? — особо болезненно не стоит: многие из них понимают выгоду умения читать, понимать или уметь писать код, применимость программирования в их увлечениях или предполагаемой будущей работе. В принципе, по опыту, лишь небольшое число технарей от этого занятия испытывает сильный негатив.
Иначе обстоит дело с гуманитариями.

Вопрос терминологии «кто есть гуманитарий, и чем он отличается от математиков/программистов/физиков-теоретиков» предлагаю оставить в стороне. В Интернете достаточно много определений, как правило, основанных на практических способах отличить один тип от другого. На интуитивном уровне по тому, как человек мыслит и выражает свои мысли, можно понять за довольно короткое время, к какому лагерю принадлежит этот человек. Предлагаю пока на таком интуитивном способе определения и остановимся.

Мотивация людей гуманитарного склада ума значительно осложняется тем, что, как правило, в их сфере деятельности и увлечений применение программирования (во всяком случае, не высших порядков) крайне ограничено, и если задачи, которые можно было бы решать с помощью программы, и появляются, то они совсем не просты и требуют хорошей подготовки, например, в области генетических алгоритмов.

Мотивировать с точки зрения расширения возможных сфер приложения в будущем, чтобы быть более востребованными в случае чего? Программирование в любом случае останется для них чуждой дисциплиной, нарушающей мирное течение Силы привычные им способы мышления и образ действий. Тратить серьёзные усилия на то, что делать будет в самом лучшем случае не очень неприятно, сложно, не приносить удовольствия от жизни и за разумные сроки не способствовать обретению гармонии с миром — не самая радужная перспектива.

Мотивировать с точки зрения расширения кругозора? На самом деле, способов расширить кругозор у гуманитариев не сильно меньше, чем у технарей, просто эти способы лежат не в настоящем-будущем, а в прошлом. История, религии, исследования мыслителей различных направлений — информации очень много. Так что наше с вами программирование не воспринимается как какой-либо идол, на который надо молиться, просто совсем. Учитывая частоту нападок на «тупых гуманитариев» со стороны причисляющих себя к человеческо-технарской элите человекообразных, такая попытка мотивации обречена на провал очень быстро.

Любая попытка мотивировать с помощью ориентирования на практическое применение — так сказать, хоть что-то материальное, что будет являться непосредственным продуктом их деятельности — тоже потерпит неудачу. Это непосредственное практическое применение им даром не сдалось…

Единственным способом мотивировать гуманитариев на изучение программирования, чтобы он давал хотя бы минимальную положительную тягу, для меня стал призыв к их универсальности. Гуманитарии, как правило, не любят быть очень узкими специалистами в своём деле. Круг их образования, в котором они считают, что должны быть выше среднего, довольно широк и не всегда лежит только в смежных с их профилем областях. Например, лингвисты часто любят самообразовываться в вопросах религии, историки — в искусствоведении (это, конечно, почти смежная дисциплина, но всё же), и так далее. На этом можно сыграть как на подложке для обоснования того, что им вообще это может быть интересно. Ведь занятие программированием сформирует им ещё один тип мышления, пусть и не на глубинном уровне, это сильно ново и сильно нестандартно для них, что, в свою очередь, рождает — поначалу, конечно же — неплохую тягу к борьбе с «этими ненавистными командами».
Разумеется, нельзя скидывать со счетов и возможность достижения в результате более хорошего взаимопонимания с людьми технического склада ума. Но до этого гуманитарии и сами додумываются.

Вопрос способа обучения


Итак, гуманитарий собран, готов к обучению и жаждет знаний. С чего же начать?

Здесь сразу следует сделать отступление в связи с качественно иным уровнем уровнем ожиданий от предмета. Технарь понимает, что результат не достигается за пару занятий, и что сложные программы собраны из кирпичиков, и что для того, чтобы получить конечный результат, нужно суметь собрать каждый кубик. Гуманитарий это тоже понимает, правда, не очень сильно об этом изначально задумывается — в гуманитарных дисциплинах такой ярко выраженной лестницы из навыков нет. При постановке нескольких задач из N кирпичиков технарь ищет возможность переиспользовать уже написанное, чтобы как можно меньше кирпичиков пришлось реализовывать в дальнейшем. Гуманитарий падает духом, потому что до его осознания очень, очень быстро докатывается, сколько мелкой, кропотливой, скучной работы нужно сделать, чтобы на выходе получить даже незначительный результат. При неправильном подходе убить любую готовность гуманитария всё-таки делать эту кропотливую работу очень легко, и потом его пряником не заманишь. С технарями легче — их дольше нужно мучить, чтобы они возненавидели программирование.

Хочу сделать ещё одно отступление. Дальнейший рассказ в большом количестве содержит указания на то, что привычный и понятный основному большинству технарей способ понимания определённой вещи для гуманитариев не подходит. Да, возникает большое желание схватиться за голову и возопить — как так, это же элементарно?! Я постарался максимально акцентировать то, что их способы понимания в базисе отличаются от технарного, что не делает эти способы глобально хуже — делает только восприятие программирования как дисциплины, придуманной, бесспорно, технарями, гораздо сложнее для них. При одинаковом результате на понимание определённого приёма программирования им потребуется приложить больше усилий, чем среднестатистическому технарю, вследствие другого склада ума. Давайте попробуем хотя бы в рамках этой статьи жить в мире, «где мерилом работы считают усталость».

Посмотрим на то, как в стандартной методике обучают человека, зачем нужен цикл. Например, надо вывести числа от 1 до 30.
Сначала предлагается выполнить это для 1 числа. Потом для 2. Потом для 3, и так далее. Понятно, что изначально люди просто будут писать в столбик команду на выведение очередного числа. До обучающегося быстро доходит, что данная стратегия не выигрышна в случае большого количества повторений. После чего делается переход к общему виду — вывести числа от 1 до N, где N будет, например, равен 30. Обучают соответствующей конструкции — и на этом цикл, можно сказать, усвоен.

Так вот, так работает — разумеется, с технарями — и только в лучшем случае с третьей частью гуманитариев.

Практика показывает, что гуманитарии очень чётко делятся как минимум по двум признакам. Это изначальная доступность метода экстраполяции для мозга и категория размера кирпичика, который человек может воспринять. Под кирпичиком во втором признаке подразумевается общность задачи, некая абстрактная мера абстракции, извините за тавтологию. Величина абстракции в попугаях, в общем.

Может показаться, что из наличия или отсутствия первого признака может достаточно логично следовать второй признак. Однако на практике такого не происходит. Как минимум, экстраполяция не всегда рождает абстракцию. Впрочем, оставим выяснение причин этого тем, кому это интересно; я лишь перечислю, на какие категории можно разделить людей по этим признакам:

а) Человек может хорошо понимать, что такое экстраполяция, и хорошо воспринимать только кирпичики небольшого объёма.
б) Может иметь большие проблемы с применением экстраполяции, и хорошо воспринимать только небольшие кусочки.
в) Или — третий вариант — может не иметь проблем с экстраполяцией, и при этом понимать только сразу большие кирпичики знаний.
Конечно, четвёртое сочетание встречается — не понимать экстраполяции и мочь воспринимать только большие куски знаний. Но оно редко встречается, значительно реже, чем остальные три.

В дальнейшем я буду касаться в основном вариантов, когда человек может воспринимать только сразу большие кирпичики знания, потому как именно с ними у меня было больше всего опыта — с философами. В подавляющем большинстве у них атрофируется способность понимать и — в том числе как следствие — экстраполировать мелкие куски, и задача, лишённая большой абстракции, становится с трудом преодолимой. Попробую показать, какой подход в задаче с циклом оказывается более легко усваиваем.

Итак, нам нужно научить человека циклу. Возьмём подход: у нас есть массив (не посчитать сумму чисел от 1 до скольких-нибудь, что вводит пользователь, потому что это — математическая задача, гуманитариям она банально неприятна). Массив объясняется как абстрактный тип данных, некий контейнер с кучей элементов одинакового типа, например, чисел, внутри. Нам нужно получить их сумму. Как это сделать?
Задача №1: придумать не математическую задачу, которая будет интересна обучающемуся, в которой это может понадобиться очевидным образом. Например, подсчёт количества публикаций конкретного автора в домашней библиотеке книг. Ни в коем случае нельзя оперировать понятиями «вот надо будет посчитать среднее, надо будет сумму посчитать, чтобы потом на неё разделить»… Это путь к провалу. Любая связь с математическими вычислениями, если она не заобфусцирована, будет рождать критическое внутреннее напряжение у обучающегося.

Задача №2: предложить решить эту задачу на понятийном уровне без рисования точного алгоритма или, упаси Боже, блок-схем. Достаточно того, чтобы обучаемый дошёл до стадии «смотрим на шкаф, перебираем книги подряд. Каждый раз, когда находим книгу этого автора, загибаем палец». Дальше мгновенно (мы всё-таки говорим о взрослых людях) приходит мысль о том, что можно рисовать палочку на листе бумаги вместо загибания пальца для учёта сколько угодно больших количеств книг.
Задача №3: спроецировать решение задачи, которое уже придумано на понятийном уровне, на… не алгоритм. Не блок-схему. Сразу на язык, на котором человек учится программировать.

Забудьте о том, что программирование в истинной сущности своей — умение сочинять алгоритмы. Оставьте это тем из технарей, у кого голова именно под это заточена. Сейчас у нас задача — научить человека делать то, к чему его образ мышления совершенно не готов.
Важно не пытаться научить «закоживать алгоритмы». Для того, чтобы это было можно сделать, гуманитарию нужно сначала создать алгоритм, что всегда сложно, неприятно и неинтересно. Если такой алгоритм уже есть — он найдёт программу, где алгоритм будет реализован, или посчитает на калькуляторе. Если алгоритм слишком сложен, чтобы его можно было посчитать на калькуляторе и бумажке — гуманитарий просто не станет решать такую задачу, если совсем не припрёт, и будет несчастлив всё это время. И вообще слово алгоритм лишает их душевного спокойствия в общем и желания заниматься программированием в частности.

В такой проекции лист бумаги станет переменной, хранящей число элементов, а проход по книжным полкам подряд — просмотр элементов массива один за другим. Важно не упрощать задачу так, чтобы она решалась в результате за одно действие — например, сразу переключиться на ООП и сказать, что это будет наш список, а вот этот метод вернёт количество элементов по фильтру в параметрах — и не болей. Всё-таки задачей является научить человека программированию, а это значит, что со всеми особенностями устроения его мозга ему придётся учиться складывать дом из кирпичей, и проще строить дом, чем небоскрёб из растущих панельных плит изначальной высотой в десять метров и саморазворачивающихся лестниц.

Очень важно после рассказа об очередном приёме программирования указать на то, с чем может такой приём использоваться. Для многих технарей интуитивно понятно, что в тело цикла можно поместить ещё один цикл или, на худой конец, вызов процедуры, в которой будет ещё что-нибудь. Большинство гуманитариев имеет базисную ассоциацию инструментов для программирования с обычной, к примеру, домашней техникой, в которую можно помещать только определённые предметы, и на выходе будет получаться один из тех предметов, который указан в инструкции в перечне возможных результатов этой техники. Необходимо показать, что инструмент программирования — тоже абстрактная вещь, которая имеет некоторые рамки, но в качестве того, с чем этот инструмент будет работать, может использоваться более широкий класс предметов, чем просто перечень конкретных примеров. Неплохо работает принцип ограничения «от противного», в духе запрета класть кошку в микроволновку, но всегда нужно точно указывать, с каким классом, типом, формой входных данных инструмент может работать, а также на то, что его можно сочетать с другими инструментами программирования. Фраза «это будет работать с чем угодно» некорректна, потому что они туда попробуют положить какой-нибудь вопрос экзистенциальности в общем виде и не смогут понять, какого результата ждать.

Также я очень редко наблюдал у обучающихся желание попробовать, как поведёт себя какой-либо инструмент, если в него положить что-нибудь неожиданное/другой тип данных и так далее. Ведь правила, по которым работает инструмент, продиктованы алгоритмами, то есть пытаться их понять — больно, долго и сложно, поэтому это не делается, во всяком случае, поначалу. Частично этот недостаток любопытства, назовём его так, восполняется за счёт умения воспринимать типы входных данных абстрактно, но всё же это накладывает некоторые дополнительные условия на преподавателя, когда начнётся обучение динамическим типам данных и объектам. В этом вопросе, как это ни парадоксально, гуманитарии куда более конкретны, чем технари.

Больным местом при обучении гуманитариев с проблемным восприятием небольших кусочков знаний становятся частные случаи и граничные условия. К сожалению, ничего лучше, чем дать запомнить, какие самые распространённые граничные условия для каждого типа связи между хранимыми данными стоит рассматривать, я не нашёл. Дальнейшие проверки будут устраиваться по принципу наработки опыта и набивания шишек, настолько мало и медленно, насколько возможно, и это хорошо — каждая такая проверка является серьёзным испытанием целеустремлённости гуманитария.

Набивание шишек, естественно, происходит за счёт получения ошибок в программе. Здесь ждёт засада: приходится обучать начинающего программиста читать на языке компилятора/интерпретатора (в дальнейшем просто компилятор, так как практика показывает, что интерпретатор приводит гуманитариев в задумчивость по нескольким причинам, одна из которых — «если он делает всё по шагам, зачем нам напрягаться и писать программу, когда мы сами можем выполнить нужные шаги?» Кроме того, в языках с компиляторами проще искать ошибки: гуманитарию в голову не придёт засунуть в переменную значение не того типа, например; любопытство их имеет совсем другую природу). Компилятор, как правило, не слишком дружелюбен в демонстрации истинной ошибки в программе, гораздо чаще это ошибки в духе «неожиданная запятая». В таких случаях помогает давать обучаемому смотреть примеры такого же по структуре кода, написанного ранее, и работающего. Важно, чтобы код писался всегда в едином стиле. Я не встречал у гуманитариев с этим проблем. Совсем. Сказано писать в таком стиле — будут писать в таком. Потом поправят, если им как-то иначе будет удобнее.

Важно!
Как и большинству людей, гуманитариям важно видеть результат как можно меньшего количества подряд кода. Нет, не как большинству людей — гораздо сильнее. Это даёт им столь необходимую мотивацию, чтобы продолжать. При этом — парадокс! — они очень не любят делать лишнюю работу, то есть писать дополнительные печати, которые для получения готовой программы придётся удалить. Хорошим способом является дать им уже заранее написанную мелкую функцию, которая будет записывать эту строку, которую они хотят вывести, не на экран, а в файл, и чтобы файл был открыт у них всё время на заднем плане (или втором мониторе). Процесс созерцания результатов работы значительно подкрепляет их веру в свои силы.

Практика показывает, что абстрактные вещи, которые нельзя «пощупать» (или которые на базовом уровне для этого не предназначены), гуманитарии воспринимают хорошо и как будто легко. Например, так обстоит дело с указателями в Си. Главное — не вдаваться в подробности использования операторов, унарных, бинарных и представление данных внутри компьютера. Это всё очень конкретное и не представляет интереса, как и помощи в будущем программировании на том уровне, на котором им хотелось бы использовать его в принципе.

Повышение уровня абстракции представления данных также даётся им легко. Так что если обучение идёт тяжело, всегда можно временно приподняться над уровнем элементарных типов данных, снизить стресс, получаемый при обучении тому, что не получается, и аккуратно вернуться после этого.

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

К сожалению, сложность этой задачи ещё в том, что попытки разбиения и, таким образом, упрощения задачи наталкиваются на непринятие в качестве доступного действия. Ведь в их мышлении, если абстракцию разделить на две части, всё равно получится абстракция (а не две абстракции). В моей практике это было критическим моментом образования другого типа мышления: если обучающийся создавал у себя в мозгу ещё одну операцию, которая говорит, что эти программистские абстракции — не такие, как все, а делимые, и их можно и нужно делить, то дальше шло гораздо легче.

Попытки привить обратный, пошаговый метод написания программ к успеху не привёл, посколько он идёт вразрез с методами работы с гуманитарными дисциплинами. Кроме того, большая трудность была встречена ещё в одном аспекте: целостность решения. Мне оказалось очень сложным научить записывать то, что обучаемые уже придумали, как сделать: если они это придумали, то чего там сложного, зачем записывать? С проблемой нехватки «оперативной памяти» обучаемых я столкнулся довольно быстро, и необходимость целостности придуманного решения предстала передо мной во всей красе. Побороть это я смог только методом дачи сильно последовательного возрастания «лестничности» предполагаемых решений задач, тогда способ реализации каждой ступени занимает совсем мало памяти в процессе разработки решения, и задачи успешно решаются.

Вопрос поиска точки входа


Это один из самых сложных вопросах на первых порах обучения.

Во-первых, потому что задачи должны быть поначалу очень сильно детерминированы. Не должно допускаться вещей, которыми я сам при постановке задач грешу довольно сильно: недостающие условия заполняются по усмотрению обучающегося. Например, способ ввода исходных данных. Такие вещи должны быть строго определены.

Ключевым моментом здесь для меня явилось то, что необходимо тщательно рассказать, каким образом делается экстраполяция имеющихся типов данных на те абстракции, с которыми им может придтись работать. Что аналогией клетки является объект, хранящий параметры и другие объекты. Что ДНК можно рассматривать как множество элементов, то есть редуцировать до массива. В данном случае основным направлением объяснения для тех гуманитариев, кто хорошо понимает экстраполяцию, должна быть экстраполяция типы данных на типы, с которыми работать потом по жизни, а для остальных — редукция из вещей, с которыми придётся работать, к некоему фиксированному формату типов данных и инструментов для программирования.

Во-вторых, опять вылезает некая обязательность целостности решения в голове у обучаемого. Необходимо делать ударение на том, что нет ничего зазорного или плохого в том, чтобы разбираться с некими проблемными местами потом, когда остальное решение уже готово. Проблема упихать имеющийся объект в тип данных (или натянуть тип данных на имеющийся объект) — часто возникающая проблема, и чем раньше обучаемые знакомятся со объектными типами данных (структурами), тем легче им потом обучаться ставить в соответствие программные термины и термины из реальной жизни.

В-третьих, когда гуманитарий думает, как он будет решать поставленную задачу, частой практикой у них в голове является воссоздание «как бы я стал решать такую задачу?» — и поэтому при начале написания программы первым же вопросом оказывается «а где всё то, с чем я работал только что в голове?» Необходимо чётко и несколько раз, с введением каждого нового типа данных, объяснять, откуда могут появиться данные в этой переменной/в этом объекте, и давать примеры заполнения их данными. Тогда в голове гуманитария родится ответ в духе «раз я собрался решать задачу через массив, способ его заполнения подходит тут следующий...» — и написание программы пойдёт уже своим нормальным путём.

В заключение хочу сказать, что, хоть обучение программированию и довольно тяжело поначалу людям с гуманитарным складом ума, в дальнейшем они начинают применять методы, которые они опробовали, в различных комбинациях хоть и без изворотливости и любимой многими программистами утончённой изощрённости, но вполне уверенно. А кроме того, они получают удовольствие от осознания того, что получили возможность заглянуть в мир непривычных импликаций и преобразований глазами технарей и получить, таким образом, новый опыт.

Содержание статьи кратко


И в качестве совсем уже итогов — краткий список «хинтов», до которых я дошёл. Вдруг пригодится кому, если срочно нужно будет подготовиться.
  • только не математические задачи;
  • точность определений рамок, в которых могут использоваться методы и инструменты программирования;
  • «разделяй и властвуй» в отношении программистских абстракций, которые не такие, как все;
  • разделение способов объяснения применимости методов программирования к реальным задачам — по типам мышления, хорошо владеющим экстраполяцией и плохо;
  • точная постановка задач;
  • пошаговый метод решения задач успеха не даёт;
  • сильно ступенчатое наращивание количества связей, которые нужно построить для решения очередной задачи, несмотря на лёгкость восприятия обучаемым очередной темы, из-за необходимости построить сразу целостную модель решения;
  • «нет» реализациям алгоритмов (математических).


Удачи всем, кто будет заниматься подобным. Надеюсь, эта статья чем-нибудь поможет и подскажет в такой ситуации.
И выражаю большую признательность всем своим «подопытным».

P.S. Если кто-то нашёл ещё способы хорошо мотивировать гуманитариев на изучение этой дисциплины — буду рад услышать.
@Advaita
карма
9,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разное

Комментарии (87)

  • +37
    никак
    • 0
      Простите, это был Ваш ответ на вопрос из заголовка?
    • +4
      Ожидал увидеть это единственное слово под катом поста.
  • +47
    Боюсь, конечно, вас расстроить. Но судя по стилю и содержанию статьи вас укусил гуманитарий /s
    • +12
      А гуманитарии вообще склонны кусаться, когда их учат программировать =)
    • +8
      Программист, укушенный бухгалтером, после смерти сам становится бухгалтером
      • +7
        А если бухгалтер выпьет всю кровь, то превращается в 1Сника
  • +3
    Не знаю, может, это из-за того, что я левша, которого с детства заставляли писать левой рукой (еще не знали, что нельзя), но мне и гуманитарные (русский/украинский, к примеру), и точные предметы (математика, програмирование, само собой) давались, по сути, почти одинаково легко. И мне часто не понятно это разграничение на гуманитарий/техник. Если человек умеет учится, то у него все получится. Понятно, что доктор психологии вряд ли получит Ph.D по математике, но разобраться, по идее, способен.
    • +7
      Изначально да, может. Но обычно это ему не интересно. А сосредоточение интересов в одной области приводит к развитию специфического мышления. И не интересно превращается сначала в сложно, а потом и в почти невозможно. Я говорю сейчас в среднем, а не исключениях.
      Да же то, что раньше мне было легко, сейчас уже сложнее стало разбираться. Хотя пока, к счастью, любопытство пересиливает лень.
    • +2
      Меня, левшу, тоже переучили на правшу. Я до сих пор не могу понять, кто я, гуманитарий или технарь. Всегда интересовался наукой и техникой, изучал паскаль и C++, но при этом из-за испорченных отношений с преподавателем не взлюбил математику, хотя до этого она шла у меня хорошо, поступил на юридический, работаю юристом, но при этом параллельно помогаю сисадмину возиться с компами, читаю хабр. Так кто же я, черт возьми?
      • 0
        Технико-гуманитарий. Но это шутка такая глупая, не принимайте близко. А так Вы — обычный и нормальный человек. В наши дни не очень корректно проводить градацию между технарями и гуманитариями. Технарям приходится постигать что-то гуманитарное (право — чтобы отстоять свои права, лингвистику — для более полного владения иностранными языками, философию, логику, историю и т.д.). И гуманитариям в свою очередь приходится постигать, что техническое (строительство (с точки зрения инженера) — чтобы например построить себе сарай на дачном участке и он выдержал нагрузки и не развалился, автомеханику — чтобы что-то починить, заменить или модернизировать в своей машине, тоже программирование наконец и т.д.).
        • 0
          Благодарю за Ваш комментарий. Абсолютно с Вами согласен, в жизни с чем только не приходится сталкиваться, такая уж она штука, эта Жизнь.
    • 0
      «учится», «гуманитарий/техник». Ну, если одинаково легко, то у меня для вас плохие новости.
      • +2
        Писал с планшета свайпом, не заметил)
        А вас не смутило?
        я левша, которого с детства заставляли писать левой рукой

        Когда заметил, было уже поздно (должно быть «правой рукой»).
        гуманитарий/техник

        А здесь вам что не нравится?
        • 0
          Потому что антоним — «человек с математическим слкадом ума» или, на крайний случай, «технарь». Техники техникой занимаются.
          • +1
            Ну, возможно, не буду спорить. В конце концов, русский — не мой родной язык, да и пошёл я на программиста, а не лингвиста)
  • +2
    Ха! Только что супруга, выпускник филологического, опять отбирала у меня комп, чтобы верстку в своем проекте подправить.
    • +1
      Не стоит путать специальность в дипломе со складом ума, как и отсутствие технического склада ума с наличием гуманитарного.
  • +2
    Давеча я пытался научить пару друзей программированию. И столкнулся именно с теми проблемами, которые описаны в статье:
    — объяснял мелкими кусочками (которые сам привык воспринимать)
    — зачем то залез в дебри «сколько байтов занимает этот тип данных»
    — описывал задачу и спрашивал «с чего начнём?»
    Было несколько других моментов, но я потерпел поражение после того как услышал вопрос «а зачем?». На него я не смог ответить, ведь действительно, эти задачи они могли решить и сами, например задача «сварить суп». Вообщем никудышный из меня учитель получился. Рад, что вы справились с этим. Почерпнул несколько моментов.
    • 0
      Очень рад, что оказалось полезно. Вопрос «зачем» — краеугольный камень тут, увы.
  • +6
    А текст вам гуманитарии писать помогали? Много текста, мало смысла.
    • +4
      Помогали, но не в плане текста, а в плане подсказки, как что они воспринимают. Так что количество текста на единицу смысла — целиком моя «заслуга».
      За критику спасибо, учту на будущее.
  • 0
    Текста, действительно, много получилось. Но статью прочитал с интересом. Сам недавно с подобной задачей столкнулся и натыкался на все грабли, описанные в статье. Жаль, что не пригодятся мне такие знания в будущем.
  • +3
    Вопрос терминологии «кто есть гуманитарий, и чем он отличается от математиков/программистов/физиков-теоретиков» предлагаю оставить в стороне. В Интернете достаточно много определений, как правило, основанных на практических способах отличить один тип от другого.
    Раньше, когда человек не знал математику, его называли дебилом, а теперь — человеком с гуманитарным складом ума (ц)
    • +6
      Дебилы == люди с низким уровнем интеллекта.
      Гуманитарии с нормальным уровнем интеллекта нормально осваивают математику. Просто понимают они её с другого угла, и выводы делают по-другому.
      • +11
        Гуманитарии с нормальным уровнем интеллекта нормально осваивают математику. Просто понимают они её с другого угла, и выводы делают по-другому.
        О, да. Клёвые, наверно, математики получаются…

        Не бывает никаких гуманитариев. Гуманитариями называют людей, у которых нет определённых способностей, а не людей, которые обладают какими-то другими (какими, кстати? способностями «понимать математику с другого угла»?).

        Однажды немецкого математика Гильберта спросили об одном из его бывших учеников.
        – Он стал поэтом, — ответил Гильберт. – Для математика у него было слишком мало воображения.
        • +2
          Это взгляд упёртого математика-сноба. Понимать математику можно по разному. Я сам имею математический склад ума, но основную часть моего окружения составляют гуманитарии. Так вот, многие из них имеют такой интересный взгляд на математику и различные инженерные области, что это переворачивает моё сознание наизнанку и выводит понимание на совершенно другой уровень.
        • +2
          Мне очень стыдно, но термин «гуманитарий» я раньше тоже употреблял к людям — которые не обладают никакими способностями, студентами поступили в гуманитарный ВУЗ, все сессии покупали — на выходе «нулевые специалисты», которые ничего не могут, не знают и не умеют.

          Но сейчас я перестал, один мой коллега гуманитарий (лингвист), говорит на 9 языках, с какого-то перепугу решил получить второе высшее и поступил на факультет «самолетостроения». Я не знаю, но детмаш он сильно полюбил, освоил и быстро решает всякие задачи по нему. И действительно под каким-то другим углом, со своим взглядом на это дело.

          В общем мне стыдно, что раньше я употреблял термин «гуманитарий» — как оскорбительный. Просто за последние 3 года я видел много «достойных гуманитариев», которые и с математикой неплохо справляются.
          • +1
            Что вы мне тут рассказываете то) Понятное дело, что человек, который получил «гуманитарную» профессию не есть тупой по определению. Речь же тут не о профессиях, не о выбранных целях в жизни, не о специальностях в вузе и не о чём-то таком, а о каком-то там «гуманитарном складе ума». И прошу заметить, что это не я использую термин «гуманитарий» в смысле вроде «чел, которого трудновато научить программировать», а большинство комментаторов, включая автора поста.
            • 0
              Тогда прошу вас меня извинить. Просто возможно я не так понял вашу фразу:
              Гуманитариями называют людей, у которых нет определённых способностей, а не людей, которые обладают какими-то другими
  • НЛО прилетело и опубликовало эту надпись здесь
  • +6
    Удивила столь мрачная реакция хабражителей на статью. Вероятно, из-за того что многие что многие из них сталкивались с гуманитариям на поле своей деятельности (и последствия были не очень позитивными). Между тем, автор описал ценный (и успешный) опыт по «изворачиванию» в этого самого типа мышления у таких людей (в определённых рамках, но всё же!) для решения задач через программирование своими собственными силами. Снимаю шляпу: это надо иметь педагогический талант чтоб суметь такого достичь — и заинтересовать, и обучить — и тем технарям кому волею случая придётся столкнуться с подобной задачей этот опыт очень может пригодится.

    Замечание по теме — хорошо бы в статье увидеть пример как практически отличить тех что умеет делать экстраполяцию от тех кто не умеет, какая им должна быть задана задача?
    • +3
      Спасибо!

      По поводу вопроса: одна из таких задач была такая.
      С самого начала рассказывается, что такое массив, без вдавания в подробности в духе типов данных и так далее. Просто контейнер, содержащий элементы.
      Потом в массив записывались числа, и обучаемого просил найти максимальный элемент. Очевидно, проблем это не вызывало.
      Потом в массив записывались буквы от а до я сначала маленькие, потом большие (а… яА… Я), и обучаемому предлагалось найти максимальный элемент. Это вызывает некоторый ступор. У человека было нормально с экстраполяцией, если он быстро доходил до ввода собственной функции сравнения элементов и давал какой-нибудь ответ. Как правило, ответ был «Я». Нужно, чтобы было ещё обосновано, почему именно такой ответ.
      • 0
        Интересный способ! Хотя он и несколько противоречит утверждению из вашей статьи по поводу не полных условий.
        • +1
          Да, но в статье речь шла непосредственно про процесс обучения, а тут фактически вступительное тестирование.
          Определять, понимает ли человек экстраполяцию хорошо или нет, нужно чуть ли не в самом начале, и на этот момент человеку надо не впитывать чуждую ему информацию (что занимает много ресурсов, поэтому и условия ставятся как можно более полно, чтоб на додумывание силы не тратить), а решать конкретный маленький вопрос. То есть мозг до получения этой задачи ещё не пытался особенно перестроиться, что оставляет ему ресурс на творческое решение неожиданной задачи.
          Когда уже пойдёт сама нагрузка по укладыванию в голову сложных понятий — там надо условия разбираемых ситуаций ставить как можно чётче.
      • 0
        Простите, а почему «Я»? Это просто интуитивно-шаблонный вывод. Интуитивный для не имеаших дела с кодировками, шаблонный для имеших. Не имея базового представления о множествах(хотя бы интуитивного) нельзя вообще ввести функцию сравнения для его элементов. потому то что она по размеру больше и последняя по алфавиту? Для математика например это ни разу не аргумент. Допущений он делать не будет, просто скажет что недостаточно данных. Так что это очень корявый пример…
        Можно назвать любую букву и привести пример функции сравнения, по которой эта буква и будет максимальный элемент.

        P.S. то, что вы называете умением делать экстраполяцию — скорее умение абстрактно мыслить. Согласен, что это нужно выявлять в первую очерель. И, к сожалению, если этого умения нет — его придется долго и упорно развивать, иначе грубо говоря половин инструментов будет человеку не доступна или доступна с большим скрипом. Начиная от ООП, заканчивая функциональным программированием во всей его красе.
        • +3
          Так о математиках речь не шла. Гуманитариям вопрос задавался. Какие для них кодировки? У них понятия числа и буквы — в корне разные (по-хорошему, для не обученных программированию и кодировкам математиков вообще-то тоже), и когда предлагаешь совершить одинаковую операцию с ними, это вызывает разрыв шаблона. Если соображает, что понятие сравнения (которое они доселе применяли только к числам!) можно распространить на другие элементы тоже — это и получается экстраполяция.
          Один из правильных ответов (хотя у них всё правильным ответом на этот вопрос было — если могли объяснить!) — «Я», потому что последним встречается в алфавите. Функция сравнения введена, процесс прошёл честно.

          А умение абстрактно мыслить у философов почти всегда входит «в поставку», они там и года не проучатся без него.
      • +3
        Мне кажется, гораздо большего можно достичь, если одушевлять машину, упоминая память (в обычном смысле) и внимание. Дать этим людям понять, как «мыслит» машина, тогда они попытаются найти с ней общий язык. В любом примере с массивами, одной из проблем может быть то, что подопытный не понимает, в чем проблема с анализом данных, так как он визуально наблюдает все элементы и решает задачу на подсознательном уровне. Мол, что тут такого, посмотрел на цифры и показал пальцем на максимальную.

        Можно сделать так: рассказать о массиве, как о коробке с числами (которые можно на кубики наклеить и положить в ряд), или написать на бумажке. А потом вырезать шаблон из бумажной полоски с окошком, которое позволяет видеть только один элемент. Объяснить, что машина глупая, и видит окружающий мир через такие вот «шоры», то есть, не может сразу смотреть на все элементы. Ну и попросить с его помощью найти нужный. Они начнут елозить по «массиву» и искать, а потом уже вместе попробовать обобщить опыт.
        • +2
          «а потом уже вместе попробовать обобщить опыт.»

          Это подход для математиков. У гуманитариев, многие из которых с экстраполяцией не дружат, обобщение будет проходить болезненно и долго.
          Но в качестве подхода для тех, кто сможет обобщить быстро, мысль мне понравилась, попробую применить. Спасибо!
        • +2
          Одушевление машины и сопоставление ее с человеком — это хороший подход и я сам его использую для «гуманитарных студентов». Мне надо было подобрать им какую-нибудь простейшую книгу, в итоге я даю им эту ссылку:
          ИНТУИТ — C# для школьников — Лекция 2: Учимся общаться с компьютером — Люди и компьютеры

          там про девочку и «хитросделанного» робота, которые каким-то мифическим способом очутились на необитаемом острове, робот представляет из себя простейший компилятор и девчушке надо накидать ему команд, чтобы он прогнал злодейского слона и достал кокосы с высокой пальмы, чтобы они не умерли с голоду

          звучит очень жестко, но при этом работает, и мне кажется это хороший подход, особенно для людей, кто приходит в программирование с нуля.
      • 0
        Столбцы в Экселе?

        *я гуманитарий
    • +2
      Реакция ожидаемая: как только в тексте появляется, что-нибудь типа
      Вопрос терминологии «кто есть гуманитарий, и чем он отличается от математиков/программистов/физиков-теоретиков» предлагаю оставить в стороне.
      люди, имеющие хоть какое-то отношение к точным наукам, обычно перестают воспринимать материал серьёзно — без определения понятий обычно серёзных разговоров не ведут. Без авторского определения «гуманитарий» — тот самый конь в вакууме.

      Вот, к примеру, мне лично видится, исходя из прочинанного, что автор [ради красивого заголовка] вполне мог подменить понятия, и речь, по всей видимости, идёт о любых обучающихся с недостаточной (не важно по каким причинам) базой знаний в области математики и ВТ. Описана картина вполне характерная для новичков. С этой точки зрения, методики обучения давно разработаны, доступны, применяемы.
      • +2
        Я думал над тем, чтобы определение, как я его понимаю, сделать частью статьи. Тогда получилось бы две вещи:
        1) в комментах начался бы спор на тему правильности моего определения; — даже без упора на моё определение выше сейчас появилось, что гуманитариев вообще не бывает;
        2) мне пришлось выстраивать это определение совсем не на техническом языке (кто как что понимает, как делает вывод, как преобразует абстракцию в частность, и т.д., а простым алгоритмом это не описывается), что вряд ли будет интересно основному населению Хабра… психологических топиков здесь как-то не встретишь =)

        Мне всё-таки кажется, что Вы не правы, говоря о недостаточной базе математики. Конечно, у них математики было меньше, спору нет. Но поможет ли математика даже 1 курса пониманию, как применить цикл для прохода по массиву? Имхо, не слишком. Разве что складывать уметь нужно =))
        • +1
          1) Тут дело вот в чем: вы как автор статьи имеете право на терминологию. Другие люди могут с ней соглашаться или не соглашаться, однако они будут точно понимать, о чём говорите именно вы. Примерно как: «Солнце (здесь и далее «Блин») даёт нам свет».
          2) Если вы опасаетесь реакции сообщества, это может быть показателем непрофильностьи статьи. Но, по-моему, зря вы её опасаетесь %)

          Массив — последовательность; цикл — проход по этой последовательности. По сему, есть основания полагать, что школьный курс математики уже может помочь в понимании. Остаётся абстракция, но и она входит в упомянутый курс.
          Т.о., если у обучаемого выработаны навыки в указанных областях, ему будет легче понять программирование (не берём во внимание различия лексики и семантики конструкций различных языков, т.к. они сами по себе могут представлять дополнительную сложность при изучении); нет — получите то, что сможете назвать «гуманитарием».

          С этой точки зрения, похоже, что последние директивы минобразования направлены как раз на увеличение количества «гуманитариев», поэтому скрестите пальцы — дальше будет хуже ;)
        • 0
          Очень занятно было почитать, понял, что был несправедлив по отношению к любимой барышне.
          Режет глаз использование слово «гуманитарий», как отдельного класса живых существ. Мне то не обидно, но вот когда в универе физик заменял «материальная точка» словом «студент», то как-то корёжило с этого пренебрежения.
  • +3
    Такое впечатление, что статья по этологии )
    • 0
      То есть гуманитарии — генетически обусловлены? Ужас-ужас.
  • +12
    Кстати, упоминаются в одном предложении язык C и гуманитарии. Зачем гуманитарию язык низкоуровнего системного программирования, который сильно завязан на понимание архитектуры компьютеров? На мой взгляд это мало что безсмыленно, так еще и себе дороже. И им пользоваться сложнее, и текст программ длиннее для той же задачи, и ошибки можно сделать, которые не объяснишь, не вдаваясь в эту самую архитектуру компьютера.
    • +17
      Гуманитарии должны страдать:)
    • –1
      Вы всё верно говорите. Язык Си использовался из-за наличия в нём чётко отличных от других типов данных указателей и строгой типизации. Указатели — достаточно абстрактное понятие, чтобы гуманитариям оно нравилось. А без строгой типизации у них совсем шаблон ломало; может, это я плохо объяснял, конечно.
      • +2
        Склонен согласиться с splav_asv – хоть целью является обучение людей стилю мышления позволяющему писать программы (и достигаете её с С), но использование C# или JavaScript (или даже Processing) для реализации решения могло бы облегчить жизнь обучаемым. Наверное, было бы менше и проблем с отпугивание обучаемых.
        • +1
          Я своим «гуманитарным» студентам стараюсь, давать С# — главное не начинать им рассказывать про типы значений и ссылочные типы и как все это представляется в памяти, у них это вызовет ступор и можно загубить им интерес. Не надо рассказывать им про интерфейсы, наследование, структуры и т.д. Вот есть у нас классы и все тут, и не надо им забивать голову про упаковку/распаковку (вроде бы так по русски, про boxing-unbоxing) и переопределение методов в производных классах — по началу я давал, и это была моя ошибка — т.к. нельзя засунуть в голову все / много / сразу всей кучей.
      • 0
        Строгая типизация полезна при обучении, тут сложно не согласиться.
        Но вот незадача, у C типизация статическая и нестрогая.
        habrahabr.ru/post/161205/
  • +1
    Мне бы больше понравилось, если бы вы рассказали несколько анекдотов про гуманитариев, занимающихся программированием. Если бы каждая история была типичной и содержала краткую мораль, это было бы полезнее, чем абстрактное абстрагирование абстрактных абстракций абстрактных абстрактов.
  • +3
    Я бы переименовал статью в «КАК научить программировать гопникА», потому что современный гуманитарий уже давно умеет программировать и знает математику, а те гуманитарии, которых пытаетесь учить вы — это результат неудачного обучения ВУЗов-однодневок, в которых всё покупается.
    Социология современная не может быть без математики и без гуманитарных знаний!
    Политология современная не может быть без математической обработки данных и без гуманитарных знаний!
    Лингвистика современная не может быть без математики и без гуманитарных знаний!
    • +1
      Не могут быть без математики и обработки данных — да! Но математика — не программирование. Они пользуются готовыми программами.
      А обучение происходило в большинстве своём с учащимися МГУ. Я не готов признать этот ВУЗ однодневкой, и блатных на философском там как-то не водилось.
    • 0
      К сожалению тенденция ВУЗов однодневок с покупными сессиями имеется и они как правило гуманитарной специальности. Но ведь люди в них не учатся вовсе, и наличие диплома не делает их гуманитариями.
  • +1
    Единственным способом мотивировать гуманитариев на изучение программирования,
    чтобы он давал хотя бы минимальную положительную тягу, для меня стал призыв к их
    универсальности.

    Значит, вы из тех преподавателей, которые стремятся поделиться знаниями и заразить своей увлеченностью предметом других. Это здорово и похвально, но, что если ученик не тянется к этим знаниям? Например, я на лекциях по психологии играла с другими скучающими технарями в шахматы. И даже тестирование на определение характера меня никак не мотивировало (до сих пор не воспринимаю эти тесты всерьёз). Вот почему я не понимаю, зачем ломать голову над мотивацией студентов. Ведь, когда они поступали в ВУЗ, у них мотивация была? Забавно, если, к примеру, преподаватель по выш мату будет думать, как заинтересовать гуманитариев интегралами и пределами…
    P.S. напоследок подкину идею: предложите философам задачу про Сократа, пусть решат на Прологе))
    • 0
      Да заражать людей увлеченностью чем-то — это предел мечтаний. Я хочу применить новую практику:

      На первой вводной лекции говорить студентам, что посещение свободное, баллы не ставлю, за посещение всем ставлю одинаково, работаете — так не пропускайте работу из-за моей пары, придете будете играть в телефоны, или заниматься всякой ерундой, можете не приходить — лучше сходите подышите свежим воздухом или поделайте что-то полезное. Всем сразу разослать, лекции, презенташки и мануалы по лабам, задания и инструкции для самоподготовки, тем кто не ходит. В итоге придут только те, кому действительно надо и интересно. И если даже 1 человек придет, вкладывать душу в него все равно.

      Я конечно не знаю менталитет иностранных преподавателей, но мне кажется, что все передовые преподаватели работают именно так, т.е. на качество, а не на количество. В общем попробую — если результат будет хороший, напишу пост.
      • +1
        Иностранцы платят деньги за обучение в ВУЗах, выбирают дисциплины, которые они хотели бы изучить, не идут в ВУЗы ради отсрочки от армии и у них нет родителей, которые вдалбливают им, что «без высшего образования ты будешь никем», развивая комплекс лузера у того, кто не сумел поступить или не захотел учиться. Поэтому там на лекции ходят те, кто сознательно решил, что ему надо пройти этот курс.
        • 0
          Да, это звучит очень правильно. Но идет не то что в разрез с нашей действительностью, а я бы даже сказал с точностью до наоборот. Мне всегда немного не по себе, когда мои иностранные знакомые говорят, что у вас в России высшее образование есть у каждого второго жителя страны, когда у нас лишь у каждого 100го-150го жителя. Наверное у вас все очень умные, много разных специалистов везде. Высшее то оно высшее, но вот учился ли студент при этом или нет, вопрос риторический. Да и в состоянии ли дать эти знания учебное заведение — вопрос еще более философский.

          Я постоянно перед сном думаю — если сократить в 3 раза количество учебных мест (как бюджетных, так и платных) и позволить учиться только тем, кто будет учиться и принесет родине пользу потом, а не пойдет с дипломом «авиа-конструктора» продавцом- консультантом в МВидео (так как чтобы там работать, нужно высшее образование). Или вообще отменить платные места, а бюджетников выбирать — ситуация нормализуется ???

          Хотя как следствие может случиться, что отмена платных мест приведет к сокращению преподавательского состава. Молодые от снижения з/п уйдут программировать в фирму, а старики-которые программируют на пожелтевшем от старости бумажном листе останутся.
          • 0
            Моя личная позиция по сфере реформы образования такова:

            1. Необходимо перестать финансировать ВУЗы. Т.е. ВУЗы должны учить людей на платной основе.

            2. Деньги, которые раньше шли на финансирование ВУЗов, нужно распределять среди n лучших выпускников школ (можно еще выделить m лучших выпускников-льготников, типа сирот, детей погибших военнослужащих, инвалидов, отслуживших по контракту в армии для получения возможности учиться и т.д.) в виде образовательных сертификатов разной стоимости (в зависимости от набранных им баллов на том же ЕГЭ), которые они сдают в ВУЗы, а те обменивают у государства на живые деньги.

            3. Если у человека есть сертификат, но его номинала не хватает на обучение в выбранном им ВУЗе, то часть своего обучения он может оплатить сертификатом, а то, что не хватает, должен оплатить самостоятельно.

            4. В качестве ВУЗа для обучения обладатель сертификата может выбрать не только российский ВУЗ, но и любой другой, входящий, скажем, в ТОП-250 мировых ВУЗов. Схема такая же — человек предоставляет сертификат, ВУЗ предъявляет его для погашения государству, государство переводит деньги на счет ВУЗа.

            В результате такой реформы неконкурентноспособные ВУЗы загнутся, а конкурентноспособные соберут у себя лучших преподавателей (иначе к ним не пойдут учиться). Если хороших преподавателей будет не хватать, то их пригласят из-за границы (как того же Эйлера в свое время). Откашивать от армии с помощью столь дорогостоящей процедуры будет просто невыгодно. Отбывать номер по настоянию родителей и не учиться — тоже.
  • 0
    а зачем?
  • +4
    В порядке обмена опытом.

    Я учу первокурсников основам программирования (С), если в двух словах:

    1) программирование — это декомпозиция
    2) основная задача программирования — борьба с энтропией в коде
    3) паттерны программирования — основа всех сложных информационных систем

    за каждым утверждением — двухчасовая лекция.

    Весь мой курс — это написание программы в 100 строк и битва за то, чтобы она оставалась понятной для студентов.

    Выжившие переходят на курс по C++ и написание программы в 1000 строк.
    • 0
      После семи лет могу подписаться кровью под каждым вашим пунктом.
  • +5
    Мне кажется, что решать типовые задачи можно научить любого психически здорового человека, но желание ковыряться в причинах и следствиях, чтобы оптимизировать свою работу или внести в нее новые элементы, определяется врожденными склонностями. Скажем, я не раз наблюдал, как «люди слова» испытывают чувство бессилия и отчаяние перед техникой, потому что на нее не действуют напор и крик, прекрасно работающие в обществе. Точно так же и у людей, готовых сутками искать подход к технике, пробовать разные варианты и обдумывать решения, начинают трястись руки, когда надо решить элементарную бытовую проблему с людьми.
    А когда человеку неинтересно и не нужно, это то же самое что невозможно. Поэтому учить сверх необходимого тоже незачем.
  • 0
    Не надо учить гуманитариев программированию. Они уже выбрали свой путь. А те, кто захочет это изменить — изменит и выучит сам. Если не пройдет этот путь — значит господь Иисус Христос, царь наш небесный, не хочет видеть его в программистах.

    Видел я парней после нархоза, которые сами за полгода подтягивали скиллы по разработке до вполне неплохого джуниор-уровня, имея ноутбук на основе P3 с 256 мб ОЗУ
    • 0
      Не надо учить гуманитариев программированию. Они уже выбрали свой путь. А те, кто захочет это изменить — изменит и выучит сам. Если не пройдет этот путь — значит господь Иисус Христос, царь наш небесный, не хочет видеть его в программистах.
      А за он так с ними, вы не в курсе? :(
      • 0
        На все воля божия, а бог был гуманитарием. Он же не знал ВМ и программирования, а любил расписать трактат на 300 страниц непонятной воды и сказок.
        • +3
          бог был гуманитарием
          Но откуда тогда взялись технари, если не по образу и подобию?
          • 0
            Технари, по моему разумению, взялись вопреки замыслам божиим, ибо как говорил мой знакомый поп лет 10 назад мобильные телефоны — бесовское и от лукавого.

            Также технари не могут веровать, т.к. привыкли проверять, так что вряд ли они являются хорошей паствой для бога. С другой стороны, если допустить что бог хитрец и не так уж верит в свои же речи — то однозначно технари ближе к богу, нежели весь филфак.
        • +5
          Как бы он сотворил мир, будучи гуманитарием? Ведь мир не из сказок построен. Чтобы его создать, нужно было прописать кучу всевозможных констант и хитрых соотношений.
          Гуманитариями были как раз пророки да святые. Им дали заглянуть в репозиторий Вселенной, и они попытались описать увиденное — уж как поняли.
          • +2
            Соглашусь с вами, ибо бог явно умен и хитер, но давно уже не являлся людям и смысл его слов исказился до невозможности.
    • –1
      А те, кто захочет это изменить — изменит и выучит сам.

      Сам то он и выучит, и будет учить. Но ведь надо дать ему правильную директиву — чтобы процесс шел быстрее. Например:
      1) Читай книги по программированию на английском, так как при переводе на русский 60-80% информации могут исказить переводчики;
      2) Читай такие-то такие-то форумы, потому-что там будешь узнавать весь свежак технологии, и там мощные сообщества хороших и квалифицированных людей;
      3) Читай хабр, заведешь много приятных для общения друзей и коллег, с которыми тебе будет потом приятно общаться, узнавать что-то новое и делиться своим;

      и т.д.

      И да облегчить путь их тем самым, добро творя на пути своем.
  • 0
    Комментарий моего друга:
    омг, это просто таки волшебная статья!
    читаю её и вижу все свои проблемы и стрессы
  • 0
    Мне оказалось очень сложным научить записывать то, что обучаемые уже придумали, как сделать: если они это придумали, то чего там сложного, зачем записывать?

    У меня есть похожий опыт, я сталкивался с тем же. Человек не хочет записывать, отчасти потому, что не знает, как это сделать. Т.е. не может формулировать свои мысли. Получается, что ему нужно записать какую-то последовательность или описать что-то и он не всегда это может, хотя и понимает, что должно происходить.
    Отдельный вопрос:
    А если обучаемый просто отказывается записывать, то возможно это просто каприз? Даже показав, что через минуту ученик уже не помнит, что он там придумал. Как в таком случае вести себя учителю?
    • 0
      Со студентами в этом плане проще. Как бы не хотят — пусть не занимаются. Речь не о воспитании. Как сами прочувствуют, что не получается иначе — сами начнут писать, просто дольше.
  • +3
    Мне кажется, что разделение людей по принципу «технарь/гуманитарий» ведет к неправильному пониманию того, как их обучать. Было бы более логично разделить людей на имеющих индуктивный (bottom to top) и дедуктивный (top to bottom) типы мышления.

    Первым привычно мыслить на уровне «кирпичиков», постепенно строя из них программу, как это принято в императивных языках программирования. Вторым же привычен способ мышления от общего к частному, разбивая общую задачу на подзадачи, пока они не придут к тем же самым «кирпичикам». Именно такой подход свойственен разработке на функциональных языках программирования. Нельзя сказать, что один подход чем-то лучше другого, лучше говорить о том, какой подход лучше подходит тому или иному обучающемуся.

    У меня, например, ярко выражен способ мышления top to bottom. Я легко представляю себе способ решения задачи, не представляя себе отдельные кирпичики, на которых будет построено решение. Но разбивая задачи на подзадачи (какие входящие аргументы мне нужно получить в основную функцию, чтобы она могла совершить вычисления? ок, пусть эти аргументы передают нам отдельные функции, а теперь подумаем, какие аргументы нам нужны уже для них, и откуда мы их можем получить — и так далее), я, в итоге, добираюсь до тех самых «кирпичиков».

    В свое время я долго выбирал, куда же мне пойти учиться после школы — на мехмат, или же в медицинский, так как меня привлекало и то, и другое. В итоге выбрал второй вариант (о чем частенько жалею, кстати). Мышление top to bottom помогало мне как эффективно находить решения математических задач, так и в изучении естественных наук (к слову, и медицина, и биология относятся не к гуманитарным наукам, а к естественно-научным дисциплинам; называть людей, которые изучают белки и ДНК гуманитариями — это то же самое, что относить к гуманитариям, скажем, физиков).
    • 0
      У меня сильно выражен bottom to top и очень плохо развит top to bottom.

      Удивительно, но меня тоже всегда влекла медицина и IT сразу. Сейчас у меня работа связана с разработкой мед.оборудования и приходится много врубаться в медицину. Но «истинные медики» меня пытаются унижать и притыкать, мол куда тебе до нас дипломированных медицинских специалистов со своей электроникой-хренотроникой и программированием-шмограммированием.

      Но при большом желании и консультации родителей (они у меня все врачи) — я могу разобраться в их ремесле при очень большом желании. А по поводу них не знаю.
      • +1
        Я школу закончил в 1990-м, поэтому меня влекли не медицина и IT, а медицина и математика ;).

        Если вам нужно разобраться в фундаментальных основах медицины, то я бы посоветовал изучить гистологию, биохимию и общую физиологию (в перечисленном порядке). Почти все остальное в медицине (кроме хирургии) — производное от этого, и если вы хорошо понимаете основы, то все остальное выводится путем логических размышлений — от фармакологии до дифференциальной диагностики. Каждый курс в медицинском институте изучался в мое время в течении года (наряду с кучей других предметов), это не так много. Даже в те годы мне удавалось достать хорошие переводные учебники, которые позволяли не зазубривать, а понимать, что и почему происходит (все очень логично на самом деле), институтские учебники я попросту не открывал, лекции слушал только у одного профессора, который преподавал общую физиологию (реально хороший профессор был), но знал предметы не только лучше сокурсников, но и лучше подавляющего большинства преподавателей. Самостоятельно изучить эти предметы, имхо, требует не так уж много времени и сил. Освоить программирование на приличном уровне сложнее.
        • 0
          А вас не затруднит дать ссылки или хотя бы названия книг по этим трем дисциплинам, которые читали вы сами. Одним словом директиву на правильное направление. Желательно не очень жесткие, чтобы не приходилось держать десять вкладок браузера и по дню разбирать каждую страницу. Так скажем уровня Getting Started.
          • 0
            Да там все уровня Getting Started, т.к. эти дисциплины читаются на первых курсах. Неплохо, конечно, знать химию, но это тоже не критично — так же, как для программиста неплохо было бы знать высшую математику, но в принципе, в большинстве задач можно обойтись и без познаний в оной.

            Я учился очень давно, так что названий учебников уже и не помню, если честно. Помню, что по биохимии смотрел трехтомник Ленинджера, но не помню точно, по нему ли я учил, или по учебнику другого автора (но помню, что учил как раз по трехтомнику ;)). В любом случае берите только иностранные учебники и не бойтесь их объема — в классных учебниках обычно все так подробно расписано, что учиться очень легко, а стиль изложения авторов отечественных учебников можно сравнить лишь со стилем изложения информации чиновниками ;).

            Плюс посмотрите соответствующие курсы на той же Coursera или на других образовательных ресурсах. Подозреваю, что они там также весьма неплохи и доступны для понимания.
    • +1
      Top-об-bottom, bottom-об-top — это лишь две стадии решения любой задачи: анализ проблемы и синтез решения. Всякий, решающий реальные задачи, применяет оба способа мышления. В программировании мы применяем первое на начальных стадиях, а второе — собирая конкретный код из готовых кирпичей библиотечных функций и дополняя их своими кирпичами и раствором.

      «Гуманитариями» же (в плохом смысле этого слова) обычно называют тех, кто решению задач (хоть каким-нибудь способом, дающим результат) предпочитают словопрения, которые они называют «обменом мнениями» или «проблематикой», или «будированием вопроса» и т.п. Мерой успеха у таких является не количество решённых задач, а количество сгенерённых мнений, заданных и неотвеченных вопросов. Это же круто: придумать столько каверзных вопросов, что ни один этот ваш учёный не ответит. Или найти в произведении столько смыслов, сколько даже самому автору не могло присниться. Или собрать столько версий и мнений о событии, что уже не разобрать, какая из них истинная.

      В моём понимании, для «гуманитария» мир не просто сложный и запутанный — он ДОЛЖЕН оставаться таким, чтобы доставлять «гуманитарию» эстетическое удовольствие. Упростители мира (т.е. технари) для них — морлоки, убийцы разнообразия, пытающиеся собрать кавайное пушистое облако плавающих бесформенных смыслов, которым можно любоваться бесконечно, в тяжёлый гранёный стакан окончательного понимания и безжалостной прагматики. Для технарей же это зачастую выглядит не облаком, а туманом (в лучшем случае) или же мутной лужей, в которой удобно свинячить и прятать концы.

      Так что, имхо, разделение идёт где-то на уровне эмоций и жизненных ценностей, а не мыслительных способностей. Если гуманитарию вдруг наскучит облако в голове и он захочет упаковать его в компактный сосуд, он вполне может стать технарём и научиться бороться с энтропией.
  • 0
    А на картинке гуманитарии, которых пытаются научить программированию? Не очень-то они воодушевлены, скажу я вам.
  • +2
    Жду статью «Как отучить программировать технаря»
  • +2
    Мой преподаватель рисунка, как-то рассказывал, что, когда он сам был студентом, у него был курс в котором медик обучал художников анатомии, ну т.е. всяким латинским названиям мышц и костей. Из всего этого он до сих пор помнит толькр название ямочки на подбородке) На мой взгляд нет никакого разделения между гуманитарным и техническим складом ума. Просто одним интереснее одно, другим другое. Я, например, до сих пор не могу придумать ни одного приложения, которое было бы мне полезно. Так зачем мне программирование? Я написал когда-то генератор изображений фрактала Ляпунова и комплексных функций на питоне (которые можно использовать в дизайне), и возможно я мог бы освоить и более сложные вещи в программировании (не так как настоящий программист, но хоть немного), но я никогда не мог придумать больше ничего, что мне бы пригодилось. Поэтому, на мой взгляд дело не в том, что кто-то не может, а просто ему нет времени отрываться от того, что ему действительно важно. Другое дело, что некоторое знакомство должно быть у всех. Программист должен кое-что знать о философии, не потому что это ему сильно поможет в программировании, а потому что жизнь это не только программирование. И наоборот.
    На мой взгляд проблема в другом. Сейчас принято свое отсутствие интереса и безразличие к науке (любой) называть «гуманитарным складом ума». А вот раньше так не было.
    Кто у нас самый знаменитый гуманитарий? Платон и Аристотель. Платон знал и изучал геометрию, считал ее абсолютно необходимой для философа. Аритсотель придумал логику, которая исправно служила науке многие сотни лет. Рассел—лауреат нобелеской премии по литературе, представитель британского эмпиризма в философии, и вместе с тем математик, как и его коллега Уайтхед. Мах—философ и физик. Лейбниц писал свою хитроумную монадологию, которую не каждый «технарь» осилит. Декарт один из самых известных философов, и какова его роль в математике всем известно. Гоббс, если я правильно помню, был в восторге от Евклида и т.д.
  • –1
    Ну не знаю, глядя на современное программирование, и на то, что делают 99% программистов, сомневаюсь, что там нужен какой-то особый склад ума. Все так сильно хотят приобщить себя к математикам и унизить гуманитариев… На самом деле, у программиста с математиком столько же общего, сколько у сантехника с математиком (в плане мышления). Вообще, что за глупость — разделять мышление на гуманитарное и техническое. Это миф, нет здесь четкой границы. Из программистов ближе всего к математикам люди, которые занимаются криптографией, комп. графикой и олимпиадники/алгоритмисты, но это как раз тот 1%. И вообще математики — это не элита, это просто математики.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.