Я хочу поговорить с вами о том, почему мы чаще чиним сантехнику, чем пишем про неё диссертации, о разных подходах к обучению программированию и о том, как мы пробуем применить один из них в нашем новом продукте Hyperskill.

Если вам не по душе длинные вступления, то переходите сразу к параграфу про программирование. Но так будет менее весело.



Лирическое отступление


Давайте представим некую барышню Машу. Сегодня Маша собиралась помыть себе фруктов и спокойно посмотреть фильм, но вот незадача: неожиданно она обнаружила, забилась раковина на кухне. Что с этим делать — пока непонятно. Можно отложить этот вопрос на неопределённый срок, но свободное время есть сейчас, поэтому Маша решает разобраться с проблемой сразу же. Здравый смысл подсказывает две опции: а) вызвать сантехника б) справиться самостоятельно. Барышня выбирает второй вариант и принимается изучать инструкции на ютубе. По совету пользователя Vasya_the_plumber Маша заглядывает под раковину и видит там змеящуюся пластиковую трубу из нескольких деталей. Девушка осторожно откручивает одну деталь у основания раковины и ничего не находит. Кусочек трубы пониже оказывается намертво забит неизвестной субстанцией, и даже найденная на столе вилка не справляется с засором. Эксперты из интернета дают неутешительные прогнозы: деталь придётся менять. На карте Маша находит ближайший магазин, берёт с собой злополучный кусок трубы и покупает такой же, только новый. По совету продавца Маша прихватывает и новое ситечко, для профилактики. Квест завершён: раковина снова работает как нужно, а его главная героиня, тем временем, узнала следующее:

  • Трубы под раковиной можно самостоятельно раскрутить и закрутить;
  • Ближайший магазин сантехники в полутора километрах от Машиной квартиры.

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

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

Так какой же из подходов лучше подойдёт? В случае с раковиной и засором — первый, и вот по каким причинам:

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

Давайте уже оставим в покое бедную Машу и перейдём к процессу обучения как таковому.

Программирование: учиться или делать?


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

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

«Но подождите!», возразите вы, " Красиво звучит — бери и делай! Я не могу запросто написать себе программу, если до этого не программировал(а)! Мне важно понимать, где писать, как в принципе разговаривать на языке программирования с компилятором. Это не телефон сантехника в гугле найти.".

Горькая правда есть и в этом. Один незнакомый аспект тянет за собой другой, тот, в свою очередь, — третий, и скоро этот процесс превращается в шоу фокусника, который продолжает вытягивать связанные платочки и никак не достанет их из цилиндра. Процесс, честно скажу, неприятный, на 5-м «платочке» уже кажется, что глубина невежества близка к Марианской впадине. Альтернатива этому — те же лекции о 10 видах переменных, 3 видах циклов и 150 потенциально полезных библиотеках. Печально.

Hyperskill: мы строили, строили и наконец построили


Мы долго думали над этой проблемой. О том, как долго мы думали, красноречиво говорит дата последнего поста в нашем блоге. После всех споров и попыток интегрировать новый подход на Stepik у нас получился… другой сайт. Возможно, вы уже слышали о нём как о части JetBrains Academy. Мы назвали его Hyperskill, встроили туда project-based learning, привязали к нему базу знаний по Java и заручились поддержкой команды EduTools. А теперь подробнее.

image

Конкретная цель. Мы предлагаем “меню” из проектов (projects), т.е. программ, которые вы можете с нашей помощью написать. Среди них — крестики-нолики, персональный ассистент, блокчейн, поисковик и т.д. Проекты состоят из 5-6 стадий (stages); результат каждой из стадий — готовая программа. “Зачем тогда остальные стадии, если на первой уже получилось всё?” Спасибо за вопрос. С каждым шагом программа становится функциональнее или быстрее. Поначалу код занимает 10 строчек, под конец может не умещаться и в 500.

Немного теории. Невозможно сесть и, не зная ни слова о программировании, написать даже Hello World. Поэтому на каждом этапе проекта вы видите, какие теоретические азы вам предстоит освоить и, главное, где их взять. Азы расположились тоже на Hyperskill в разделе “Карта знаний” (Knowledge Map). Если для первой стадии проекта учащиеся не обязаны читать данные из файла, пусть и не умеют дальше. Выучат потом сами, для общего развития, или понадобится на следующем этапе.

image

Карта знаний. На ней видно, какие темы вы уже изучили и как они связаны друг с другом. Откройте любой симпатичный топик. Можете пробежаться по нему глазами, но рекомендуем выполнить и небольшие задачки, чтобы убедиться, что информация уложилась в голове. Вначале платформа вам подкинет тесты, после них — пару задач на программирование. Если код компилируется и проходит тесты, то сравните его с образцом решения (reference solution), иногда это помогает узнать более оптимальный способ реализации. Или же убедиться, что ваше решение и так прекрасно.

