WT: Zašto je ASP.NET framework loš izbor za prve korake u razvoju web aplikacija

Juče sam prvi put izašao na ispit iz WT-a(*). 

Zimski semestar 3. godina - PIS, SI, MIS

PIS, SI - "šupica-tach"

WT je jedini ispit zimskog semestra za koga sam stekao dojam da se radi o smislenom ispitu.

PIS i SI(**) su totalno razočarenje.

MIS

MIS je posebna priča. Pripremanje i polaganje samog ispita bilo je jedno loše iskustvo.

Elhamdulillah, uspio sam ga u predhodnom roku položiti.

Međutim, pregledajući materijale 2. drugog dijela ispita (Poslovna inteligencija) naišao sam na mnogo interesantnih tema.

Stekao sam dojam da je predmetni profesor neko ko je u oblasti poslovne inteligencije baš "jak igrač"(***).

Istina svi ti materijali su "džuturile" izbačeni na DL(****) sistem tako je standardni studenski komentar za te materijale:

Vidjeste li vi one MIS materijale !? "Bruka" ih čovječe ... Grozota pa eto ti ...

Nakon te konstatacije, slijedi traganje za "džonovima", tačnije "screenshot"-ovima sa ispita.

Nije slučajno što se folder na mom desktopu sa bilješkama tokom spremanja ispita zove "MIS_majmun".

Ali pustimo se MIS-ova PIS-ova i SI-ova ... Tema je WT.

WT

Nastava

Svi nastavni materijali WT-a su publikovani na YouTube-u (predavanja 1. dio) .

Kada se uzme da je za to (pretpostavljam) u najvećoj mjeri rezultat inicijative profesora Jasmina Azemovića, novog predmenog nastavnika na WT-u, takvo što je bilo i očekivano.

Profesor Azemović je čovjek koji posjeduje veliko znanje.

Istina desi mu se da sa učenja generalnih principa krene u pogrešnom smjeru - drži kurs iz Microsoft tehnologija. Valjda zato što ih odlično poznaje. Svejedno, za takve stvari dobije i pokoji dislike :)

Na WT-u je međutim napravljen veliki pomak u dobrom smjeru.

Drugi dio semestra, na kome je tema bila PHP, resursi za učenje su bili YouTube video materijali "PHP Academy" i "W3 Schools".

I doista, zašto otkrivati "toplu vodu" ako već postoje kvalitetni resursi za učenje.

Sve u svemu, kvalitetni video materijali su bez dvobbe dobar resurs za učenje.

Vezano za nastavne resurse mislim da bi za proces učenja bilo od velike koristi da postoje traskripti predavanja.

Pored toga, video materijali su odličan medij za učenje ali po meni on ipak ne mogu (u potpunosti) zamijeniti dobre pisane materijale.

Međutim ono što je najbitnije, od spremanja WT-a mi se nije "dizala kosa na glavi", kao što je to bio slučaj sa PIS-om i SI-om.

WT teoretski dio

Teoretski dio se polaže na računaru. "Klik" sistem. Pitanja su lagana. Konstrukcija pitanja je zadovoljavajuća. Imalo bi tu dosta stvari za popraviti (po pitanju jasnoće pitanja i ponuđenih odgovora), ali ti nedostaci nisu presudni za polaganje ispita.

Ukratko, ovaj dio ispita je lagan. Ko zna osnove iz ove oblasti može ga bez problema položiti(^). 

WT praktični dio

Praktični dio je ključni dio testiranja znanja studenata. Taj dio ispita su prof. Jasmin i asistent Adem sjajno pripremili.

Mogućnost izbora

Student može birati realizaciju praktičnog zadatka između PHP-a i ASP.NET-a(^*).

"Hello world" koncept

Zadatak je "hello world" nivo web aplikacije u kojoj student demonstrira praktična znanja iz sljedećih opblasti:

  • HTML/CSS dizajn
  • rukovanje bazom podataka iz web aplikacije (MSS SQL - ASP.NET, MySQL - PHP)
  • korištenje javascript biblioteka (jQuery za validaciju, korištenje AJAX-a, tiny_mce editor i sl.)

Ukratko student treba ovladati jednom jednostavnom, ali zaokruženom cjelinom.

Težina

Ako dovoljno vremena odvojite na trening po ovim temama, mislim da "nema zime" da se ovaj ispit položi bez ikakvih problema. 

Naravno, ne treba zanemariti činjenicu da je potrebno steći jedan značajan nivo rutine u izradi ovakvih aplikacija (dobro navježbati) da bi se u ograničenom vremenu (3h) uradilo sve što se od studenta traži.

Vrijeme

3 sahata su dovoljna za ono što se traži. Istina, starijim ljudima kao što sam ja problem je što nakoh 2 sahata koncentracija rapidno pada. Praktična je implikacija da ono što se uradi u prva dva sahata  - to ti je uglavnom to :(.

Zato je preporuka starijim kolegama  - navježbati dovoljno tako da za dva sahata uradite onoliko koliko je za prolaz dovoljno :)

