DOU Проектор: Codeasy.net — изучить C#, спасая человечество

В рубрике DOU Проектор все желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на editors@dou.ua.

Привет всем! Я Дима, уже около 6 лет работаю в области software development. Начинал карьеру в Киеве, затем перебрался в Стокгольм. Я — соучредитель и руководитель проекта Codeasy.net.

Идея

Codeasy.net — это курс программирования, проходя который, вы спасете мир играючи...

Идея родилась, когда моя жена меняла квалификацию — из менеджера в программисты. Она нашла какой-то курс по программированию в интернете и... запуталась спустя 2-3 часа. Обучение начиналось не с азов, и курсу явно не хватало практических заданий.

Мы провели анализ рынка и нашли совсем мало хороших курсов. А особенно курсов по C#. «Почему бы и нет, ведь обучение программированию — это сейчас хайп», — подумал я и сел за написание своего курса. Болезнь всех программистов: если тебе что-то не нравится — напиши свое.

Как только первая глава была готова — я показал ее жене, спросил: «Ну как, что скажешь?». Ответ был: «Ты пишешь очередную скучную книгу по программированию. Такого полно!». Это был вызов...

А что если изучать программирование по ходу дела приключенческой истории? Например, главный герой будет сражаться за судьбу всего человечества в постапокалиптическом мире, а делать это — с помощью программирования. Эта мысль засела глубоко в моей голове, и я решил ее проверить. Вот так и родилась идея Codeasy.net. Но не сам проект, а лишь идея, ведь для полноценного проекта нужна команда!

Команда Codeasy.net

Лёшу я знаю давно, мы вместе ходили в походы... Он — full stack разработчик. Я рассказал ему о Codeasy.net, и он моментально загорелся идеей. «Мы сможем по ходу истории вставлять маленькие игры! Мы сделаем это лучшей обучающей платформой с геймификацией! А что если делать разные ветви сюжета, как в играх делают? И шутки, обязательно нужны девелоперские шутки!» — его было сложно остановить. Другими словами, нас было уже двое в команде.

Вскоре после начала проекта мы решили немного почерпнуть опыта у коллег из Кремниевой долины и прошли online-школу от Y Combinator для стартапов. Это был незабываемый опыт, куча новых знакомств и тем для размышления. Мы выделили главную метрику нашего стартапа, изучили юридические вопросы создания компании, обсудили наем персонала и многое другое. Перед нами выступали СЕО Slack — Stewart Butterfield, Docker — Solomon Hykes и другие люди, достигшие успеха. Тогда же мы решили, что для того, чтобы чувствовать себя всесторонней командой, нам нужен человек, который сможет заниматься SEO/PR/Marketing и который не будет программистом.

Юля — online marketing manager — третье звено нашей команды. Она отлично влилась в коллектив двух программистов, что сделать совсем не просто! Первой ее реакцией было: «Что они вообще делают?!». Но уже через неделю она писала на форумах о новых подходах в изучении программирования, которые мы проповедуем в Codeasy.net.

Дизайн сайта и иллюстрации для проекта создавала Таня, а моя жена Лена все время поддерживала и помогала разрабатывать курс.

Реализация

Главный вопрос, который мы задавали себе на протяжении первых 5-10 уроков: а хорошая ли это вообще идея — учить программирование, читая приключенческую историю?

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

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

Трудности

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

Одной из них было решение использовать Angular 2 сразу после его релиза. Позже, когда мы занялись SEO, оказалось, что нам неплохо было бы добавить Server Side Rendering. Пробовали связку ASP.NET Core с Node.js, которая также оказалась крайне нестабильной в продакшене. Сделали для себя вывод, что не всегда нужно гнаться за самыми последними и модными фреймворками. В общем, это потянет на отдельную историю от Лёши, оставим для будущих (технических) постов.

Еще одним испытанием был код раннер — собственноручно написанный сервис для компиляции и валидации пользовательского кода. Да, мы используем Docker. Да, вы все равно можете его сломать. Нет, пробовать ломать не надо, я и так верю :) Те, кто занимался вопросом, знают, что запуск внешнего кода у себя на сервере — исключительно неблагодарное занятие.