Ничего лишнего. Мы ждём и “зелёных” пользователей и бывалых разработчиков. Если вы уже писали программы, не беда, мы не заставим вас снова складывать 2+2 или переворачивать строчку. Чтобы сразу попасть на нужный уровень, при регистрации укажите, с чем вы уже знакомы, и выбирайте проект посложнее. Не бойтесь себя переоценить: если что, всегда можно вернуться к забытой теме в карте знаний.



Инструменты. Это здорово — писать небольшие кусочки кода в специальное окошко на сайте, но настоящее программирование начинается с работы в среде разработки (Integrated Development Enviroment). Опытные программисты знают не только как писать код, но и как конструировать графический интерфейс, собирать разные файлы в проект, пользоваться дополнительными инструментами разработки, и часть этих процессов IDE берёт на себя. Почему бы не научиться и этим скиллам, пока вы осваиваете программирование? Тут приходит на помощь JetBrains и специальная версия IntelliJ IDEA Community Educational с предустановленным плагином EduTools. В такой IDE можно проходить учебные курсы, проверять решенные задачки и подсматривать в подсказки по проекту, если вы что-то забыли. Не переживайте, если впервые слышите слово “плагин” или “IDE”: мы расскажем, что это такое и как его установить на компьютер или ноутбук с минимальными страданиями. Разбирайтесь с теорией, а затем переходите в IDE и завершайте очередную стадию проекта прямо там.

Дедлайны. Их нет! Кто мы такие, чтобы стучать по голове и указывать, в каком темпе вам писать программу. Когда вам нравится писать код и хочется доделать его до конца, вы дописываете его, сегодня или завтра. Занимайтесь разработкой в своё удовольствие.

Ошибки. Все их допускают, допустите и вы на одном из этапов проекта, и тогда этот этап не пройдёт автоматические тесты. Что ж, придётся самостоятельно разобраться, что пошло не так. Мы могли бы сказать, где кроется ошибка, но разве это научит вас писать код внимательно? Читайте подсказки от IDEA или теоретический топик про Bugs, и, когда программа наконец заработает, прилив дофамина, скорее всего, не заставит себя ждать.

Наглядный результат. Итак, вы дописали первый проект, что дальше? Пользуйтесь плодами трудов! Сыграйте с друзьями в крестики-нолики, заодно похвастаетесь успехами. Загрузите проект на GitHub, чтобы показать будущему работодателю, напишите описание самостоятельно, укажите там те знания, которые применяли. 4-5 сложных проектов, и вот, скромное портфолио для начинающего разработчика готово.

Возможность для роста. Предположим, вы смотрите на Hyperskill и не видите там какой-то важной темы или полезного проекта. Сообщите нам об этом! Если ваш бэкграунд шире и богаче карты знаний, то напишите нам в форму Contribute. Наша команда поделится с вами собственными tips&tricks, так что будем рады помочь вам преобразовать ваши знания в полезный контент, понятный пользователям разного возраста и уровня. Может быть, мы даже заплатим, но это не точно.

