Аснова любога праграмавання на… пазлах

Вітаю, Хабраўчане!

У гэтым артыкуле я жадаю распавесці аб сваім досведзе працы выкладчыкам праграмавання на C++ у каледжы пры тэхнічным універсітэце. Гэта быў унікальны досвед у жыцці, які шмат чаму мяне навучыў. Калі гаворка заходзіць аб цікавых фактах з асабістага мінулага - гэты ўрывак з жыцця прыходзіць на розум адным з першых.
Паехалі.

Спачатку крыху пра сябе.
У 2016 годзе я скончыў інстытут з чырвоным дыпломам па спецыяльнасці "Інфармацыйная бяспека аўтаматызаваных сістэм". За час навучання мне неаднаразова ўдавалася рэалізоўваць свой патэнцыял у напісанні навуковых артыкулаў, удзеле ў конкурсах і грандах. У 2015 годзе мне давялося стаць пераможцам усерасійскага конкурсу маладых вучоных «Разумнік». У 2016 годзе да заканчэння навучання ўжо быў уладкованы ў буйную арганізацыю горада на пасаду «Спецыяліста па інфармацыйнай бяспецы, крыптаграфіі і шыфраванні».
Сцісла неяк так. Можна ўявіць, што аб праграмаванні я, усё ж, меў уяўленне.

І вось 2017 год. Аспірантура. Мяне папрасілі на працягу семестра выкладаць у каледжы C++, завошта мне абяцалі добрыя бонусы па палягчэнні цяжару аспіранта і больш нічога.

Шчыра кажучы, мне было шчыра цікава паспрабаваць сябе ў гэтым крэда.

Першая пара
Верасень. Першы навучальны тыдзень. Да мяне прыйшлі студэнты. «Самы непаслухмяны гурт» — так іх называлі.
23 чалавекі. "Праграмісты".

Як належыць, для пачатку я прадставіўся. Распавёў ім стрымана змест часткі «Спачатку крыху пра сябе»…
Далей пачалося страшнае. На пытанне "Што вы ўмееце?" студэнты (будзем з гэтага часу зваць іх так) адказалі, што ўмеюць яны крыху больш, чым зусім нічога (ну гэта азначала, што некаторыя з іх ведалі, як выглядае MS VS і маглі стварыць праект "Hello world")… Праграмісты. Апошні курс…

Далей яны падрабязна, "у фарбах" растлумачылі, што нічому іх не навучылі і што наогул яны ў праграмаванні расчараваліся…

Амаль усе дні да наступнага занятку ў мяне прайшлі вось так:
Аснова любога праграмавання на… пазлах

… але за дзень да яго ўзнікла ідэя прыкласці сілы да выпраўлення сітуацыі, якая склалася ў розумах і свядомасці гэтай моладзі. І тады «Астапа панесла».

Увядзенне ў праграмаванне
На наступны занятак я прынёс... пазл.
Так так. Пазл. "Як прыручыць дракона". Правілы былі простымі. Група была падзелена на 3 каманды. Кожная каманда збірала сваю частку. Адны - лес, іншыя - зямлю, трэція - дракона ў цэнтры карцінкі. Пакуль яны ўсю пару збіралі пазл, я расказваў, што збор пазла - гэта таксама праграмаванне, што праграмісты часта выкарыстоўваюць чужы код, што ў кожным праекце ёсць некалькі розных каманд, фіч, модуляў…
Паступова да працэсу далучыліся і самыя млявыя студэнты.
Калі я скончыў уціраць пра ідэю праграмавання ў канцэпцыі бізнэсу, працэсаў і… пазлаў, надышоў час усталяваць правілы навучання.
На кожныя заняткі кожны студэнт павінен быў выпісаць у сшытак па 10 тэрмінаў з IT. Любых. У кожнага свае. Сэнс у тым, што я браў сшытак аднаго студэнта, знаходзіў сярод усіх тэрмінаў максімальна прыкладныя і пытаўся ў іх іншага студэнта. Калі іншы студэнт кажа "Я гэтага тэрміна не запісаў", гэта не было каральным (з прычыны разумнага сэнсу), але той студэнт павінен быў выпісаць "недастатковыя" тэрміны (як і ўсе, у каго іх не было) і знайсці іх значэння да наступнага занятку.

Так мы і зрабілі. Кожны занятак пачынаўся з бадзёрага рандома ў адносінах да двух-трох студэнтаў. Хлопцы мелі запал да гэтага працэсу.

Тэмы заняткаў
Прыступаючы да навучання вельмі важна даць навучэнцам добрую літаратуру. На мой погляд ідэальным дапаможнікам была кніга:
Аснова любога праграмавання на… пазлах