ASP.NET framework

Povod za pisanje ovog članka, kako ukazuje naslov članka, su komentari drugih studenata nakon spremanja ispita.

Kolege koje su radile zadatak u ASP.NET davale su komentare tip:

Ma joj, ona klasa mi izbacuje "error". Nemam pojma kako. Pokušao/la sam izbrisati pa napraviti novi Visual studio Solution/Project, ali sam opet dobio isti problem. Ne znam kako je to Ademu na onom videu uopšto proradilo ?!

Ili:

Ma ona kontrola, uradio/la sam database binding, ali mi vraća pogrešan tip. Ispita/la sam upit u Query Exploreru i on mi daje ono što očekujem. I tu sam zapeo/la ... ni makac :( ...

Sigurno je svakom takvom najmanji krivac Microsoft Visual studio ili loša prezentacija asistenta Adema :).

Bilo je tu i komentara kolega koji su radili projekat u PHP-u:

Ma samo kada bi mi ovaj "database query" proradio, sve bi bilo ok. Sve ostalo znam, ali to mi ne ide nikako !

Svi ovi komentari bez ikakve dvojbe uzrokovani su nedovoljnim poznavanjem razvojnog okruženja, bilo da se radi o ASP.NET-u ili PHP-u.

Ono što je karakteristika .NET-ovaca jeste problem što su se oni "borili" sa framework-om a ne sa core konceptima web tehnologija.

Framework vs core language/tehnologije u procesu učenja

Naime, ASP.NET je web framework. PHP (bez dodatnih framework-a koji takođe postoje) je prije svega web jezik. 

Prednost korištenja frameworka u realnim projektima je nesporno. Međutim, korištenje framework-a u procesu učenja može predstavljati značajan problem za usvajanje fundamentalnih znanja - ovladavanje principima.

Čvrsto sam na stanovištu da je bolje realizovati jednostavan projekat koristeći core language i tehnologije nego li uraditi nešto puno kompleksnije u funkcionalnom smislu sa određenim framework-om.

Apstrakcija koji nudi framework otežava učenje baznih principa.

Zato bi na ovakvom ispitu po meni dobitna kombinacija bila:

  1. najobičniji programerski tekst editor (vi, emacs, jEdit)
  2. jezik po izboru (ruby/rack, python/wsgi, php, java(^**), ASP.NET "low level"...) 

ASP.NET "low level"

ASP.NET "low level" uključuje pisanje i kompajliranje klasa izvan MS Visual studio IDE okruženja.

Zašto ovo "mučenje" sa "zabranom" IDE-a ? Zato što će samo na taj način studen "osjetiti" šta se dešava doista, koji su sastavni dijelovi njegove aplikacije, šta je HTTP POST, šta HTTP GET i sl.

Takođe, ASP.NET "low level" bi izbacio sve high level kontrole, tako da bi student koristio isključivo HTML kontrole. Time bi, ako ništa drugo, problemi "bindanja" "high level" komponenti  nestali :).

Šalu na stranu, ako se uzme da je cilj WT-a ovladati principima razvoja web aplikacija, princip o kome pričam  ima smisla.

Oni koji u svojim prvim koracima uskoče u high level "framework"-a veoma često nikada ne ovladaju osnovnim konceptima.

Takve programere ćete najčešće uočiti po tome što optužuju "MS Visual studio" kao glavni krivce zbog kojih ne mogu doći do željenog rješenja.

Mlade kolege terebaju naučiti da smi ipak mi ti zbog kojih naše aplikacije ne rade kako treba.

To će najbolje naučiti tako što sa najbočnijim editorom, kompajlerom/interpreterom i web serverom naprave svoju prvu web aplikaciju.

Resursi (ne)dostupni na praktičnom ispitu

Na ispit sam došao nespreman. Sve što sam stigao dan prije bilo je podesiti PHP IDE okruženje, iskucati par php funkcija, poigrati se sa jQuery submit handlerom.

Da bih ispitni vrijeme što bolje iskoristio, na ispit sam donio dvije knjige na temu javascript-a. 

Pitao sam profesora za mogućnost korištenja ovih knjiga.

Takođe sam ga pitao sa mogućnost korištenja interneta (w3 schools, php reference i sl).

Za internet mi je odgovorio: 

Joj, kolega ... molim Vas nemojte.

Za knjige je konstatovao da bi to moglo predstavljati problem vizavi drugih studenata, ali nakon što je prelistao knjige, ubrzo mi je odobrio njihovo korištenje:

Ok, možete ih koristiti na moju odgovornost.

Bio sam ubijeđen da mi knjige neće biti od velike pomoći.

Jednostavno, ako nisi ovladao principima, ne možeš sa copy-paste operacijama uraditi ovakav zadatak. Moraš razumjeti to ŠTO kopiraš :)

