На той же неделе я начал учиться программировать и играть на пианино. Это выглядело примерно так:

После нескольких месяцев практики я довольно хорошо научился играть «Let it Be». Я также неплохо научился ругать редактор кода. Почему мои занятия на фортепиано начали набирать обороты, а мои сны о программном обеспечении погибли в огне?

Новый синтаксис

Теория музыки и Javascript отпугивают новичков по той же причине. Оба являются новыми языками, которые необходимо понять, обработать, а затем преобразовать инструментом / браузером во что-то, что узнают другие. Что происходит, когда вы садитесь за клавиатуру и нажимаете несколько клавиш? В обеих ситуациях происходит что-то довольно ужасное, потому что вы не знаете, что делаете. Чтобы ориентироваться, вам нужно читать на языках.

Я чувствовал себя довольно обескураженным, когда смотрел на музыку для чтения с листа с двумя отдельными схемами нот для скрипичного и басового ключей. «Вы имеете в виду, что запоминающаяся песня Гамильтона так выглядит на бумаге? WTF. " После того, как мой учитель Крис отговорил меня с уступа и показал некоторую базовую терминологию, я перешел к базовой версии «Когда святые идут маршем». Так грустно.

Между тем мой код был скучным. Каждое созданное мной приложение было столь же надежным, как и внешнеполитический план Трампа. В итоге я потратил много времени на StackOverflow, прося о помощи. После изучения Javascript PHP удивил меня как еще один новый язык и сдерживал меня даже после того, как я изучил основы баз данных. Нет ничего хуже, чем сидеть перед редактором кода, имея в голове видение веб-сайта и не имея возможности «сделать это».

Я был готов отказаться от обоих, когда мой учитель по фортепиано попробовал новую стратегию.

Игра на слух

Не беспокойтесь о нотах, просто играйте правильные. Смена правил игры. Я установил приложение Flowkey, которое учит запоминать песни по положению рук и пальцев. Через несколько часов я мог сыграть первые аккорды Claire De Lune. Я понятия не имел, что это были за записи, но моя практика стала более активной. Вместо того, чтобы бросить пианино так же, как я отказался от рисования после того, как мои фигурки из палочек начали выглядеть сердитыми, я стал лучше.

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

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

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

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

Так как же сделать программирование более увлекательным? Вы приближаете программиста к программе. Люди, работающие над этой проблемой, работают над будущим программирования.

Такие инструменты, как Webflow и Bubble, хотя и ограничены, но позволяют нам приблизиться к нашим программным творениям. Через десять дней после изучения Bubble я создал приложение, которое действительно работало. Интерфейс был перетаскиванием вместо кода и молитвы.