Еще одной сложностью, которую мы успешно побороли, было то, что пользователи «отваливались» после первых 3-4 уроков. Чтобы понять, в чем дело, мы постоянно мониторили пользовательские варианты решения задач и делали выводы, что именно им непонятно. Иногда эти пользователи заходили к нам в Slack-группу, и тогда мы уже сами могли их спросить. Итеративно, задача за задачей, объяснение за объяснением мы «вылизали» курс, чем значительно повысили успеваемость спасателей мира на Codeasy.net. Это очень воодушевляющий процесс, когда наблюдаешь за тем, как в самом начале человек не знал, какие кавычки использовать для строки и что такое переменная, а через 2 недели он уже решает задачки на массивы и удаляет двойные пробелы в строках!

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

Почему мы выбрали C#

Этому есть несколько причин, но главная: мы считаем, что новички должны начинать изучение программирования с современного языка, который легко применить на практике и который имеет спрос на рынке ИТ. Мы убеждены, что C# идеально подходит под это описание. Кроме того, за ним стоит мощный стек, при помощи которого можно создавать игры, десктопные и мобильные приложения, а также веб-ресурсы. C# объединяет элементы функционального и объектно-ориентированного программирования, имеет мощное комьюнити, а теперь уже развивается в сторону Open Source и мультиплатформенности. А что еще нужно для полного счастья?

Говоря языком чисел, язык C# находится на 9 позиций выше Java и на 7 позиций выше С++ в рейтинге Stackoverflow Developer survey «Most Loved programming languages»!

И совсем небольшая поправка на то, что мы с Лёшей давно имеем дело с С#...

Как работает сервис

На сегодняшний день наш ресурс — это история из 10 глав, объединенных единым сюжетом, в каждой из которых несколько историй. В процессе чтения вы смотрите на мир глазами главного героя, путешествуете в будущем, которое не такое уж светлое, а прямо скажем апокалиптическое. Искусственный интеллект захватил мир, вокруг свирепствуют роботы, а судьба человечества под угрозой... И только главному герою Тео под силу спасти человечество, как вы догадались, научившись программировать. А как еще победить ИИ? :)

Это был краткий тизер, об остальном приглашаем узнать на Codeasy.net ;)

Сейчас весь курс — более 140 практических задач, которые начинаются с совсем базовых и плавно ползут вверх по уровню сложности. Самые сложные — задачки с собеседований, такие как удалить двойные пробелы в строке, проверить число на простоту или вывести n первых чисел Фибоначчи.

После регистрации каждый пользователь получает на свой счет Codeasy.net 60 вирусов. Вирусы — внутренняя валюта Codeasy.net, при помощи которой пользователи открывают новые главы истории и задают вопросы менторам в Slack. Каждая задача в свою очередь — восполняет баланс вирусов так, чтобы их всегда хватало для борьбы с роботами. Если задачи сложны и потребовалось слишком много вирусов на помощь менторов, то всегда можно докупить вирусы за реальные деньги.

Кроме увлекательного футуристического приключения Codeasy.net предлагает:

  • написать ваш первый код \ решить задачу в онлайн-компиляторе;
  • автоматически проверить созданный вами код и сразу же отобразить результат;
  • воспользоваться подсказкой, если вы не разобрались, как решить задачу;
  • подсмотреть, как эту задачу решили ваши коллеги из Codeasy.net;
  • воспользоваться помощью лучших менторов-профессионалов в Slack-чате и стать частью Codeasy.net-комьюнити;
  • просмотреть таблицу лидеров и увидеть, на кого равняться.

У каждого есть шанс попасть в ТОП — нужно лишь усердно заниматься и решить все задачки на Codeasy.net!

Результаты и планы

Наши усилия в SEO и SMM дали первые ощутимые результаты. Сайт пробился в ТОП-10 Google по некоторым целевым запросам, и сейчас наш курс проходят более 50 учеников ежедневно! В скором времени мы планируем запуск русскоязычной версии курса, которая будет не менее увлекательной по сюжету. Сотрудничаем с переводчиками с целью сделать Codeasy.net доступным для пользователей других стран.

Мы планируем покрыть все уровни изучения языка C#, ведь ивенты, делегаты, лямбда выражения, многопоточность и куча других вкусностей — еще впереди! Сейчас Codeasy.net — базовый бесплатный курс. В будущем мы планируем его развивать и дополнять новыми полезными для пользователей фичами и уровнями сложности.

Также мы постепенно начинаем внедрять модель монетизации. Мы долго думали об этом и решили использовать механизм внутренней валюты (in-game currency), которую мы назвали «вирусы». Пока что наша идея в том, чтобы оставить пользователю шанс пройти курс бесплатно. Поэтому базовый курс построен таким образом, что пользователь, решивший все задачи, заработает достаточно «вирусов», чтобы открыть следующую главу истории и продолжать учиться. Кроме того, пользователь сможет заработать дополнительные вирусы за репосты Codeasy.net в соцсетях, рекомендуя нас другу, возможно, помогая нам в переводе истории Тео на родной язык ;)

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

