Ինչպե՞ս չդառնալ ծրագրավորող

Ուղեցույց բացարձակ սկսնակների համար կամ 9 փաստ, որոնք խեղաթյուրված են ՏՏ կրթական սեգմենտում

Վարդան Գրիգորյան
Picsart Academy
9 min readNov 13, 2022

--

Որպես համապարփակ ուղեցույց սկսնակների համար, կարող եք դիտել հոլովակ այն մասին, թե Ինչպես հաջողել տեխնիկական հարցազրույցները https://youtu.be/mpdg5rk8OXo։

Տեղեկատվական տեխնոլոգիաների ոլորտը միշտ գրավիչ է եղել սկսնակների համար։ Վերջին տարիներին աննախադեպ աճի արդյունքում գրավիչ են դարձել զանազան ծրագրավորման լեզուներն ու շատերը ձգտում են մուտք գործել ՏՏ ոլորտ՝ ամենահարմարավետ աշխատանքային պայմանները վայելելու համար՝ սկսած բարձր վարձատրությունից (երբեմն շուկայականից բազմակի շատ), վերջացրած բազմաթիվ արտոնություններով՝ ինչպիսիք են առողջական ապահովագրությունը, մարզասրահների անվճար կամ փոխհատուցված անդամակցությունը, զանազան միջոցառումներին ու կոնֆերանսներին մասնակցելը և այլն։

Սկսնակներին ուղղորդող տեսադարանը կարող եք տեսնել հղումով.

Այս հոդվածում կփորձենք պարզաբանել, թե ինչպես բացարձակ սկսնակին դառնալ լավ, մրցունակ ծրագրավորող և վայելել բոլոր թվարկված առավելությունները։ Հոդվածը կսկսենք թվարկելով և ջախջախելով միֆերն ու սխալ մոտիվները, որոնք պարուրում են ՏՏ ոլորտը և երբեմն մոլորեցնում սկսնակներին։ Իհարկե, հոդվածում նաև նրբորեն ակնարկում ենք Picsart Academy-ի դերն ու էապես տարբերվող կրթական մոդելը։ Մինչդեռ դիմորդներն ուզում են արագ սովորել և մասնագիտանալ, մենք պնդում ենք դանդաղ և հիմնովին կրթվելու կարևորությունը։ Մինչդեռ ուսանողները կենտրոնանում են հավաստագրերի ու վկայականների վրա, մենք պնդում ենք գործնական փորձ ձեռք բերելու անհրաժեշտությունը։ Մինչդեռ ուսանողներն անհամբեր են, թե երբ կսկսվեն JavaScript-ի և React.js-ի դասերը, մենք առաջնահերթ ենք համարում համակարգչային ճարտարապետության, համակարգային ծրագրավորման, բազմահոսք ծրագրավորման, ցանցային ծրագրավորման, նախագծման հմտությունների, ալգորիթմների և Computer Science մի շարք այլ ենթաոլորտների ուսումնասիրության կարևորությունը։

Ծրագրավորումը հնարավոր է սովորել ինքնուրույն

Ընդհանրապես պարտադիր չէ հաճախել որևէ ուսումնական կենտրոն։ Համացանցում կան բազմաթիվ կրթական նյութեր, որոնք առավել քան բավարար են ինքնակրթման համար։ Կարևոր է միայն նպատակասլացությունն ու ճիշտ թեմաների հաջորդական ուսուցումը։ Ուսումնական կենտրոններն այդ գործում կարող են հանդիսանալ ուղեցույցներ, սակայն ընտրության հարցում սկսնակին բարդ է կողմնորոշվել, թե որ կրթական կենտրոնն է հնարավորինս համապատասխանում լավ ծրագրավորող կրթելու պահանջներին։ Իսկ ուսումնահետազոտական կենտրոնները (օրինակ՝ Picsart Academy) բացի ուղեցույցից տրամադրում են նաև միջավայր, հետևողականություն և գործնական հմտություններ։

Ալարկոտությունը ստիպում է մեզ ընտրել 2 ամիս տևողությամբ դասընթացը՝ բարձր վարձատրվող աշխատանքի ակնկալիքով՝ ի վնաս երկարատև և տարիներ տևող հիմնովին կրթությանը։

Ծրագրավորման լեզուն կարևոր չէ

