«Лёшу вучаць пісаць код, але не праграмы». Завочнік БДУІР пра багі сістэмы
На мінулым тыдні прагучала каманда «скалануць ВНУ», а то яны «закасцянелі да неймавернасці».
Зразумела, што наўрад ці гэта «склананне» выйдзе за рамкі ідэалагічнага і набудзе форму, напрыклад, актуалізацыі праграм і падыходаў. Аднак мы спыталі ў студэнтаў і выпускнікоў тэхнічных ВНУ, дзе шукаць рэальнае «закасцяненне». Атрымалі шмат вострых рэакцый — неўзабаве выйдзе вялікі матэрыял.
А пакуль публікуем самы насычаны маналог.
Арсень-завочнік БДУІР і Senior Software Engineer:
(імя змененае)
— Дыплом спецыяліста я атрымаў даволі даўно (і па гуманітарным профілі). Праграмаванню вучыўся самастойна, і ўжо не першы год працую па сваёй новай спецыяльнасці.
У БДУІР прыйшоў, маючы ўжо дастатковы досвед працы ў якасці праграміста. Дастатковы для таго, каб большасць выкладчыкаў пазбягала са мной размовы па сутнасці вывучанага прадмета, сарамліва апраўдваючыся. Балазе і ўзрост мой прымушае іх паводзіць сябе са мной больш-менш на роўных.
Як «карыстальнік» магу сказаць, што якасць адукацыі ў БДУІР вельмі нізкая. Радуе, што я вучуся на завочцы і менш часу марную. Праграмы вочнікаў і завочнікаў не адрозніваюцца нічым, экзамены аднолькавыя, прадметы, тэрміны навучання і патрабаванні — тыя ж. Часам за семестр трэба здаць крыху менш лаб, чым вочнікам, але далёка не заўсёды.
Недахопы адукацыі наступныя.
1. У выкладчыкаў у асноўным няма практычнага вопыту.
Самая істотная праблема — тэхналогіі пераважна выкладаюцца людзьмі, якія не маюць вопыту практычнай працы з гэтымі інструментамі або практычнага вопыту па-за межамі ўніверсітэта наогул.
Чалавеку, які за сваё жыццё не бачыў зыходнага кода праграмы, не лічачы курсавых праектаў сваіх студэнтаў, няпроста тлумачыць патэрны асінхроннай камунікацыі і даваць сваім вучням які-небудзь message broker.
Людзі, якія не працавалі праграмістамі на сапраўдных карпаратыўных праектах (той самы Enterprise, які хоча аўтаматызаваць свае складаныя бізнэс-працэсы і корміць большую частку .NET- і Java-распрацоўшчыкаў), а бачылі толькі навучальныя праекты, з цяжкасцю ўяўляюць сабе, што такое праграма на тысячы (дзесяткі тысяч) файлаў.
Большая частка патэрнаў распрацоўкі, падыходаў у аб’ектна-арыентаваным праграмаванні, архітэктурных прынцыпаў — гэта гатовыя рашэнні праблем, якія ўзнікаюць у ходзе стварэння, падтрымкі і рэфактарынгу менавіта такіх вялікіх праектаў. То-бок гэта рашэнні праблем, з якімі выкладчык, хутчэй за ўсё, ніколі ў жыцці не сутыкаўся, і ён вельмі слаба ўяўляе сабе рэальны кантэкст і асаблівасці прымянення таго ці іншага рашэння.
Гэта ж тычыцца і многіх інструментаў, напрыклад, message broker сістэмы. Гэта брокеры паведамленняў, якія дазваляюць праграмам абменьвацца інфармацыяй паміж сабой і сваімі модулямі пад вялікай нагрузкай (сотні тысяч паведамленняў на секунду). Натуральна, стварыць у навучальным праекце ўмовы, пры якіх нейкі message broker будзе прыносіць карысць і вырашаць якую-небудзь праблему, а не толькі ўскладняць сістэму — даволі складана. І гэта амаль немагчыма зрабіць чалавеку, які сам не разумее навошта ў рэчаіснасці гэты message broker патрэбны.
Выкладчык не можа растлумачыць, як карыстацца тым ці іншым інструментам, таму што сам не разумее, якую праблему гэты інструмент вырашае. Бо каб сутыкнуцца з гэтай праблемай, трэба быць прафесійным праграмістам, а не выкладчыкам. Hello World з туторыяла ён даць, вядома, можа (як правіла), але вось комплекснага разумення праблемы ў выкладчыка за рэдкім выключэннем няма.
Па асобных дысцыплінах вывучэнне складаных тэхналогій зводзіцца да напісання рэферата/справаздачы/якой-небудзь яшчэ паперкі — галоўнае, каб быў змест, шмат тэксту і ўсё гэта ў тэчцы-скорасшывальніку.
Вядома, якасць выкладання канкрэтнай асобна ўзятай дысцыпліны залежыць ад асобна ўзятага выкладчыка, але ў сярэднім па бальніцы пацыент хутчэй мёртвы, ніж жывы.
Зразумела, усё можна вывучыць самому. Але ў такім выпадку ў мяне пытанне: а навошта гэтыя людзі атрымліваюць заробак?
2. У звязаных дысцыплін — няўзгодненыя паміж сабой праграмы, а іх выкладчыкі не камунікуюць адно з адным пра агульныя задачы.
І нават калі выкладчык — сапраўдны энтузіяст, сеньёр або цімлід, які працуе ва ўніверы на паўстаўкі, то ўсё роўна ёсць і іншая праблема, якую ён у рамках сваёй дысцыпліны пераадолець не зможа — вучэбная праграма.
І я кажу не пра пералік тым канкрэтнай дысцыпліны (выкладчыкі валодаюць дастатковай аўтаномнасцю, каб прыцягнуць у свой прадмет што заўгодна без лішніх праблем — было б жаданне і разуменне, што трэба цягнуць). Я кажу пра вучэбную праграму цалкам.
На першы погляд, калі вывучыць навучальны план любой тэхнічнай спецыяльнасці, праграма быццам бы складзена лагічна і паслядоўна. Але гэта толькі калі не капаць глыбока. А так, паглядзець на назвы прадметаў і выказаць здагадку, што людзі, якія чытаюць гэтыя лекцыі, хоць раз у жыцці абмяркоўвалі паміж сабой, каго і чаму яны вучаць і чаму ж маюць навучыць.
На практыцы звязаныя паміж сабой дысцыпліны маюць абсалютна няўзгодненыя паміж сабой праграмы — яны могуць амаль цалкам дубляваць адна адну або ісці ў вельмі дзіўным парадку.
Ёсць, напрыклад, спецыяльнасць бакалаўрыяту, дзе 11 дысцыплін у той ці іншай ступені звязаныя з праграмаваннем, пры гэтым 5 з іх завязаныя на адну мову праграмавання, што быццам бы гучыць добра, з’яўляецца некаторая спецыялізацыя.
Але ёсць адчуванне, што прадметы раскіданыя па вучэбным плане з дапамогай рандамайзера: студэнты маюць пісаць паўнавартасныя вэб-праграмы з бэкэндам і UI, але толькі ў наступным семестры яны знаёмяцца з базавым франтэндам. Праца з базамі даных можа быць у праграме пасля таго, як навучэнцам трэба было напісаць бэкэнд для якой-небудзь інфармацыйнай сістэмы і здаць яго ў выглядзе курсавога праекта. Гэта значыць, выкладчык ужо павінен патрабаваць ад студэнтаў пісаць код для ўзаемадзеяння з базай даных, але што такое SQL — ім раскажуць толькі ў наступным семестры.
А згаданыя вышэй пяць дысцыплін па адной мове праграмавання наогул тры разы прымушаюць студэнтаў праходзіць адзін і той жа найбольш папулярны ў гэтай экасістэме фрэймворк.
І не тое каб гэта нейкі ітэратыўны падыход з усё большым занурэннем на кожным праходзе — зусім не. Людзі проста тры разы вучаць Hello World і робяць адныя і тыя ж дзеянні, карыснасць якіх імкнецца да нуля. Складваецца такая сітуацыя таму, што выкладчыкі кожнай з дысцыплін ніяк не ўзаемадзейнічаюць паміж сабой і ўстаўляюць у свой прадмет тое, што лічаць патрэбным, магчыма нават кіруючыся самымі лепшымі намерамі. Але вось атрымліваем мы тое, што атрымліваем.
Чаму нельга скласці адзіную праграму па якім-небудзь .NET і размеркаваць яе паміж гэтымі пяццю дысцыплінамі, каб студэнты паслядоўна занураліся ва ўсе аспекты мовы і экасістэмы, якая склалася вакол яе? Гэта застаецца загадкай для ўсіх, уключаючы выкладчыкаў гэтых дысцыплін.
Хоць узнікае пытанне, а ці можа хто-небудзь з іх на самай справе сказаць, што сапраўды павінен ведаць і ўмець нейкі Junior/Middle {назва тэхналогіі} Software Engineer, каб быць запатрабаваным на рынку?
3. У выніку нізкі ўзровень падрыхтоўкі студэнтаў, якіх вучаць пісаць код, але не праграмы.
Пра ўзровень падрыхтоўкі студэнтаў я магу меркаваць з сумоўяў, на якія прыходзіць мноства ўчорашніх студэнтаў БДУІР.
Абсалютна бессістэмныя веды, павярхоўнае разуменне тэхналогій, з якімі яны павінны працаваць і г. д.
Як правіла, умоўны Аляксандр, які прыйшоў «з вуліцы», «32 гады, 10 гадоў працую машыністам цягніка, вучыў усё сам на начных зменах і схадзіў на паўгадавыя курсы» будзе знаць свой стэк лепш і глыбей, ніж той жа ўмоўны «Лёша, 20 гадоў, трэці курс, іду на чырвоны дыплом» з нашага любімага БДУІР.
І абстрактны Аляксандр, можа, і не ведае, як выглядаюць у вочы сістэмныя выклікі аперацыйнай сістэмы, але гэта яго ў цэлым радніць з 95% іншых у тым ліку вопытных Python/Java/JS-… праграмістаў, увайсці ў лік якіх ён і імкнецца. Дый код пісаць ён будзе, як ні дзіўна, лепей за свайго канкурэнта з БДУІР.
І праблема не ў тым, што наш студэнт Лёша нечага не можа ці не хоча. Праблема ў тым, што Лёша пісаў код 4 гады, робячы лабы, і замест адэкватнага фідбэку ад праграмістаў, у якіх кроў з носа пайшла б ад Лёшавых лабараторных і спіса састарэлых бібліятэк, якія ён выкарыстоўвае для вырашэння даўно вырашаных праблем, — атрымліваў свае 9-10 балаў за своечасова зробленую лабу і ў цэлым працоўны код.
Але ў рэальным жыцці праблема ж не ў тым, каб напісаць код, зразумелы камп’ютару. Праблема — напісаць код, зразумелы чалавеку. Спачатку Лёша меўся навучыцца гэты код пісаць без грубых памылак, потым — пісаць яго чыста і зразумела, пазней — пісаць яго пашыральным, і рабіць зразумелай ужо не функцыю або метад, а дызайн сваёй сістэмы цалкам. Але вучыць яго гэтаму не было каму, і застаўся наш Лёша на ўзроўні «пісаць код без грубых памылак».
Так што пісаць код ён, можа, і навучыўся, але вось пісаць праграмы яго вучыць ва ўніверсітэце не было каму.
Рэзюмэ
Падводзячы вынік, магу абагульніць:
- Выкладаюцца (часта) прадметы людзьмі, якім самім не перашкодзіла б іх падвучыць ці хаця б паглядзець, як гэтыя рэчы ўжываюцца ў рэальным жыцці (хоць бы раз).
- Навучальныя праграмы складзеныя бессістэмна, няўзгоднена паміж сабой і без уліку рэальных патрэбаў рынку, на які мы выпускаем (выштурхваем) студэнтаў.
- Студэнтаў вучаць пісаць код, але не вучаць пісаць праграмы, гэтак жа як і няма занурэння ў глыбіню — большасць прадметаў сканчаюцца на працах узроўню Hello World.
Ідэалогія
З ідэалогіяй і іншым я наогул не сутыкнуўся. Магчыма, таму што завочка. Але мы чулі, як падбіраюць выкладчыкаў.
[Чуў пра кейс, калі аднаго спецыяліста] запрашалі на 0,25/0,5 стаўкі выкладаць у БДУІР. Кіраўніцтва факультэта было вельмі зацікаўленае, ды ў цэлым гэта была іх ініцыятыва — таму яны пайшлі насустрач ва ўсіх пытаннях, далі перапісаць праграму, расклад выбіраць і мінімальную загрузку на парах пакінуць, на якую ён быў згодны (не больш за адзін вечар на тыдзень — па дзве пары за раз).
Калі справа дайшла да заявы на прыём на працу, яго папрасілі «не ўказваць свайго нумара тэлефона, калі карыстаўся ім у 2020 годзе» — напісаць іншы або завесці новы. Сказалі, што па нумары правяраюць, чым чалавек займаўся падчас пратэстаў, — і лепей усіх гэтых праблем пазбегнуць. Але скончылася ўсё тым, што прарэктар па бяспецы не дапусціў гэтага чалавека да выкладання — ён, маўляў, мае дэструктыўныя погляды.
Тэрміны навучання варта скараціць? І так, і не
Якое маё меркаванне аб тым, што тэрмін навучання ў ВНУ варта скараціць — скажу так: пасля паўгадавых курсаў у трэнінг-цэнтры EPAM людзей разбіралі, літаральна адрывалі з рукамі і нагамі, нягледзячы на іх дыпломы (або іх адсутнасць).
Калі спецыялістаў рыхтаваць гэтак жа сфакусавана і яшчэ больш комплексна на працягу двух гадоў, будзе цікава паглядзець на гэтых Uber-салдат? Мой погляд на гэтае пытанне — падрыхтаваць «спецыяліста» можна за 2 гады на фул-тайм, і ён будзе проста супер-інжынер. Але ў яго не будзе вышэйшай адукацыі.
Іншае пытанне, ці трэба яна гэтаму спецыялісту?
Вышэйшая адукацыя — гэта перш за ўсё ўніверсітэт, а не прафесійнае вучылішча. Тут навукай павінны займацца: не толькі веды спажываць, але і ўмець іх вырабляць, пашыраць межы вядомага. Зразумела, для гэтага патрэбны кругагляд — не толькі тэхнічны шырокі (то бок быць тым самым спецыялістам), тут і без якой-небудзь фундаментальнай філасофіі і метадалогіі навукі ўжо будзе рух усляпую, я ўжо не кажу пра матэматыку і іншае.
Не думаю, што такіх людзей трэба настолькі шмат, колькі цяпер рыхтуюць нашыя ВНУ. Але яны патрэбныя. І такіх людзей мае быць відавочна больш, чым у нас ёсць у рэальнасці.
Так што калі казаць пра тое, ці трэба рыхтаваць інжынера-праграміста 4-5 гадоў, — адназначна не, хопіць і 2-3. Ці можна даць вышэйшую адукацыю за такі тэрмін — таксама няма: трэба больш часу і іншы фокус у навучанні.
У практычнай плоскасці, цікавы вопыт EPAM ў гэтым плане. Чуў, яны адкрылі свае праграмы бакалаўрыята і магістратуры ў Літве і Украіне, рыхтуюць людзей пад патрэбы рынку: калі гэта інжынер — у яго ёсць бэкэнд-мова, профільная, клаўд, інфраструктура і г. д., увогуле ўвесь актуальны стэк з патрэбнай глыбінёй. У магістратуры, здаецца, былі архітэктура і дэліверы-менеджмент. За развіццём гэтага працэсу не сачыў, проста аднойчы ўбачыў навіну і парадаваўся за будучых калег, у якіх будзе магчымасць атрымаць, упэўнены, выдатную тэхнічную адукацыю.
Крыўдна толькі, што ў ліку ўніверсітэтаў-партнёраў не было ніводнай ВНУ з Беларусі.
(Не) згодныя? Падзяліцеся сваім бачаннем у каментарах.
Читать на dev.by