Međutim, zadovoljan sam učinjenim. Nedovoljno za položiti, ali ipak nisam predao prazan rad.

Razumjevanje principa

Pred kraj sam prokomentarisao:

Kad bih imao još jedno jedno 3 sahata ... još bi mogao "nakurikati" ovaj rad za prolaz ?!

Iako je tačnost ove konstatacije do kraja upitna :), ipak ima smisla postaviti pitanje:

Ako nisam spremao ispit, kako sam uopšte uradio to što sam uradio ?

Zato što sam ovladao principima pojedinih elemenata koji čine zadatak.

Slične stvari radio kod seminarskog iz UBP-a. Iako se radi o drugom programskom jeziku i drugoj bazi podataka, ta znanja sam mogao primjeniti i u ovom radu. Principi su identični.

Dobitna formula

Ono što je najbitnije, kada rezimiram dobitna formula je:

uspjeh_na_ispitu = poznavanje_principa + dovoljno_praktične_vjezbe

Bez ove dvije komponente ovaj ispit može pomožiti samo genijalac ili prevarant.

Knjige, internet resursi

Da ne zaboravim, knjige nisam čestito ni pogledao tokom ispita. Nisam došao do te lekcije :).

Da li bi mi internet pomogao ?

Pomogao bi mi. Pronašao bih koji "howto" koji je sličan onome što se traži od nas.

Međutim, ubijeđen sam da mi to ne bi pomoglo da položim ispit. "copy-paste" tuđeg znanja nije baš tako jednostavno na ispitima ovog tipa.

S druge strane, oni koji znaju iskoristiti tuđi rad i aplicirati ga u svom rješenje za zadatke ove složenosti traže značajno znanje:

Ako ne razumiješ principe, najmanja modifikacija zadatka će te "izbaciti iz igre".

Ubijeđen sam da bi rezultati korištenja literature na ispitu kaka je WT bili identični onima koji su bili na ispitu iz STT-a.

Svi koji ne poznaju principe i ne bi imali dovoljno praktične vježbe popadali bi "k'o kruške".

"Copy-paste" tuđeg znanja ?

Postavlja se međutim operavdano pitanje da li bi se uz mogućnost korištenja interneta mogao položiti ispit bez odgovarajućih znanja ?

Da li je moguć copy-paste tuđeg znanja ?

Mogućnosti prevare su moguće. Evo jednog scenarija:

  • Ja nemam pojma
  • Šaljem zadatak prijatelju van fakulteta
  • On uradi zadatak pa ga objavi na github

Da ovo je klasična prevara.

Ona je praktično modifikacija prevare putem prepisivanja zadatka od drugog kolege ...

Da li je to moguće uočiti ? Ma ljudi moji - jeste!

Kontrola a)

50-tak ljudi koliko ih prisustvuje ispitu, nije teško obići 3-4 puta u toku 3 sahata. Ako neko "iskoči" odjednom sa rješenjem pred kraj ispita, dovoljno ga je upitati - zašto si ovo uradio, šta si sa ovim postigao ? Prevarant neće znati odgovor.

Kontrola b) - SCM istorija promjena

Međutim prava kontrola, u duhu struke i nauke je uvid u istoriju promjena tokom izrade rada.

Pogledajte ovaj izvještaj:

https://github.com/hernad/FIT_WT/commits/master/guest_book

U njemu se jasno vidi ŠTA i KADA je student uradio.

Ako bi se kao obavezni dio ispita stavilo korištenje SCM(^***) alata, postigla bi se pouzdana kontrola rada studenta.

Uz to, student bi usvojio korištenje jednog od baznih alata software developera SCM (koji by the way ni na jednom predmetu ne uči a morao bi - recimo na SI-u).

Ova kontrola b) mi se čini kao super ideja.

Rezime

Profesor Jasmin i asistent Adem su napravili odličan posao na WT-u.

S obzirom da je ovo njihova prva godina vođenja predmeta, i u budućnosti se mogu očekivati poboljšanja u konceptu i sadržaju nastave i ispita.

Ko zna, možda u njihov izbor dođe i neka od mojih zamisli !?

---

(*) WT - Web tehnologije.

(**) PIS - Programiranje informacionih sistema, SI - Software inžinjering

(***) Što ću kasnije kroz izradu seminarskog rada iskušati na svojoj koži.

(****) DL - Distance learning sistem

(^) Iskustvo iz prve ruke. Dvoumio sam se da li uopšte da izađem, s obzirom da sam za spremanje ispita uspio odvojiti samo jedno poslijepodne.

(^*) Slobode izbora nikad dovoljno: https://gist.github.com/1663930 .

(^**) sa nekim light framwework-om da se zavrzlame oko konfiguracije J2EE okruženja minimiziraju

(^***) SCM - source control management

 

1273 views and 1 response