У свой час мне прыйшлося лісліва прачытаць яе ў абдымку з Microsoft Visual Studio. Тады ўдалося зразумець праграмаванне практычна з нуля. Ідэальны варыянт.

Заходзіш сціпла да студэнтаў і кажаш: "Каб стаць праграмістамі, вам трэба ўсяго толькі прачытаць і паспрабаваць усё тое, што ў гэтай кнізе", і кідаеш кнігу на стол. Галоўнае - не пераблытаць кнігі ў сваім заплечніку…

Перад кожнай тэмай мне, безумоўна, даводзілася грунтоўна рыхтавацца. Чытаў таго ж Лафоры і яшчэ некалькі цікавых крыніц з Сеткі.
Тлумачыць праходзілася ці ледзь не з азоў. Прычым зразумець, дзе ў студэнтаў абрыў базавых ведаў трэба было дэдуктыўна.
Масівы -> Праца з памяццю (канструктары) -> Спасылкі -> Як працуе памяць -> Назапашвальнікі -> Што такое фізічны назапашвальнік -> Двайковае ўяўленне дадзеных…
Аснова любога праграмавання на… пазлах

Вельмі няслабы краш-тэст ведаў фундаментальных фактаў аб праграмаванні. Я ўжо не праграміст, я - гісторык!

І вось, значыць, ідуць гістарычныя баталіі некалькі пар запар. Аднойчы да нас зазірае ў кабінет сакратар з кафедры і ўбачыўшы групу, вылупляе вочы, узіраецца і зачыняе дзверы. Як мне паведамілі пазней, яна была ў шоку, што ГЭТА група сядзела так ціха і так уважліва мяне слухала ... Цьху, ізі.

Лабараторныя працы
Першыя прыкладныя звесткі - першыя "лабы". Усяго за семестр гурт здаў 10 лабараторных работ. У першых яны рабілі найпростыя кансольныя. a + b, а ў апошніх - пісалі, хай і кансольныя, але досыць цікавыя прыкладанні, такія, як вылічэнне значэння інтэграла некаторай адвольна зададзенай функцыі адным з трох метадаў - прыкладна такія ж задачы былі на выніковай атэстацыі - курсавой працы.

Вось толькі падыход прыёмкі ня быў звыклым. Усю вучобу ў інстытуце я сутыкаўся з тым, што быць разумным і ўмець здаваць справаздачныя працы - гэта не адно і тое ж. Мяне гэта ў корані не задавальняла.

- Рабят, я тут падумаў. Давайце выбудуем "паняційныя" адносіны. Калі хто з вас лічыць, што праграмаванне яму не трэба - дзверы вунь там. Я выкладаю вам бясплатна. Мне хочацца бачыць тут толькі цікаўных, неабыякавых і неабыякавых энтузіястаў. Усіх астатніх прашу не марнаваць агульны час - сказаў я ў першы дзень прыёму лабараторных прац. Пасля гэтага 5 чалавек адразу перастала наведваць заняткі. Гэта было лагічна і чакана. З астатнімі паспрабаваць зрабіць нешта ўцямнае было можна.

— …мне не цікава глядзець, як вам нехта зрабіў працу, абы здаць. Вы можаце не быць праграмістамі, але людзьмі вам на маіх занятках быць давядзецца.

Выглядала гэта так:

case отличник

Садзіцца да мяне студэнт здаваць працу.
- Сам рабіў?
- Так.
- Вось гэта што такое?
- "адказвае правільна".
*Пытаюся яшчэ па пары момантаў. Адказвае дакладна*
- прынята. Выдатна.

case болтун

- Сам рабіў?
- Так.
- Вось гэта што такое?
- "адказвае няправільна / не адказвае".
*Пытаюся яшчэ па пары момантаў. Той жа вынік*
- НЕ прынята. НЕВУД. Чакаю на пераздачу.

case хорошист

- Сам рабіў?
- Так.
- Вось гэта што такое?
- "адказвае дакладна, але не ўпэўнена, плавае".
*Пытаюся яшчэ па пары момантаў. Той жа вынік*
- прынята. Добра.

case ровныйТроечник

- Сам рабіў?
- Не.
- Чаму?
- Цяжка. Мне дапамагаў… *сумленна называе студэнта-выдатніка з групы*
- Разбіраўся?
- Так, амаль усё зразумеў.

- Вось гэта што такое?
- "адказвае правільна".
*Пытаюся яшчэ па пары момантаў. Адказвае больш-менш дакладна, часам цалкам міма, няхай нават на 50 на 50 верных і няверных*
- прынята. Добра.