Также есть идея разработать параллельный курс на Python... Но пока это лишь в мечтах, поскольку идей и задач много, а времени и ресурсов — мало. Вот если бы нашелся Python энтузиаст...


Мы приглашаем к сотрудничеству партнеров и инвесторов, заинтересованных в развитии или рекламе нашего проекта.

Если кто-то из ваших знакомых только начинает свой путь в программировании, предложите им попробовать Codeasy.net. Sharing is caring!

Давайте учить и учиться вместе!

LinkedIn

37 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Племянник проходит игру и застрял на задании про «авторизацию Тео» — на сколько я могу судить все правильно (и в студии проверил на всякий случай :-) ). Что может быть не так?

Круто! В свое время купил подписку на Java Rush и активно учил этот язык. По опыту, курс с кучей задач и повествованием интереснее, чем просто книга. Хотя на Java Rush повествование было так себе... Более важными вещами для меня оказались:
— удобная компиляция и проверка кода в браузере
— расширение в IDE от создателей курса, благодаря которому можно отправить результаты решения задачи прямо из IDE. также в студии можно было просмотреть список нерешенных задач и т.д.
— доступное объяснение
— мотивационные статьи или видео
Обязательно буду проходить ваш курс. Спасибо за начинание!

Обязательно буду проходить ваш курс.

А джавараш чем кончился?

во втором уроке на первой странице: 1) в имени маленькая опечатка ... вначале знакомится как Ritchie, а тут Richie said with a note of finality. И дальше по тексту тоже есть. Отредактируйте к одному варианту ))
2) дальше в тексте лишний артикль If you enter a pilot cabin in the a plane
3)devices like laptops phones — как бы запятая нужна

И маленький комент по заданию с подсчетом людей от 5 до 0 в строку. Ну знаю я про циклы. Загуглила как именно в сишарп их оформить и готово. А реально новичек про такое мог и не слышать — это монетизация на полных ламерах? ;))

Ошибки в тексте исправим, спасибо!
То что Вы знаете о циклах — это очень хорошо. А полные новички — не знают. Поэтому они не будут гуглить циклы, а скопируют строчку 5 раз и выведут то, что надо! Не вижу тут никакой «монетизации на полных ламерах» ;-)
Затем, спустя 5-6 уроков, они выучат циклы и поймут, что строчки не надо копировать 5 раз.

Затем, спустя 5-6 уроков, они выучат циклы и поймут

Что-то вроде глубокого обучения реализованного на людях.

ЗЫ: по моему нескромному мнению как и в случае нейронной сети дело в осознанности чисто технически на сегодняшний день думаю уже возможно построить и обучить нейронную сеть способную «выучить что строчки не надо копировать 5 раз» (к) (тм) вопрос в том что делать она это будет (здесь скорее обратное «не делать 5 раз» соотв «делать цикл») но вот осознавать это скорее нет.

ЗЫ: при всём при том что лично я давно пользуюсь этим методом в т.ч. в практике обучения других но тут вопрос в том что «обучением» это назвать не совсем правильно здесь уместен термин «тренировка» речь идёт о тренировке навыка например вождение авто навыки чисто рефлекторные практически неосознанные «педаль рычаг поворотник руль другая педаль повторить 5 раз» осознание процесса конечно полезно «для общего развития» но с точки зрения развития (тренировки) самого практического навыка помогает слабо здесь же ж ситуация обратна «цикл это повторение» это осознание не суть есть «закрепить практический навык не копировать 5 раз» суть есть осознать мне кажется в этом месте «спустя 5-6 уроков» движение несколько не в том направлении и не факт что сам факт таки осознания вообще наступит.

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

Затем, спустя 5-6 уроков, они выучат циклы и поймут

Социальными сетями прибило

begemoth.livejournal.com/114092.html

... это монетизация на полных ламерах? ;))

Справедливости ради формально они как бы об этом и сами пишут:

Это очень воодушевляющий процесс, когда наблюдаешь за тем, как в самом начале человек не знал, какие кавычки использовать для строки и что такое переменная, а через 2 недели он уже решает задачки на массивы и удаляет двойные пробелы в строках!

Но вопрос конечно поставлен правильно и сама суть вопроса довольно интересно «а что собственно есть такое этот „курс“?»

А чим Ваше рішення краще/унікальніше за ігри на Codingame ?
www.codingame.com/start

Наше рішення вчить програмувати, а Codingame — не вчить програмувати, а очікує, що Ви вже вмієте.
Codingame — одна з моїх найулюбленіших платформ, але тим, хто не знає, що таке змінна, массив чи цикл — там робити нічого. На відміну від Codeasy, де все це буде проходитися і розжовуватися.

Дякую за детальну відповідь! Чи плануєте добавити підтримку С/С++ ?

Повірте, я б залюбки :) Проблеми тільки в ресурсах. Поки першим на черзі — зробити цей курс достатньо повним для отримання роботи. Далі — Python, а далі подивимося!

Мені здається що відстань від

але тим, хто не знає, що таке змінна, массив чи цикл

і

курс достатньо повним для отримання роботи

— трохи завелика. У тому сенсі що навіть той же ж пайтон ще дуже зарано і «рух вбік від основної мети».

Пока не ушли в полную монетизацию есть стимул попробовать )) А по поводу перевода на русский — это медвежья услуга будущим прогерам. Английский не нужен только тем, кому не хочется расти как специалисту в ИТ и не хочется бОльшей зарплаты.

Прекрасно понимаю, к чему Вы. Однозначно в этом есть правда, но вспоминая, когда я учил программирование — было намного легче на русском или украинском, чтобы всю мозговую деятельность сфокусировать исключительно на программировании, не отвлекаясь на то, что какие-то слова непонятны из-за языка. Потом я подтянул английский, и вуаля, уже мог читать зарубежные книги по программированию и ездить на конференции.

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

Это отличная идея, Владимир! Она уже давны пылится у нас в backlog. Надеюсь, в ближайшем будущем воплотим в жизнь ;-)

Всё же буду ждать русский язык, с английским у меня хуже чем с c#

Читая такие комментарии, мелькает мысль, что перевод такого ресурса на русский язык может принести больше вреда, чем пользы. Ибо кто-то из новичков может всерьёз подумать, что без знания английского языка можно стать программистом.

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

Владимир, Винница и 1С еще не долго будут вместе )) (недолго в масштабах построения карьеры). так что не ориентируйтесь на это. А если хотите возразить «Я в Виннице сидеть не планирую — поеду в Киев», то возвращаемся к вопросу — без английского работы хорошей не найти (уж очень конкуренция большая). Разве что ваша цель работать у восточных соседей. Ну тогда разговор уже другой. И не в рамках этой статьи.

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

Хм.. А у меня регистрация работает. Спасибо за ресурс!

Все работает. Регался с хрома

У вас регистрация не работает на сайте. Пробовал в хроме и эдже. После заполнения данных и нажатия на кнопочку Sign up ничего не происходит.

Как мы уже поняли, иногда регистрация не срабатывает, точные причины неизвесты, но часто помогает попробовать зарегистрироваться с другого подключения к интернету, допустим — с мобильного.

Мы нашли в чем проблема! (По крайней мере я очень на это надеюсь) Сейчас регистрация у Вас должна работать, проверьте пожалуйста.

Регистрация сработала. Так в чем была проблема?

Проблема была в том, что нельзя вешать свои сервисы на нестандартные порты, отличные от 80 и 443. Они могут оказаться закрытыми в некоторых сетях ;)

Проект, наверное, интересный... Вот только мы с коллегой хотели зарегистрироваться — а не вышло — CONNECTION REFUSED ...)

Спасибо за отзыв! Пока не знаем, в чем дело, изучаем. Попробуйте пожалуйста зарегистрироваться с другой сети, не рабочей. Допустим, с мобильного.

Мы нашли в чем проблема! (По крайней мере я очень на это надеюсь) Сейчас регистрация у Вас должна работать, проверьте пожалуйста.

Да, теперь работает) Успешного Вам развития проекта :)

Javarush по С#?
А что, это мысля. Молодцы.

Javarush более-менее хороший только первые 10-15 курсов. Дальше ужас: отвратительный валидатор (например new File(path, subpath) не принимает, а хочет new File(path + «/» + subpath), проверки стиля кода тоже нет, не видно тестовых данных. Ну и дурацкое повествование в стиле «Привет, Амиго! Давай перевернём строку» с мотивирующими видеороликами «как хорошо быть программистом».

Подписаться на комментарии