Շատ բարդ է պայքարել ՏՏ ոլորտի կրթական սեգմենտում տիրող թյուրիմացությունների դեմ, ինչպես նաև բարդ է առաջ տանելը խորը ինժեներական կրթության կարևորությունը։ Մարդիկ սիրում են արագ արդյունքներ. դրան են նպաստում նաև մի քանի վայրկյանանոց հոլովակները, որոնք հեղեղել են սոցիալական հարթակները։ Ալարկոտությունը ստիպում է մեզ ընտրել 2 ամիս տևողությամբ դասընթացը՝ բարձր վարձատրվող աշխատանքի ակնկալիքով՝ ի վնաս երկարատև և տարիներ տևող հիմնովին կրթությանը։ Շատ հաճախ արագ արդյունքի ձգտողներն ընկնում են տարիներ տևող ցիկլի մեջ՝ չզարգանացնելով գիտելիքները, չստեղծագործելով, պորտֆոլիո չհավաքելով, այլ «անվերջ» աշխատանքի փնտրտուքների մեջ են, երբեմն ակնհայտ բողոքելով՝ սկսնակներին հնարավորություն «չընձեռող» ՏՏ ոլորտից։

Սկսնակներին այս հարցում շատ է խանգարում շուկայի սխալ ուսումնասիրությունը, աշխատանքի հայտարարությունների սխալ ձևակերպումը և տարատեսակ «այս պահին պահանջված լեզուների ցանկերը» կամ դասակարգումներն ըստ օգտագործման։ Գաղտնիք չէ, որ Հայաստանում դոմինանտ է վեբ ոլորտը, ինչի արդյունքում սկսնակների համար քիչ գրավիչ են դառնում կամ հետին պլան մղվում համեմատաբար ավելի ինժեներական թեքումները (չիպերի նախագծում, խաղերի ծրագրավորում կամ ցանկացած ուղղություն, որը կպահանջի խորը գիտելիքներ, ինչպես նաև ցանկալի ֆիզիկամաթեմատիկական թեքում)։ Շուկայի սխալ ուսումնասիրությունն ու աշխատանքի հայտարարությունների սխալ ձևակերպումները հանգեցնում են սկսնակների մոտ թյուրըմբռման այս կամ այն կոնկրետ լեզվի կամ ֆրեյմվորկի հանդեպ առաջացնելով խիստ տրամադրվածություն։ Օրինակ՝ «պահանջվում է React.js ծրագրավորող» արտահայտության մեջ, «ծրագրավորող» բառին խորապես չվերաբերելով, սկսնակներն անմիջապես փնտրում են React.js դասընթացներ կամ կենտրոնանում հենց React.js ֆրեյմվորկի ուսումնասիրության վրա։ Մինչդեռ անհրաժեշտ են բավարար գիտելիքներ անմիջապես օպերացիոն համակարգի աշխատանքից, բազմահոսք ծրագրավորումից, միգուցե նույնիսկ ասեմբլերի իմացության թեկուզ քիչ, բայց բավարար մակարդակ, բրաուզերի աշխատանքի մասին լավ պատկերացում, ցանցային ծրագրավորման դետալների իմացություն, JavaScript-ի խորը գիտելիքներ, այդ թվում՝ engine-ի մասին բավարար պատկերացումներ։ Փոխարենը կենտրոնանում են հենց React.js ֆրեյմվորկի և պարզագույն մի քանի ուսումնական նախագծերի վրա։

սկսնակ ծրագրավորողն ապրում է իր առաջին մասնագիտական/ուսումնական շոկը

Արդյունքում, նույնիսկ անցնելով աշխատանքի, շատ շուտ սկսնակը բախվում է իրականությանը, երբ կարիք է լինում օգտագործել Web Workers (բազմահոսք ծրագրավորման մասին պատկերացում չունենալով), Web Assembly (լեզվի տեսության, համակարգչային ճարտարապետության, ասեմբլերի բացակայող կամ ոչ բավարար իմացության ֆոնին), WebSockets (ցանցային ծրագրավորման դետալներ չիմանալով) և նմանատիպ բազմաթիվ օրինակներ, չթվարկելով ծրագրային ապահովման նախագծման սկզբունքներն ու շաբլոնները, որոնք ակամայից կիրառվում են ցանկացած համակարգում (բազմաչարչար SOLID-ներն ու Singleton, Factory-ները)։