Усе астатнія выпадкі апісваць не мае сэнсу. Так, "харашыст" можа быць незадаволены, што "троечнік" атрымлівае такую ​​ж ацэнку, выязджаючы на ​​сумленнасці. Вось тады ўсё залежыць ад настрою. Або я прашу "добрыніста" паглядзець на падлогу, бо "зараз я выпушчу дробку мудрасці", а затым раскажу сутнасць падыходу, апішу, што ў жыцці мае большую каштоўнасць і растлумачу, што "троечніку" было значна цяжэй здаць, чым яму, "харошысты ", і г.д…
… альбо, як у свой час, мой выкладчык, намалюю маленькі зуб у клетцы часопіса насупраць гэтага незадаволенага і ў наступны раз персанальна для яго дапоўню лабараторную працу. Проста так. Каб не "гасіў" таварышаў.

Аснова любога праграмавання на… пазлах

Ацэнкі
Навучальны працэс, як і ўвесь свет, літаральна патанае ў цэнніках і ацэнках.
Студэнты - таксама людзі, аднак "рамкі", на мой погляд, трэба было "хістаць" і тут.
На працягу семестра ўсім была дадзена бонусная задача. Зарэгістравацца на github.com, заліць туды пусты праект на C++, зрабіць 2 апдэйта, закаміціць іх і запушыць. За гэтыя дзеянні было прызначанае 15. Так-так, не 4, не 5, а 15. Трое разабраліся. Псіхатыпу студэнта гэта было яшчэ неяк зразумела, аднак далей быў іншы выпадак.
Аднойчы нашу пару перанеслі так, што яна стала апошняй, дык яшчэ і праз пару-акно. Аднак на яе ўсё роўна прыйшло 15 чалавек. Тлумачыць новую тэму ў гонар такога гераізму мне не хацелася, бо мы чыста па тэмах ужо дастаткова добра прасунуліся + наступная тэма была не вельмі простай для стомленых мазгоў (маіх і навучэнцаў). Тады я вырашыў пагаварыць аб філасофіі.

- Аб'яўляю атракцыён нябачанай шчодрасці. Усе мне кажуць, якую адзнаку паставіць яму за сённяшнюю пару.
Усе захацелі па "пяцёрцы".
– лічыце, ужо ёсць, – сказаў я. Усе ўзрадаваліся.
Цішыня.
- а чаму ніхто не захацеў 7-ку ці 10-ку?
Усе вылупілі вочы і пачалі па-дурному ўсміхацца.
- А Вы хіба паставіце? У часопіс?! - пачуўся голас з задняй парты.
- Ды лёгка! - сказаў я, - аб'яўляю бліц па тэрмінах, хто адкажа на 10 маіх пытанняў - стаўлю 20-га у часопіс, без падвоху, хто не адкажа - таму 10- (мінус дзесяць).

«Каманда ажывілася, пачалася палеміка», ва ўсіх былі сапраўды заробленыя адзнакі. Двое падахвоціліся. З невялікімі недакладнасцямі яны па чарзе вытрымалі па 10 пытанняў пра стэк, чаргу, канструктар, дэструктар, зборшчык смецця, інкапсуляцыю, палімарфізм, хэш-функцыі…
Кожнаму ў часопіс была намаляваная 20-ка… але важнасць часопіса і адзнак упала ў вачах кожнага. Цяпер я шкадую, што не спытаў, ці не хочуць яны "падзяліцца" сваёй ацэнкай з кім-небудзь. Мне здаецца, падзяліліся б… З гэтага часу кожны здаваў "лабу" ведамі і сумленнасцю.

З гэтага моманту з'явіўся яшчэ адзін тып здачы лабы.


case честноНеЕгоНоОнПытался

- Сам рабіў?
- Не.
- Чаму?
- Цяжка. Мне дапамагаў… *сумленна называе студэнта-выдатніка з групы*
- Разбіраўся?
- Сяргей Мікалаевіч, вось сапраўды - нічога не разумею, вось сам каментары напісаў насупраць кожнага радка - ну не маё гэта, я буду трактарыстам
- Вось гэта што такое?
- "чытае каментар насупраць радкі".
- ...
- ...
- Чым адрозніваецца Беларус МТЗ ад Дон 500 і ад К700?
—??!.. Першы — колавы трактар ​​Мінскай вытворчасці, які часта выкарыстоўваецца на лёгкіх і сярэдніх тыпах сельскагаспадарчай вытворчасці. У яго яшчэ спераду маленькія, а ззаду - вялікія колы. Дон 500 - гэта, у асноўным уборачны камбайн, а К-700 "Кіравец" - савецкі колавы трактар ​​агульнага прызначэння падвышанай праходнасці, цягавы клас 5.
- прынята. Добра (!!!).
- Дзякуй, Сяргей Мікалаевіч!!!

