Kiel Utiligi Plejparten de Komputika Eduko

Plej modernaj programistoj ricevis sian edukadon en universitatoj. Kun la tempo, ĉi tio ŝanĝiĝos, sed nun aferoj estas tiaj, ke bona dungitaro en IT-kompanioj ankoraŭ venas de universitatoj. En ĉi tiu afiŝo, Stanislav Protasov, Direktoro de Universitataj Rilatoj de Acronis, parolas pri sia vizio pri la trajtoj de universitata trejnado por estontaj programistoj. Instruistoj, studentoj kaj tiuj, kiuj dungas ilin, eble trovos kelkajn utilajn konsiletojn sub la tranĉo.

Kiel Utiligi Plejparten de Komputika Eduko

Dum la lastaj 10 jaroj mi instruas matematikon, algoritmojn, programlingvojn kaj maŝinlernadon en diversaj universitatoj. Hodiaŭ, krom mia posteno ĉe Acronis, mi ankaŭ estas la vicestro de la departemento pri teoria kaj aplikata komputiko ĉe MIPT. El mia sperto laboranta en bonaj rusaj (kaj ne nur) universitatoj, mi faris kelkajn observojn pri la preparado de studentoj en komputilaj fakoj.

La 30-sekunda regulo ne plu funkcias

Mi certas, ke vi renkontis la regulon de 30 sekundoj, kiu diras, ke programisto devus kompreni la celon de funkcio post rapida rigardo al ĝia kodo. Ĝi estis inventita antaŭ longe, kaj ekde tiam aperis multaj operaciumoj, lingvoj, aparataro kaj algoritmoj. Mi skribas kodon dum 12 jaroj, sed relative lastatempe mi vidis la fontkodon por unu produkto, kiu unuavide ŝajnis al mi magiaj sorĉoj. Hodiaŭ, se vi ne estas mergita en la temo, tiam la 30-sekunda regulo ĉesas funkcii. Alie, ne nur 30, sed ankaŭ 300 sekundoj ne sufiĉos por ke vi eltrovi kio estas kio.

Ekzemple, se vi volas skribi ŝoforojn, vi devos plonĝi en ĉi tiun areon kaj legi milojn da linioj de specifa kodo. Kun ĉi tiu aliro al studado de temo, specialisto disvolvas "senton de fluo". Kiel en repo, kiam la sento de bona rimo kaj la ĝusta ritmo aperas sen speciala raciigo. Same, bone trejnita programisto povas facile rekoni neefikan aŭ simple malbonan kodon sen iri en detalan studon de kie stilmalobservo okazis aŭ suboptimuma aliro estis uzita (sed ĉi tiu sento povas esti tre malfacile klarigi).

Specialiĝo kaj kreskanta komplekseco kondukas al tio, ke bakalaŭro-edukado ne plu donas la ŝancon studi ĉiujn areojn sufiĉe profunde. Sed ĝuste sur ĉi tiu nivelo de edukado oni bezonas akiri perspektivon. Poste, en diplomiĝa lernejo aŭ en la laboro, vi devos pasigi iom da tempo mergante vin en la problemoj kaj specifaĵoj de la fako, studante slangon, programlingvojn kaj kodon de kolegoj, legante artikolojn kaj librojn. Ŝajnas al mi, ke ĉi tio estas la sola maniero, kun la helpo de la universitato, "pumpi la krucstangon" por la estonteco. T-formaj specialistoj.

Kiu programlingvo estas plej bona por instrui en universitato?

Kiel Utiligi Plejparten de Komputika Eduko
Je mia ĝojo, universitataj instruistoj jam rezignis serĉi la ĝustan respondon al la demando: "En kiu estas la plej bona lingvo por programi?" La debato pri kiu estas pli bona - C# aŭ Java, Delphi aŭ C++ - preskaŭ malaperis. La apero de multaj novaj programlingvoj kaj la amasiĝo de pedagogia sperto kondukis al establita kompreno en la akademia medio: ĉiu lingvo havas sian propran niĉon.