Այսպես, բախվելով խնդիրների ու թեմաների, որոնց մասին առաջին անգամ պատկերացում է կազմում, սկսնակ ծրագրավորողն ապրում է իր առաջին մասնագիտական/ուսումնական շոկը։ Մինչդեռ նրան հավաստիացրել էին, որ JavaScript-ի սակավ իմացությամբ և React-ով որևէ նախագիծը բավարար է աշխատանք գտնելու համար: Իրական ինժեներական աշխարհում, անկախ նրանից ինչ ոլորտում ես, վեբ, մոբայլ, թե չիպերի նախագծում, այսպես թե այնպես բախվում ես անմիջապես Computer Science-ի գրեթե բոլոր ենթաոլորտներին։

Պետք չէ դառնալ ծրագրավորող միայն բարձր վարձատրվող աշխատանքի համար

Չնայած շատ ուսումնական կենտրոններ գովազդների առաջխաղացման համար փորձում են շահարկել ՏՏ ոլորտում բարձր (երբեմն՝ գերբարձր) աշխատավարձերն ու անհոգ կարիերան՝ իրական ինժեներ-ծրագրավորողի կայացման գործընթացում գումարը երբեք առաջնային մոտիվացիա չի եղել և չի կարող լինել։ Չսիրելով, խորապես չսուզվելով ծրագրավորման մեջ, չզգալով ստեղծագործական էությունը հնարավոր չէ կայանալ ոլորտում որպես մրցունակ մասնագետ։ Կան իհարկե դեպքեր, երբ մի քանի ամիս տևած դասընթացների մասնակցած ուսանողներ «կախարդական կերպով» կարողանում են գտնել իրենց առաջին աշխատանքը ոլորտում։ Բայց սրանք բացառիկ դեպքեր են, որոնք հաճախ մոլորեցնում են բացարձակ սկսնակներին ճիշտ որոշումներ կայացնելու գործում։ Տնտեսական ցանկացած ճգնաժամից կամ տատանումներից հետո սովորաբար տուժում են հենց այն ծրագրավորողները, որոնք բավարար խորությամբ չեն տիրապետում մասնագիտությանը (եթե հնարավոր է դա անվանել մասնագիտություն, այլ ոչ՝ արվեստ)։ Ճիշտ որոշումներ կայացնելը ենթադրում է խորությամբ տիրապետել ծրագրավորմանը՝ թաթախվելով անմիջապես համակարգչային գիտության մեջ, հմտանալով ծրագրավորման մեկ կամ մի քանի լեզուներում, տիրապետել գործիքակազմին, ունենալ գրավիչ պորտֆոլիո։ Այս է պատճառը, որ Picsart Academy-ում կրթական մոդելում ունենք Atlas ծրագիրը (համանուն մոդելով)։

միշտ կլինեն հաճախորդներ, որոնք հավատում են կախարդական դեղահաբին, որը խմելով հնարավոր կլինի դառնալ ծրագրավորող սուպերհերոս

Ծրագրավորում սովորելը հեշտ չէ

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

Ծրագրավորում սովորելը հեշտ չէ, իսկ ծրագրավորումն ընդամենը մեկ համեմատաբար հանրահայտ ծրագրավորման լեզուն չէ։ Լեզուն բազմաթիվ գործիքներից մեկն է, որն օգտագործում են ծրագրավորողները առօրյա ստեղծագործական խնդիրները լուծելու համար։ Ծրագրավորման ամբողջ սպեկտրը ընկալելու և որպես մասնագետ կայանալու համար խիստ անհրաժեշտ է հենց Computer Science, ինչն էլ անդադար բարձրաձայնում ենք Ակադեմիայում:

Ավարտելով ուսումնական կենտրոնը դեռ պատրաստ չեք աշխատանքին

Ծրագրավորման ոլորտը հագեցած է բազմաթիվ տեխնոլոգիաների, լեզուների, ֆրեյմվորկների օգտագործմամբ. այդ ամենի հետ մեկտեղ ՏՏ ընկերությունները շատ դեպքերում ունեն հստակ սահմանված աշխատանքային գործընթացներ և գործիքներ, որոնց տիրապետումն էլ ավելի կարագացնի սկսնակի մուտքը։ Շատ դեպքերում սկսնակները տիրապետում են ընդամենը մեկ լեզվի և հմտացել են պարզ ուսումնական խնդիրների լուծման մեջ, մինչդեռ աշխատավայրում անհրաժեշտ են մի շարք գործիքների իմացություն և հաճախ խորը գիտելիքներ ոլորտից կամ ենթաոլորտից, որոնց միջոցով ծրագրավորողը կկատարի աշխատանքային պարտականությունները։ Շատ դեպքերում սկսնակից պահանջում են նման գործիքների հետ գործնական հմտություններ ևս։ Այդ է պատճառը, որ ակադեմիայում անցկացնում ենք մոդուլներ Linux միջավայրում աշխատելու, git գործիքի հետ աշխատելու, build autoamtion-ի ընդհանուր պատկերացում ու կիրառական հմտություններ ունենալու համար։

