Искам да говоря с вас за това, защо по-често ремонтираме санитария, отколкото пишем дисертации за нея, за различни подходи към обучението по програмиране и за това как се опитваме да приложим един от тях в новия ни продукт Hyperskill.
Ако не обичате дълги уводи, преминете веднага към параграфа за програмиране. Но така няма да бъде толкова забавно.
Лирично отклонение
Нека си представим една дама на име Маша. Днес Маша смяташе да си изсели плодове и спокойно да гледа филм, но ето че нещата не вървят: необяснимо, тя открива, че мивката в кухнята е запушена. Какво да прави с това — все още не е ясно. Може да отложи въпроса за неопределен срок, но свободното време е точно сега, така че Маша решава да се справи с проблема веднага. Здравият разум подсказва две опции: а) да извика водопроводчик б) да се справи сама. Дамата избира втория вариант и започва да изучава инструкции в YouTube. Съветът на потребителя Vasya_the_plumber я подтиква да погледне под мивката и вижда там змейска пластмасова тръба от няколко части. Момичето внимателно развива една част от основата на мивката и не намира нищо. Част от тръбата по-ниско се оказва запушена с неизвестна субстанция и дори намерената на масата вилица не успява да се справи със запушването. Експертите от интернет дават безутешни прогнози: частта трябва да бъде сменена. На картата Маша намира най-близкия магазин, взема със себе си проклетата част от тръбата и купува същата, само че нова. По съвет на продавача, тя взема и ново сито за профилактика. Квестът завършен: мивката отново работи, както трябва, а главната героиня научи следното:
- Тръбите под мивката могат да се развиват и затягат сами;
- Най-близкият магазин за санитария е на километър и половина от апартамента на Маша.
Скорее всего, Маша дори не осъзна колко много ново научи и какво усвои, защото я вълнуваше собственият комфорт в бъдеще, а заедно с това кинопоказът и измитото ябълко. При следващия подобен проблем, момичето ще го реши много по-бързо. Всъщност, Маша не просто възвръщаше мира в обичайното състояние; тя учеше индуктивно, тоест на частни случаи, и практикоориентирано, тоест правейки нещата, а не изучавайки ги подробно и предварително.
Всичко можеше да се сложи иначе. Да предположим, че Маша седи вечерта в кресло и изведнъж осъзнава, че морално и физически не е готова за запушване на мивката. Тя бързо се записва в академия за водопроводчици, изучава видове мивки, тръби и възможни съединения, както и класификация на проблеми с водопровод и възможности за тяхното отстраняване. Маша не спи нощем, запомняйки термините и наименованията. Вероятно дори пише дисертация по теоретично тръбниводене, където разсъждава за гумени уплътнения. Накрая, след като получава сертификат, Маша гордо оглежда кухнята с пълна увереност, че дори и малки проблеми с мивката ще се решат с едно щракване на пръстите. При такъв сценарий, момичето се е обучавало дедуктивно, преминавайки от общото към частното, и се е ориентирала по-скоро към теорията.
Кой от подходите обаче е по-подходящ? В случая с мивката и запушването — първият, и ето защо:
- Ако важи само работеща мивка, значи е достатъчно да знае само това, което касае именно тази сфера. Когато Маша разбере, че няма достатъчно знания, тя задължително ще намери начин да научи повече.
- Енциклопедичната подготовка може да не бъде полезна в реална ситуация, защото навикът не е усвоен. За да се научи на последователността на действията, има смисъл не само да се прочете за тях, а да се изпълняват.
Нека оставим на спокойствие бедната Маша и преминем към процеса на обучение като такъв.
Програмиране: да учим или да правим?
Привикнали сме да мислим, че за да се развием и да станем експерти в непозната област, първо трябва да постъпим в университет или поне да се запишем на курсове. Слушаме старателно това, което ни разказват, изпълняваме задачи. Когато изведнъж получим заветния диплом или сертификат, веднага се объркваме, защото така и не сме разбрали защо ни е била нужна толкова информация и как точно да я приложим. В това няма проблем, ако след това планираме да пишем научни работи и да ходим на конференции. В противен случай е важно да се стремим и към умения, тоест да правим и отново да правим конкретни неща, да опитваме и да грешим, за да запомним дълго какво е най-добре да не правим.
Една от сферите, където „опитът“ или „перфектният поглед“ вървят ръка за ръка с обширността на кръгозора, е програмирането. Ако си поговорите с опитни разработчици, ще чуете храбри истории, в които човек от млада възраст се е занимавал с математика/физика/преподаване и след това е станал уморен и е преминал в бекенд. Ще има и програмисти без висше образование! На първо място, в разработчика ценят не сертификат, нито диплома, а количеството и качеството на написаните програми, скриптове и сайтове.
„Но изчакайте!“, ще възразите вие, „Звучи красивo — вземи и направи! Не мога просто да напиша програма за себе си, ако преди това не съм програмирал(а)! Важно ми е да разбирам къде да пиша, как по принцип да разговарям с компилатора на програмния език. Това не е просто да намеря телефона на водопроводчика в гугъл.“
И в това има горчива истина. Един непознат аспект води до друг, онзи, от своя страна, до трети, и скоро този процес се превръща в шоу на илюзионист, който продължава да изтегля свързани кърпички и никак не успява да ги извади от цилиндъра. Процесът, честно казано, е неприятен; на петия „кърпичка“ вече изглежда, че дълбочината на невежостта е близка до Марианската падина. Алтернатива на това са същите лекции за 10 вида променливи, 3 вида цикли и 150 потенциално полезни библиотеки. Тъжно.
Hyperskill: строихме, строихме и накрая построихме
Дълго мислихме по този проблем. За това колко дълго сме мислили, красноречиво говори датата на последния пост в нашия блог. След всички спорове и опити да интегрираме новия подход в Stepik, получихме… друг сайт. Вероятно вече сте чули за него като част от JetBrains Academy. Нарекохме го Hyperskill, вградихме project-based learning, свързахме го с база данни по Java и получихме подкрепата на екипа EduTools. А сега по-подробно.
Конкретна цел. Предлагаме „меню“ от проекти (projects), т.е. програми, които можете да напишете с нашата помощ. Сред тях са кръстословици, личен асистент, блокчейн, търсачка и т.н. Проектите се състоят от 5-6 етапа (stages); резултатът от всеки етап е готова програма. „Защо тогава останалите етапи, ако на първия вече всичко е постигнато?“ Благодаря за въпроса. С всяка стъпка програмата става по-функционална или по-бърза. В началото кодът заема 10 реда, а в края може да не се вмести дори и в 500.
Няколко теории. Невъзможно е да седнете и, без да знаете нито дума за програмиране, да напишете дори Hello World. Затова на всяка стъпка от проекта ще видите какви теоретични основи трябва да овладеете и, най-важното, откъде да ги вземете. Основите са налични и на Hyperskill в раздела "Карта на знанията" (Knowledge Map). За първия етап на проекта ученците не са задължени да четат данни от файл, дори и да не знаят как. Ще научат след това сами, за общо развитие, или ще им е нужно на следващия етап.
Карта на знанията. На нея е видно кои теми вече сте изучили и как са свързани помежду си. Отворете всяка интересна тема. Можете да я прегледате, но препоръчваме да решите и малки задачи, за да се уверите, че информацията е усвоена. В началото платформата ще ви предложи тестове, след които - няколко задачи за програмиране. Ако кодът компилира и преминава тестовете, сравнете го с образеца на решение (reference solution), понякога това помага да разберете по-оптимален начин за реализиране. Или да се уверите, че решението ви е отлично.
Нищо излишно. Очакваме и "зелени" потребители, и опитни разработчици. Ако вече сте писали програми, не се притеснявайте, няма да ви накараме отново да събирате 2+2 или да обръщате ред. За да достигнете веднага до необходимото ниво, при регистрацията посочете с какво вече сте запознати и изберете проект с по-висока трудност. Не се страхувайте да се оцените високо: ако е нужно, винаги можете да се върнете към забравителната тема в картата на знанията.
Инструменти. Прекрасно е да пишете малки парчета код в специална рамка на сайта, но истинското програмиране започва с работа в среда за разработка (Integrated Development EПрограмерите знаят не само как да пишат код, но и как да изградят графичен интерфейс, да събират различни файлове в проект, да ползват допълнителни инструменти за разработка, и част от тези процеси IDE поема на себе си. Защо да не се научите и на тези умения, докато усвоявате програмирането? Тук идва на помощ JetBrains и специалната версия на IntelliJ IDEA Community Educational с предварително инсталирания плъгин EduTools. В такава IDE можете да следвате учебни курсове, да проверявате решени задачи и да поглеждате в подсказките по проекта, ако нещо сте забравили. Не се притеснявайте, ако чувате думата “плъгин” или “IDE” за първи път: ние ще ви разкажем какво е това и как да го инсталирате на компютър или лаптоп с минимални усилия. Разберете теорията, а след това преминете в IDE и завършете поредния етап от проекта точно там.
Крайните срокове. Нямат! Кои сме ние, за да ви казваме какво темпо да спазвате, докато пишете програмата. Когато ви е приятно да пишете код и искате да го довършите, вие го дописвате, днес или утре. Занимавайте се с разработка за собствено удоволствие.
Грешки. Всички ги допускат, допуснете и вие на един от етапите на проекта, и тогава този етап няма да премине автоматичните тестове. Какво да направим? Ще трябва сами да разберете какво е сгрешено. Можехме да ви кажем къде е грешката, но дали това ще ви научи да пишете код внимателно? Четете подсказките от IDEA или теоретичния раздел за Бъгове и, когато програмата най-накрая заработи, приливът на допамин, вероятно, няма да закъснее.
Ясен резултат. И така, завършихте първия проект, какво следва? Наслаждавайте се на плодовете на труда си! Изиграйте кръстословица с приятелите си и се похвалете с успехите си. Качете проекта в GitHub, за да го покажете на бъдещия работодател, напишете описание сами и посочете там знанията, които сте приложили. 4-5 сложни проекта и ето, скромно портфолио за начинаещ разработчик е готово.
Възможност за развитие. Да предположим, че разглеждате Hyperskill и не виждате там някоя важна тема или полезен проект. Уведомете ни за това! Ако вашият опит е по-широк и по-богат от картата на знанията, напишете ни чрез формата. . Нашият екип ще сподели собствените си съвети и трикове с вас, така че ще се радваме да помогнем на вас да превърнете вашите знания в полезно съдържание, разбираемо за потребители от различни възрасти и нива. Може би даже ще платим, но не е сигурно.
Добре дошли: Заповядайте, разгледайте, опитайте, предлагайте, похвалете и критикувайте. Ние също учим как да ви учили.
Източник: habr.com