Еще через десять часов работы с программным обеспечением у меня была построена функциональная версия Airbnb (я записал процесс, и вы можете увидеть его здесь: https://www.youtube.com/watch?v=tCgD6-FOjtA).

Редактор интерфейса был отличным, но что позволило мне подняться с нуля до героя? Оказывается, есть дополнительное преимущество в том, чтобы стать ближе к своим творениям: вы можете использовать прошлый опыт. Прекрасным примером в музыке является то, как все люди так или иначе соглашаются, какие последовательности аккордов звучат хорошо, а какие - нет (если вы не видели, насколько сильны четыре аккорда на наши музыкальные вкусы, это видео убедит вас).

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

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

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

Запрограммированная рабочая сила

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

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

Сосредоточение внимания на кодировании преувеличивает важность поиска« правильного метода решения проблемы, а не важность понимания проблемы. Прежде чем мы начнем работать над решением проблемы кодирования, мы должны решить, в чем проблема - и действительно ли это проблема. Если мы позволим себе зациклиться на том, как решить проблему с помощью кода, независимо от того, проблема это в программировании или нет, и упустим из виду почему, мы ничего не получим. - Базель Фараг в TechCrunch

Вместо того, чтобы сосредотачиваться на отдельных навыках, таких как изучение Javascript или PHP, нам нужно перейти к мета-навыкам, необходимым для процветания в «гиг-экономике» и за ее пределами. Давайте рассмотрим сценарий, представленный ниже, и посмотрим, как учебный лагерь по программированию может кого-то подготовить по сравнению с курсом под названием «Концепции программирования: ментальные модели для решения проблем»:

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

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

Если бы она вместо этого пошла на решение проблем в учебном лагере 21-го века, ее обучение привело бы к поиску более широкого набора инструментов: поиск в базе данных продуктов Product Hunt, проверка границ Google Таблиц и изучение существующих интеграций с Amazon . Значительно меньше времени уходит на то, чтобы понять, что, подключив такой инструмент, как Blockspring к Google Таблицам, она может вытаскивать все обзоры прямо в электронную таблицу и фильтровать + сортировать по необходимым ключевым словам.

Хотя сосредоточение внимания на изучении кода даст вам обширный инструментарий, в который вы сможете проникнуть, степень сложности и время, необходимое для достижения компетентности, не позволят вам взглянуть на другие инструменты. Лучше всего это объясняется у людей двумя когнитивными предубеждениями: предвзятостью привязки и ошибкой невозвратных затрат. Пример: если вы потратите 12 тысяч долларов на набор инструментов (средняя стоимость учебного лагеря), вы захотите оправдать его использование как можно чаще.

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

«Та часть информатики, которая была очень теоретической, такая как математика и алгоритмы, на самом деле оказалась самой полезной, потому что со временем эти вещи не меняются. Часть, которая училась программировать на Java или Fortran, была бесполезной или менее полезной, потому что со временем она исчезает. Я бы, наверное, больше занимался математикой, больше физикой, придерживался бы микро-всего. Я, вероятно, изучил бы психологию и эволюцию, потому что считаю, что они действительно важны для понимания того, как работают люди. В конце концов, вы повсюду общаетесь с людьми. Я бы сосредоточился на теории и принципах, а не на фактах. Факты исчезают, или можно искать факты. Ваш самый важный навык - это даже не то, в чем вы специализировались или даже то, что вы изучали, это просто умение учиться. Если вы хорошо разбираетесь в математике и любите читать, нет ничего, что вы не смогли бы выучить самостоятельно ».

Мета-навыки не исчезают. Вместо этого они позволяют быстрее осваивать новые навыки. Так почему же у нас не везде появляются учебные лагеря по мета-навыкам программирования?

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

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

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

Одно из возможных решений? Маскируйте ментальные модели в проектном обучении. Я экспериментировал с этим методом обучения в Стартапе без кода, и до сих пор он оказался успешным. Да, окупаемость инвестиций краткосрочная: Создайте приложение X без кода. Но свободный от синтаксиса кода, он позволяет студентам изучать более широкие концепции взаимодействия с пользователем и мышления, как на компьютере.

Движение вперед

Что-то, что мешает развитию этих идей, - это битва за идею «конца кода». Я видел это много раз раньше.

Самый последний пример:

  1. TechCrunch опубликовал статью под названием Не учись кодировать.
  2. Куинси Ларсон отвечает: Пожалуйста, научитесь кодировать »
  3. Битвы в Твиттере, пространные комментарии на HackerNews и т. Д.
  4. Обе стороны отступают, зализывают раны до следующего боя

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

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

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

Наконец, была разработана более полная и более полезная программа символьной сборки (SAP) - по прошествии большего количества лет, чем вы думаете, в течение которых большинство программистов продолжали свое героическое абсолютное двоичное программирование. В то время, когда SAP впервые появился, я предполагаю, что около 1% старых программистов интересовались этим - использование SAP было глупым занятием, и настоящий программист не опустился бы до того, чтобы тратить ресурсы машины на сборку. - Ричард Хэмминг (ссылка на PDF)

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

  1. Кодер: Я действительно ненавижу создавать экраны входа в систему. Я просто хочу создавать крутые вещи с помощью TensorFlow.
  2. Непрограммист: Что, если бы я мог перетаскивать + опускать экраны входа с помощью дизайнера, а вы могли бы сосредоточиться на интересных вещах, которые сделают наше приложение уникальным?
  3. Кодер: Круто. Давай дружить.

Что бы ни случилось, сейчас прекрасное время работать на переднем крае программирования. Будь то революция без кода или даже предсказание Wired о том, что мы будем тренировать компьютеры, как собак, единственный способ узнать это - продолжать строительство.

Спасибо за чтение. Если вам понравился этот фрагмент, пожалуйста, помогите мне, нажав 💙 ниже . Вы можете подписаться на меня в Твиттере и посмотреть мой новый проект Стартап без кода.