?

Log in

No account? Create an account
   Journal    Friends    Archive    Profile    Memories
 

Учебное по программированию - morfizm


Apr. 16th, 2015 11:25 am Учебное по программированию

Катя тут взяла курс C# в колледже, и пожаловалась на непонятное.
http://fearless-cat.livejournal.com/238432.html

Мы вчера пообщались с ней на эту тему, оказалось, проблема в подходе. Я её два года учил последовательному подходу (ни шага дальше без полной ясности всего предыдущего) - и это отличный подход в математике или в programming basics, это может быть также отличный подход, если занимаешься по талантливо составленной книге, где много полезного материала и мало лишнего. Мне кажется, очень важно владеть этим подходом, потому мне видна невооружённым глазом корреляция между людьми, всегда трогающими по верхам и не способными во всём досконально (на 100%) разобраться, и их ограниченностью в карьере.

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

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

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

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

3. Если при чтении предложения возникают уточняющие вопросы - не обязательно лезть разбираться. При первом чтении можно пропустить вовсе, при втором разбираться, если это выглядит полезным. Не тратить много времени на самостоятельный разбор, использовать эксперименты, консультации, форумы и т.п. Многое можно понять, просто придумав гипотезу и подтвердив или опровергнув её простым экспериментом.

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

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

6. По каждой новой теме собирать примеры, приводящие к пониманию. Например, structs: пару примеров структур, и пару строк кода, их использующие. Хранить информацию (как в заметках, так и в голове) в виде примеров кода куда лучше, чем в виде текста, особенно плохо составленного. Код куда более формален, однозначен, проверяем, а также компактен. Имея наборы таких примеров потом легко будет построить уже настоящую ментальную модель концепций, лишённую пробелов и двусмысленностей.

7 comments - Leave a commentPrevious Entry Share Next Entry

Comments:

From:eternele
Date:April 16th, 2015 06:36 pm (UTC)
(Link)
я про это примерно и написала в комментарии: что приведённая в посте информация может быть понятна, если уже и так знаешь большую часть
From:morfizm
Date:April 16th, 2015 06:48 pm (UTC)
(Link)
Вы лучше напишите ваши мысли про подход: как эффективно учиться, когда вываливают информацию непоследовательно, а так, что полностью понятно только если ты уже знаешь большую часть. Но ты не знаешь! :)
From:eternele
Date:April 16th, 2015 06:50 pm (UTC)
(Link)
вы всё правильно написали: как-то выплывать, как-то выуживать нужную информацию. мне такой подход неприятен, я всегда старалась докопаться до сути, но поэтому мне часто было сложно учиться.
From:(Anonymous)
Date:April 16th, 2015 09:25 pm (UTC)
(Link)
Надо взять какой-нить проект интересный делать, а книжку читать например по его окончании для устаканивания мыслей в голове. Практика, практика и еще раз практика, достижение цели любой ценой, как умеем так и строим - а потом осознание как ее можно было достигнуть лучше. Но это потом. Повод для рефуктуринга.

Решил изучить OpenGL ES как-то, переделал пример вращающегося кубика с одного маленького веб-туториала для начинающих, усложнил слегка, зарелизил сырым и глюкавым, допиливал, допиливал, 2млн скачек на гуглплее.

А читать ради чтения лучше Шекли или Ханлайна, что-нибудь детское, легкое, "Имею скафандр, готов путешествовать" :)
From:andreyvo
Date:April 16th, 2015 09:29 pm (UTC)
(Link)
то был me, меня разлогинило
From:morfizm
Date:April 26th, 2015 04:11 am (UTC)
(Link)
Да, хороший совет.

У тебя, я смотрю, талант хакать закачки на гуглплее. Когда же ты уже его монетизируешь как следует? :)
From:crazy_butcher
Date:April 18th, 2015 09:36 am (UTC)
(Link)
В качестве альтернативного решения можно рассмотреть смену учебного материала. Не нравится, как построен курс? Тогда может быть просто использовать другой материал? А то есть шанс выучить предмет не благодаря, а вопреки - не очень понятно зачем. Ведь конечная цель - выучить С# в какой-то мере, а не прочитать и понять то, что дают на курсе. Наверняка есть хорошие книжки, которые упростят/ускорят понимание.