La problemo pri instruado uzante unu aŭ alian programlingvon ĉesis esti prioritata. Ne gravas en kiu lingvo la kurso estas instruata. La ĉefa afero estas sufiĉa esprimkapablo de la lingvo. Libro "La Arto de Multiprocesora Programado” estas bona ilustraĵo de ĉi tiu observo. En ĉi tiu nun klasika eldono, ĉiuj ekzemploj estas prezentitaj en Java - lingvo sen montriloj, sed kun Garbage Collector. Apenaŭ iu ajn argumentus, ke Java estas malproksima de la optimuma elekto por verki alt-efikecan paralelan kodon. Sed la lingvo estis taŭga por klarigi la konceptojn prezentitajn en la libro. Alia ekzemplo - klasika maŝinlernado kurso Andrew Nna, instruis en Matlab en la Octave-medio. Hodiaŭ vi povus elekti alian programlingvon, sed kian diferencon vere faras se la ideoj kaj aliroj estas gravaj?

Pli praktika kaj pli proksima al la realo

Samtempe, en la lastaj jaroj estis multe pli da praktikistoj en universitatoj. Se pli fruaj rusaj universitataj programoj estis aktive kritikitaj pro esti eksedziĝintaj de la realo, hodiaŭ oni ne povas diri la samon pri IT-edukado. Antaŭ 10 jaroj preskaŭ mankis instruistoj en universitatoj kun vera industrisperto. Nuntempe, pli kaj pli ofte, klasoj en faka fako estas instruataj ne de plentempaj instruistoj pri komputika, sed de praktikaj IT-specialistoj, kiuj instruas nur 1-2 kursojn en sia libera tempo el sia ĉefa laboro. Ĉi tiu aliro pravigas sin el la vidpunkto de altkvalita persona trejnado, ĝisdatigado de kursoj kaj, kompreneble, serĉado de eblaj dungitoj en la kompanio. Mi ne pensas, ke mi malkaŝos la sekreton dirante, ke ni subtenas bazan fakon ĉe MIPT kaj konstruas rilatojn kun aliaj universitatoj, inkluzive por prepari studentojn, kiuj povus komenci siajn karierojn ĉe Acronis.

Matematikisto aŭ programisto?

Kiel Utiligi Plejparten de Komputika Eduko
Sanktaj militoj, kiuj antaŭe turnis ĉirkaŭ programlingvoj, moviĝis en filozofian direkton. Nun la tiel nomataj "programistoj" kaj "matematikistoj" kverelas unu kun la alia. Principe, ĉi tiuj lernejoj povus esti apartigitaj en du edukajn programojn, sed la industrio ankoraŭ malriĉas disigi tiajn subtilaĵojn, kaj de universitato al universitato ni havas similan edukadon kun iomete malsama fokuso. Ĉi tio signifas, ke kaj la studento kaj la firmao en kiu li daŭre laboros devos kompletigi la enigmon de scio per la mankantaj pecoj.

La apero de praktikistoj en universitatoj, kiuj skribas industrian kodon en malsamaj lingvoj, donas al studentoj pli bonajn disvolvajn kapablojn. Estante bone konata kun efektivigoj de normaj bibliotekoj, kadroj kaj programaj teknikoj, praktikantaj programistoj ensorbigas en studentoj la deziron skribi bonan kodon, fari ĝin rapide kaj efike.

Ĉi tiu utila kapablo tamen foje kondukas al la apero de tiuj, kiuj ŝatas reinventi la radon. Studentoj pri programado pensas jene: "Ĉu mi skribu pliajn 200 liniojn de bona kodo, kiu solvos la problemon rekte?"

Instruistoj kiuj ricevis klasikan matematikan edukon (ekzemple, de la Fakultato de Matematiko aŭ Aplika Matematiko) ofte laboras en pseŭdo-scienca medio, aŭ en la kampo de modeligado kaj datumanalizo. "Matematikistoj" vidas problemojn en la kampo de Komputado alimaniere. Ili ĉefe funkcias ne kun kodo, sed kun algoritmoj, teoremoj kaj formalaj modeloj. Grava avantaĝo de la matematika aliro estas klara fundamenta kompreno de kio povas kaj ne povas esti solvita. Kaj kiel solvi ĝin.

