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

Հիմնական թեմաներ՝
- Ի՞նչ գիտելիքներ պետք է ունենա սկսնակ ծրագրավորողը սկսելու համար։
վեբ մշակում? - Ի՞նչ են գործատուները ակնկալում մշակողներից։
- Ի՞նչ անել առանց փորձի աշխատանք գտնելու համար։
- Ինչպե՞ս կարող է Python ծրագրավորողը զարգանալ։
Python Junior Podcast-ը ծրագրավորման պոդքաստ է նրանց համար, ովքեր ցանկանում են ավելի լավ հասկանալ Python-ը։ Հեռարձակումները վարում են համայնքային ավետարանիչները։ և դասընթացավարներ .
Զրույցը ներառում էր.
- Վալենտին Դոմբրովսկի,MoscowPython-ի համահիմնադիր
- Զլատա Օբուխովսկայա, NVIDIA թիմի ղեկավար
- Գրիգորի Պետրով, Մոսկվայի Պիթոն Ավետարանիչ
- Ալեքսեյ Շտիրնյաև, FinEx-ի մշակող, Learn դասընթացների դասախոս
Python
Ինչու է Python-ը լավ վեբ մշակման համար
Վալենտին Դոմբրովսկի. Ինչո՞ւ է Python-ը հարմար վեբ մշակման համար։ Ինչո՞ւ չէ, օրինակ, PHP կամ JavaScript:
Գրիգորի Պետրով. Դե, իսկապես շատ ընտրություն չկա։ Չնայած այն հանգամանքին, որ ժամանակակից վեբում հնարավոր է կառուցել մեկ էջանոց հավելված կամ պրոգրեսիվ վեբ հավելված գործնականում առանց backend-ի՝ միայն frontend տեխնոլոգիաների վրա, JavaScript-ի վրա այն դեռևս չափազանց բարդ է, վատ ինդեքսավորված և պահանջում է հիանալի մշակողներ։
Եթե մենք ուզում ենք ստեղծել կայք կամ ծառայություն, մենք օգտագործում ենք համակցված մոտեցում. մենք ունենք որոշակի backend, որը իրականացնում է տրամաբանությունը և ստեղծում է վեբ էջեր, և որոշակի frontend, որը նկարում է այդ վեբ էջերը զննարկիչում։ Եվ երբ մեզ անհրաժեշտ է արագորեն այս ամենը հավաքել ինչ-որ բանի վրա, ապա ընտրությունը մեծ չէ։
Եկեք նայենք հնարավոր տարբերակներին։
- C#. Microsoft-ը իսկապես հիանալի է, նրանք ստեղծել են .NET Core-ը և ամեն կերպ գովազդում են այն։ Բայց, նախ, սա նոր խաչաձև հարթակային տեխնոլոգիա է, և այնտեղ դեռ ամեն ինչ հարթ չէ։ Երկրորդ, այն շատ թանկ է, C# մշակողները քիչ են՝ պարզապես որովհետև այն տարածված չէ։
- Java- ն Դա բարդ է։ Java-ում սովորական կայք ստեղծելը Python-ի պես 10 տող կոդ չէ։ Դա շատ կոդ է, դա շրջանակներ են, և դուք պետք է իմանաք Java սերվերների կարգավորման առանձնահատկությունները։ Ընդհանուր առմամբ, դա ուրիշ բան չէր, բացի ցավից ու տառապանքից։
- PHP- ը: Վերջին տարբերակներում այն հիանալի է։ Ես նույնիսկ կասեմ հետևյալը. PHP 7.2-ը ոչնչով վատ չէ, քան Python-ը։ Բայց դուք չեք կարող պարզապես գնալ և օգտագործել PHP 7.2-ը։ Եթե սովորական, ոչ լավագույն մշակողը կայք ստեղծի PHP-ով, նա չի գրի միայն 7.2-ով. նա դեռ պետք է կարդա որոշ դասագրքեր, ձեռնարկներ, ամենուրեք շատ հին կոդ կա, և սա այնքան էլ լավ չէ։
- JavaScript և Node.js։ Հիանալի է և շատ ժամանակակից՝ ունենալ մեկ լեզու և՛ առջևի, և՛ հետին պլանում։ Պարզապես շատ կայուն չէ։ Node.js-ը հիանալի բան է, բայց դժվար է այն տեղակայել արտադրության մեջ առանց խափանումների և հուսալի աշխատանքի։ Բացի այդ, եթե մենք ուզում ենք գրել որակյալ JavaScript կոդ, մեզ JavaScript պետք չէ, մեզ TypeScript է պետք։ Բայց TypeScript-ը անսպասելիորեն բարդ է, և միջին մշակողի ուղեղը եռում է այն տեսնելիս։
Եկեք բաց թողնենք Ruby-ն, Haskell-ը, Erlang-ը և այլ նիշային բաներ, և մեզ մնում է... Python-ը։ Լեզու՝ հետևողական շարահյուսությամբ, միասնական ստանդարտ գրադարանով, լավագույն փաստաթղթավորմամբ, հանրաճանաչ թեթև շրջանակներով և մեգահռչակ Django harvester-ով։
Պարզվում է, որ, չնայած ամենալայն ընտրությանը, եթե մենք ունենք սովորական, ոչ թե լավագույն ծրագրավորողներ, մենք սովորական բիզնես ենք, որը ցանկանում է պատրաստել սովորական կայքեր, մենք չունենք 50 հոգանոց ծրագրավորման բաժին, ապա մենք վերցնում ենք Python:
Ի՞նչ գիտելիքներ են անհրաժեշտ մասնագիտությանը մուտք գործելու համար
Զլատա Օբուխովսկայա. Ես կարծում եմ, որ դուք պետք է լավ իմանաք մեկ շրջանակը և իմանաք, թե ինչ կան մյուսները և երբ են դրանք օգտագործվում։ Որտե՞ղ է Տորնադոն, որտե՞ղ է Ջանգոն, որտե՞ղ է Ֆլեսկը, որտե՞ղ է aiohttp-ը և այլն։
Օգտակար է իմանալ, որ գոյություն ունի այնպիսի բան, ինչպիսին է արձանագրությունները։ Մասնավորապես, http արձանագրության իմացությունը կենտրոնական նշանակություն ունի վեբ հավելվածներ կառուցելու համար։
Դուք նաև պետք է ունենաք առնվազն մոտավոր պատկերացում այն մասին, թե ինչպես է կառուցված վեբ նախագծերի առջևի մասը՝ ինչ են HTML-ը, CSS-ը և JS-ը։
Ալեքսեյ Շտիրնյաև. Եվ իմացեք, թե որտեղ են փաստաթղթերը։ Սա ամենակարևորն է։
Գրիգորի Պետրով. Ահա մենք շատ անկայուն հողի վրա ենք ոտք դնում։ Եթե մենք անհաջողակ լինենք և սկսենք լրջորեն ուսումնասիրել ժամանակակից frontend-ը, այն մոտ 10 անգամ ավելի դժվար կլինի, քան Python-ի backend-ը։ Սկսնակ մշակողը պետք է սահմանափակի իր կենտրոնացումը, որպեսզի կարողանա սկսել HTML սովորել, բայց չխորտակվի այս բոլոր div-ների, span-ների, float-ների, այն բանի մեջ, թե ինչպես է ամեն ինչ դասավորված և կառուցված։
Ալեքսեյ Շտիրնյաև. Անհրաժեշտ է Bootstrap-ի բազային դասընթաց։ Եվ HTML-ի հիմունքները։
Առաջին տարում դուք չպետք է խորանաք JS framework-ների մեջ (եթե կենտրոնանում եք backend-ի վրա): Bootstrap-ի հիմնական դասընթացն արդեն ունի պատրաստի մոդուլներ. եթե սլայդեր եք ուզում, սլայդեր պատրաստեք։ Եթե ուզում եք լողացող մենյու, ստեղծեք լողացող մենյու։
Զլատա Օբուխովսկայա. Կարծում եմ, որ frontend-ը ուսումնասիրելով՝ կարող եք խորանալ, մասնավորապես, այն բանի մեջ, թե ինչպես են վեբ հավելվածներին ընդհանուր առմամբ տրվում ստատիկան։ Այսպիսով, մշակողը սահուն կերպով անցնում է վեբ հավելվածների ճարտարապետության սկզբունքների ուսումնասիրմանը և արտադրության մեջ դրանց գործունեությանը։
Գրիգորի Պետրով. Այո, ես անմիջապես կառաջարկեի այն, եթե դուք ընտրեիք Python-ը որպես ձեր backend մշակման լեզու և, օրինակ, Django-ն որպես ձեր framework. Django-ն ունի փաստաթղթեր Django գրքում, այն իսկապես հիանալի է, այն ունի այն ամենը, ինչ ասել է Zlata-ն, այն իսկապես լավ է սկսնակի համար։
Ալեքսեյ Շտիրնյաև. Մեկ այլ լավ տեղ է արագ սկսելու համար Django Girls-ը, եթե ձեր նպատակը Django սովորելն է։ Սա ձեռնարկ է, որի միջոցով մեկ օրում կարող եք մանրամասնորեն ուսումնասիրել, հասկանալ հիմունքները և թե ինչի է ընդունակ framework-ը։
Վալենտին Դոմբրովսկի. Փոդքասթի ձայնագրմանը նախապատրաստվելիս մենք կազմեցինք Python ծրագրավորողի վեբ մշակման համար անհրաժեշտ նյութերի ցանկ, որը ամփոփում է մեր ավելի վաղ ասածը։
Ինչ է ներառված Python-ում վեբ մշակման հիմունքներում
- Վեբ շրջանակներ՝ Django, Flask, aiohttp, Tornado և այլն (և իմանալ մյուսների գոյության մասին):
- Արձանագրություններ և API-ներ՝ հիմնականում http, JSON-RPC, Protocol Buffers, gRPC:
- ORM և միգրացիաներ, ռելացիոն տվյալների բազաներ, SQLAlchemy, SQL, PostgreSQL, MySQL:
- HTML, CSS, Bootstrap, ինչպես նաև JS framework-ների և JQuery-ի հիմունքներ։
- Ծրագրի աշխատանքի սկզբունքները արտադրության, թեստավորման, միավորային թեստերի, ավտոթեստերի, տարբերակների կառավարման համակարգերի, git-ի մեջ։
Արդյո՞ք կրտսերին ալգորիթմներ են պետք։
Զլատա Օբուխովսկայա. Սկզբում ձեզ հարկավոր չէ իմանալ ալգորիթմները։ դրանք աստիճանաբար կհայտնվեն ձեր գլխում, եթե դուք բավականաչափ երկար զարգանաք։ Ես գիտեմ շատ լավ ինժեներների, ովքեր ալգորիթմների լավ պաշտոնական դասընթաց չեն ունեցել։
Գրիգորի Պետրով. Ես ուզում եմ յուղ լցնել կրակին։ Որտեղի՞ց է գալիս ալգորիթմների հանդեպ մեր հակումը։
Մենք ներկայումս չունենք ալգորիթմների վերաբերյալ հիմնարար կրթություն, չգիտենք, թե ինչպես պատրաստել ծրագրավորողներ, չունենք տեխնիկական բազա։
Նրանք փորձում են դա անել, բայց ահա Հոգվարթսի պատմությունը. մենք չենք կարող կախարդների դպրոց ստեղծել, մինչև չունենանք մեկ կախարդ։ Այսպիսով, ի՞նչ պետք է անի համալսարանը, երբ մարդիկ գալիս են այնտեղ և հարցնում. «Սկսեք ծրագրավորողներ դասավանդել», բայց նրանք ծրագրավորողներ չունեն, քանի որ բոլորը աշխատում են Mail.ru-ում, Rambler-ում և Yandex-ում, և այնտեղ լավ են սովորում։
Համալսարանում նրանք նայում են և ասում.
-Լավ, ծրագրավորում։ Եկեք գտնենք որոշակի կապված գիտելիքների ոլորտ և հրավիրենք այնտեղից մասնագետների։ Եկեք հրավիրենք լրագրողների, ովքեր կարող են տեքստեր գրել, էլեկտրատեխնիկների, ովքեր կարող են էլեկտրական սխեմաներ կառուցել, և մաթեմատիկոսների, ովքեր կարող են աշխատել ալգորիթմների հետ։
Վերջիվերջո, պարզվում է, որ սա նույնքան նպատակահարմար է, որքան շինարարին մասնիկային ֆիզիկա սովորեցնելը միայն այն պատճառով, որ աղյուսներն ու ցեմենտը պատրաստված են տարրական մասնիկներից։
Միևնույն ժամանակ, նրանք չեն խոսում ցեմենտի և աղյուսի մասին, քանի որ ֆիզիկոսը, որը փորձում է մարզել շինարարին, չգիտի, թե ինչպես տներ կառուցել։ Արդյունքում մենք ստանում ենք մի շինարար, որը կարողանում է կատարելապես նկարագրել, թե ինչպես է «ցեմենտը աշխատում», բայց երբեք այն չի տեսել և չգիտի, թե ինչպես դրանից ինչ-որ բան պատրաստել։
Ալգորիթմները և տվյալների կառուցվածքները շատ լավն են, բայց սա շատ փոքր կիրառման ոլորտ է։ Դրանք շտապ անհրաժեշտ են, օրինակ, եթե դուք գրում եք խաղային շարժիչ, կոմպիլյատոր, ցանցային արձանագրություն։
Ծրագրավորողների մեծ մասը լուծում է բիզնես խնդիրներ, որոնք չեն պահանջում ալգորիթմներ և տվյալների կառուցվածքներ։
Ամենադժվար մաթեմատիկան այնտեղ կրկնակի գումարումն ու բաժանումն է։ Այնտեղ բոլորովին այլ գիտելիքներ են անհրաժեշտ։ Բիզնեսի խնդիրների լուծումը պահանջում է հիմնականում կիրառական, այլ ոչ թե հիմնարար գիտելիքներ։
Ավելի լավ է, որ սկսնակ մշակողը գաղափար ունենա բիզնեսի մասին և ինչպես ճիշտ և արագ հավաքել անհրաժեշտ կառույցները պատրաստի բլոկներից, ինչպես դրանք կարգաբերել, ինչպես համոզվել, որ դրանք չեն քանդվում, իմանալ, թե ինչու են դրանք քանդվում, ինչ է պատահում, երբ պահանջները փոխվում են, և ծրագիրը սկսում է «հաստատվել հիմքի վրա», ինչպես անձրևից հետո տունը:
Սրանք գործնական բաներ են և ծրագրային ապահովում գրելու ըմբռնում։ Նա պետք է իմանա, որ բացի վրիպազերծիչից, նա ունի գործիքների մի ամբողջություն, որը ցույց կտա, թե կոնկրետ որտեղ է ծրագիրը դանդաղում։
Վալենտին Դոմբրովսկի. Մտքիս եկավ հետևյալ համեմատությունը. դա բիզնեսի լեզվից թարգմանություն է այն լեզվի, որով կարելի է շփվել համակարգչի հետ։ Այսինքն՝ ծրագրավորողը մի տեսակ կոնկրետ լեզվաբան է։
Գրիգորի Պետրով. Բիզնեսին գրող է պետք, ոչ թե լեզվաբան։ Գրողը կարիք չունի իմանալու, թե ինչու հազար տարի առաջ այս բառը վերածվեց այդ բառի։ Նա պետք է կարողանա օգտագործել այս բառերը։
Ինչ է պահանջվում ծրագրավորողի առաջին աշխատանքը գտնելու համար
Ալեքսեյ Շտիրնյաև. Հավանաբար, կրտսեր պատրաստելու համար համընդհանուր բաղադրատոմս գոյություն չունի։
Եթե գաք որևէ ընկերություն, նրանք ձեզ չեն վարձի, քանի որ դուք գիտեք Django-ն, JSON-ը և մի քանի ալգորիթմներ։ Դուք, ամենայն հավանականությամբ, կվարձվեք այն հմտությունների համար, որոնք այս ընկերությանը անհրաժեշտ են այստեղ և հիմա։
Կան բազմաթիվ ընկերություններ, և բոլորն էլ ունեն տարբեր պահանջներ։ Չկա որևէ համընդհանուր գիտելիքների քանակ, որը պետք է ձեռք բերել ռեզյումե կազմելու և աշխատանք փնտրելու համար։
Գրիգորի Պետրով. Երբ մենք՝ VoxImplant-ում, մի քանի կրտսեր մասնագետներ էինք փնտրում, մեր տեխնիկական տնօրենը հիմնական պահանջը ձևակերպեց հետևյալ կերպ. մարդը պետք է կարողանա խնդիրներ լուծել։ Հասկանալի է, որ կրտսեր կուրսեցին միշտ չէ, որ դա կանի արդյունավետ, ոչ լավագույն ձևով և ոչ միշտ ճիշտ, բայց իդեալականում դուք մարդուն առաջադրանք եք տալիս, նա լարվում է և լուծում այն։ Սա այն հմտությունն է, որը հիմնականում փնտրում են գործատուները։
Զլատա Օբուխովսկայա. Այլ ոլորտներում աշխատանք փնտրող մարդիկ որոշակի առավելություն ունեն բիզնեսի տեսանկյունից, քանի որ նրանք արդեն որոշակի ճանապարհ են անցել և կարողանում են արագ լուծել խնդիրները։ Սրանք մեղմ հմտություններ են, ես նույնիսկ կանվանեի դրանք աշխատանքային մշակույթ։ Հաճախ համալսարանական շրջանավարտները դեռ չեն զարգացրել այս աշխատանքային մշակույթը։
Բայց ես դեռ կցանկանայի փորձել սկսնակներին որոշ բաղադրատոմսեր տալ։
Առաջին քայլերը սկսնակ ծրագրավորողի համար
Զլատա Օբուխովսկայա. Առաջին հերթին, դա դեռևս ձեր սեփական նախագիծն է, քանի որ դուք պետք է ինչ-որ բան գրեք ձեր ռեզյումեում և ցույց տաք նվազագույն պորտֆոլիո։ Ավելի լավ է, երբ այս նախագծերը չեն արվում ձեզ համար, այլ ազատ աշխատանքի հիման վրա՝ ուրիշի համար։
Առաջին նախագծերից հետո դուք արդեն կարող եք կազմել ռեզյումե և ուղարկել այն բոլոր ընկերություններին, որոնք ունեն կրտսեր պաշտոններ։ Հարցազրույցները ձեզ կտան պատկերացում այն մասին, թե ինչի կարիք ունեն ընկերությունները։ Վաղ թե ուշ ինչ-որ մեկը կընդունի ձեզ աշխատանքի, գոնե փոքր ընկերությունում։ Այս աշխատանքային փորձը հետագայում ձեզ հնարավորություն կտա միանալ ավելի մեծ և հետաքրքիր ընկերության։
Վալենտին Դոմբրովսկի. Ի դեպ, մեր դասընթացների ընթացքում մենք ուսանողներին պատրաստում ենք ունենալ իրենց սեփական նախագիծը ուսուցումից հետո 10 շաբաթվա ընթացքում։ Բացի այդ, մենք մարզում ենք թիմի զարգացման հմտությունները։ Սրանք հենց այն մեղմ հմտություններն են, որոնց մասին Զլատան խոսում էր։
Ալեքսեյ Շտիրնյաև. Փորձից ելնելով կարող եմ ասել, որ առաջին աշխատանքը գտնելը կարող է շատ երկար ժամանակ պահանջել։ Երբ մեկ կամ երկու ամիս եք փնտրում, դա նորմալ է։ Եթե ձեր ռեզյումեն ներկայացնեք բոլոր ընկերություններին, գնացեք հարցազրույցների, երրորդ ամսում անպայման ինչ-որ բան կգտնեք։
Վալենտին Դոմբրովսկի. Դուք կարող եք ստեղծել ձեր սեփական նախագծերը կամ ստանձնել պարզ ազատ նախագծեր և միաժամանակ ուղարկել ձեր ռեզյումեները։
Ի՞նչ հեռանկարներ ունի Python ծրագրավորողը։
Զլատա Օբուխովսկայա. Python մշակողը կարող է գնալ ամենուր։ Դուք կարող եք անցնել թեստավորում և շարունակել զարգանալ՝ դառնալու ավագ ճարտարապետ։ Կամ նույնիսկ կառավարման մեջ։ Տեխնիկական մենեջերները լինում են տարբեր ձևերի, և հնարավոր է հասնել բարձրագույն ղեկավարության։ Դուք կարող եք զարգանալ տվյալագիտության, DevOps-ի ոլորտում, զբաղվել ավտոմատացված թեստավորմամբ կամ մեքենայական ուսուցմամբ։
Վալենտին Դոմբրովսկի. Ընդհանուր առմամբ, կան բազմաթիվ տարբերակներ, հնարավորություններ նույնպես, այդ թվում՝ մեր դասընթացները։ Սկզբում շատ գիտելիքներ պետք չեն, բայց ավելի ուշ ավելի լայն շրջանակ ընդգրկելը լավ գաղափար է, քանի որ որքան շատ կարողանաք, այնքան լավ ձեզ համար։
***
Սա թողարկման միայն մի մասն է։ . Էպիզոդի ամբողջական տարբերակը կարող եք գտնել .
Կամ նույնիսկ նայեք.

Շնորհակալություն կարդալու, լսելու կամ դիտելու համար։
Source: www.habr.com
