Со тек на време и со повеќе учење и самоподобрување, сфаќам малку по малку дека работите што мислев дека сум ги „разбирал“ ми биле далеку од разбрани. Пострашно од тоа, работите што сум мислел дека се „важни“ и „неважни“ ми биле многу наивно гледани. Ги ставам овие работи во наводници затоа што за 1-2 години и работите што сега мислам дека ги разбирам сигурно ќе ги гледам со неверување наназад (со коментар од типот „што ли си мислеше“). Уште позначајно во овој период од животот сфатив дека секоја неважна информација си е важна во свој контекст. Но, тој контекст не секогаш ќе е Data Science.
Денес се враќам во време, во таа 2015 кога прв пат пишав линија код и ги согледувам моите начини на учење, како и што би направил различно. Не мора секој од вас да учи преку сопствено долгогодишно искуство, некогаш е доволно да се искуси тоа од некој друг.
Сосема на почеток, во трета година средно, како и многу од моите врсници, започнав со учење на C++. Ова е феноменален јазик за разбирање на основите на тоа што се пишува и на луѓе кои се неодлучни точно што сакаат да прават во ИТ сферата сепак го препорачувам. Ако научиш C, секој друг јазик ќе ти преставува леснотија. Од самиот старт си гледам голема грешка, а таа е:
Неразбирање што се библиотеки и за што служат
Секој барем малку искусен програмер сигурно ќе има некаква реакција кога ќе го прочита ова, но морам да си признаам – вистина беше. Ги имавме 2-3 библиотеки што ги имплементиравме во секој проект и единствено знаев дека ако напишам #include <cstdlib>, ќе ми дозволи да искористам system(“pause”). Има една работа што ретко кој средношколец ја разбира на средношколски години, а тоа е дека не мора сè да прави од нула, но мојот став е дека и образовниот систем треба да има подобар пристап и да посочи дека постојат основни пакети кои завршуваат огромна работа. Да, има готови пакети за 99.9% од работите што сакаш да ги правиш, твое е само да ги најдеш (или да ти се посочи дека постојат). Што ме води до втората промена што би ја направил:
Гледање готови проекти и разбирање како работат
Класика при прво учење за програмирање на било кој јазик е помислата „Еј, ај да направам дигитрон“ или „Еј, ај да направам X/0 игра“. Овие идеи како и секоја друга се одлични, но немој да скокаш на проект без да знаеш ништо друго освен што се променливи, услови и циклуси. Секако, можеш да пробаш да направиш основни варијанти, но за да направиш нешто убаво, важно е да се гледаат примери. Долго време по започнувањето со учење на програмирање нема да измислиш топла вода и океј е да се види поискусен човек како го направил истото, како и да научиш нови техники, библиотеки и принципи на работа.
Работи сам и не се откажувај
Ова звучи многу клише, многу филмски и секој на Ted Talks веќе го има кажано милион пати. Моето „не се откажувај“ не важи за програмирање во целост или за кариерата. Зборувам за самиот проект. Некоја грешка ти се јавува по 87 пат и не можеш да сфатиш како да ја исправиш? Направи ја уште еднаш. Уште 5 пати. Уште 87 пати. Грешка што нема да ја сфатиш може никогаш и да не ја научиш. А јас на почеток правев некако вака – се појавува грешка што не можам да ја разберам и кревам раце од нештото, префрлајќи се на нешто друго. Фрустрацијата од грешката беше преголема за да наоѓам решенија, барем на почетокот.
Во работи и обврски дадени од школо се содржат само основите, само работите што се неопходни. Ти ќе сакаш тоа знаење да го користиш, повторуваш, надоградуваш. Тоа мора да се прави сам (или во некое мало друштво од твој калибар). Ниту еден програмерски предмет или курс нема да ти помогне, ако самиот не го аплицираш она што го учиш. Може материјата да е одлично разработена и ставена на тацна, но ако самиот не фатиш да го применуваш она што ти се сервира, да истражуваш, да бараш решенија тогаш баш и не преземаш одговорност ниту иницијатива за сопствениот напредок. Вистинското подобрување доаѓа кога сам ќе фатиш да го примениш учењето, дали преку домашни, дали преку креативни обиди.
И за крај, можеби најсамокритичната работа во листава:
Учи математика!
И други гранки на ИТ користат математика, иако за некои гранки доволно е само да се знаат основите. Data Science бара многу темелно разбирање на математички концепти. Без убаво разбирање на веројатност, статистика, дискретна математика и анализа, тешко ќе е да се работи на било кој проект. Најдобро место да се учи математика е средно, а јас ич не учев. Имав оценка по математика од 2 до 3 до четврта година и тоа ми отежна многу на факултет.
Data Science е примена на модерни алати, како програмирање, машинско учење и бази на податоци, за решавање на проблеми кои во минатото се решавале само со статистика, со молив и лист. Многу е важно да знаеш како да напишеш алгоритам на код, но ако не сфатиш што прави тој алгоритам во позадина (а таа позадина е базирана на математика), како ќе знаеш дали е добар? Учи математика, потруди се, кога ќе ја разбереш станува многу интересна.
До следното читање,
Вашиот Red Hood!
____________________________________________
Chapter 2: Зошто сакам да го учам и работам ова?
Chapter 3: Грешки при учење Data Science (и како се справив со нив)