Sekve, instruistoj pri matematiko parolas pri programado kun antaŭjuĝo al teorio. Studentoj, kiuj venas el "matematikaj fonoj", pli verŝajne elpensas bone pripensitajn kaj teorie superajn solvojn, sed kutime suboptimumajn el lingva vidpunkto kaj ofte simple malzorge verkitaj. Tia studento kredas, ke lia ĉefa celo estas principe pruvi la kapablon solvi tiajn problemojn. Sed la efektivigo povas esti lama.

Infanoj, kiuj estis edukitaj kiel programistoj en la lernejo aŭ en siaj unuaj jaroj, kunportas "tre belan biciklon", kiu tamen kutime ne funkcias tre efike asimptote. Male, ili ne metas al si la taskon profunde teoriigi kaj turni sin al lernolibroj serĉante optimumajn solvojn, preferante belan kodon.

En diversaj universitatoj, dum studentaj intervjuoj, mi kutime vidas, kiu "lernejo" subestas lian edukadon. Kaj mi preskaŭ neniam renkontis perfektan ekvilibron en baza edukado. Infanaĝe, en mia urbo oni povis prepariĝi por matematikaj olimpikoj, sed ne ekzistis programaj kluboj. Nun, en kluboj, infanoj lernas programi en "mode" Go kaj Python. Tial, eĉ ĉe la nivelo de akcepto al universitatoj, ekzistas diferencoj en aliroj. Mi kredas, ke gravas konservi ambaŭ kapablojn en universitato, alie aŭ specialisto kun nesufiĉa teoria bazo, aŭ persono, kiu ne lernis kaj ne volas skribi bonan kodon, venos labori ĉe la firmao.

Kiel "pumpi la krucstangon" por estonteco T-formaj specialistoj?

Kiel Utiligi Plejparten de Komputika Eduko
Estas klare, ke en tiaj kondiĉoj la studento simple elektas tion, kion li plej ŝatas. La instruisto simple transdonas la vidpunkton, kiu estas pli proksima al li. Sed ĉiuj profitos, se la kodo estas bele skribita, kaj el la vidpunkto de algoritmoj ĉio estas klara, racia kaj efika.

  • IT-horizontoj. Diplomiĝinto de bakalaŭro pri Komputado estas preta specialisto kun evoluinta teknika perspektivo, kiu verŝajne elektis sian profilon. Sed en komenca jaro, ni ne scias kion li aŭ ŝi faros. Li povas iri en sciencon aŭ analizon, aŭ, male, li povas skribi grandegan kvanton da kodo ĉiutage. Tial, la studento devas esti montrita ĉiujn aspektojn de laboro en la IT-kampo kaj enkondukita al ĉiuj iloj. Ideale, instruistoj de teoriaj kursoj montros ligon kun praktiko (kaj inverse).
  • Kreska punkto. Estas je la intereso de la studento mem ne permesi al si iri al ekstremoj. Kompreni ĉu vi estas "matematikisto" aŭ "programisto" ne estas malfacila. Sufiĉas aŭskulti la unuan impulson solvante problemon: kion vi volas fari - rigardu la lernolibron serĉante la optimuman aliron aŭ skribu kelkajn funkciojn, kiuj certe estos utilaj poste? Surbaze de ĉi tio, vi povas konstrui plian komplementan trajektorion de via lernado.
  • Alternativaj fontoj de scio. Okazas, ke la programo estas bone ekvilibra, sed "Sistema Programado" kaj "Algoritmoj" estas instruataj de tute malsamaj homoj, kaj iuj studentoj estas pli proksimaj al la unua instruisto, kaj aliaj - al la dua. Sed eĉ se vi ne ŝatas la profesoron, ĉi tio ne estas kialo por neglekti iujn temojn favore al aliaj. Fraŭloj mem interesiĝas pri trovi la volon labori kun fontoj de scio kaj en neniu kazo fidas radikalajn opiniojn kiel "matematiko estas la reĝino de sciencoj, la ĉefa afero estas koni la algoritmojn" aŭ "bona kodo kompensas ĉion alian."

