Это 90-минутный мысленный эксперимент. Обращайтесь с ним осторожно, он хрупкий и может быть полной чушью. Вы были предупреждены.
Сначала давайте подготовим почву для дебатов: представьте, что у вас есть компания. Тот, в котором много-много сотрудников и новообретенный фокус на развитии. Поскольку у вас много сотрудников, есть вероятность, что у них сильно различаются уровни навыков, поэтому ваш единственный путь вперед — обучать их.
И тогда возникает большой вопрос: чему и как вы учите своих подопечных, чтобы они могли заниматься своими делами? Этот подход «делай свое дело», на мой взгляд, является ключевым фактором в создании самодостаточной команды разработчиков. Появляется обычный материал (я преувеличиваю OFC):
- давайте научим их Java, потому что предприятия и трехбуквенные аббревиатуры
- давайте научим их C#, потому что LINQ и OpenSource (???)
- давайте научим их Python, потому что NumPy и наука о данных — это будущее мышления
- давайте научим их Javascript, потому что он уже в браузере, а для всего остального есть NodeJs (?)
- давайте научим их Clojure, потому что Rich Hickey и неизменный дум-дум-дум
- давайте научим их Elm, потому что это почти как Haskell, но проще
- давайте научим их XXXXXX, потому что XXXXXXXXXXXXX
- перефразирование предыдущих аргументов
Все действительные и справедливые предложения со своими достоинствами, но аргументы кажутся произвольными, как и в любом другом споре о языке программирования против языка программирования. Одни за, другие против. Как мы можем спорить об этих языках как о выборе для студентов, не споря о нашем собственном мнении об этих языках?
Во-первых, давайте погрузимся в мои странные идеи и странные взгляды на эту штуку «давайте подтолкнем некоторых парней к программированию» и посмотрим, куда она нас приведет:
Давайте попробуем создать список объективных целей для воображаемой системы:
- Он должен научить людей быть самодостаточными
- Он должен иметь экспоненциальную отдачу (т.е. узнавая больше, они могут решать экспоненциально больше проблем; еще раз речь идет о самодостаточности).
- Он не должен быть привязан к предметной области (поскольку это ограничивает применимость методологии). Это устраняет любую возможность прямого спора об особенностях языка (неизменность одного человека - это кошмар другого человека с IRQ)
- Он должен стремиться к общей простоте (обзор на 10000 футов должен быть простым, детали должны быть достаточно сложными, чтобы обеспечить достаточную глубину)
Поскольку большинство из этих целей связаны с количеством проблем, которые участники могут решить благодаря своему обучению, по сравнению с количеством часов, потраченных на их обучение, давайте попробуем найти способы увеличить количество решаемых проблем, не увеличивая количество затраченных часов. по обучению:
- google, переполнение стека, интернет в целом: хотя они могут быть разного качества, огромное количество материала, доступного для популярных вариантов, должно дать преимущество над другими вариантами, которым не хватает мощной поисковой системы.
- Обеспечьте учащимся развлечение и/или полезность: люди помнят развлечение, люди склонны запоминать полезные вещи²
Эти пункты (как всегда, ИМХО) несут в себе некоторые важные последствия:
- сетевой эффект: как и социальные сети, языки и методы программирования экспоненциально более эффективны, когда о них широко доступно больше информации; больше (академических и неакадемических) дискуссий и больше онлайн-устранения неполадок.
- Это означает, что качество и полезность определенного языка программирования или методологии нельзя аргументировать исключительно их собственными достоинствами, но также необходимо учитывать «мета» времени¹ как контекст, в котором живет этот язык или методология.
- Из моих небольших познаний в музыке и искусстве мне кажется, что ваш успех в выбранной вами форме искусства обычно зависит от вашей дистанции от текущей «меты» формы искусства (жанра, парни и девушки) и вашего мастерства в выбранной форме искусства. Что-то вроде теории Пифагора: Успех² = Метаконформность² + Навык² + X-фактор²
- Применяя эту теорему к проблеме образования, если мы знаем, что навык в настоящее время находится в нижней части шкалы (по крайней мере, по сравнению с будущим потенциалом учеников), то мы можем увеличить количество решаемых задач, получив ученики максимально приближены к текущей «мете» игры.
Это похоже на то, как делают поп-пластинки. Я ненавижу поп-музыку, но опять же, у меня нет особняка на голливудских холмах, и то, что я хочу для своих студентов, — это программный эквивалент возможности иметь особняк на холмах.
У Стиви Уандера там тоже есть дом, так что даже там не все соседи придурки.
Примечания:
¹: здесь я использую термин «мета» как ссылку на «мета» или мета-игру популярных онлайн-игр, посвященных киберспорту, таких как Dota, Hearthstone или League of Legends, которая меняется с появлением новые патчи и новые идеи о стратегическом и тактическом игровом процессе.
Подходящей аналогией для игровых патчей является C++ последнего времени: C++11, 14 и 17 продвинули язык вперед до такой степени, что любой, кто не сталкивался с ним в последнее время, имеет ложное представление о языке.
²: весело или полезно
Экспонат A: “Как стать мастером памяти | Идриз Зогай | TEDxГетеборг»
Доказательство B: из The Wire: «Неправильно считай, что они тебя облажались»