in

პროგრამირების შესწავლა დამოუკიდებლად – მითი თუ ფაქტი?

„ამ კითხვაზე პასუხი „კიც” არის და „არაც””, – გვითხრა ჩვენმა რესპონდენტმა, როგორც კი სტატიის თემის შესახებ ვუთხარით. გამოცდილი პროგრამული ინჟინრისგან ცალსახა თეორიებს მიჩვეულები მივხვდით, რომ წინ საინტერესო ინტერვიუ გველოდა, ამიტომ დიდი შესავლით მკითხველს არ დავღლით. 

ჩვენი რესპონდენტია თემო ჩიჩუა, პროგრამული ინჟინერი, არაერთი ქართული თუ საერთაშორისო პროექტის დეველოპერი. თემა კი, რომელიც სტატიაში უნდა მიმოვიხილოთ, პროგრამირების დამოუკიდებლად შესწავლას, მის სირთულეებსა და შესაძლებლობებს ეხება.

M: თემო, ამ საკითხზე მუდმივად დავობენ – პროგრამირების სწავლა დამოუკიდებლად თუ სპეციალური განათლებით? რომელი მოსაზრებაა სწორი?

ორივე მოსაზრება სწორია და ვეცდები, ავხსნა, რატომ. პროგრამისტის პროფესია, ისევე როგორც ექიმის, არის ძალიან ფართო. ის ბევრ საფეხურს მოიცავს. ერთ-ერთი მათგანი არის უშუალოდ კოდის წერა, მაგრამ მეორე საფეხურზე გვაქვს პროგრამული ინჟინრის ამოცანა, რომელსაც აუცილებელია, ესმოდეს კომპიუტერული მეცნიერების ბევრი დარგი. კარგმა პროგრამულმა ინჟინერმა უნდა იცოდეს კომპიუტერული არქიტექტურა, ესმოდეს, თუ როგორ ასრულებს კომპიუტერი მის მიცემულ დავალებებს. ეს აუცილებელია როგორც პრობლემების სწორად გადაჭრისთვის, ისე კოდის ოპტიმიზაციისთვის. როდესაც ჩვენი პროგრამა მუშაობს მილიონობით მომხმარებელზე, იქ თითოეული დეტალი და წამი ძალიან მნიშვნელოვანია. 

ცალკეა ალგორითმები და სტრუქტურები. იმისათვის, რომ მიხვდე, რა გადაჭრის ამა თუ იმ პრობლემას, კარგად უნდა იცოდე, რომელი ალგორითმის გამოყენება შეგიძლია უფრო ოპტიმალურად. ეს ყველაფერი არის პროგრამული ინჟინრის ამოცანა. მან უნდა აირჩიოს ტექნოლოგიების ნაკრები, პროგრამირების ენა, მონაცემთა ბაზა…ეს არის ერთგვარი საგზაო რუკა, რომელიც ეხმარება დეველოპერს.

რაც ჩამოვთვალე, იმ ყველაფრის სწავლა ონლაინ და საკუთარი ძალებითაც შესაძლებელია, თუმცა ონლაინ კურსებით ცალკეული ენების სწავლა არის წრფივი და ყველაფერს ერთად არ მოიცავს. შემიძლია საკუთარი გამოცდილება გაგიზიაროთ, როდესაც პირველად ჩავაბარე ელექტრონულ ინჟინერიაზე, რაღაც დროის შემდეგ უნივერსიტეტიდან წამოვედი და მუშაობაც დავიწყე, სადაც, ისე თუ ასე, თავს ვართმევდი ამოცანებს, მათ შორის რთულებსაც. იქნებოდა ეს API-ს აწყობა, ჩეტბოტების facebook-თან ინტეგრაცია თუ სხვა, მაგრამ ეს არ იყო საკმარისი იმისთვის, რომ ყველაფერი კომპლექსურად გამეკეთებინა. ამიტომ რამდენიმე წლისა და გამოცდილების შემდეგ მაინც მივუბრუნდი საუნივერსიტეტო გარემოს, რომელმაც მომცა ის road map, თუ რა უნდა ვიცოდე.

M: რა არის ის მთავარი შეცდომა, რასაც გამოყოფდით ამ მოსაზრებათა ჭიდილში?

ამ სფეროში ხშირად პროგრამისტებს უწოდებენ კოდმწერებს, რაც ვფიქრობ, არ არის ბოლომდე ზუსტი ტერმინი. კოდის წერა პროგრამირების მხოლოდ ერთ-ერთი საფეხურია. დავუშვათ, მარტო JavaScript-ის ან React-ის სწავლა არ ნიშნავს, რომ შენ პროგრამისტი ხარ, ეგ ნიშნავს, რომ კოდის დაწერა შეგიძლია. საჭიროა იცოდე ეს სფერო, როგორც მეცნიერება, ხშირად კი იფიქრო, როგორც კომპიუტერმა. ეს ყველაფერი საკმაოდ კომპლექსურია, ამიტომ გააჩნია, რას ვგულისხმობთ, როცა ვამბობთ, რომ პროგრამისტობა გვინდა. როგორც თავიდან ვთქვი, არც ის მოსაზრებაა მითი, რომ დამოუკიდებლად დაძლიოს ადამიანმა პროგრამირება და არც აკადემიური სწავლება ნიშნავს პირდაპირ იმას, რომ ყველა, ვინც უნივერსიტეტში ისწავლის, საუკეთესო პროგრამული ინჟინერი გახდება. საბოლოო ჯამში, გინდ მარტო აკეთებდე და გინდ მენტორები გყავდეს, პროგრამისტობა მარტოსული გზაა, რომელიც უნდა გაიარო. შენ თუ არ ასწავლი შენს თავს, ვერავინ გასწავლის.