Vi povas profundigi viajn sciojn en teorio turnante sin al faka literaturo kaj retaj kursoj. Vi povas plibonigi viajn kapablojn en programlingvoj sur Coursera, Udacity aŭ Stepik, kie multaj diversaj kursoj estas prezentitaj. Ankaŭ, studentoj ofte komencas spekti malmolajn lingvokursojn se ili sentas, ke la instruisto pri algoritmo bone konas matematikon, sed ne povas respondi kompleksajn efektivigajn demandojn. Ne ĉiuj konsentos kun mi, sed en mia praktiko ĝi pruvis sin bone specialiĝo en C++ de Yandex, en kiu oni sinsekve analizas pli kaj pli kompleksajn trajtojn de la lingvo. Ĝenerale, elektu kurson kun altaj taksoj de bonfamaj kompanioj aŭ universitatoj.

Molaj kapabloj

Kiel Utiligi Plejparten de Komputika Eduko
Venante de universitato al laboro en iu ajn kompanio, de noventrepreno ĝis granda korporacio, studentoj de eĉ ĉefaj universitatoj trovas sin malbone adaptitaj al la reala labormedio. La fakto estas, ke hodiaŭ universitatoj multe "vartas" studentojn. Eĉ post maltrafi multe da klasoj, ne ĝustatempe prepariĝi por testoj kaj testoj, trodormado aŭ malfrui al ekzameno, ĉiuj povas trapasi kaj repreni ĝin – kaj finfine ankoraŭ ricevi diplomon.

Tamen hodiaŭ estas ĉiuj kondiĉoj por ke studentoj estu pretaj por plenkreska vivo kaj sendependa profesia agado. Ili devos ne nur programi, sed ankaŭ komuniki. Kaj ĉi tio ankaŭ devas esti instruita. Universitatoj havas diversajn formatojn por disvolvi ĉi tiujn kapablojn, sed, ve, ili ofte ne ricevas sufiĉe da atento. Tamen, ni havas multajn ŝancojn akiri efikajn teamlaborkapablojn.

  • Skriba komerca komunikado. Bedaŭrinde, la plej multaj diplomiĝintoj elirantaj universitaton havas neniun ideon pri koresponda etiketo. La specifeco de komunikado en tujmesaĝiloj estas en la interŝanĝo de mesaĝoj nokte kaj tage kaj la uzo de konversacia stilo kaj neformala vortprovizo. Tamen, eblus trejni skriban paroladon kiam la studento komunikas kun la fako kaj la universitato.

    En praktiko, administrantoj ofte alfrontas la bezonon malkomponi grandan projekton en malgrandajn taskojn. Por fari tion, vi devas klare priskribi ĉiun taskon kaj ĝiajn komponantojn, por ke junaj programistoj komprenu, kio estas postulata de ili. Malbone difinita tasko ofte kondukas al la bezono refari ion, tial sperto en skriba komunikado helpas diplomiĝintojn labori en distribuitaj teamoj.

  • Skriba prezento de la rezultoj de via laboro. Por prezenti siajn edukajn projektojn, altrangaj studentoj povas skribi afiŝojn pri Habr, sciencajn artikolojn, kaj ankaŭ nur raportojn. Estas multaj ŝancoj por tio - kurslaboro komenciĝas en la dua jaro en kelkaj universitatoj. Vi povas ankaŭ uzi eseojn kiel formon de kontrolo - ili kutime estas pli proksimaj laŭ formo al ĵurnalisma artikolo. Ĉi tiu aliro jam estis efektivigita ĉe la National Research University Higher School of Economics.

    Se firmao praktikas flekseblan aliron al evoluo, ĝi devas prezenti la rezultojn de sia laboro en pli malgrandaj partoj, sed pli ofte. Por fari tion, gravas povi koncize transdoni la rezultojn de la laboro de unu specialisto aŭ de la tuta teamo. Ankaŭ multaj kompanioj hodiaŭ faras "reviziojn" - ĉiujarajn aŭ duonjarajn. Dungitoj diskutas rezultojn kaj laborperspektivojn. Sukcesa revizio estas la ĉefa kialo por kariera kresko, gratifikoj, ekzemple en Microsoft, Acronis aŭ Yandex. Jes, vi povas bone programi, sed "sidante en la angulo" eĉ bonega specialisto ĉiam perdos kontraŭ iu, kiu scias bone prezenti sian sukceson.

  • Akademia Verkado. Specialan mencion meritas Akademia skribo. Estas utile por studentoj konatiĝi kun la reguloj de verkado de sciencaj tekstoj, uzado de argumentoj, serĉado de informoj en diversaj fontoj kaj formatado de referencoj al tiuj fontoj. Estas konsilinde fari tion en la angla, ĉar ekzistas multe pli da bonaj tekstoj en la internacia akademia komunumo, kaj por diversaj fakoj jam estas establitaj ŝablonoj por prezenti sciencajn rezultojn. Kompreneble necesas ankaŭ akademiaj skribkapabloj kiam oni preparas ruslingvajn eldonaĵojn, sed estas multe malpli da ekzemploj de bonaj modernaj artikoloj en la angla. Ĉi tiuj kapabloj povas esti akiritaj per taŭga kurso, kiu nun estas inkluzivita en multaj edukaj programoj.
  • Gvidantaj kunvenoj. Plej multaj studentoj ne scias kiel prepari por kunvenoj, preni minutojn kaj prilabori datumojn. Sed se ni disvolvas ĉi tiun kapablon en universitato, ekzemple, partoprenante en teamaj projektoj, ni povas eviti malŝpari tempon en la laborejo. Tio postulas superrigardon de la projektlaboro de studentoj por instrui al ili kiel efike fari renkontiĝojn. En la praktiko, ĉi tio kostas al ĉiu korporacio multe da mono - finfine, se pluraj homoj, kiuj ricevas grandan salajron, pasigas horon da labortempo ĉe mitingo, vi volas, ke estu responda rendimento de ĝi.
  • Publika parolado. Multaj studentoj alfrontas la bezonon paroli publike nur dum defendado de sia tezo. Kaj ne ĉiuj estas pretaj por ĉi tio. Mi vidis multajn studentojn, kiuj:
    • staru kun la dorso al la publiko,
    • balanciĝante, provante enkonduki la komisionon al la tranco,
    • rompu plumojn, krajonojn kaj montrilojn,
    • promenante ronde
    • rigardu la plankon.

    Ĉi tio estas normala kiam homo plenumas la unuan fojon. Sed vi devas komenci labori kun ĉi tiu streĉo pli frue - defendante vian kurslaboraĵon en amika etoso, inter viaj samklasanoj.

    Krome, norma praktiko en korporacioj estas doni al dungito la ŝancon proponi ideon kaj ricevi financadon, pozicion aŭ dediĉitan projekton por ĝi. Sed, se vi pensas pri tio, ĉi tio estas la sama protekto de kurslaboroj, nur je pli alta nivelo. Kial ne praktiki tiajn utilajn karierkapablojn dum studado?