На маёй радзіме пагутарыць за трактара - гэта амаль як тут за SOLID.

Геній
Быў у мяне ў групе Геній. Студэнт з самай першай пары моцна спазніўся і не стаў разам са ўсімі збіраць той пазл. Тады я папрасіў яго зрабіць тое, што для ўсіх планаваў на наступны занятак - напісаць на лістку сам сабе, чым ён захапляецца, што яму цікава. Па выніках у «Генія» было 2-3 радкі: нешта кшталту «пазнаю марнасць быцця»…

…О, Божа, у мяне ў групе ў адной асобе адначасова другія Лао Цзы і Кадзіма…
Аснова любога праграмавання на… пазлах

На маё здзіўленне на першых двух парах ён сапраўды бліскуча адказваў на пытанні пра тэрміны, аднак эфект доўжыўся нядоўга. "Геній" перастаў наведваць заняткі і ў наступны раз прыйшоў толькі на здачу першай лабараторнай працы, якую паспяхова не здаў па аб'ектыўных прычынах. Затым з-за прагулаў у яго заканамерна назапасіліся даўгі, якія, як ён лічыў, я быў проста абавязаны яму залічыць, так бы мовіць, па-братэрску.
Ненаведванне пар + завышанае АУВ супярэчыла ўстаноўленым прынцыпам наведвання маіх заняткаў. У "Генія" было толькі 2 выхады з сітуацыі - рэабілітавацца (чаканы шлях) або забіць на пары і спадзявацца на "тройку", пастаўленую дэканатам, каб пазбавіцца ад лайдака.
Ну гэта ж "Геній"… тут жа трэба паступіць "геніяльна". Гэты малады чалавек не знайшоў нічога лепшага, як напісаць у агульным дыялогу ў ВК (дзе быў я і ўсе студэнты гэтай групы) гнеўную тыраду з лаянкамі і абразамі ў мой адрас.

Мда... Расчараванне.
Больш за ўсё ўразіла, што, перад завяршэннем працэсу карнай аперацыі з боку кіравання каледжам, ён вырашыў папрасіць прабачэння ў мяне. За што? - мне шчыра незразумела. На той момант я быў ужо даўно незалежны ад крытыкі, тым больш такі, шчыра, дурны. Мая асоба закранута не была, а вось працэсы – ёсць працэсы, як выкладчык я не мог не паведаміць пра гэта. Як аказалася, на яго за час вучобы назапасілася ўжо столькі скаргаў, што гэты выпадак аказаўся апошнім. Яго адлічылі. З апошняга курса пту каледжа.
Быць можа ён ужо даўно назірае за мной у прыцэл снайперскай вінтоўкі, але мне, калі сапраўды, усё-роўна.
Эх, геніяльнасць, бессардэчная ж ты...

Эпілог
Асабіста для мяне досвед выкладання быў адным з самых павучальных. Мне гэта дапамагло замацаваць фундаментальныя веды па праграмаванні пасля вучобы ў інстытуце. Я адчуў у сабе ўпэўненасць у выбранай спецыяльнасці (спектра даступных спецыяльнасцей). Адмысловую важнасць складае тое, што «самая непаслухмяная група» прасякла да мяне павагай і прыязнасцю - гэта дарагога варта. Я здолеў знайсці шлях да іх унутраных наватараў, пастараўся прывіць рэальнасць, а не гэтыя шаблонныя прыярытэты. Шкада, што мы не дайшлі да «пазлаў» у кодінгу — калі кожны мусіў бы зрабіць частку кода, і, злучыўшы ўсе часткі ў адну, мы атрымалі вялікую рабочую праграму…
Спадзяюся, калісьці кожны з іх адчуе гэта… а пакуль што ніжэй сабраны скрыны з водгукамі некалькіх студэнтаў праз 2 гады.

Аснова любога праграмавання на… пазлах

Рабіць высновы аб паспяховасці кар'еры праграміста ў каго-небудзь з іх пакуль што рана, бо зараз большая частка гэтай групы навучаецца ў ВНУ. Час пакажа.

Спадзяюся, артыкул быў карысным. Дзякуй за ўвагу!
Творчых поспехаў і пазітыўнага настрою, калегі!

Крыніца: habr.com

Дадаць каментар