M: არის თუ არა ონლაინ რესურსი, სადაც თავმოყრილია თეორიული და პრაქტიკული მასალა, სადაც მსურველს შეუძლია ერთად ნახოს საჭირო ინფორმაცია?

კი, ასეთ რესურსებს იპოვით ინტერნეტში, მაგალითად, Udemy, რომელზეც საკმაოდ იაფად შეიძლება იპოვოთ კურსები, თუმცა მე მინდა გამოვყო MIT, პლატფორმა, რომელიც უფასოდ გაძლევს მთელ იმ რესურსებს, რაც პროგრამირების თავიდან ბოლომდე სწავლაში გეხმარება. მას აქვს ზუსტად ისეთივე სილაბუსი და წიგნები, რომლებსაც მე უნივერსიტეტში გავდივარ და შეუძლია სრულყოფილი მეგზურობა გაუწიოს დამწყებს. აქვე მინდა აღვნიშნო, რომ YouTube საუკეთესო გზა არის ტექნიკური ცოდნის უფასოდ შესაძენად კომპიუტერულ მეცნიერებებში.

M: მოდი, გამოვყოთ ის მთავარი ტექნიკური თუ პიროვნული უნარები, რაც საჭიროა პროგრამირების შესასწავლად?

მნიშვნელოვანი რეკვიზიტი იმისთვის, რომ გახდე პროგრამისტი, არის ინგლისური ენა. ქართულად ონლაინ რესურსები, სამწუხაროდ, ბევრი არ არის. ახლა მე და ჩემი გუნდის წევრები ვმუშაობთ ქართულ რესურსზე, რომელიც მსურველს პროგრამირების ავტონომიურად სწავლაში დაეხმარება, მისცემს დავალებას, თვითონ შეუმოწმებს და ა.შ. თუმცა მასალების, იგივე ტუტორიალების ძირითადი ნაწილი ინგლისურ ენაზეა. ამასთან, პროგრამისტს სულ გიწევს დოკუმენტაციების, ერორ მესიჯების კითხვა, როცა გაინტერესებს, თუ რა გააკეთე არასწორად. ძალიან სწრაფად მზარდი სფეროა და ხშირად იცვლება რაღაცები, ამიტომ ენის ცოდნა მნიშვნელოვანია. არ ვგულისხმობ უმაღლესი ინგლისურის ცოდნას, არამედ საშუალოს. დაახლოებით ასე შემიძლია ჩამოვაყალიბო – კომპიუტერულ თამაშებში თუ კარგად გესმის, რას გელაპარაკებიან მოთამაშეები, საკმარისია საიმისოდ, რომ პროგრამირებაშიც გაერკვე. უბრალოდ თუ საერთოდ არ იცი ინგლისური, პრაქტიკულად შეუძლებელი ხდება ამ პროფესიის გაგრძელება.

რაც შეეხება პიროვნულ უნარებს, მოთმინება, მონდომება და კრიტიკული აზროვნების უნარი – ამათი ნაკრები კარგი პროგრამისთვის ძალიან მნიშვნელოვანია.

M: ბოლო კითხვაც, დასაქმების კუთხით რამდენად შეიძლება ხელი შეეშალოს ადამიანს, თუ პროგრამისტის დიპლომი არ აქვს მიღებული?

გააჩნია დამსაქმებელს. არიან კომპანიები, რომლებიც საერთოდ არ აქცევენ ამას ყურადღებას. მაგალითად, ერთ-ერთ უდიდეს ამერიკულ კომპანიასთან ვთანამშრომლობ, რომელმაც ჩემი კანდიდატურა შესაბამისი გასაუბრების საფუძველზე შეარჩია, თუმცა ყოფილან ისეთი ორგანიზაციებიც, ვისაც განათლების შესახებ უკითხავთ. ასეთი, ძირითადად, სახელმწიფო სტრუქტურებია. საერთო ჯამში, თვითნასწავლობა არაა ხელის შემშლელი ფაქტორი, თუ ადამიანს ცოდნა და საინტერესო პორტფოლიო აქვს. 

ავტორი: მარიამ გოჩიაშვილი

მანქანებთან „დაშორება“, როგორც ტვირთისგან გათავისუფლება — Bolt-ის ახალი კამპანია

კორპორაციული კულტურის როლი კომპანიაში და მეტი, ვიდრე სამსახური