Kion mi mankis?

Unu el la kialoj por verki ĉi tiun afiŝon estis la artikolo, publikigita en la retejo de Tjumena Ŝtata Universitato. La aŭtoro de la artikolo fokusiĝas nur al la mankoj de rusaj studentoj rimarkitaj de eksterlandaj instruistoj. La praktiko de mia instruado en malsamaj universitatoj sugestas, ke rusa lernejo kaj supera edukado provizas bonan bazon. Rusaj studentoj estas lertaj pri matematiko kaj algoritmoj, kaj estas pli facile konstrui profesian komunikadon kun ili.

En la kazo de eksterlandaj studentoj, male, la atendoj de rusa instruisto povas foje esti tro altaj. Ekzemple, je la nivelo de baza trejnado pri matematiko, la hindaj studentoj, kiujn mi renkontis, similas al rusaj. Tamen, al ili foje mankas speciala scio kiam ili diplomiĝas de siaj bakalaŭraj studoj. Bonaj eŭropaj studentoj verŝajne havas malpli fortan matematikan fonon sur lerneja nivelo.

Kaj se vi studas aŭ laboras en universitato, vi nun povas labori pri komunikado-kapabloj (viaj aŭ de viaj studentoj), vastigi vian fundamentan bazon kaj praktiki programadon. Tiucele la rusa eduka sistemo provizas ĉiujn ŝancojn - vi nur bezonas ĝuste uzi ilin.

Mi ĝojos, se en la komentoj al la afiŝo vi dividas viajn ligilojn al kursoj kaj metodoj, kiuj helpas egaligi la ekvilibron en edukado, kaj ankaŭ aliajn manierojn plibonigi molajn kapablojn dum vi studas en universitato.

fonto: www.habr.com

Aldoni komenton