Տնտեսական ճգնաժամերն ու շուկայական ցնցումները չեն ազդում լավ մասնագետների վրա

Սա չգրված փաստ է. լավ մասնագետը միշտ պահանջված է։ Իհարկե, խոսքը չի գնում կրիտիկական ճգնաժամերի մասին, երբ ամբողջ աշխարհն է կանգնած մեծագույն խնդիրների, պատերազմների կամ այլմոլորակայինների հարձակման առջև։ Մնացած դեպքերում նույնիսկ ընթացիկ կարճատև (1–3 տարի) տևող ճգնաժամերը բացասական չեն անդրադառնում լավ մասնագետների վրա։ Լավ մասնագետ ասվածը կսահմանենք որպես մասնագետ, ով իր առջև դրված խնդիրները լուծում է անկախ համացանցում դրանց առկայությունից։ Ով ի վիճակի է ստեղծագործել, փնտրել զանազան գրքերում, կապել մի քանի դրույթներ միմյանց հետ, փորձարկումներ անել ու դուրս բերել ամենայուրահատուկ լուծումները։

Աշխատանքի հարցազրույցներում կարևորվում է հիմունքային կրթությունը

Հարցազրուցավարներից շատերին հետաքրքիր չէ JavaScript-ի, Python-ի կամ նույնիսկ C++-ի խիստ նեղ ֆունկցիոնալի նկարագրությունն ու աշխատանքի նրբությունները։

Փոխարինելի մասնագետները կառչում են կոնկրետ լեզվին կամ ֆրեյմվորկին, մինչդեռ լավագույն մասնագետներն ունեն ամուր հիմունքային կրթություն՝ անմիջապես համակարգչային գիտությունից (Computer Science), իսկ կիրառական տեխնոլոգիաներն ադապտացնում են ըստ անհրաժեշտության։

Իհարկե, չենք բացառում ծրագրավորման լեզվի հոյակապ իմացությունը, բայց առավելապես կարևորվում է հենց հիմունքային կրթությունը, ալգորիթմական մտածելակերպը, խնդիրներին էֆեկտիվ լուծումներ տալու կարողությունները, համակարգչային համակարգերի ցածր մակարդակի աշխատանքի դետալները։ Սրանք գիտելիքներ ու հմտություններ են, որոնք երկար տարիներ կծառայեն ձեզ, իսկ արդեն ծրագրավորման նոր լեզուներ, ֆրեյմվորկներ ու գրադարաններ հնարավոր է սովորել անմիջապես աշխատավայրում։ Շատ ծրագրավորողներ նույնիսկ օգտագործում են այլ ծրագրավորման լեզուներ նոր աշխատավայրում։ Դուք կարող եք ծրագրավորել C++-ով երկար տարիներ, բայց անցում կատարեք Java-ին՝ կախված գործատուից կամ նոր նախագծից։ Հենց անցում կատարելու ճկունությունն է ձեզ առանձնացնելու ոչ այնքան լավ մասնագետներից։ Փոխարինելի մասնագետները կառչում են կոնկրետ լեզվին կամ ֆրեյմվորկին, մինչդեռ լավագույն մասնագետներն ունեն ամուր հիմունքային կրթություն՝ անմիջապես համակարգչային գիտությունից (Computer Science), իսկ կիրառական տեխնոլոգիաներն ադապտացնում են ըստ անհրաժեշտության։

Համալսարանական դիպլոմը կարևոր է, բայց պարտադիր չէ