Добро пожаловать: https://hi.hyperskill.org/ Заходите, смотрите, пробуйте, предлагайте, хвалите и ругайте. Мы тоже учимся вас учить.

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


  1. Andrew_Pinkerton
    09.04.2019 18:01

    При регистрации через аккаунт JB ошибка:

    Error 404
    image
    image


  1. bxu
    09.04.2019 18:14
    +2

    Другие языки не предполагаются?


    1. Dreadasha Автор
      09.04.2019 18:16
      +2

      Сейчас добавляем Kotlin и Python, а дальше — как пойдёт. Но, конечно, хочется :)


      1. ILTEX13
        10.04.2019 10:57

        А какие сроки по Python?


        1. Dreadasha Автор
          10.04.2019 11:20

          В этом месяце новым контентом по Python вас обязательно порадуем. Уже сейчас выложили около 10 теоретических топиков, заходите пробовать!


          1. BM_MacGregor
            10.04.2019 12:22

            А какие проекты планируете для Python и Kotlin? Аналогичные Java? Или будет какая-то специфика типа веб-программирования или приложений для Android?


            1. Dreadasha Автор
              10.04.2019 12:32

              Проекты уровня easy будут похожи во всех языках программирования. А вот чем дальше в лес, тем больше в специфику. Сейчас работаем над проектом на Java под Android, пока он хорошенький получается :)


      1. McKinseyBA
        10.04.2019 15:24

        Scala есть в планах? В насколько отдаленных, если есть?


        1. Dreadasha Автор
          10.04.2019 15:31

          В ближайших планах пока нет


      1. MrBrooks
        11.04.2019 05:02

        На самом деле, было бы круто, если бы добавили ассэмблер и С/С++.
        Это низы низов, которые очень тяжко освоить на простых учебных заданиях некоторым людям, и подобные решения, ИМХО, очень сильно помогут разобраться в основах железоуправления =)
        Понимаю, что это не целевая ваша аудитория, и кол-во таких студентов (желающих потренироваться) будет стремиться к нулю на фоне «легких» Java и Python, но из этих единиц могут получиться шикарные специалисты на все руки =)


        1. Dreadasha Автор
          11.04.2019 11:09

          Согласна, приблизить пользователей к «железу» — идея хорошая. Будем работать! Но ничего пока обещать не могу :)


  1. matabili1973
    10.04.2019 00:55

    Опробовал первый урок на сайте. Методика чем-то напоминает курсы с основного сайта. По моему мнению, Stepik и Hyperskill дополняют друг друга, а не исключают.


    1. Dreadasha Автор
      10.04.2019 12:42

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

      Дополнять один сайт другим всегда можно! Тем более, что некоторым больше нравится видео посмотреть, а кто-то предпочитает читать


  1. dariaamir
    10.04.2019 09:24

    Можно ли вести несколько проектов одновременно?


    1. Dreadasha Автор
      10.04.2019 12:56

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


  1. Simplifier
    10.04.2019 10:57

    А как указать свой уровень, если логинишься через что-то, а не регистрируешься? Диалог со скриншота не показывался


    1. Dreadasha Автор
      10.04.2019 13:14

      Хм, это загадочно, я только что залогинилась через Google аккаунт и попала на страницу Onboarding. Мы передали команде разработки, что страница с выбором уровня не у всех появляется.

      Скажите, а вы с помощью какого аккаунта залогинились?


      1. Simplifier
        10.04.2019 13:19

        Stepik


  1. BM_MacGregor
    10.04.2019 10:57

    А что ждёт сам Степик в будущем? Планируете его развивать? Или все силы бросите на новый проект?

    p.s. Сама идея Hyperskill понравилась. На Степике хорошие курсы, но практика мала и примитивна, поэтому полученные знания применить для решения реальных задач сложно.


    1. Dreadasha Автор
      10.04.2019 11:18

      Спасибо за отзыв!

      Мы не бросим Stepik :) Он был и остаётся отличной платформой для открытых (да и закрытых) онлайн-курсов по разным темам, от высшей математики до иностранных языков. К тому же, многие курсы на Стэпике доступны и тем, кто не знает английский, и это тоже важно.

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


      1. Belfire
        10.04.2019 15:42

        Планируете ли вы в дальнейшем версию сайта на русском языке (возможность переключаться между языками)?


        1. Dreadasha Автор
          10.04.2019 15:43

          Сейчас не планируем


  1. Andrew_Pinkerton
    10.04.2019 11:49

    Dreadasha, очень хорошо что на Hyperskill материал подается в текстовом виде,
    а не как сейчас модно в виде видеозаписей.
    Так-же огромный плюс, в том что много практики.


    1. Dreadasha Автор
      10.04.2019 13:24

      Спасибо! Мы ориентировались в том числе и на просьбы пользователей.

      К слову, текстовый материал могут читать и люди, у которых медленный интернет. Они тоже имеют право учиться программировать!


  1. med_phisiker
    11.04.2019 17:26

    Dreadasha, в связи с недавним сотрудничеством JetBrains и Anaconda (ссылка) планируется ли в разделах по python обучение по направлению data analis, data science, machine learning, deep learning и соответствующим python библиотекам и фреймворкам ?


    1. Dreadasha Автор
      11.04.2019 17:32

      Мы хотели бы привести Python к data science, но не в связи с сотрудничеством, а потому что нам кажется это важным


      1. med_phisiker
        11.04.2019 18:06
        +1

        Я рад, что для разработчиков платформы это важно ) Ждем с нетерпением, удачи в работе и спасибо за быстрый ответ )


  1. JonCory
    11.04.2019 19:12

    В этот ваш Map я влюбился сразу — для ностальгических воспоминаний самое то! Сижу второй день, вспоминаю, приятное с полезным вполне себе сочетается.
    Порадовали разделы devtools и essentials.
    Что касается стрелок, мап не всегда помещается на экране и связи отслеживать проблематично.


    1. Dreadasha Автор
      11.04.2019 19:15

      Вы нас порадовали, большое спасибо :)

      Оптимизацией knowledge map мы как раз сейчас занимаемся. Надеюсь, новая версия, которая появится через 2-3 недели, будет лучше помещаться!


  1. az1muth
    13.04.2019 15:10

    Срочно требую мобильную версию. Всегда хотел выучить язык для написания своего Infinitode


  1. Dreadasha Автор
    13.04.2019 15:15

    az1muth
    Мобильную версию сайта или проект для разработки под Android? :)

    Над первым работаем, но по мере сил, десктопная версия сайта сейчас в приоритете.
    Проект под Android тоже делаем, но точных сроков я вам не скажу, чтобы ложных обещаний не давать