Образовательный веб-сервис «IronBrain» (beta)

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

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

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

    P.S.: Проект полностью открытый и свободный, не имеет никакой коммерческой направленности, сделан от души и выложен на ваше рассмотрение — вдруг кому пригодится…



    Вступление


    Сразу оговорюсь — вполне возможно, что сайт ironbrain.org упадёт из-за хабра-эффекта или будет сильно тормозить в дни публикации статьи, поэтому я предусмотрел запасной вариант — вы можете просто скачать и запустить сервер у вас на ПК (под Windows). Всё-таки, главная цель этой статьи — донести идею, а не реализацию.

    Как зародилась идея


    Чтобы донести наиболее точно идеологию программы и область её применения, нужно понимать, зачем она создавалась, какие задачи решала и как развивалась. Коротко о себе — меня зовут Ярослав и на момент публикации статьи я учусь на 4 курсе СПБ ГУАП. Идеи, которые лежат в основе IB, зародились много лет назад. Но обо всём по порядку.

    Я начал увлекаться программированием ещё в далёком 2007 году. Тогда большинство изучало языки самостоятельно и, как правило, по книгам или руководствам. Для начала я просто читал книги и проверял на практике то, что в них написано. Но со временем пришло осознание неэффективности данной методики. Я начал искать более продуктивные пути обучения — и со временем нашёл их.

    Знакомые посоветовали завести тетрадку 48 листов и записывать в неё краткое изложение того, что есть в книге. По началу идея «конспектировать книгу» казалась мне странной и бесполезной. Зачем переписывать то, что уже есть? Ведь я всегда могу открыть книгу и найти нужную мне информацию. Книг много и не всегда есть возможность брать их с собой? Электронные копии можно раздобыть без труда для большинства книг, а с появлением электронных чернил граница практически стирается — можно иметь 1000 книг в одном устройстве. И вообще, сама идея конспектов казалась мне пережитком прошлого — тогда книги было не достать, приходилось их конспектировать или вовсе переписывать.

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

    На самом деле, можно достичь примерно того же эффекта, делая конспект устно — читая и вдумываясь в прочитанное. Так в 2010 я готовился к ЕГЭ по физике — без составления конспекта. О чём, кстати говоря, пожалел в начале первого курса, так как перечитывать книжечку желания не возникало, но освежить в памяти основы — хотелось.

    Много лет я, изучая те или иные технологии, вёл по ним конспекты в бумажной форме — сохранились тетрадки по Assemler, Pascal, AcrionScript 2,3. Конспектирование книг для меня было тогда крутым прорывом в обучении. Но потом я стал чувствовать, что чего-то не хватает. Первая проблема, над которой я начал думать — почему бы не заменить бумажные конспекты на электронные? Я попробовал, но никакого прорыва там не было — doc или odt — документ это по сути та же самая тетрадка, только бесконечно прочная и бесконечно лёгкая — бери куда хочешь. Но эти свойства были не очень то и нужны. А вот недостатки были — тетрадку всё-таки было куда приятнее вести, да и глаза отдыхали. Таким образом, электронные конспекты в традиционной форме у меня никак не прижились.

    Когда я готовился к первой сессии на первом курсе ГУАПа (это был далёкий 2011 год), передо мной встала задача за короткий срок — всего за неделю — изучить алгебру на ВУЗовском уровне. Экзамен обещал быть суровым, списать там крайне трудно. Часть материала была в моём конспекте лекций, часть — пришлось брать из книги. Когда я перечитывал конспекты, обратил внимание, что лектор давал существенно больше, чем было в списке вопросов к экзамену. Что, если бы я в дальнейшем собирался работать инженером и углублённое знание алгебры мне бы пригодилось? В общем, я глубоко задумался над этой разницей в объёме подаваемого материала. А также я заметил, что сам по себе подход составления билетов очень даже хорош для обучения, причём может пригодится для личных целей, например в изучении новых языков программирования или библиотек к ним. Билет заставляет думать. Подготовился я классическим образом, написав большую часть билетов по заданному списку вопросов — и сдал этот экзамен на отлично.

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

    Когда летом в 2011 году я отдыхал на Кипре, ко мне пришла идея создать универсальную программку для хранения документов личного характера и добавляющую нужные мне функции, которых нет в Word/Writer. Помимо всего прочего, я вспомнил про идею конспектирования в билеты, и решил, что её можно будет без труда реализовать на основе этой программы. Решил назвать программу IronBrain. По изначальной идее, программа должна была синхронизировать знания вашего мозга с компьютером, пускай очень приближённо и не напрямую — через мышь и монитор. Но эта общая идея не была реализована тогда в той мере, которую я хотел. По сути, когда вы пишите некоторый документ, а потом перечитываете его — вы синхронизируете ваши знания с ПК, но это очень не эффективно. Если у вас много документов, вам будет не интересно просто их всех перечитывать с опеределённым периодом.

    Эволюция IronBrain


    На втором курсе я сразу же приступил к работе. Тогда я видел IronBrain в виде суровой десктопной программы, которая работает моментально быстро, сидит в панели уведомлений и запускается по глобальным горячим клавишам. Так я и сделал. Долгий поиск в интернете и исследования показали, что лучшим решением задачи будет использование C++/Qt. Под «лучшим» я понимал, что программа будет лучшей именно для пользователей — не будет требовать установки сторонних виртуальных машин, запускаться как чистый исполняемый файл и выглядеть как большинство десктопных программ. При этом Qt даёт желаемую кроссплатформенность — я не хотел привязываться к конкретной операционной системе. Я также смотрел в сторону Java/Swing, но отбросил эту идею. Мне казалось, что интерфейсы на Java будут жутко тормозить.

    Тогда я столкнулся с двумя крупными проблемами — незнание С++ и незнание Qt. Именно отсутствие того самого базового курса по С++ — у меня не было по нему конспектов и не нашлось времени его нормально изучить. По Qt пришлось прочитать несколько глав из книги, чтобы понимать самые основы. В конечном итоге, незнание С++ умножилось на его сложность, и я порой часами сидел и пытался добиться элементарного — компиляции программы. Разработка шла очень медленно, и только к концу семестра я представил что-то рабочее. Надо признать, знания С++/Qt не сильно выросли в процессе разработки, особенно C++. Это кстати ещё одно наглядное доказательство, почему не надо изучать языки типа С++ на ходу и лучше потратить отдельное время для обучения «по книге».

    На самом деле, разработку замедляло то, что я не очень хорошо представлял, как должна работать моя программа. Я поступил весьма глупо и сделал просто большой массив объектов, которые хранили предложения, и при этом была возможность ставить вопрос от одного предложения к другому. Идея была такая — сначала пользователь пишет ответы — т.е. сам фрагмент конспекта. Потом программа заставляет его ставить вопрос к каждой строчке, и, таким образом, большую часть конспекта можно вытащить с помощью вопросов. Но это была крайне неудачная идея. В добавок ко всему, программа часто вылетала с типичной ошибкой «программа выполнила недопустимую операцию и будет закрыта» — где-то были ошибки с указателями. Однако основная идея была реализована и работала, я сидел на QIronBrain пару месяцев в начале 2013 года. Он уже тогда начал приносить существенную пользу. Как он выглядел, можете посмотреть на снимке экрана ниже.

    Как выглядел QIronBrain




    Потом я понял, что мне нужно было просто два RichTextEditor для вопросов и ответов. Нужно было кардинально менять архитектуру приложения, в идеале — переделать полностью. Я так и сделал. Используя те же небольшие знания С++/Qt, я меньше чем за неделю с нуля написал работающий прототип Examiner — выдрав из QIronBrain единственно успешную идею. Именно эту реинкарнацию IronBrain я использовал потом больше года, создав в ней около 600 билетов по разным темам. Причём парадокс в том, что я её вообще не дорабатывал — использовал в том виде, в котором выпустил первую версию. Она почти никогда не вылетала, получилась весьма дубовой и надёжной. Данные, как и в QIronBrain, хранились в виде одного XML-файла. В качестве основы использовался класс QTextEdit, который позволял получать его содержимое в виде HTML и строить его же на основе HTML.

    Как выглядел Examiner




    Всё, что делал Examiner — создавал билеты и иерархию для них, а также позволял линейно прогнать билеты из определённого раздела. Этого было более чем достаточно. В середине 2013 года я решил выбрать некий эталонный язык программирования и углублённо его изучить, т.к. мои знания были разбросаны поверхностно и по разным языкам. Изначально я думал, что таким языком станет С++. Однако после долгих раздумий, вдумчивого чтения холиваров, анализа вакансий на различных сайтах и рейтингов, я пришёл к выводу, что мне нужна Java. Сказано — сделано. За пол года я прочитал и законспектировал больше половины книги Шилдта, а также прогнал множество разных тестов, начиная от Quizful и заканчивая Enthuware. Кстати говоря, из тестов я получил почти столько же знаний, сколько из книги, и это были расширенные знания по тонкостям языка — я детально разбирал непонятные мне вопросы и составлял билеты по ним. В сумме я создал примерно 500 билетов по Java SE 6 и поднял свои знания на совершенно новый уровень. Это дало мне возможность сдать на довольно хардкорном тренажёре экзамен «Java SE 6 Programmer Certified Professional», что весьма круто, а потом сдать «Java SE 7 Programmer I» уже в реальном центре сертификации, что было совсем просто (так как он на основы), но открывало путь сертификации Oracle по Java и возможность дальнейшей сдачи более крутых экзаменов.

    В начале 2014 года я увлекся андроидом и создал ещё около 100 билетов по андроиду. Надо признать, андроид изучается по книге не очень хорошо. Или, может быть, я взял слишком сложную книгу. В любом случае, я бы мог вполне успешно создавать билеты на основе полученного или нагугленного опыта, но Examiner был строго иерархичен — я не мог создать билет на пустом месте и привязать его к нескольким областям знаний. В середине 2014 года я пришёл к выводу, что не помешает доработать Examiner и пустить его в народ — написать статью на хабре про всё это дело. Я решил, что перепишу программу на Java/Swing и добавлю ряд удобных функций, таких как поиск по базе билетов и добавление билета вне иерархии.

    Примерно за 2 месяца работы я создал работающий прототип JIronBrain, в котором были реализованы новые функции и улучшено много всего. Однако я понял, что совершил фундаментальную ошибку. Те средства GUI, которые я использовал, считались далеко не самыми лучшими. Когда я разрабатывал Examiner на Qt, оказалось, что библиотеку QtWidgets, в которой находился дорогой мне QTextEdit, не собираются развивать дальше. На замену приходит QtQuickControls, которые не давали на тот момент многое из того, что я хотел. И не известно, когда их доработают до этого уровня. Я надеялся, что в Java/Swing не будет такого. Однако оказалось, что Swing также считается устаревшей библиотекой и давно не дорабатывается, критические баги не исправляются, а Oracle позиционирует JavaFX как замену Swing. Я лично столкнулся с проблемой в JTextPane, когда пользователь вводит несколько пробелов подряд и они теряются при setHtml(getHtml()). Конечно можно всё это костылями исправлять, но неужели нет средства получше? Я подумывал переписать интерфейс на JavaFX, но потом понял, что это также будет критической ошибкой.

    Как выглядел JIronBrain




    Самым правильным решением было делать IronBrain в вебе. Как оказалось, уже довольно давно существует аттрибут contenteditable, который даёт мне тот самый идеальный RichTextEditor, который так хотелось. И HTML5 уж точно никуда не денется. Причём этот RichTextEditor отлично работает как под разными десктопными браузерами, так и под андроидом. А Swing под Android запустить практически не реально. Этот факт меня очень сильно задел, и я понял, что имеют в виду, когда говорят, что будущее за вебом. Веб-приложение это своеобразный трансформер — он может работать в режиме клиент-сервер, а можно запустить его как десктопную программу, не имея выхода в интернет.

    Я достал листок формата А4 и написал анализ моего Java/Swing приложения и какие преимущества я получу при переходе на веб-архитектуру. Они были весьма существенными, начиная от очень перспективной технологии к построению GUI (HTML5), заканчивая удобством для конечного пользователя — не нужно ничего скачивать, устанавливать и так далее. Я понял, что имеет смысл переписать IronBrain ещё раз. Четвёртый раз. За ошибку неправильного выбора технологии пришлось дорого заплатить временем и силами. Но переход того стоит.

    И действительно, HTML5 дал мне всё и даже больше. Это, по всей видимости, самая совершенная в мире технология для построения GUI малой и средней сложности, хотя, учитывая современные процессоры и быстрые браузеры, я думаю на HTML можно построить интерфейс практически любой сложности. Я даже и представить себе не мог, что в нём есть очень мощный встроенный RichTextEditor. Практически на всех форумах, на которых я работал, нужно сначала ввести код, и только потом он визуализируется в режиме «предпросмотра». К тому же, многие сайты жутко тормозят, и я думал, что моя система также будет тормозить. Но размещённый на VPS WIronBrain работал тоже практически моментально! К тому же, на крайний случай я мог запускать его локально, тогда уж по скорости работы он будет таким же, как и десктопные приложения.

    Примерно за пару месяцев я с нуля разработал WIronBrain, с серверной частью на Java/Spring, а клиентской — на HTML5/CSS/JS. Старую базу перегнал в MySQL, чем кстати очень доволен.

    Как выглядит WIronBrain




    Идея


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

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

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

    Система IronBrain позволяет автоматизировать создание билетов, организовать их нарезку и поиск по ним, а также множество других полезных функций. Если вы что-то регулярно изучаете, вы можете перед каждым новым занятием благодаря вопросам полностью вспомнить основные моменты прошлого занятия. Можете смотреть на IronBrain как на учителя, который перед каждым новым уроком накидывает вам вопросы за прошлый и разъясняет, если вы где-то ошиблись. А также заставляет вас заучивать основные моменты. Именно в этом и есть основная польза IronBrain. Обучение станет существенно интереснее и приятнее, так как вы будете видеть свой прогресс и много думать. Одно из самых главных приемуществ IB — повышение удовольствия от обучения и как следствие — крутой рост вашей производительности. На самом деле, чтобы прочувствовать главные преимущества IronBrain и увидеть разницу с классическим подходом к обучению, нужно всего 3-4 дня, каждый по 1-1,5 часа. Просто попробуйте.

    Тонкости использования системы нет смысла описывать в пределах данной статьи, можете почитать про них в разделе «Документация -> Руководство пользователя» внутри IB.

    Конкретные случаи применения


    Изучение языка программирования общего назначения


    HTML/CSS/JS можно изучить на ходу, без чтения книг или руководств (так делают большинство фрилансеров), на уровне, достаточном для создания небольших сайтов на заказ. С более сложными языками программирования, такими, как C++ или Java, такой подход не эффективен. Если вы будете изучать их по ходу разработки проектов, то рискуете наделать архитектурных ошибок, за которые потом дорого заплатите. Конечно, всё можно изучить через практику и на своих ошибках — но на это потребуются годы, в то время как можно перенять чужой опыт из книг существенно быстрее.

    Алгоритм следующий — берёте книгу по C++/C#/Objective-C/Java или по другому промышленному языку. Открываете IB, заходите в раздел [Билеты]→[Группы] и там создаёте раздел для вашего языка и в нём — раздел для книги. В нём строите иерархию — как вам удобнее — от раздела до главы и подразделов. В них уже — непосредственно сами билеты. Читаете книгу, конспектируете теорию, потом практикуетесь — вводите код и играетесь с ним, меняйте его и смотрите на результат. Обязательно проверяйте ВЕСЬ подаваемый материал на практике, так вскрываются опечатки, интересные моменты и полезные особенности. По всем извлечённым знаниям и тонкостям, которые вы обнаружили — составляете билеты, типа «как написать такую-то программу, какие там тонкости». Причём области для билетов НЕ проставляете. Лучше для каждой главы укажите область по названию языка. Это позволит вам потом, при необходимости, вытащить этот набор билетов и соединить его с билетами, полученными опытным путём по этой же теме и с другими книгами.

    Обязательно каждый раз перед новым занятием прогоняйте билеты, которые вы создали в прошлом занятии — тогда знания будут существенно лучше укладываться, будет происходить переосмысление многих вещей. Именно это повторение билетов — и есть главная польза от IB в данном конкретном случае. Ваше обучение программированию будет существенно более эффективным и приятным. Польза номер 2 — через поиск вы можете просто легко найти ваши билеты и использовать базу как личный FAQ.

    Довольно часто случается так — начинаешь читать новую сложную главу, причём сложную именно концептуально — новые понятия, подходы и принципы. Порой читаешь и просто не понимаешь, что и зачем. IB помогает постепенно «взять» такие главы без особого труда. Нужно всего лишь составить 3-4 билета с теорией, хотя бы с простейшими определениями. А на следующий день — прогнать и выучить эти билеты. Затем, продолжив обучение, вы заметите, что очень многое прояснилось и обучение пойдёт в гору. Возникает это потому, что ваш конспект — выжимка теории — даёт некий «каркас» для вашего мышления, «основу», от которой вы можете отталкиваться и расставить всё на свои места.

    Используя IB, я изучил Java SE на довольно приличном уровне и до сих пор использую эти знания по нескольким направлениям. Было составлено около 300 билетов по книге «Шилдт Java 7 полное руководство». Это было совсем не трудно, как вам может показаться на первый взгляд. И очень продуктивно. В день нужно заниматься примерно по 1,5-2 часа, составляя около 4-6 билетов.

    Изучение пакета по работе с графикой


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

    Лицензионный 3D max стоил огромных денег, а использовать взломанную версию и к тому же не кроссплатформенную мне не хотелось. Я увидел, что есть достойная замена — Blender — и решил изучить его. Скачал очень хорошую серию видеокурсов на русском языке по нему, стал просматривать и экспериментировать. А также — параллельно создавать билеты по полученным знаниям. Тогда QIronBrain не позволял вставлять снимки экрана, но мне они были не сильно нужны. Достаточно было в тексте сформулировать вопрос, например «Как произвести экструзию полигона?» или «Как сколлапсировать три точки?» — и ответы в виде горячих клавиш, или же описание где находятся необходимые кнопки. Кроме вопросов-ответов по элементарным темам я также задавал чисто технологические вопросы-ответы, например «Как сделать чашку через 2D рисование и вращение на 360 градусов» — а затем описание алгоритма по пунктам. На обучение ушло примерно 2 недели, почти каждый день я занимался в среднем 1,5-2 часа.

    Основы блендера я изучил, но проект по созданию игры отложил на будущее, так как было много других задач. И через полгода в новом семестре у меня была курсовая работа по компьютерной графике. Вот тут то и сказались огромные преимущества IronBrain. Я открыл Blender и понял, что 60% изученного не помню в принципе, а ещё 30% помню крайне смутно. Полгода я не практиковал 3D моделирование, да и я вообще ни разу не практиковал полученные знания — изучил и забыл. Что делать? Времени то на обучение было потрачено прилично. Пересматривать те же самые видеокурсы по второму разу было утомительно и непродуктивно. Конечно, повторное изучение материала идёт существенно быстрее — я бы смог пересмотреть и вспомнить всё это за неделю — по 1,5-2 часа каждый день. Но был более эффективный путь.

    Прогон всех билетов по Blender занял у меня примерно 3 дня по 2 часа каждый день. Это в два раза меньше, чем если бы я повторно смотрел видеокурс. И в три раза приятнее, так как, опять же, вопросы заставляют думать. Я создал отличные 3D модели (для курсовой) и без проблем сдал её. С тех пор прошёл год и я опять всё забыл, но если мне снова понадобится Blender — смогу также легко его вспомнить.
    В добавок ко всему, поиск по вашим билетам в данном случае даёт большие преимущества. Если в случае книг вы ещё могли скачать электронную версию и искать по ней, то для большинства видеокурсов текстовый поиск не возможен, а проматывать туда-сюда в поисках нужного фрагмента — весьма утомительное занятие.

    Алгоритм такой — берёте видеокурсы (именно они наиболее эффективны для изучения графических пакетов), создаёте в разделе [Билеты] новый раздел «Компьютерная графика». В ней — раздел по названию вашего пакета, например, Photoshop, Gimp, 3D max и т.д. Там — раздел по названию видеокурса — и в нём уже по разделам — разделы с билетами. Всё аналогично конспектированию книги.

    Подготовка к тестированию


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

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

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

    Алгоритм существенно отличается. Тест -это не книга и не видеокурс. Он не имеет структуры. Там всё случайным образом перемешано и нет смысла пытаться свести это к иерархии. Просто создавайте независимый билет, нажав в меню "+Билет". Но не забудьте привязать его хотя бы к одной области.

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

    Хранение фрагментов исходного кода


    Когда-то давно я опубликовал на хабре статью про CodePaster. Я сам долго пользовался этой программой, но со временем забил на неё, когда сделал нормальный поиск в IB. Да, фрагменты кода можно тоже хранить в виде билетов. И накидать к фрагменту список вопросов какой-нибудь, по общей логике работы или конкретным методам. И это кстати реально помогает, когда используешь поиск — список вопросов объясняет, что делает этот код. Т.е. фрагменты кода можно просто добавлять как билеты, потом НЕ прогонять их в виде теста, только находить через поиск.

    Супер подготовка к собеседованию [Предположение]


    Допустим, вы — программист мобильных приложений. Вы изучили Java SE по некоторой книге и составили много билетов по нему. Вы изучали андроид по видеокурсу и также составляли билеты. Затем вы поднимали свой VPS сервер и получили очень много полезных практических знаний по Linux — решив через поисковую систему и сторонние сайты большую часть проблем администрирования. И все эти знания вы также свернули в билеты. Затем вы делали проект «для себя» под андроид, и в процессе разработки наткнулись на множество вещей, о которых не написано в книгах и курсах — как по Java, так и по андроиду. Все эти практические навыки вы также перегнали в билеты. Каждый билет, который вы создавали, так или иначе входил в какую-либо область, прямо или косвенно. Потом вы пошли на курсы по Linux и вам там рассказали множество интересных вещей, которые вы также потом дома проверили и перегнали в билеты. Затем вы прочитали несколько интересных статей на хабре про Git и кое-что отметили для себя — пару новых билетов.

    Итог — у вас есть следующие IB-области — Java SE, Android, Linux, Git — и в каждой этой области находятся билеты. Области иногда могут пересекаться — когда билет затрагивает уникальные знания из обеих областей. Вы смотрите вакансии и находите среди них те, которые примерно соответствуют вашим знаниям, например, вакансия в некоторую компанию MobileMegaSoft.

    Вы создаёте IB-направление, которое включает все эти области и называете его «MobileMegaSoft direction». Отныне оно включает ВСЕ билеты, которые вы до этого составляли и включали в эти области. И самое главное — вычисляет процент билетов, которые вы помните на данный момент, а также позволяет производить нарезку тех билетов, которые вы, скорее всего, забыли. Вы можете, допустим, за пару недель, каждый день по пару часиков, нарезать и прогонять ваши билеты, вспоминая ваш опыт, а также прочитанное в книгах и услышанное на курсах. Все эти знания будут объединены в вашей голове воедино, и кроме того во время повторения у вас появится иной взгляд на многие вещи и новые идеи, понимание того, что раньше казалось мутным. Вполне возможно, вы даже сделаете новые выводы и получите новые знания за счёт повторения старых. Не даром говорят, что повторение — мать учения. IronBrain позволяет вам «поднять в воздух» все ваши знания, которые вы накапливали годами по тем или иным темам.

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

    Любая работа, которая требует обширных знаний [Предположение]


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

    Все теоретические и практические знания можно разложить в виде билетов. Не важно, какой источник у этих знаний — вас кто-то научил, вы научились по книжке, дошли до этого сами или же вычитали это на каком-то форуме. Приведу простой пример. IT-специалисту требуется всегда знать очень много. И тут IB может существенно вам помочь. Если вы работаете программистом, как правило вы имеете дело с большим стеком технологий. И для каждой технологии вы можете создать IB-область, и создать IB-направление, которое собирает все области, необходимые для вашей работы. Таким образом вы очертите множество билетов, которое содержит необходимые вам знания для вашей работы. Да, эти знания могут быть избыточны, вы можете использовать только 10% из всех повторяемых знаний. Но эта избыточность неизбежна и естественна. Чтобы сделать правильный выбор среди трёх библиотек, программист должен знать хотя бы на уровне основ все три библиотеки. А ошибка выбора, как известно, может дорого обойтись.

    IronBrain позволяет поддерживать определённый набор знаний постоянно «в воздухе». Функция нарезки позволяет из определённого множества билетов выбрать случайные, но выбрать из тех, которые вы не помните. И когда вы отвечаете каждый билет — вы сами выбираете, когда его вспоминать, через день, месяц, через год и т.д. Надо признать, я сам создал направление «IB Developer» и включил в него области Java SE, Tomcat, HTML, JS, CSS и Linux. Когда я узнаю что-то новое — я добавляю билеты в соответствующие области. Однако я пока что не смог круто применить эту технологию нарезки, и не берусь утверждать, поможет она вам или нет. Если вы сможете — обязательно напишите об этом. В IronBrain есть бета-функции, и это одна из них.

    Я слышал, что работа юриста предполагает знание теории в очень большом объёме — и от этого объёма напрямую зависит успех работы. Хочу сделать предположение, что IronBrain можно очень эффективно использовать для изучения юридических наук и при работе в этой области. Но это, опять же, предположение, и я могу ошибаться. На данный момент у меня нет знакомых, которые использовали IB эффективно в этом направлении. Аналогичное предположение сделаю для наук медицинских…

    Техническая реализация


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

    IB основан на Java/Spring/Hibernate. Это классический стек, который используется довольно часто. Я примерно за 2 недели изучил самые азы Spring и Hibernate. Это очень сложные промышленные технологии, и у меня не было времени и возможности, чтобы нормально их попрактиковать где-либо, поэтому, скорее всего, там полно косяков, архитектурных и не только. Чтобы изучить их, требуются годы, как теории, так и практической работы в компаниях. Так что не судите строго.

    Когда-то у меня была традиция открывать исходный код сайтов от друзей веб-программистов и говорить, как там всё криво и косо. Сейчас, когда я по-сути выпустил свой первый сайт, я понимаю, что мой фронтенд построен, возможно, даже хуже, чем это было у друзей веб-программистов. HTML/CSS/JS требуют отдельного изучения и кропотливой работы, а я специализируюсь, скорее, на серверной части, чем на клиентской. Может быть, стоило использовать библиотеки типа GWT, или хотя бы AngularJS подключить. Но я делал тонкий клиент на традиционном HTML/CSS/JS + JQuery. В архитектурном плане код просто ужасен, но я не знал, как сделать по-другому, когда начинал разработку.

    Я бы мог выпустить JIronBrain как десктопное приложение с интерфейсом на Java/Swing. Там было бы существенно труднее докопаться до кода, но программа бы не получила огромных преимуществ веб-приложения. Поэтому я заложил её основы именно в вебе.

    Как бы там ни было, текущая реализация WIronBrain, имея не самую лучшую архитектуру на клиенте, работает ЛУЧШЕ и КРУЧЕ, чем все предыдущие реализации. HTML5 дал мне просто фантастические возможности — начиная от свойства contenteditable и заканчивая поддержкой веб-сокетов. Ещё раз повторюсь — текущая версия IronBrain, хоть и бета, но она отлично работает, если её правильно использовать и её уже можно применять для обучения.

    В качестве СУБД использована MySQL, и все данные хранятся в ней. Весьма интересный факт — в исходном коде нет ни одной строчки, написанной на SQL. Вся работа с БД идёт через прослойку ORM Hibernate и это, надо признать, очень удобно. Таким образом, проект не привязан к конкретной СУБД и в теории его можно использовать с любой реляционной СУБД. А сам сервер поднят на бюджетном VPS под управлением ОС Debian.

    Заключение


    Прошу прощения, если статья получилось большой, я просто хотел выложить на максимум всё, что связано с IB. Давно хотел, кстати, написать эту статью…

    Исходники системы полностью открыты и доступны на GitHub.

    Если вам получиться применить IronBrain в какой-либо из областей вашей жизни, обязательно напишите мне вашу историю во всех подробностях на kciray8@gmail.com. Можете сделать это анонимно или же указать, чтобы я не выкладывал её в публичный доступ. Но, в любом случае, буду рад любым отзывам.

    Кроме того, мне было бы очень интересно услышать про вашу личную систему обучения, как вы обучаетесь, по каким методикам и так далее. Пишите…

    С наилучшими пожеланиями, Ярослав aka KciRay.

    UPDATE:
    Идею в целом очень хорошо восприняли, особенно много положительных отзывов было на email. Всем спасибо, буду постепенно развивать идею и систему дальше.
    Публикация на хабре за 3 дня принесла системе около 4000 уникальных посещений и около 200 регистраций.
    Интересный факт — сервер ironbrain.org ни разу не упал и сайт не тормозил вообще, успешно выдержав хабраэффект.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 39

      +6
      При попытке добавить картинку — «IBClient не запущен!»

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

      С технической точки зрения, я не понимаю зачем мне IronBrain вместо, например, Evernote. Единственное применение — для заучивания информации. По типу «сдал — забыл».

      PHP открывает, как мне кажется, фантастические возможности для фриланса, которых нет у Java. Может быть, стоило выбрать PHP.

      Забавный аргумент в пользу выбора технологии для своего проекта
        0
        IBClient нужно отдельно скачать и запустить, на сайте в разделе Документация -> Руководство пользователя -> Добавление файлов, снимки экрана и IBClient есть ссылка. Средствами JS снимок экрана никак не сделать…

        «Вызубрил — рассказал — молодец».

        Если правильно работать с IB, то «зазубривание» сводится к нулю, вы же не конспектируете справочную информацию…

        С технической точки зрения, я не понимаю зачем мне IronBrain вместо, например, Evernote. Единственное применение — для заучивания информации. По типу «сдал — забыл».

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

          1) имхо 2) у меня не Evernote, но сути это не меняет.

          От Оккамы отдельный привет ;-). Шутка.
            0
            Да, действительно в Evernote можно также хранить знания в виде вопрос-ответ. Но она не предназначена для этого. Например, если я захочу вставить в вопрос снимок экрана, или же написать просто развёрнутый вопрос — заголовок не подойдёт для этих целей.
              0
              Да. Не подойдет.
          0
          > Единственное применение — для заучивания информации. По типу «сдал — забыл».

          если плохая память, другого выбора и нету.

          я всё забываю очень быстро. а где-то через год-два оно исчезает совсем, как будто этого и не было вовсе.

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

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

          вот у меня сейчас проблема — я работаю менеджером, но хочу вернуться в программирование на java, но уже совершенно забыл всё о джаве. Билеты (если бы они у меня были) помогли бы зарефрешить кэш в кратчайшие сроки. Но их нет, поэтому придется заново прочитать Шилдта, потому Java Concurrency in Practice, потом документацию Спринга и Хибернейта, итп, и на это уйдут месяцы. Всё еще хуже касательно алгоритмов, поэтому ETA перехода на работу джава-программистом — не менее полугода.

          привет.
            0
            Спасибо за ваш отзыв. По всей видимости, такая плохая память у большинства, если не у всех. Если что-то не повторять — за пару лет 90% информации напрочь исчезает из памяти.

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

            «и на это уйдут месяцы» — именно об этом я и говорил в статье =)
            Куда проще, наверно раза в 4 проще и быстрее, прогнать свои конспекты в виде билетов.
          +1
          Ярослав, благодарю за интересный материал, обязательно попробую Вашу методику, тем более что искал что-то подобное, но кроме Evernote лучше (доступней) ничего не нашел. Сама методика вероятно подойдёт не всем и критики её уже находятся. По себе скажу, что эффективность (силу) конспектирования лично на себе заметил позанимавшись неделю по методике Г.А. Шичко, так что я верю, что само направление верное. Осталось только найти единомышленников для развития этого сервиса.
            0
            Спасибо за ваш отзыв. Если у методики сложится хотя бы небольшое сообщество, будет уже хорошо.

            Если IB действительно будут использовать, я буду поддерживать и администрировать сервер для http://ironbrain.org.
            +1
            Спасибо. Выглядит многообещающе. Начну использование прямо сегодня.
            Но есть одно замечание.
            Текст курсивом плохо читается и это вызывает небольшое раздражение, так как в системе Все написано курсивом. Причем самым неприятным, когда у букв появляются «лесинки». Я конечно понимаю что это Tweeter Bootstrap. И у них все круто, кроме курсива.
              +1
              Спасибо за ваш отзыв. Обязательно отпишитесь об успехах =)

              Что касается курсива, сейчас решим проблему. Какая у вас ОС и браузер?

              На самом деле, Tweeter Bootstrap изначально очень сильно улучшил шрифты, убрав те самые лесенки, которые были по умолчанию. При нормальном отображении сайта курсива быть не должно быть…



                0
                Chrome Версия 40.0
                Скриншот: www.dropbox.com/s/4kdwd133mfrz4ec/ironbrain.jpg
                  0
                  Какая у вас операционная система? Так только мой сайт выглядит или ещё какие-нибудь?

                  Когда везде курсив — это действительно неприятно для глаз, так IB выглядеть не должен.

                  Bootstrap подставляет следующие шрифты — Helvetica Neue, Helvetica, Arial, sans-serif. Они все в нормальной форме без курсива должны отображаться. Возможно, где то на уровне системы установлен принудительный курсив или что-то вроде того.

                  И попробуйте с другого браузера зайти — может это в настройках браузера дело…
              –3
              ИМХО:

              К сожалению, это костыль, собранный из пхп, явы и школьновузовского подхода :)
              Ничего не имею против костылей, но уже были emacs org-mode, freemind/vym/vue, был evernote (теперь появились всякие gingko), а люди таки умнее не стали.

              Более того, даже подход с билетами уже был — см. всякие приложения для изучения языков карточками. В теории, такая система может помочь старичью бороться с альцгеймером… но для работы лучше выбрать костыли получше и стереть из резюме отметку о том, что за два года не смог освоить без костылей Java/C++/php :)

              ВОПРОС:
              kciray, а что у тебя с алгеброй и computer science в целом? (e.g., не пора ли перечитать Кнута вместо изучения, зачем нужен Monitor в Java?)
                0
                собранный из пхп

                в IB PHP вообще отсутствует.

                Почему костыль, я так и не понял. IB прямо реализует изложенные идеи, мне казалось что в статье я их понятно объяснил.

                Для устройства на работу, а именно для подготовки к собеседованию, можно очень даже эффективно использовать IB и я об этом подробно написал описано разделе «подготовка к собеседованию».

                В теории, такая система может помочь старичью бороться с альцгеймером

                Огромное количество пользователей, которые использует Evernote, получается, делают это с той же целью? На самом деле, всем людям свойственно забывать, особенно теорию, а она, временами, нужна…

                Алгебру нормально знаю, когда игры писал на Flash, свой 2D движок и расчет физики был. Правда до ума и публикации это так и не довёл. Кнута подумываю давно почитать, но руки никак не доходят…
                +1
                Спасибо, обязательно попробую, так как подход очень правильный. Действительно для лучшего понимания и запоминания очень важно вербализовать знание — это основано на том, как взаимодействуют речь и мышление.

                Я сам пытался «конспектировать» в Mind Map, но не очень это удобно.
                Интересное решение с повтором информации через некоторый отрезок времени. Интересно, применимо ли к билетам интервальное повторение?

                Из первого опыта использования Вашего сервиса у меня самое главное замечание — очень запутанный интерфейс. Он мне показался совершенно не интуитивным. Документация слишком многословна. Стоило бы подумать над упрощением и повышением интуитивности интерфейса и краткой но информативной системой помощи.
                В качестве идеи — сделайте дефолтный раздел с билетами по использованию Вашей системы. Одновременно и информацию даёте и работу демонстрируете.

                Не очень понятно, почему сначала нужно писать ответ, а потом — вопрос. Естественный порядок обратный.
                IB-область — это по сути тег? Почему бы его так и не назвать? Не очень понятно, что такое «Отрицание» области…
                  0
                  Я сам когда-то давно пытался освоить MindMap и даже читал книжку про него, но до конца не дочитал. Автор — создатель этой системы — очень уж расхваливал её, однако, к сожалению, я не смог понять главных преимуществ MM и она у меня не прижилась нигде. Хотя красочное представление информации в виде схем — идея очень даже хорошая, может быть потом стоит её внедрить в IB — вставлять в ответ на билет схемку. Хотя уже сейчас никто не мешает рисовать схемки в любой MM программе и вставлять их в IB через снимок экрана, но они будут как статические картинки.

                  Да, к билету очень просто применить интервальное повторение, оно уже сейчас реализовано. Когда прогоняете билеты в экзамене — для каждого вы можете указать, когда вам его вспомнить. Потом в разделе «Направление» вам нужно добавить направление с областями, и через него уже производить «нарезку» билетов из нужных вам разделов. Те билеты, которые отложены на потом — не будут участвовать в этом.

                  Интерфейс я старался сделать максимально простым, но без потери функциональности… Как сделать ещё проще, не знаю пока что.

                  На счёт дефолтных билетов по использованию системы — идея очень хорошая, спасибо.

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

                  Я хотел их назвать тегами, но область — это нечто большее, чем просто тег. Это область знаний.
                  Отрицание — это, например, если у вас есть раздел — книга и вы её присоединили к некоторой области. Тогда все её подразделы и билеты автоматически принадлежат к этой области. Но вдруг есть в книге главы устаревшие, или же оказавшиеся ненужными вам — вы их когда-то законспектировали, но не хотите нарезать билеты по ним. В таком случае, ставите на главу отрицание области — и она не участвует в нарезке.
                  0
                  Было бы неплохо добавить в статью ссылку на исходники, а в README прописать инструкции по запуску проекта (оптимально — в win и linux, если они отличаются).
                    0
                    Добавил ссылку на исходники.

                    А на счёт инструкции — она же есть в архиве, правда только под Windows…

                    А под Linux задача сводится к поднятию MySQL, в ней создания пустой базы IB, потом поднятия сервера Tomcat и развёртывания в него ROOT.war, который есть в архиве. Задачи вполне классические.

                    Если вам по каким-то причинам хочется поднять свой IB сервер под Linux, могу помочь в этом…
                      +1
                      README в репозитории для этого и существует, чтобы не заставлять людей искать «архивы» и ломать голову, какие именно «классические» задачи вы имели в виду. Если вы хотите получать конкретные запросы, а тем более пулл-реквесты, а не просто абстрактную болтовню, то уж потрудитесь привести репозиторий в порядок.
                        0
                        Если кто-то действительно заинтересован в развитии проекта и пулл-реквестах на него — то постараюсь привести всё в порядок.
                    0
                    Я прочитав, заголовок грешным делом подумал, что это первые шаги в машинном обучении.
                    Если бы научились знания записывать в голову быстро и неосознано — это был бы переход всей цивилизации не новый этап развития.

                    Пишут что запоминание эффекtно работает когда происходит: 1. запись, 2. прослушивание, 3 — визуальный контакт.

                    Была статья, что человеческий мозг формирует устойчивое соединение в мозгу, при произнесении фразы 124 раза. Попугаям достатточно 89 раз.

                    Жаль что гугль или кто еше из гигантов этим не занимается. А то бы под эгидой ООН все бы разом получили мировые знания и был бы шеколад.
                      0
                      Была статья, что человеческий мозг формирует устойчивое соединение в мозгу, при произнесении фразы 124 раза

                      Если не трудно — скиньте ссылку — было бы интересно почитать…

                      Если бы научились знания записывать в голову быстро и неосознано
                      Если бы…

                      Я предположу (хотя могу ошибаться), что крупные компании не занимаются этим потому, что задача нереально сложная и тем более не ясно, как она будет решаться на уровне физическом…
                      0
                      Возможно для улучшения теоретических знаний вам стоит присмотреться к онлайн курсам об обучении. На Курсере идет курс — How to learn. На edx есть курс Scince of every day thinking — там есть глава об образовании.
                      • UFO just landed and posted this here
                          0
                          Спасибо за отзыв. Действительно, небольшой косметический фикс надо будет сделать…
                          +1
                          Всё таки, неплохо бы иметь возможность смотреть чужие базы.
                          Конечно, составлять свои карточки/майндмапы — это наиболее эффективно.
                          Но иногда на это тупо нет времени. Вот есть у тебя выходные, за которые надо изучить веб-фреймворк. За эти входные можно успеть осилить 1-2 книжки, в которых 3/4 — или плохо поданный материал, или мусор, или просто не предназначено для изучения с такой большой скоростью. И написать один-два хэлловорлда.
                          И хоть какая-то хорошо структурированная информация гораздо лучше, чем вообще никакой.
                          Даже если эту информацию составлял и структурировал не ты.
                          Например, было бы интересно прочитать 500 карточек про джаву :)
                          Имхо
                            0
                            Ввести социальные функции советует каждый второй пользователь, не считая первого =) Так что когда буду глобально добавлять что-то в IB — в первую очередь это будут именно они.

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

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

                            Собственно, я давно подумываю о том, чтобы выложить свои 500 билетов по Java в публичный доступ. Наверно даже статью об этом напишу в хабе Java. Но для этого мне нужно их перепрогнать и подправить опечатки, местами доработать и так далее. На это нужно примерно 2 недели, но пока нет такой необходимости. Вот когда универ закончу и на работу буду устраиваться — займусь этим. Хотя может и раньше.
                              0
                              Удобно было бы даже не шаринг карточек, а сразу копирование их в свою картотеку, как будто они свои. Чтобы можно было дальше развивать «под себя».

                              Только непонятно, что с авторскими правами.
                            +1
                            Считаю, что вы идете в верном направлении, последние несколько лет я конспекты веду в майнд картах в сервисе mindmup.com, а для вопросов использую Анки и чувствуется проблема в том, что приходится поддерживать по сути две разные базы знаний были мысли в направлении как бы их объединить, а ваш сервис по сути это и делает. Удачи!
                              0
                              Спасибо за отзыв. Действительно, я сам когда-то тоже хранил конспекты в одном месте, а вопросы-ответы порой в другом. И основная идея IB — объединить их.
                              +1
                              Ближайший известный аналог для IronBrain — Аnki (http://ankisrs.net/).

                              Рассмотрите возможность заимствования некоторых идей из сходного продукта. Например, импорт карточек с вопросами и ответами из Anki в IronBrain. Файлы карточек: ankiweb.net/shared/decks/
                              В Аnki удобно сделан ввод данных о вопросе и ответе, быстро вводится. Если не использовать форматирование, то руки от клавиатуры не отрываются. Думаю, поэтому, у пользователей накоплен большой набор собственных карточек. БД тут sqlite. Формат файлов карточек (*.apkg) — архив с SQL-скриптом collection.anki2 для вставки записей в БД на sqlite. Как понял, в Anki, открытие колоды сродни восстановлению БД из резервной копии. В WIronBrain несколько наборов вопросов хранятся совместно в одной БД.

                              Использовал Anki версии 1.2, чтобы запоминать термины и определения, на русском. Кто-то использует для изучения иностранных языков.

                              Попробую использовать ваш продукт для тех же целей — термины и определения. Есть на работе аттестации, актуально для новых сотрудников. И самостоятельная подготовка к ним, через веб-интерфейс будет удобной.
                                +1
                                Спасибо за ваш отзыв. Действительно, программа Anki работает схожим с IB образом. Как-нибудь попробую в ней поработать и понять, что лучше а что хуже в сравнении с IB.

                                Как мне кажется, одно из приемуществ моей системы — веб, и можно из коробки получить кроссплатформенность для мобильных устройств. Правда нужно макет сайта под маленький экран подогнать, я пока не знаю как это сделать.
                                +1
                                Правильный подход. Я долгое время использовал похожую схему на базе Supermemo = чтение статей + повторяющиеся карточки с вопросами.
                                  0
                                  раз www.studyblue.com/
                                  два quizlet.com/
                                  итд
                                    0
                                    Ого, оказывается за границей уже давно практикуют некоторые из тех принципов, которые я пытался донести статьей. Даже в образование их внедряют. А у нас о них почти никто не знает…

                                    Только вместо билетов там Flashcards.
                                    0
                                    kciray
                                    Респект Вам за осознанный подход к собственному обучению и запоминанию, я в Вашем возрасте таким похвастать не мог. К сожалению подход этот на мой взгляд весьма поверхностный. Вы создали инструмент хранения и доступа к слабо структурированным коротким заметкам с целью улучшить восприятие и запоминание изучаемого материала. И это на мой взгляд велосипед вдвойне.

                                    1) Инструментов хранения и просмотра заметок великое множество, создавать ещё один не узкопрофильный — это синдром фатального недостатка

                                    2) Эффективность запоминания/восстановления сильно зависит от механики процесса — у вас не отточен вопрос интервального повторения, внутреннего учёта/контроля запоминания итд итп

                                    3) Если вы поинтересуетесь вопросом обучения взрослых людей инженерным и техническим специальностям, то окажется, что метод вопрос-ответ (без связности карточек, с концентрацией на единый текстовый формат и прочими ограничениями подобных систем) даже с правильными интервальными и настройками и некой системностью чертовски неэффективен. Он отлично работает для подготовки к контрольной и резюме, но в долгосрочной перспективе скорее вреден, чем полезен. Подумайте о переводе его в плоскость юзкейс-решение. А ещё лучше задача-декомпозиция-решения
                                      0
                                      Спасибо за ваш отзыв.

                                      «коротким заметкам» — билет в может быть длиною в несколько страниц и включать в себя форматированный текст. Короткой заметкой его никак не назовёшь.

                                      Вы не поняли главные идеи IB, о которых я подробно написал в статье. Если бы мне нужны были просто заметки, я бы использовал Evernote.

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

                                      А что касается самой идеи — в её высокой эффективности я не сомневаюсь, в частности, после прочтения этой статьи.

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

                                      Я считаю что вопрос интервального повторения у вас не «отточен». Т.е. интервалы повторений есть, но реализация убивает эффективность. Сам подход «сжатой» (вы правы, называть их короткими было неверно с моей стороны) заметки о чём-либо не является столь уж эффективным инструментом.

                                      Я бы на вашем месте подумал о следующем:

                                      1) Назначение даты повторения пользователем в корне неверно. Решение о том что пора повторять должно приниматься софтом на основании предпосылок к тому (индикаторов забывания). Эффективность интервального повторения не в том чтобы просто повторять с постоянно увеличивающимися интервалами, а чтобы повторять в момент когда мозг начинает терять детали (можно почитать о Memory Chain Model в подтверждение) — т.е. вы могли бы дать +100% к эффективности повторения, а даёте указанием даты то +20 (если юзер угадал) то -20 (если не угадал). Посмотрите алгоритмы расчёта повторений у того же Пимслера или по СуперМемо

                                      2) Само по себе отслеживание как пользователь сам оценивает степень запоминания/понимания им заметки ещё до показа текста очень важны. Не спрашивая об этом вы не только теряете важнейшие индикаторы для вышеописанной оптимизации интервалов, но и отключаете перцептуальную модель обучения

                                      3) В эффективности интервального метода повторения я так же уверен, как и вы. И я как раз всячески рекомендую Вам к нему стремиться. А для этого ваше решение нужно серьёзно переработать имхо, потому что интервальное повторение не работает эффективно на больших блоках, вам нужно много взаимосвязанных маленьких «билетов». Я убеждён (к слову сказать обучение программистов отнимает у меня приличную часть рабочего времени последние годы) что концентрация на формат технического текста в режиме попрос + сложный ответ не эффективна для интервального повторения, если в ответе более 3 разных мыслей

                                      4) Чтобы обучить грамотного специалиста недостаточно передать ему знания и озаботиться их запоминанием. Это может быть 20% необходимого. И пока у Вас нет связей между билетами, вы за рамки этих 20% не сможете выйти. Я бы рекомендовал подмешивать декомпозицию карточек на малые форматы, создание карточек продолжения (Эффект Зейгарник работает не только на психов, незаконченная статья запоминается почти вдвое лучше чем законченная), модели выработки ассоциаций, тематической интуиции (перцептуальное знание), билеты на свободное описание и на мультипл чойс и обязательно билеты на композицию. Эффект будет совершенно другой, поверьте

                                      Имхо вы можете сделать из этого проекта действительно полезный и эффективный интсрумент для самообучения. Особенно если поинтересуетесь эффективными подходами в андрагогике и психологии обучения. Просто не останавливайтесь на достигнутом.

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

                                      Only users with full accounts can post comments. Log in, please.