Շատ ՏՏ ընկերություններ դեռևս կարևորում են բարձրագրույն ուսումնական հաստատության դիպլոմը։ Ցանկալի է դիմորդը լինի ԲՈՒՀ-ի ուսանող կամ շրջանավարտ։ Այդ կերպ ընկերությունը վստահ է, որ դիմորդը կունենա այն բազային գիտելիքները, որոնք կարևոր են։ Գործատուի համար շատ ավելի կարևոր է աշխատանքի թեկնածուն ի վիճակի լինի տալ ստեղծագործական լուծումներ խնդիրներին, քան JavaScript-ի reduce() ֆունկցիայի ամբողջական շարահյուսությունն իմանալը։ Նույնիսկ եթե լեզուն գիտեք շատ լավ, դա չի նշանակում, որ կկիրառեք այն ճիշտ։ Այս է պատճառը, որ որոշ գործատուներ դեռևս կարևորում են համալսարանական դիպլոմը (հենց ոլորտին առնչվող), սակայն սա չի բացառում լինել ինքնուս, ու, չունենալով համապատասխան դիպլոմ, այնուամենայնիվ սովորել հենց հիմունքային թեմաները Computer Science-ից։ Բարեբախտաբար համացանցում անսպառ ռեսուրսները տալիս են բոլոր հնարավորությունները ճիշտ ինժեներական կրթություն ստանալու, իսկ եթե ձեզ անհրաժեշտ է պլանավորված ուսումնական պլան և խիստ վերահսկողություն, ապա իհարկե, կարող եք ընտրել հենց խորը ինժեներական կրթության վրա շեշտ դնող ուսումնահետազոտական կենտրոններ, օրինակ՝ Picsart Academy։

JavaScript-ով անօդաչու չես ծրագրավորի

Չնայած JavaScript-ն էլ Python-ն էլ վերջերս ամենատարածված ծրագրավորման լեզուներից են, միևնույնն է կա հսկա խնդիրների բազմություն, որոնք լուծելու համար ծրագրավորողը ստիպված է իջնել ավելի ցածր մակարդակ։

բարդ կամ ձանձրալի թեմաները չեն ապահովում բազմաթիվ «լայքեր» և «դիտումներ» համացանցում, հետևաբար կրթական նյութերի ստեղծողները ևս աչքաթող են անում կարևորագույն թեմաները և սկսնակները ՏՏ ոլորտին ծանոթանում են մեծամասամբ սխալ աղբյուրներից

Շատ դեպքերում իրական ինժեներ-ծրագրավորողը պետք է ի վիճակի լինի հստակ պատկերացնել, թե ինչպես են աշխատում համակարգչային համակարգերը, ինչպես է կառուցված և ինչ գործառույթներ ունի օպերացիոն համակարգը, ինչպես կիրառել էֆեկտիվ տվյալների կառուցվածքներ և ալգորիթմներ խնդիրների լուծման համար։ Սրանք և շատ նմանատիպ թեմաներ հաճախ բաց են թողնվում սկսնակների կողմից, որովհետև որոշ դեպքերում ձանձրալի են կամ բարդ, իսկ բարդ կամ ձանձրալի թեմաները չեն ապահովում բազմաթիվ «լայքեր» և «դիտումներ» համացանցում, հետևաբար նյութերի ստեղծողները ևս աչքաթող են անում կարևորագույն թեմաները և սկսնակները ՏՏ ոլորտին ծանոթանում են մեծամասամբ սխալ աղբյուրներից, որոնք պնդում են, որ ծրագրավորող կարող են դառնալ բոլորը. բավական է 2 ամիս ծախսել այս պահին հանրաճանաչ որևէ լեզվի վրա, օրինակ՝ JavaScript։ Այսպես, շուկան գերլցվում է բազմաթիվ թերուս coder-ներով, որոնք տիրապետում են JavaScript-ի բազային շարահյուսությանն ու փնտրում են աշխատանք։ Պարզապես այս սկսնակներն ընդամենը տեղեկատվության խիստ պակաս ունեն և չգիտեն, թե ինչ է իրականում ծրագրավորումը և ինչու է կարևոր հենց Computer Science-ը։ Անկախ ամեն ինչից, սկսնակները բախվելու են Computer Science-ի կիրառական կարևորությանը հենց աշխատավայրում։ Այս և այլ հարցերի շուրջ երկար մտորումների արդյունքն է Picsart Academy-ի մեծ կրթական մոդելը, որը բավարարում է սկսնակներին և փորձառուներին՝ անմիջապես կենտրոնանալով հենց խորքային ինժեներական կրթության բացերի վրա։

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

--

--