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