#1. Լավ ծրագրավորող՝ ավանդական կրթությամբ

Իմ պատկերացրած լավ ծրագրավորողն այն մարդն է, ով կարողանում է լուծել խնդիրների լայն բազմություն, ով լուծում տվող է:

Հասկանում ես, որ այն ամենը, ինչ որ մենք դպրոցում անվանում էինք մաթեմատիկա, դա իրականում ինչ-որ ակրոբատիկայի պես մի բան էր, ժանգլյորության կամ չգիտեմ նմանատիպ ինչ-որ մի բան, բայց իրական մաթեմատիկան շատ ավելի խորն է:

Պարտադիրը ոչ թե հենց համալսարան գնալն է, այլ պարտադիր է այն գիտելիքի բազմությունը, որը դեռևս կան համալսարանական ուսումնական պլաններում:

Ի՞նչ է ծրագրավորումը և ի՞նչը չի հանդիսանում ծրագրավորում: Ովքե՞ր են ծրագրավորողները և ինչո՞վ են նրանք զբաղված: Ինչպե՞ս դառնալ ծրագրավորող և ի՞նչ է ձեզ սպասվում դրանից հետո: «Ալան Թյուրինգի անվան Ծրագրավորման Փիլիսոփայության դպրոց»-ի հիմնադիր և HelpSystems Armenia ընկերության առաջատար մասնագետ Վահրամ Մարտիրոսյանը ներկայացնում է զրույցներ՝ ծրագրավորման փիլիսոփայության մասին:

-Բարև բոլորին, բարև հարգելի՛ ունկնդիրներ, սկսում ենք մի նոր, չտեսնված ֆորմատ, զրույցներ՝ ծրագրավորման և դրա փիլիսոփայության մասին: Մեր ամեն մի նոր էպիզոդ ձեզ կներկայացնի նոր և հետաքրքիր նյութ՝ կապված ծրագրավորման, ծրագրավորող դառնալու և լինելու թեմայի հետ: Այսօրվա եթերը եզակի է, քանի որ հյուրը հենց ես եմ՝ Փոդքասթի հիմանդիրս, և հարցազրույցը մեծահոգաբար կվարի Նինան:

#1 - Վահրամ, առաջինը կուզեմ հարցնել, թե ինչու՞ որոշեցիր և ինչպե՞ս որոշեցիր դառնալ ծրագրավորող:

- Դա շատ կարևոր հարց է: Իրականում, շատերի մոտ այդ հարցի պատասխանը բավականին միատիպ է, քանի որ ոլորտը այս պահին վայելում է մեծ հասարակայնություն, կա մեծ գումարներ, լիքը աշխատատեղեր և այլն: Իմ դեպքը այլ է: Ես պարզապես մի օր հասկացա, որ ուզում եմ դառնալ ծրագրավորող: Կարևոր է նշել, որ այդ օրը 90-ական թվականներին էր, երբ դեռևս այսքան տարածված չէր ծրագրավորումը և ես նույնիսկ չունեի մեծ եղբայր, կամ որևէ մեկը, ում նայելով կասեի, որ ես ուզում եմ այ իր պես դառնալ ծրագրավորող, չգիտեմ, որևէ ուղեցույց չկար, բայց ես հասկացա, որ ես ուզում եմ դառնալ ծրագրավորող և ուզում եմ մտնել այդ աշխարհը:

#2 -Կուզեի նաև հարցնել՝ ի՞նչն ես կարևորում լավ ծրագրավորող դառնալու ճանապարհին:

- Ցավոտ թեմա է: Ուրեմն, ես ունեմ իմ սեփական պատկերացումն այն մասին, թե ինչ է լավ ծրագրավորող ասածը, ովքեր են այդ լավ ծրագրավորողները: Ամեն ոք ունի իր պատկերացումները: Ամեն դեպքում՝ իմ պատկերացրած լավ ծրագրավորղը այն մարդն է, ով կարողանում է լուծել խնդիրների լայն բազմություն, ով լուծում տվող է, ոչ թե պարզապես կոդ գրող կամ սայթ սարքող: Ինչ-որ տարբեր նմանատիպ ձևակերպումներ կարող եմ տալ: Իմ պատկերացրած ծրագրավորողը՝ կարող է լուծել խնդիրների շատ լայն բազմություն, սկսած ամենաառաջին փուլից. օրինակ՝ խնդիրը օգտատիրոջ համար ձևակերպելուց, որովհետև հաճախ մարդիկ չեն էլ հասկանում, որ իրենք ինչ-որ խնդիր ունեն կամ, որ կարելի է այնտեղ ինչ-որ բան լավացնել: Լավ ծրագրավորողը կարող է մտնել որևէ ոլորտ, հասկանալ այդ ոլորտում առկա ինչ-որ խնդիրներ կամ խանգարող իրավիճակներ և տեսնել, թե ինչպես կարող է ծրագիրը՝ ծրագրային համակարգը, օգնել այդ խնդիրները կամ իրավիճակները լավացնելու կամ լուծելու հարցում: Սկսում ենք այդտեղից և վերջացնում ենք նրանով, որ լավ ծրագրավորողը այն մարդն է, ով պետք է կարողանա ոչ միայն իր համակարգչի վրա աշխատող ծրագիր գրել, այլ՝ գրել ծրագիր և այն հասցնել մարդկանց այն վիճակով, որով ինքը դա տեսնում էր: Այսինքն՝ չլինեն պրոբլեմներ ծրագիրը աշխատեցնելու հետ կապված, ծրագրի կյանքը, կենսունակությունը ապահովված լինի բոլոր համակարգերի վրա, որտեղ ենթադրվում է, որ ինքը պետք է աշխատեր: Այսինքն՝ դա ոչ թե պարզապես մարդ է, ով իր համար լաբորատորիայում նստած հորինում է ծրագրեր, այլ այն մարդն է, ով կարողանում է ծրագրերը, ավելի ճիշտ, գտնել խնդիրները իրական կյանքում և տալ լուծումներ՝ այդ խնդիրներն ունեցող մարդկանց համար:

#3 - Ի՞նչ խոչընդոտներ ես հանդիպել և հաղթահարել քո ուղու ընթացքում:

- Ծրագրավորող դառնալու իմ ուղին սկսվեց համալսարան ընդունվելով: Ես մինչև այդ դպրոցում կամ, որևէ նմանատիպ տեղում, ծրագրավորման հետ գործ չեմ ունեցել: Հենց առաջին կուրսից, առաջին դասերից, գրեթե մի քանի առարկաներում. հա՛մ մաթեմատիկայի հետ կապված, հա՛մ կիբեռնետիկայի, հա՛մ ծրագրավորման հետ կապված առարկաներն էին, ես հասկացա, որ ընդհանրապես չեմ պատկերացնում, թե ինչի մասին են խոսում, այսինքն՝ ես առաջին օրերը պարզապես նստած, բաց բերանով նայում էի գրատախտակին ու փորձում էի հասկանալ՝ էս ինչ են էս մարդիկ անում: Մասնավորապես՝ մաթանալիզը, որը հանդիսանում է ինչ-որ իմաստով դպրոցական մաթեմատիկայի շարունակությունը, քանի որ ավագ դասարաններում ևս անցնում ենք մաթանալիզ, դասախոսի մատուցմամբ՝ լրիվ այլ տեսք է ստանում: Մենք այնտեղ ուսումնասիրում էինք թվեր՝ ռացիոնալ թվեր, իռացիոնալ թվեր, թվային հաջորդականություններ, հետո քիչ-քիչ բարդանում է իրավիճակը, գալիս է սահմանը, հետո ֆունկցիան է առաջանում, հետո անընդհատությունը, հետո շարքերը, հետո ինտեգրալներ և այլն... Բայց ամեն ինչ սկսվում է թվերից և այդ թվերը, որոնց ես կարծում էի, որ ամբողջ կյանքում ծանոթ եմ եղել, ինձ լրիվ նոր լույսի տակ ներկայացվեցին: Այսինքն՝ դասախոսը այնպիսի խնդիր էր դնում, այնպես էր ցույց տալիս, թե այդ խնդիրը ոնց կարելի է լուծել, որ ինձ մոտ պարզապես ամեն օր տեղի էր ունենում մտածողության փոփոխություն: Հեշտ է հասկանալ, որ ցանկացած երկու ռացիոնալ թվերի միջև կա ևս մեկ ռացիոնալ թիվ, բայց միևնույն ժամանակ դժվար է հասկանալ, որ այդուամենայնիվ, ռացիոնալ թվերը հաշվելի են: Այսինքն՝ դրանք այնքան էլ շատ չեն, իրենք այնքան են, որքան բնական թվերը: Բայց կան թվեր, որոնք էլ ավելի շատ են և իրենք ամբողջությամբ լցնում են թվային առանցքը: Ֆանտաստիկա՞ է չէ: Եվ այդ ամեն ինչի մեջ թվերի, թվանշանների, տասնորդականների, հարյուրմիլիոներրոդական թվանշանի մեջ ինչ-որ տարբերություններ գտնելով, կառուցելով, ինչ-որ միջակայքերի եզրեր, սուպրեումներ, ինֆումներ և այլն... հասկանում էս, որ այն ամենը, ինչը մենք դպրոցում անվանում էինք մաթեմատիկա, դա իրականում ինչ-որ ակրոբատիկայի պես մի բան էր, ժանգլյորության կամ չգիտեմ ինչ-որ նմանատիպ մի բան, բայց իրական մաթեմատիկան՝ շատ ավելի խորն է: Հասկանալով նմանատիպ բաները՝ մարդու մոտ սկսում է մտածողության փոփոխություն՝ ռեալ:

Հաջորդ խոչընդոտը՝ դիսկրետ մաթեմատիկան էր, որն ընդհանրապես, այլ տիպի մտածողությունն է: Այսինքն՝ գոնե, եթե ես դպրոցից ծանոթ էի, թե ինչ է նշանակում թիվ, ապա դիսկրետ մաթեմատիկայի կոնցեպտները, սկսած բազմություններ, հարաբերություններ, ֆունկցիաներ, բուլյան ֆունկցիաներ, դիսկրետ տիրույթներ, գրաֆներ, ֆունկցիոնալ տարրեր, սխեմաներ, այդ ամենը ընդհանրապես, նույնիսկ տերմինների մակարդակում, անհասկանալի էին և ես առաջին կիսամյակի վերջում, հանձնելով դիսկրետ մաթեմատիկայի քննություն և ստանալով գերազանց գնահատական, հասկանում էի, որ ոչինչ չեմ հասկանում: Այսինքն՝ ես, ինչ-որ իմաստով, նոր թաթախվում էի այդ ոլորտի մեջ: Ոլորտը թվում էր անվերջ և այնտեղ կար ուղղակի անսպառ գիտելիքի և մտածողության շտեմարան, որը ես փորձում էի ընկալել: Շատ դժվար էր և երկրորդ կիսամյակն ամբողջությամբ ես և մեր խմբից մի երիտասարդ նվիրեցինք դիսկրետ մաթեմատիկան հասկանալուն: Գրեթե ամեն շաբաթ, եթե չասեմ ամեն օր, գնում էինք ընթերցասրահ, վերցնում էինք գիրքը, տետր ու նստում փորձում էինք հասկանալ, դուրս բերել, ապացուցել, ստանալ, լուծել և այլն... Բոլոր այն խնդիրները, թեորեմները և այն ամեն ինչը, որ կար դիսկրետ մաթեմատիկայի գրքում: Եվ արդյունքը՝ սպասել չտվեց: Այսինքն՝ դա այն ամենամեծ բարդություններից մեկն էր, որ ես հաղթահարել եմ: Առաջին կուրսի վերջում, քննության ժամանակ, ես հասկացա, որ ամեն ինչ հասկացել եմ: Ես շատ շնորհակալ եմ իմ դասախոսից՝ պարոն Ասլամազյանից, ով կառուցեց այնպիսի քննություն, որի նմանը ես կյանքում չեմ տեսել: Ես քննության ժամանակ, մեր խմբից մի քանի հոգու հետ ապացուցում էինք նոր թեորեմ, եթե դա ինչ-որ մեկին, ինչ որ բան կասի, ապա պատկերացրեք, որ նոր թեորեմի ձևակերպում տրվեց և մենք սկսեցինք ապացուցել: Պայմանն այսպիսին էր. Ով գոնե մի քայլ կարողանա անել ապացույցի մեջ՝ ստանում է գերազանց: Այսինքն՝ բոլորս գրեթե գերազանց էինք, բայց ինչ-որ մի բան պակասում էր: Եվ մենք՝ ինքներս էլ, հասկանում էինք, որ ինչ-որ մի բան պակասում է:

Դա երկրորդ բարդությունն էր: Եվ երրորդ բարդությունը՝ հենց ծրագրավորումն էր: Ես ամենասկզբում, ընդհանրապես չէի հասկանում՝ ինչ է նշանակում փոփոխական, ինչ է նշանակում կարդալ ինչ-որ բան մուտքից, ինչ-որ բան արտահանել ելք, ինչպես են այդ ամեն ինչը իրար հետ աշխատում: Հաղորդակցման սարքերը, կենտրոնական պրոցեսորը՝ ինչպես են իրար հետ աշխատում և այլն, և այլն... բայց դա ավելի հասկանալի պրոցես էր՝ յուրացման տեսակետից, քանի որ պարզապես պետք էր ծանոթանալ և ամեն ինչ լավ կլիներ: Այսինքն՝ մտածողությունը, բուն մտածողության փոփոխությունը, գալիս էր դիսկրետ մաթեմատիկայի կողմից և հենց այդ մտածողությունն էր, որ ընկած էր պրոցեսորի աշխատանքի հիմքում և ընդհանրապես համակարգիչների աշխատանքների հիմքում:

Այսպիսով՝ կարծում եմ, որ ծրագրավորող դառնալու ճանապարհին՝ ամենաբարդը, հենց առաջին քայլերն են, երբ դու լավ չես պատկերացնում, թե ինչ է ծրագրավորումը, թե ինչ է քեզ սպասվում և գալիս ընկնում էս ուղղակի այդ նոր աշխարհը ու պետք է ծանոթանալ, հարմարվել ամեն ինչին, տիրապետել իրավիճակին:

#4 - Իսկ հետագայում աշխատաշուկայում ի՞նչ խոչընդոտների էս հանդիպել:

- Իմ պրակտիկան բավականին բազմազան է: Կուզեմ ասել, որ ես արդեն 16 տարի է այս ոլորտում եմ և հաճախ, միաժամանակ երկու կամ երեք տեղերում եմ աշխատել, եթե հաշվենք նաև դասավանդումը: Կարող ենք, այսպես եթե գծային, իրար կողքի շարենք այդ բոլոր փորձերը, ապա մի 30 տարվա աշխատանքային ստաժ կարող է ձևավորվել: Եվ այդ ընթացքում ես հասցրել եմ աշխատել շատ տարբեր բնագավառներում: Պատկերացնենք՝ պահ է եղել, երբ ես վեբ-ծրագրավորում էի անում միայն Javascript, Php, MySQL: Պահ է եղել, երբ ես ակադեմիայի մաթեմատիկայի ինստիտուտում աշխատում էի, որպես կրտսեր գիտաշխատող և C++ լեզվով ArmCluster-ի վրա զուգահեռացնում էի բարդ հավասարումների կամ ինտերպոլացիոն խնդիրների լուծումներ: Պահ է եղել, երբ ես զբաղվում էի, օրինակ՝ Լինուքսի միջուկում վերիֆիկացիայով, մոդուլների մշակմաբ և դրանց վերիֆիկացայով: Պահ է եղել, որ զբաղվել եմ UI ծրագրավորմամբ, Silverlight միջավայրում, որն արդեն գոյություն էլ չունի: Եվ ինչն է հետաքրքիր, որ իմ աշխատանքային պրակտիկայում հանդիպեց տխրահռչակ 2008 թ.-ը: Ես այդ ժամանակ աշխատում էի, ընդ որում, արդեն ամուսնացած էի, ունեի երեխա, ասպիրանտ էի այդ ժամանակ և համաշխարհային այդ ճգնաժամը, որը պնդում էին, որ չի ազդելու Հայաստանի վրա, ազդեց նաև Հայաստանի վրա։ Հատկապես կարծում եմ, որ ուժեղ ազդեց ՏՏ ոլորտի վրա, քանի որ այդ բոլոր ընկերությունները, ի վերջո ֆինանսավորվում էին արտաքին աղբյուրներից: Եվ այն ընկերությունը, որում ես այդ պահին աշխատում էի՝ պարզապես փակվեց: Ընդ որում՝ փակվելուց մի քանի ամիս առաջ մենք աշխատավարձ չէինք ստանում, որը իմ իրավիճակում գտնվող մարդու համար, բավականին մոտ է կատաստրոֆիկ վիճակի: Եվ այդ պահին իրավիճակը այսպիսին էր. ես աշխատում էի ինչ-որ ընկերությունում, որտեղ օգտագործում էինք Python, C++, C# լեզուները և դրանց միջոցով ինչ-որ մեքենաների հետևող համակարգ էինք մշակում և հանկարծ այդ ամեն ինչը փակվեց: Եվ այն գիտելիքը, որ ես ունեի, որ այդ հմտությունները, որոնք ձեռք էի բերել, պարզվում է այդ պահին ոչ մեկին պետք չէ: Եվ ամենարագ լուծումն այն էր, որ ես ստիպված ուղղակի փոխեցի ընդհանրապես իմ բնագավառը:

Գնացի Լինուքս միջավայրում վերիֆիկացիայի խնդիրներ լուծող մի լաբորատորիայի միացա, դարձա վարիչը, ընդ որում, դա ամենամեծ մարտահրավերն էր իմ կյանքում: Ես պարզապես ընկա մի նոր միջավայր, որտեղ արդեն կան մարդիկ աշխատող, որտեղ խնդիրները կան, պրոցեսները և ամեն ինչ կա: Եվ ես պետք է այդ ամեն ինչը կարգի բերեմ, որովհետև ընդհանուր կային դժգոհություններ, (այ կուզեինք այսպես լիներ, այնպես լիներ....), բայց իրականում այսպես է: Ես դա համարում եմ իմ կյանքում ամենաէական կետերից մեկը, որպես մասնագետի կայացման փուլերից մեկը: Երբ ես բավականին միայնակ, չունենալով այսպես ասած ինձ աջակցող ղեկավար, որևէ մեկը, ով ինձ կուղղորդեր: Ես ավելի շատ ինքս էի ղեկավար, այսինքն՝ ես ղեկավարում էի լաբորատորիան, ենթարկվում էի ռեկտորին, ինչ-որ չափով աշխատում էի գիտական խորհրդականի հետ և այդ միջավայրում շարունակել ստեղծել պրոդուկտ, լինել պրոդուկտիվ, սկսել մասնակցել ինչ-որ գիտական կոնֆերանսների, գրել հոդվածներ, գրել ձեռնարկներ, ուսումնական ձեռնարկներ, այդ ամեն ինչը բացարձակ նոր էր ինձ համար և ես այդ ամենին գումարած ասպիրանտ էի, ես պետք է պաշտպանեի և այդ իրավիճակում, մոտ մեկ տարի հետո, ես ունեցա այնպիսի արդյունքներ, որ պարզապես դա հրաշքի պես մի բան էր ինձ համար: Ես չէի կարծում, որ կարող եմ դա անել: Ես ընթացքում հասցրեցի և պաշտպանեցի իմ թեզը, ստացա գիտական աստիճանս: Ես հասցրեցի հորինել նոր լեզու, ես այդ լեզվով սկսեցի մշակել մեր վերիֆիկացիոն համակարգի ապագան: Մասնակցեցի մի քանի կոնֆերանսների, մինչև անգամ արտերկրում: Գրեցի գիտական հոդվածներ, որոնք բացի ասպիրանտական տարիներից, ընդհանրապես առիթ չէր եղել գրել: Ինչպես նաև որպես ծրագրավորող էլ էի մասնակցում: Այսինքն՝ ես հա՛մ կոդ էի, հա՛մ ճարտարապետությունն էի մշակում, հա՛մ ղեկավարում էի լաբորատորիայի ամբողջ գործունեությունը, ներառյալ՝ տպիչ սարք և ականջակալներ գնելու հարցերից, վերջացրած նոր աշխատող պատրաստելու և աշխատողների աճով զբաղվելու հարցերով:

Զուգահեռ դասավանդում էի Սլավոնական համալսարանում և այդ մի քանի տարի տևողությամբ ժամանակահատվածը նախ ամենադժվարն էր իմ կյանքում, և ամենամեծ աճը որպես մասնագետ: Կարծում եմ, որ իմ փորձից ելնելով, մարտահրավերներից մեկն այն էր, որ ծրագրավորղը պետք է պատրաստ լինի կտրուկ փոփոխությունների, որովհետև ոլորտը շատ դինամիկ է: Դինամիկան միայն լավ բան չէ, այն նաև նշանակում է կտրուկ վատացում և այդ կտրուկ վատացումներին պետք է պատրաստ լինել, օրինակ՝ լինելով լայն պրոֆիլի մասնագետ, այլ ոչ թե՝ պարզապես իմանալով մեկ լեզու, կամ մեկ տեխնոլոգիա, կամ մեկ գրադարան և այդ լայն պրոֆիլի մասնագետ լինելը մի տեսակ անվտանգություն, ապահովություն է տալիս ծրագրավորողին՝ իր ապագայի նկատմամբ:

#5 - Վահրամ, ըստ քեզ, կա արդյո՞ք Հայաստանում այն էկո սիստեման, որը հարկավոր է լավ ծրագրավորող դառնալու համար:

- Կարծում եմ, որ այս պահին դեռ կա: Ինչու եմ ասում դեռ, որովհետև մենք ավելի շուտ տեսնում ենք որոշակի անկում, որը արդեն երկար տարիներ է գնում՝ 20-ից ավելի տարիներ, բայց դեռևս կա և այն, ինչ կա քիչ-քիչ միգուցե ձևափոխվում է կամ ստանում է հավելյալ աջակցություն, այլ տիպի, նոր առաջացող ինչ-որ միավորներից: Ավելի պարզ եթե ասեմ, ուրեմն Հայաստանում ծրագրավորման այդ ավանդույթը շատ վաղուց եղել է: Այսինքն՝ օրինակ, ԵՊՀ Ինֆորմատիկայի և Կիրառական մաթեմատիկայի ֆակուլտետը հիմնադրվել է 1971 թ.-ին։ Այդ թվականին ամբողջ աշխարհում ընդամենը մի քանի երկիր կար, որ զբաղվում էր տեղեկատվական տեխնոլոգիաներով: Հայաստանում արտադրվում էին համակարգիչներ, ընդ որում, ամբողջությամբ, ներառյալ՝ կենտրոնական պրոցեսորը կամ մնացած բոլոր սարքերը: Բոլորս գիտենք «Հրազդան» մեքենաների մասին, «Նաիրի» մեքենաների մասին: Աշխարհում երևի ընդամենը երեք երկիր կար, որտեղ արտադրվում էին այդպիսի տեխնիկաներ և կային մասնագետներ, ովքեր այդ սարքերի վրա կարող էին աշխատել: Հայտնի ինստիտուտը՝ Մերգելյանի անվան, զբաղվում էր ծրագրային ապահովման մշակմամբ, Սովետական միության այդ ռազմական ինչ-որ գաղտնի, ես չգիտեմ, ինչ համակարգերով էին զբաղվում: Այդ ժամանակվանից արդեն դրվել էր հիմքը ու հիմքը աշխարհում լավագույններից մեկն էր: Ինչ ենք մենք տեսնում այսօր. մենք ունենք բազմաթիվ բուհեր, ովքեր պատրաստում են մասնագետներ (այդ մասին մի անգամ բավականին մանրամասն խոսեցինք, թե ինչքա՞ն լավ են պատրաստում, ինչո՞ւ են պատրաստում և նմանատիպ բաներ): Այդ մասնագետները, ցավոք, չեն բավարարում շուկայի պահանջներին, քանի որ բուհերը ավելի պահպանողական կառույցներ են, հին ինչ-որ ծրագրերով, որոնք դժվար են փոփոխվում, կա իներտության որոշակի տոկոս: Մյուս կողմից՝ աշխատաշուկա, որը շատ դինամիկ է և անընդհատ մենք ունենում ենք նոր ընկերություններ, նոր տեխնոլոգիաներ են առաջանում, նոր լեզուների կարիք է առաջանում, նոր տիպի մասնագետներ են պետք լինում: Վերջերս արդեն ծրագրավորումից բացի շատ ու շատ այլ մասնագիտություններ են հայտնվել ՏՏ ոլորտում, որոնց պատրաստող բուհեր չկան:

Եվ կողքից սկսում են առաջանալ ուսումնական կենտրոններ, որոնք տալիս են համապատասխան, կարճաժամկետ, մակերեսային լուծումներ: Այսինքն՝ հաճախ այսպես է լինում, օրինակ՝ ուսանողներ, որոնք սովորում են Երևանի պետական համալսարանի Ինֆորմատիկայի և Կիրառական մաթեմատիկայի ֆակուլտետում զուգահեռաբար սկսում են հաճախել ինչ-որ ուսումնական կենտրոններ՝ սովորելու կոնկրետ լեզուներ: Ենթադրենք՝ Java լեզու, mobile ծրագրավորում են սովորում կամ նույնիսկ որակի ապահովման դասընթացներ են անցնում, տարբեր դեպքեր են լինում և երրորդ, չորրորդ կուրսից սկսած կարողանում են գտնել աշխատանք: Դա էլ լուծում է իհարկե, բայց կուզեինք տեսնել ավելի մրցունակ բուհեր, այսինքն՝ բուհերն այդքան հետ չընկնեին մեր շուկայի պահանջներից, այլ ավելի դինամիկ լինեին, փորձեին ավելի սերտ համագործակցել ՏՏ ընկերությունների հետ: Միգուցե, այդ իրավիճակը շտկվի, ես կարծում եմ, որ պետք է շտկվի, քանի որ հակառակ դեպքում՝ բուհերը, կոնկրետ մեր մասնագիտությամբ ֆակուլտետները, կունենան լուրջ խնդիր, որովհետև ուսանողները մի օր կհասկանան, որ այդ բուհի տվածը իրենց ընդհանրապես բավարար չէ, իսկ միգուցե պետք էլ չէ: Լավ ուսանողը չգիտի իրեն պետք է այդ մաթեմատիկան, դիսկրետ մաթեմատիկան կամ չգիտեմ գրաֆների տեսությունը, ալգորիթմները, որտեղ են օգտագործելու ալգորիթմների և տվյալների կառուցվածքների այդ գիտելիքը: Բայց ուսումնական կենտրոնները հակառակը՝ տալիս են գիտելիք, որը հենց հիմա այս ընկերությունում պահանջարկ կա, որի մասնագետը պետք է և նրանք էլ կօգնեն այդ ուսանողին, ավարտելուց հետո, հայտնվել այդ ընկերությունում: Ամեն ինչ շատ ավելի ուղղված է դեպի ուսանողը, դեպի ապագա մասնագետի կայացումը, քան բուհական պրոցեսը: Բայց պետք է հասկանանք, որ ես՝ ինքս, հանդիսանում եմ բուհական պրոդուկտ, ես բուհից եմ դուրս եկել, ամբողջ գիտելիքը, որ ես ձեռք եմ բերել, ես ձեռք եմ բերել բուհում կամ ինքնուրույն սովորելով: Այսինքն՝ այն ժամանակ ուսումնական կենտրոններ նույնիսկ չկային: Ես կա՛մ ինքուրույն պետք է սովորեի, կա՛մ բուհում: Եվ ես անում էի երկուսն էլ փաստացի, ես բուհում սովորում էի այն ամենը ինչը, որ տալիս էր բուհը, իսկ ինչը, որ չէր հասցնում տալ տարբեր պատճառներով՝ սկսած նրանից, որ մասնագետ չկար, վերջացրած նրանով, որ ուսումնական պլանում ընդհանրապես չկար այդպիսի առարկա: Մնացած բաները ես սովորում էի ինքնուրույն: Ես ամեն օր կարդում էի գիրք, հին, բարի, թղթից գիրք: Պատճենահանված ինչ-որ այլ գրքերից, նույնիսկ երբեմն այդ գիրքը անգլերեն էր լինում ու ես ուղղակի հաղթահարում էի այդ անգլերենի խոչընդոտը, այն ժամանակ ուղղակի այդպես էր իրավիճակը: Հիմա կածում եմ իրավիճակը բավականին այլ է:

Այսպիսով՝ վերադառնալով հիմնական հարցին. ի՞նչ ունենք Հայաստանում: Ունենք դեռևս կենսունակ, ապրող բուհական համակարգ, որում դեռևս որոշակի ֆունդամենտալ գիտելիք հնարավոր է ստանալ: Անընդհատ շեշտում եմ դեռևս բառը, ուղղակի ուզում եմ դուք էլ հասկանանք իրավիճակի սրությունը: Ես ականատես եղա մի դեպքի, երբ մի շատ հարգելի դասախոս, նույնիսկ դեկան չկարողացավ պաշտպանել իր դոկտորական աշխատանքը, որովհետև չկարողացան հավաքել այնպիսի խորհուրդ, որտեղ կլիներ համապատասխան քանակությամբ դոկտորներ, ինչպես պահանջում է բարձրագույն որակավորման կոմիտեն, քանի որ այդ դոկտորներից մեկը մահացավ: Այսինքն՝ մենք ունենք վերարտադրման խնդիր, մենք չունենք բավական քանակությամբ տեխնիկական և ֆիզմաթ գիտությունների դոկտորներ մեր մասնագիտությամբ, որպեսզի կարողանանք վերարտադրել նոր դոկտորների: Դա արդեն խոսում է լուրջ խնդրի մասին: Դրա համար ասում եմ դեռևս: Կարող է 5 տարի հետո իրավիճակը այնքան վատանա, որ մենք այլևս ունակ չլինենք նույնիսկ դասախոսներ պատրաստելու, ովքեր կկարողանան կրթել հաջորդ սերունդը: Դեռևս ունենք: Ուրեմն էկո համակարգում առկա են և՛ բուհերը, և՛ առկա են հիմնական կենտրոնները: Ե՛վ չմոռանաք երրորդ բաղադրիչը՝ ՏՏ ընկերությունները, ովքեր շատ ակտիվ մասնակցում եմ ամեն տեսակի կրթական միջոցառումներին՝ սկսած Hour of Code, որտեղ 6-ից 18 տարեկան երեխաներին են սովորեցնում ծրագրավորել, վերջացրած տարատեսակ Internship-երով և մինչև անգամ սեփական ֆակուլտետների կամ մագիստրատուրաների հիմնմամբ, ինչպես օրինակ՝ «Սինոփսիս» ընկերությունն է հիմնել և այլ ընկերություններ էլ տարբեր հաջողություններ ունեն այդ բնագավառում: Առնվազն յուրաքանչյուր մեծ ընկերություն ունի Internship-եր: Internship-երի ընթացքում տրվում է գիտելիք, որը համապատասխանում է այդ ընկերության կարիքներին:

Անկեղծ եկեք լինենք, ոչ մեկ Internship-ի ընթացքում օպերացիոն համակարգեր կամ տվյալների կառուցվածքներ չի սովորեցնում: Բայց այն, ինչ սովորեցնում են՝ կարիքը ունեն: Այսինքն՝ այդ ուսանողը լավ հաջողություն ունենալու դեպքում, ունի մեծ հնարավորություն ընդունվել աշխատանքի: Ուղղակի այստեղ կա խնդրի մյուս կողմը, որ կարճաժամկետ այդպիսի լուծումներով գտած աշխատանքը պետք է ամրապնդվի նոր ու նոր գիտելիքի ձեռքբերմամբ՝ հենց աշխատանքային պրոցեսի ընթացքում: Լինի դա զուգահեռ կրթության հետ, թե արդեն կրթությունից հետո, ցանկացած ծրագրավորող պետք է անընդհատ աճի և դրա էկո համակարգը ևս կա: Հիմնականում ընկերությունները փորձում են, հենց նույն HelpSystems Armenia ընկերության օրինակով կարող ենք փաստել, և ոչ միայն մեզ մոտ, այլ շատ տեղերում խրախուսվում է աշխատողի աճը, անընդհատ աճը ու ոչ միայն խրախուսվում է, երբեմն դա արվում է նաև ստիպողաբար: Օրինակ՝ կրտսեր մասնագետների դեպքում, նրանք պարտավոր են աճել և եթե նրանք չաճեն, ապա միգուցե նրանք այլևս մրցունակ չեն:

Եվ այդ ամենը բերում է նրան, որ քիչ, թե շատ գործող համակարգ դեռևս կա: Մյուս կողմից՝ մենք ունենք շատ մեծ աշխատաշուկա, անընդհատ թափուր տեղեր, հազարավոր թափուր տեղեր կան: Ուղղակի այստեղ պետք է հասկանանք, որ միայն ծրագրավորող չեն, որ պահանջվում են: Մենք ունենք և՛ որակի ապահովման մասնագետների կարիք, և՛ համակարգային ադմինիստրատորների կարիք, և՛ DevOps մասնագետների, և՛ Digital Marketing-ի, և՛ շատ տարբեր, ծրագրավորման հետ կապ չունեցող, բայց՝ ՏՏ ոլորտի: Դա նույնիսկ կարող է լինել Product Owner կամ Scrum Master կամ HR մենեջեր։ Այսինքն՝ մասնագիտություններ, որոնք պահանջված են ՏՏ ոլորտում, առանց որոնց հնարավոր չէ պատկերացնել զարգացումը, բայց դրանք ծրագրավորում չեն: Այսինքն՝ պետք է ավելի լայն նայենք և կտեսնեք, որ շուկան անվերջին մոտ է: Այսինքն՝ անընդհատ նոր ընկերություններ են գալիս, որոնք անընդհատ ունեն թափուր տեղեր և պետք է համալրվեն ու աճեն և այդ պրոցեսն անվերջ գնալու է:

Էկո համակարգը կա։ Մյուս կողմը՝ համակարգի ուսանողներն են, այսինքն՝ մարդիկ, ովքեր պլանավորում են դառնալ ծրագրավող կամ ՏՏ ոլորտի մասնագետներ: Նրանք ևս կան, ինչպես հայտնի է Հայաստանում շատ մոդայիկ է, շատ տարածված է երեխային ուղարկել բուհ և այդ ավանդույթը կարծեք, թե դեռ շարունակվում է: Շատ մեծ քանակով ուսանողներ ունենք մենք, դեռ այդ հոսքը կա և այդ հոսքից միշտ հնարավոր է լինում ընտրել լավերին, այսինքն ՝ շերտավորվում է, ուսումնական պրոցեսի ընթացքում, շերտավորում ենք ստանում: Մի մասը դառնում են ամենալավ ծրագրավորողները, որոնք մի երկու տարի հետո գնում են տարբեր երկրներ, մի մասը՝ միջին կարգի ծրագրավորողներ, ովքեր շատ մեծ ներդրում են ունենում տարբեր ընկերություններում, միգուցե իրենց սեփական գործն են հիմնում, մի մասը դառնում են որակի ապահովման մասնագետներ, ադմինիստրատորներ, և այլն, և այլն... Պրոցեսը դեռևս ինքնավերարտադրվող է: Մենք կարծեք, թե բոլոր կոմպոնենտներն ունենք, որպեսզի այդ համակարգը գործի:

#6 -Ըստ քեզ, ո՞րն է լավ ծրագրավորողի կորիզը:

- Կարծում եմ, որ նախ պետք է մարդու մեջ լինի որոշակի նախադրյալ, հակումներ, ունակություններ, բայց միայն դրանով չենք ավարտում: Այսինքն՝ միայն տաղանդը քիչ է: Պետք է լինել նաև աշխատասեր, լավ ծրագրավորողը պետք է անընդհատ սովորի, պետք է անընդհատ տարբեր աղբյուրներից ձեռք բերի տարբեր գիտելիք, անհագ լինի, այսինքն՝ անընդհատ նոր ու նոր գիտելիք ձեռք բերի, բայց այդ գիտելիքի ձեռք բերման պրոցեսում կան կարևոր կոմպոնենտներ, որոնք հանկարծ չի կարելի աչքաթող անել և կոնկրետ լավ ծրագարավորողի դեպքում այդ կոմպոնետներից մեկը մաթ-կիբեռնետիկան է, այսինքն՝ գիտություն, որն ընկած է համակարգչային գիտության հիմքում, այսինքն՝ computer science ասածը, որը մեզ մոտ համապատասխանում է մաթ-կիբեռնետիկային: Դա գիտություն է, որն ընկած է մաթեմատիկայի և ծրագրավորման միջև, դա այն տեղն է, որտեղ առաջանում է այդ նոր մտածողությունը, օրինակ ՝ գոյություն ունի Թյուրինգի մեքենա, որը աբստրակտ, գոյություն չունեցող սարք է: Այսինքն՝ մենք միայն մտովի կարող ենք պատկերացնել այդ մեքենան: Այն ունի անվերջ հիշողություն, ինչն արդեն ասում է, որ գոյություն չունի և կարողանում է անել պարզագույն գործողություններ: Այդ հիշողության միջից կարողանում է կարդալ ինչ է գրված ինչ-որ հերթական բջիջում, ինչ-որ բանից ելնելով, ինչ-որ բան գրել այնտեղ և տեղաշարժել կարդացող-գրող գլխիկը: Եվ ծրագրավորել, լայն իմաստով լավ ծրագրավորող, նշանակում է կարողանալ Թյուրինգի մեքենան օգտագործել և լուծել քո խնդիրը: Դա բարդագույն մի պրոցես է, քանի որ ամենապարզ բանը նույնիսկ՝ թվի ներկայացումը Թյուրինգի մեքենայում, արդեն իսկ իրենցի ներկայացնում է պրոբլեմատիկ մի երևույթ: Օրինակ՝ 0-ն պետք է ներկայացնել 1-ի միջոցով, որովհետև 0-ն ընդհանրապես ոչինչ է, իսկ ոչինչը հնարավոր չէ ներկայացնել:

Երբ խորանում եք այսպիսի հարցերի մեջ և հասկանում եք այդ ամեն ինչը ու դուրս եք գալիս այդ վիճակից, առաջանում է նոր որակի մտածողություն, նոր մոտեցում աշխարհին: Աշխարհը սկսում է ուրիշ ձև ներկայանալ: Երբ մարդը հասկանում է Գյոդելի թեորեմը նրա կյանքը բաժանվում է երկու մասի: Մինչև թեորեմը և թեորեմից հետո, քանի որ այդ թեորեմը հասկանալու համար պետք է մի քանի տարվա գիտելիքի այդ բեռը ունենալ: Եվ երբ այդ ամեն ինչը ձեռք էս բերում, գալիս հասնում էս ու հասկանում, որ ինչի՞ այդպես էլ էր կարելի, այսինքն՝ նմանատիպ հարցերի են մարդիկ բախվում, ես՝ ինքս անձամբ, բախվել եմ նման հարցի, մտածում ես՝ ինչի՞ կարելի էր այսպիսի թեորեմ էլ ձևակերպել, կարելի էր այսպիսի հարցի մասին ընդհանրապես մտածել։ Եվ երբ տեսնում էս, որ մարդն արել է, լուծել է և ստացել է արդյունք, հասկանում էս, որ փաստորեն կարելի էր: Եվ շարունակաբար, տարիների ընթացքում հանդիպելով այդպիսի խնդիրներին, որոնց մասին նույնիսկ չէի էլ կարող, չէի համարձակվի մտածել, բայց մարդիկ նստել ու լուծել են, հասկանում ես, որ չկա սահման ուղղակի և այս զգացողությունը բերում է նրան, որ մարդն ազատ է, նա կարող է ստեղծագործել և տալ լուծումներ, ինչին, որ մենք ամենասկզբից արդեն իսկ եկել էինք, որ լավ ծրագրավորողը լուծում տվողն է, իսկ լուծում տվողը չպետք է վախենա խնդրից:

#7 -Վահրամ, դու շատ անդրադարձար ակադեմիական կրթությանը, ուզում էի քեզ հարցնել, քանի որ շատերը գտնում են, որ բուհական ու ակադեմիական կրթությունը պարտադիր չէ ծրագրավորողի համար, պարզապես անցնում են, քանի որ աշխատատուն պահանջում է բարձրագույն կրթություն կամ ընդունված է գնալ բուհ: Դու ի՞նչ էս կարծում, ինչքա՞ն կարևոր է ակադեմիական կրթությունը կոնկրետ ծրագրավորողների համար:

- Կարծում եմ, որ լավ ծրագրավորող դառնալու համար, դա պարտադիր է: Պարտադիր ոչ թե հենց համալսարան գնալն է, այլ պարտադիր է այն գիտելիքի բազմությունը, որը դեռևս կան համալսարանական ուսումնական պլաններում: Եվ կա ևս մի բան, որը բուհերը տալիս են, որի մասին մենք չենք խոսում: Դա համառություն է և արդյունքին հասնելու նպատակասլացությունը: Տեսեք՝ այնքան էլ հեշտ չէ տարեկան երկու անգամ անցնել այդ սեսիաների միջով, երբ քեզ ստիպում են հանձնել առարկաներից քննություններ, որոնց նույնիսկ նպատակը դու չգիտես: Քչերը գիտեն, թե մենք ինչու ենք անցնում դիֆերենցիալ հավասարումներ, ինչու ենք անցնում կոմպլեքս փոփոխականի ֆունկցիայի անալիզ, բայց պետք է հանձնել քննություն, ընդ որում՝ քննությանը շատ չոր են մոտենում, շատ հստակ պետք է կարողանալ գրել տեսական հարց, լուծել խնդիր և շատ մարդկանց համար դա պարզապես փորձություն է և մի քանի անգամ կրկնվող այդ պրոցեսների միջով անցնելով, մարդկանց մոտ ձևավորում է որոշակի ունակություն, որքան էլ դա լինի դառը փորձի վրա հիմնված, բայց մարդկանց մոտ առաջանում է այդ ունակությունը, այդ զգացողությունը, որ բավականին անհաղթահարելի բաներ՝ լինում է հաղթահարել: Եվ չի կարելի թևաթափ լինել, որովհետև վերջում դիպլոմ չեն տա, այսինքն՝ եթե ես կիսատ թողնեմ, ապա դիպլոմ չեմ ստանա, ինչի համար, որ եկել էի այդ բուհը: Ստացվում է, որ այդ երկու կոմպոնենտն էլ բուհերում առկա են: Այդ պատճառով հենց բուհերը շատ լավ օգնում են ծրագրավորողի կայացման գործում: Չմոռանանք, որ բուհական ուսումնական պլաններում առկա են բավականին լավ առարկաներ, որոնք իրոք բերում են շատ լավ արդյունքների: Այստեղ կա որոշակի ինտերակտիվության հարցը, այսինքն՝ պետք է լինել աշխատաշուկայի հետ ավելի սերտ համագործակցության մեջ և ավելի արագ փոփոխել որոշ կոմպոնենտներ այդ ուսումնական պլաններում: Բայց կան ֆունդամենտալ բաներ, որոնք պետք չէ փոփոխել, որոնք ասենք հարյուրավոր տարիներ կան, օրինակ՝ մաթեմատիկան, որպես այդպիսին, բայց այստեղ կա որակի հարցը: Հաճախ մարդիկ բուհերից հիասթափվում են որակի պատճառով. դասախոսի որակը կլինի դա, թե իր համակուրսեցիների որակը: Հիմա բուհերը որակի վրա չեն աշխատում: Բուհերն աշխատում են մեծ զանգվածի վրա: Եվ ինչքան հնարավոր է շատ գումար վաստակելու ուղղությամբ են իրենց ջանքերը: Արդյունքում՝ ունենում ենք դասախոսներ, որոնք այդքան էլ չեն համապատասխանում այսօրվա կարիքներին: Մարդիկ, ովքեր ժամանակին ունեցել են մեծ հաջողություններ, բայց միգուցե, պետք էր իրենց փոխարինել մի 20 տարի առաջ: Երբ լավ ուսանողը տեսնում է իր կողքին նստած ոչ նպատակասլաց մարդու, իր խմբում, իր կողքին, դա վատ ազդեցություն է թողնում ողջ կուրսի վրա: Երբ տեսնում է, որ մարդ չսովորելով, ամբողջ օրը բուֆետում անցկացնելով, ինքն էլ է հանձնում քննություններ, ի վերջո ստանում է դիպլոմ: Եկեք անկեղծ լինենք, դիպլոմի մեջ գնահատակնները չկան հենց, դա առանձին թուղթ է՝ դիպլոմի միջուկ, որի վրա գրված են գնահատականները: Դիպլոմն ինքն իրենով պարզապես փաստում է, որ դուք ունեք բարձրագույն կրթություն, իսկ թե ինչ գնահատականներ եք ստացել և առավել ևս ինչի միջով եք անցել, ինչ պրոցես է եղել այդ ձեր ուսումնական պրոցեսը, դիպլոմը չի արտացոլում: Եվ արդյունքում՝ ստանում ենք երկու հոգու, որոնցից մեկը աշխատասեր, քրտնաջան, լավ նպատակներով և լավ սովորող մարդ էր ունի դիպլոմ և մեկին, ով ընդհանրապես հակատեսակն է, բայց նա ևս ունի դիպլոմ: Ինչը բավական արժեզրկում է հենց դիպլոմը: Եվ այն, ինչ ունենք հիմա, ինչ անում են բուհերը, տարել է մեզ արդեն և հասցրել է այնտեղ, որ դիպլոմի առկայությունը շատ կասկածելի է: Այսինքն՝ ինչ է տալիս դիպլոմի առկայությունն այս պահին ծրագրավորողի թեկնածուին, միգուցե՝ ոչինչ: Պարզապես դեռևս այդ ավանդույթի ուժի շնորհիվ մարդիկ գնում են, ստանում են այդ դիպլոմը: Բայց եկեք հասկանաք, որ եթե մենք այդ մի քանի հարցը լուծենք, օրինակ՝ ուսանողների որակը բարձրացնենք, այսինքն՝ ստորին շեմը ավելի բարձր լինի և դասախոսների հետ աշխատանք տարվի, որպեսզի դասախոսներն էլ լինեն որակյալ, ապա հնարավոր է մենք ունենանք այն բուհական համակարգը, որը պետք է բավարար լինի՝ արդեն որակյալ կադրեր պատրաստելու գործում:

#8 -Եվ վերջում, ի՞նչ խորհուրդ կտաս ապագա ծրագրավորողին:

- Ապագա ծրագրավորողը լավ կլինի, որ կողմնորոշվի, թե ծրագրավորման այդ տարատեսակ ուղղություններից, որում է իրեն ավելի շատ տեսնում: Հիմա իրավիճակը շատ ավելի բարդ է այն առումով, որ ապագա մասնագետի այդ կողմնորոշման հարցը մի տեսակ շատ մեծ ընտրությունից է կախված: Այսինքն՝ ընտրությունն այնքան մեծ է, որ եթե ուղղակի փորձեք ամեն ինչ ծածկել, դա ամբողջ կյանքը կտանի և այդպես էլ մասնագետ չեք դառնա: Սկսնակ ծրագրավորողը լավ կանի կողմնորոշվի իրեն ինչն է հետաքրքրում՝ mobile ծրագրավորումը, web ծրագրավորումը, արհեստական բանականությունը կամ մեքենայական ուսուցումը, թե մեծ տվյալների հետ աշխատանքի մեկ այլ մոտեցում, թե նրան հետաքրքիր է Internet Of Things-ը, թե նրան հետաքրքիր է Կրիպտո աշխարհը, Blockchain-երը և այլն: Իհարկե, կա որոշակի մինիմալ ֆունդամենտալ գիտելիք, որը բոլոր դեպքերում պետք է, բայց սպեցիֆիկ գիտելիքը շատ մեծ է և պարզապես փորձելով ամեն ինչ ծածկել, այդպիսով ոչ մի լավ արդյունքի չենք գա: Լավ կլինի, որ հենց սկզբից կողմնորոշվի, թե իրեն որն է ավելի հետաքրքիր, ձեռք բերի ֆունդամենտալ գիտելիքը, որը պարզապես ընդհանուր լավ մասնագետի կայացման ֆունդամենտն է՝ պլատֆորմը և դրա վրա կառուցի իր ուղին, իր նախընտրած ուղղության մեջ:

Բայց պետք է այստեղ ուշադիր լինել, որովհետև մի քանի տարի տևող այդ ուսումնական պրոցեսի ընթացքում կարող է պարզվի, որ արդեն առաջացել են նոր ուղղություններ, որոնք էլ ավելի հետաքրքիր ու գրավիչ են, կամ այդ հին ուղղություններից ինչ-որ մեկը դուրս է եկել մոդայից և մարդիկ այլևս դրանով չեն հետաքրքրվում: Այսինքն՝ պետք է ամեն օր, նոր, սկսնակ մասնագետը նայի և ուշադիր լինի, թե դեպի ուր է գնում աշխատաշուկան, որովհետև ի վերջո նրա նպատակն է մի քանի տարի անց հայտնվել այդտեղ: Կարծում եմ՝ այսքանը, սկսնակ և ապագա ծրագրավորողների համար:

- Շնորհակալություն Վահրամ հետաքրքիր հարցազրույցի համար:

- Սա մեր առաջին էպիզոդն էր և այս թեման, որը մենք այսօր ծածկեցինք ավելի շատ իմ ջանքերով, հետագայում կզարգացվի մեր հյուրերի միջոցով և տարբեր էլի մանրամասն դեպքեր ավելի լայն բացված կգրվեն: Հետևեք մեր Փոդքասթին, հետևեք զարգացմանը և եղեք տեղեկացված: