Я написал это в 2017 году, когда я был аспирантом, изо всех сил пытаясь научиться программировать. К счастью, теперь я понимаю вещи намного лучше. Но у меня были некоторые идеи, которыми я считал важным поделиться со студентами и преподавателями, которые могли испытывать трудности с программированием в академической среде.

Я пытаюсь изучить что-то под названием Data Driven Documents (Документы на основе данных) или D3. Это библиотека JavaScript, которая визуализирует данные. Но прежде чем вы сможете сделать потрясающую визуализацию, сравнивая, сколько галлонов геля для волос Трамп использовал за свою жизнь, или сколько обрезков ногтей на ногах можно было бы превратить в органические вещества для питания эко-дома, подумайте над этим - нужно действительно научиться программировать, чтобы добраться до этого. мышление высокого уровня. А знаете, что включает в себя кодирование?

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

Кодировать сложно, по крайней мере, для меня. Он изучает совершенно новый язык и логику. У него есть основы в таких вещах, как математика, что, к сожалению, сложно. И хотя прочная основа программирования может применяться в разных языках, сами технологии быстро меняются. Эта библиотека JavaScript, которую я изучаю, едва ли существовала пять лет назад. И все же ему удалось изменить то, как люди думают о журналистике, данных и даже о коммуникации.

Я наблюдаю закономерность: чем моложе человек, тем больше у него навыков программирования. За всю мою жизнь у меня было четыре учителя, которые обучали меня программированию в формальных классных комнатах, и все они были моложе 35 лет. Как будто программирование, особенно веб-технологии, стало повсеместным только в последние 15 лет. годы. Если вы знали программирование до того, как появилась сеть, вы, вероятно, были супер-ботаником, который программировал на перфокартах.

Как бы то ни было, в результате я не вижу много квалифицированных учителей старшего возраста, которые могли бы научить этим ценным навыкам. В академических кругах с постоянным постоянным пребыванием, как правило, полно людей, которые хорошо преподают теорию и принципы. Но когда дело доходит до объяснения того, как работает Fizz Buzz или даже почему div полезен, они остаются в неведении. Обучение на основе навыков часто перекладывается на плечи дополнительных преподавателей, многие из которых не имеют достаточного времени и ресурсов. И это проблема.

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

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

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

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

Прямо сейчас я учу себя основам JavaScript и D3, потому что я не понимал созданный мной инструмент. Мне очень сильно помогли мои учителя, которые любезно предоставили свой опыт для доработки моего проекта. Мог ли я построить его с нуля, самостоятельно? Или даже объяснить, почему некоторые его части были закодированы именно так? Если честно нет.

Я не хочу винить здесь учителей. Инструкторы по программированию в большинстве своем являются помощниками, пытающимися осуществить нечто совершенно иное, чем то, для чего было создано академическое сообщество. В моем классе кодирования в прошлом семестре у учителя было 12 недель на преподавание HTML, CSS, JavaScript и D3. К сожалению, 2 класса упали во время перерывов, так что всего было всего 10 классов. Как вы преподаете столько контента в 10 классах, когда классы встречаются раз в неделю и есть 15 разных людей, которым не только нужно изучать концепции, но и нужна индивидуальная помощь? Каким-то образом фантастический учитель сумел все втиснуть.

Но из-за нехватки времени многие люди (включая меня) не совсем понимали, что они делают.

Но ограничивается ли эта проблема академическими кругами? Понятно, что существует большой толчок, чтобы заинтересовать людей STEM. Но изучение основ может быть трудным и утомительным. Одно только волнение не может нас спасти.

Может быть, вопрос в том, достаточно ли ресурсов, чтобы помочь людям научиться этому? Есть ли у нас учителя, которые действительно владеют этими навыками? А если нет, как мы можем лучше подготовить учителей и побудить их действительно хотеть преподавать?

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

Но если еще более экстремально, что, если бы изменилась вся модель образования. Что, если бы в колледжах не было требований к широте охвата, а вместо этого ожидали, что вы научитесь хорошо разбираться в чем-то одном? Оказывается, такие вещи существуют в виде учебных курсов для начинающих по кодированию и других профессиональных школ. Какая-то ирония в том, что люди проводят большую часть своей жизни, получая всестороннее образование, но затем не отправляются в чрезвычайно специализированное место, где обучают таким специфическим техническим способностям. Но именно этого хочет экономика сегодня, особенно на начальном уровне. Если кто-то не знает, как написать предложение, зачем его нанимать журналистом? А если они не могут программировать Fizz Buzz, зачем их нанимать для визуализации данных? Как будто телегу ставят впереди лошади, и никто не умеет ездить на лошади. Фактически, 30 лет назад лошади даже не существовало, потому что это была перфокарта.

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

Рискуя показаться бессердечным самоуверенным человеком, я не хочу сбрасывать со счетов важность гуманитарного мышления и разносторонности. Я абсолютный чирлидер гуманитарных наук, который специализировался в области политологии, любил каждую минуту этого, а затем жил со своими родителями в течение трех лет после школы. Нет ничего, что я люблю больше, чем чтение романа. Я в первую очередь писатель. Фактически, я, вероятно, был бы писателем, только если бы не такие вещи, как Интернет, который перевернул всю экономику и затруднил людям, не разбирающимся в компьютерах, найти работу.

Но это не обязательно должно быть похоронное шествие. Это захватывающие времена. Я не собираюсь вдаваться в подробности технологии. Но, цитируя героя в маске, большая сила влечет за собой большую ответственность. Если мы не разбираемся в технологиях, они нас заменят (и в какой-то степени уже понимают). Академические круги станут серьезной жертвой, поскольку навыки становятся более независимыми от степени, а знания доступны дешево и удобно в Интернете. Вскоре единственное преимущество академических кругов перед Интернетом состоит в том, что они могут нанимать реальных живых людей для обучения. Разве эти люди не должны обладать навыками, необходимыми их ученикам для выживания в этом безумном мире? А может быть, даже страхование здоровья и гарантия работы? (Человек может мечтать ..)

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

1. Объясните студентам важность изучения основ программирования. Если ученик просто хочет пропустить скучные вещи и «заняться искусством», скажите ему честно о предстоящем долгом пути.

2. Сконцентрируйтесь на том, чтобы что-то работало в первую очередь, каким бы подробным оно ни было, прежде чем беспокоиться об эффективности.

3. Не поощряйте копирование и вставку.

4. Расскажите им обо всех удивительных ресурсах для обучения программированию за пределами класса. Stack Overflow - необходимая часть жизни любого программиста, и половина успеха в программировании - это научиться задавать правильные вопросы. Создание учетной записи и умение писать вопросы действительно помогли мне в моем путешествии. Кроме того, существует гораздо больше интересных и удобных для новичков ресурсов. Например, мне очень нравится Поезд кодирования.

5. Прежде всего, сконцентрируйтесь на программировании на ванильном языке, прежде чем переходить к более абстрактным библиотекам. На мой взгляд, узнать, как работает Fizz Buzz, гораздо важнее, чем начинать с чего-то более сексуального. И это по-прежнему самый распространенный вопрос для программистов, так почему бы не избавиться от него сейчас?

6. Извините, это бонус. Кодирование подходит не всем. На самом деле, мне это не нравилось довольно долгое время. Если бы не пара замечательных инструкторов, я бы, наверное, боролся гораздо больше, чем сейчас. Большая проблема заключалась в том, что я понятия не имел, что происходит, я не считал это творческим и не знал, что могу совместить это с другими моими интересами. Я буквально думал, что, научившись программировать, меня затянет в пустоту и я откажусь от своей идентичности как писателя / журналиста / настоящего человека. Но достаточно одного талантливого учителя, чтобы убедить кого-то в обратном;)