"მესმოდა ენა, რომლითაც უნდა ველაპარაკოთ კომპიუტერს" — გაიცანით დეველოპერი გიორგი მარგიანი
დეველოპერი, რომელიც საქართველოს ბანკის მობილბანკის ერთ-ერთი შემქმნელია
საქართველოს ბანკის მობილბანკს მილიონობით ადამიანი იყენებს, ყოველდღიურად კი მისი დახმარებით ასევე მილიონობით ტრანზაქცია სრულდება. ეს ერთ-ერთი ყველაზე წარმატებული საბანკო ტექნოლოგიური პროდუქტია ქართულ ბაზარზე და მის უკან ტექნოლოგიური პროფესიის წარმომადგენლები დგანან.
გიორგი მარგიანი საქართველოს ბანკის სინიორ ანალიტიკოს დეველოპერია, რომელმაც, წლების წინ, თანაგუნდელებთან ერთად შექმნა მობილბანკის ის ვერსია, რომელსაც დღეს ჩვენი უმეტესობა იყენებს. სტატიაში ამ წარმატებულ დეველოპერს გაგაცნობთ, რომელიც საქართველოში, საქართველოს მოქალაქეებისთვის ძალიან საჭირო და მოსახერხებელი პროდუქტების/ფუნქციების შექმნასა და დანერგვას განაგრძობს.
გიორგი, როგორი იყო თქვენი პირველი შეხება ტექნოლოგიებთან და რამ გააღვივა ეს ინტერესი დროთა განმავლობაში?
პირველი შეხება ტექნოლოგიებთან სკოლის ასაკში მქონდა. მაშინ იყო ასეთი ცენტრი — მზიური, სადაც ხშირად გავდიოდი ხოლმე მათემატიკურ შეჯიბრებზე. ერთხელად შეჯიბრის ორგანიზატორებმა გადაწყვიტეს, რომ რამდენიმე ტოპ მოსწავლისთვის უფასოდ ესწავლებინათ პროგრამირება. მანამდე დიდი შეხება არ მქონია ამ სფეროსთან, კომპიუტერსაც ძირითადად სათამაშოდ ვიყენებდი, იქ კი უკვე დავინახე სხვა შესაძლებლობები, როგორ შეიძლება გამოგვეყენებინა პროგრამირება სხვადასხვა პრობლემის გადასაჭრელად. აი, აქედან უკვე შევყევი.
პროგრამირებასთან პირველი შეხება რომ მქონდა 14-15 წლის ვიყავი. ეს დაახლოებით 2005 წელი იყო. შემდეგ უკვე ტელეფონებიც რომ წამოვიდა მივხვდი, რომ ყოველდღიურ ცხოვრებაში უამრავი რამის შეცვლა შეეძლო ამ ყველაფერს, საინტერესო და ლოგიკური იყო ჩემთვის ის, რაც მოწყობილობების შიგნით ხდებოდა, მესმოდა კარგად და ასე შევყევი ამ სფეროს.
რა არის მთავარი ფაქტორი, რომ ამ მიმართულებით დაინტერესდით და აღმოგაჩნდათ შესაბამისი უნარები. რამ ითამაშა მნიშვნელოვანი როლი იმაში, რომ ამ გზით წახვედით?
ლოგიკას ავითარებ, ფიქრობ რა როგორ გააკეთო და შემდეგ ხედავ, რომ ეს პროგრამა ამას აკეთებს. საინტერესოა და ამ ლოგიკით შორს წასვლა შეიძლება. ის იყო მთავარი, რომ რაღაცნაირად მესმოდა ის ენა, რომლითაც უნდა ველაპარაკოთ კომპიუტერს. ნუ შედეგსაც რომ ხედავ რაღაცების ცვლილებას, ძალიან კარგი შეგრძნება იყო.
მათემატიკა და ტექნიკური საგნები, რა თქმა უნდა, გეხმარება, მაგრამ უფრო სხვა რაღაცაა. სუფთა მათემატიკა არაა, უფრო ლოგიკური ენაა ჩემთვის. გარდა ამისა, სხვა პროფესიებში როგორც არის, ამასაც სჭირდება ინტერესი და დროის დათმობა, თან ბევრი დროის დათმობა, რადგან ხშირად არის, რომ რაღაც, რაც უნდა მუშაობდეს ერთი შეხედვით, არ მუშაობს და მერე გიწევს მთლიანად საფუძვლიდან, თავიდან აშენება ამ ყველაფრის. ეს ყველაფერი საკმაოდ ჩამთრევი არის თან.
როგორც მივხვდი, ერთ-ერთი მნიშვნელოვანი ფაქტორი თქვენთვის არის ის, რომ შედეგს ხედავთ მალევე. ანუ რაღაცას აკეთებ, სწრაფადვე ხედავ შედეგს და ეს კმაყოფილების სწრაფად განცდის საშუალებას გაძლევს?
მით უმეტეს, საწყისში ეს ასე არის, როცა პატარა პრობლემებსა და ამოცანებს ეხები. ხოლო შემდეგ გააჩნია როგორ განვითარდება შენი კარიერა. ახლა მაგალითად ისეთ პროექტზე ვმუშაობთ, რომ შეიძლება ყოველდღიურად ამის შედეგს ვერ ხედავდე, თუმცა ამის საპირწონედ თუნდაც ერთ თვეში გაცილებით დიდ პროდუქტს ხედავ, რომელსაც ადამიანები იყენებენ ყოველდღიურ ცხოვრებაში, საქმიანობაში და ეს მათ ეხმარება.
პროგრამირებაშიც ბევრი ენა და პოზიციაა, მაგრამ მე სადაც ვარ, მე პირადად ანდროიდის აპლიკაციებს ვწერ საქართველოს ბანკში და პირდაპირ შეხება მაქვს სოფტთან. ანუ პირდაპირ ვხედავ ჩემს გაკეთებულს ვიზუალურადაც. ის რომ ჩემ მიერ შექმნილ პროდუქტს პირდაპირ იყენებენ, კიდევ უფრო დადებითი მხარეა.
თქვენ შემთხვევაში, გადამწყვეტი საუნივერსიტეტო განათლება იყო თუ კურსები, რომელიც ასევე გავლილი გაქვთ? ხშირადაა ეს ორი ტიპის განათლება შეპირისპირების საგანი და თქვენ შემთხვევაში ეს როგორ იყო?
სკოლაში 2 წლის განმავლობაში მქონდა შეხება პროგრამირებასთან, შემდეგ სპორტსმენი ვიყავი, რაგბისტი და სულ სხვა მხარეს წავედი. თუმცა, შემდეგ თავისუფალ უნივერსიტეტში ჩავაბარე, სადაც ბიზნესის ადმინისტრირება იყო ძირითადი პროფესია, მაინორად კი პროგრამირება მქონდა. იმდენად გამახსენდა და მომეწონა ისევ, რომ გადავწყვიტე შემეცვალა ძირითადი პროფესია და პროგრამირება ავირჩიე მთავარ სპეციალობად. დღეს უამრავი შესაძლებლობაა, რომ უნივერსიტეტის გარეშეც მიიღო ხარისხიანი განათლება პროგრამირების კუთხით და დღეს რომ ვიდგე ამ არჩევანის წინაშე, არ ვიცი როგორ მოვიქცეოდი, მაგრამ იმ მომენტში, იმ გარემოებებში ისევ ისე მოვიქცეოდი. თანამედროვეც იყო ის ყველაფერი და თან აკადემიურიც.
ის უპირატესობა აქვს ხარისხიან უნივერსიტეტს, რომ ბევრ რამეს ეხები ცოტ-ცოტათი და საბოლოოდ შეგიძლია მთლიანობაში აღიქვა, რამდენ რაღაცას მოიცავს პროგრამირება. უფრო კონტექსტის აღქმა გიჩნდება, რაც მნიშვნელოვანია, ვიდრე კონკრეტულზე ფოკუსირება.
რა კომპონენტებისგან შედგება თქვენი, როგორც დეველოპერის სამუშაო პროცესი?
საქართველოს ბანკი ბოლო წლების განმავლობაში გადავიდა სქრამზე და ეჯაილზე, შესაბამისად, სპრინტებად ვუყურებთ ჩვენს სამუშაო გრაფიკს. ეს არის ორკვირიანი დროის პერიოდი, სადაც სხვადასხვა რამე ხდება. ეს შეიძლება იყოს კვირის დასაწყისში ჯგუფის შეკრება, სადაც ვფიქრობთ/ვთანხმდებით, რა უნდა გავაკეთოთ კვირის განმავლობაში, ვინაწილებთ თასქებს, განვიხილავთ დიზაინერთან ერთად საკითხებს. გვაქვს ერთმანეთის შეფასებები კვირის განმავლობაში, გვაქვს სამუშაო როგორ მიდის ამის პინგი. ეს ნიშნავს იმის შემოწმებას, დაგეგმილი თასქები ისე მიდის თუ არა, როგორც წარმოგვედგინა.
რა თქმა უნდა, კოდის წერას მიაქვს საკმაოდ დიდი დრო, ანუ რაც დავგეგმეთ იმის აღსრულებას, ასე ვთქვათ. სხვადასხვა ტიპის შეხვედრებიც რამდენიმე გვაქვს, ჯგუფური, ანუ არ ვკარგავთ ერთმანეთთან კომუნიკაციას. ჩემი პოზიციიდან გამომდინარე, ახალ თანამშრომლებთან, ანუ ჯუნიორ თანამშრომლებთან გავდივართ როგორც იმ ენას, რაზეც ვწერთ, იმისათვის რომ მიმართულება ჰქონდეთ, თუ საით მიმართონ სწავლის რესურსი. ასევე, ჩვენი მობილბანკიც ძალიან დიდი არის უკვე, ალბათ საქართველოში ყველაზე დიდი, თავისი არქიტექტურა აქვს და ამ არქიტექტურას ვხსნით ჯუნიორებთან, თუ რა ნაწილი რას შვება და ა.შ. იშვიათად გვაქვს ხოლმე შემდეგი კვარტლის დაგეგმვები, ასევე ვიღებ ბიზნეს ანალიტიკაში მონაწილეობას, იმისათვის, რომ ერთად განვიხილოთ, თუ ახალი მოდულის შემოტანა გვინდა, როგორ იმოქმედებს ეს ჩვენს კოდზე და როგორ ჩაჯდება.
ორი უკიდურესობა რომ ავიღოთ, ჩვეულებრივი სამუშაო დღე და ძალიან დატვირთული დღე როგორია?
ყველაზე დატვირთული დღის შემთხვევაში დილა იწყება ქოლებით, რომ გავიაროთ წინა დღით რა გავაკეთეთ. თუ ოფისში ვართ ვიკრიბებით, რა თქმა უნდა, ერთ ოთახში, სადაც ყველა ჩვენ-ჩვენ თასქებზე ვსაუბრობთ და ვავსებთ ერთმანეთს. შემდეგ დღე გრძელდება ამ თასქებზე მუშაობით. ანუ მაქვს თასქის აღწერა, თუ რა და როგორი უნდა იყოს, მაქვს დიზაინერისგან დიზაინი, მაქვს ბექიდან ის, თუ რა სერვისები უნდა გამოვიყენო. შემდეგ იწყება ამ ყველაფრის შერწყმა და იმის ნახვა, მობილურ ტელეფონზე რომ დავაჭერ, თუ იმუშავებს. ეს საკმაოდ ინტენსიური პროცესი შეიძლება იყოს, ფიქრის მხრივაც, რადგან საჭიროა მოძიება, ახალი ტექნოლოგიები ყოველდღე შემოდის ანდროიდშიც და ამ მოძიებასა და იმპლემენტაციაში მიდის დრო. დატვირთულ დღეს შეხვედრებიც ბევრი არის ხოლმე, თითქოს შეხვედრაზე ზიხარ უბრალოდ, მაგრამ როცა ჩართული ხარ, რაღაცებს განიხილავ, უამრავ ადამიანს უსმენ და შენს აზრსაც აჟღერებ, შრომატევადია და მიაქვს რესურსი.
მით უფრო დეველოპერისთვის, რომელსაც კოდის წერა ურჩევნია კომუნიკაციას?
ნუ, ეს ინდივიდუალურია მაინც, მაგრამ ძირითადად ასე არის, კი. რა თქმა უნდა, დეველოპერს უშუალოდ აქვს შეხება კოდთან და ტექნოლოგიასთან და იცის, რა არის შესაძლებელი მათი გამოყენებით. ხშირად ისეთი იდეები ჟღერდება, რაც შემდეგ უნდა დავხვეწოთ და მოვარგოთ შესაძლებლობებს. ყველაფერი არ გამოვა, ასე ვთქვათ და ამაზე მიდის ხოლმე მსჯელობა, თუ რა როგორ ვქნათ. საკმაოდ რთული ის ნაწილია, რომ არ უნდა გამოგრჩეს, არსებულ კოდთან შესაბამისობაში მოვა თუ არა. ბევრი წვრილი დეტალია, რაც არ უნდა გამოგრჩეს და ეს გამოცდილებასთან ერთად თანდათან გროვდება.
ხშირად არის, რომ რაღაც რეგულაცია შემოდის ეროვნული ბანკისგან და უცბად არის რაღაც გასაკეთებელი და ისეთი შემთხვევებიც ყოფილა, რომ იმდენად ჩართული ვართ ამ რაღაცაში და იმდენად მოსასწრებია, რომ დავრჩენილვართ სამუშაო დროის გარეშეც.
მსუბუქ დღეს შედარებით ნაკლები უცხო შეხვედრაა და დეველოპერისთვის მსუბუქი დღე ის არის, რომ მოვრჩით ყველაფერს და ტესტერი ამოწმებს რაღაც ქეისებს, რამე თუ არასწორად გვიწერია ამის შესწორება ხდება. ეს შედარებით ნაკლებად დატვირთული დღეა, როცა შენ მიერ მოფიქრებულ და უკვე დაწერილ კოდს შესწორებებს უკეთებ.
თქვით, რომ ახალ კადრებთანაც გიწევთ ურთიერთობა. რაღაც კრიტერიუმები რომ შემოგვთავაზოთ, რა აქცევს დეველოპერს დეველოპერად? თქვენ რა კრიტერიუმების მიხედვით არჩევთ კადრს ამ სფეროში?
დასაწყისისთვის ყოველთვის ინტერვიუები გვაქვს, ახალ დეველოპერებთან და მთავარი რასაც ვაქცევთ ყურადღებას არის ის, თუ რამდენად შეესაბამება მისი შესაძლო პოზიცია იმას, რაც იცის. არ არის აუცილებელი ძალიან გამოცდილი და ბევრი პროგრამის შემქმნელი იყოს, ყველანაირი საფეხური გვაქვს. მთავარია შესაბამისობაში იყოს მისი ცოდნა იმასთან, რასაც ამბობს რომ იცის. შემდეგ მოდის ის, თუ რამდენად მოტივირებულია კანდიდატი. ანუ მოტივირებული უნდა იყო, რომ ამაში შეძლო გარკვევა.
მეც რომ ვიხსენებ, თავიდან ჯუნიორი ვიყავი, როცა მოვედი საქართველოს ბანკში. აქ გხვდება კოლოსალური პროექტი და გგონია, რომ არაფერი არ იცი. მაგრამ თუ არის იმის მოტივაცია და სურვილი, რომ ამ ყველაფერს ნაბიჯ-ნაბიჯ მიჰყვე, მოისმინო და თვითონაც ეცადო გარკვევას, ყველაფერი გამოვა. თუ ამის მზაობა არის და ამ ინფუთის ჩადების სურვილი, თუ ადამიანი მზადაა სწავლისთვის, არ გაუჭირდება სავარაუდოდ. და ასევე, რა თქმა უნდა, ტექნოლოგიური ცოდნა, ერთგვარი ბაზისი საჭიროა. თუმცა, გვაქვს ისეთი პროგრამებიც, სადაც დაინტერესებულ ადამიანებს ვასწავლით. ლიდერატორი ჰქვია ჩვენს ერთ ასეთ პროგრამას, დაინტერესებულ ადამიანებს უტარდებათ ლექციები გარკვეული დროის განმავლობაში და შემდეგ, იმის მიხედვით, თუ როგორ გაართმევენ თავს, შესაძლებლობა ეძლევათ, რომ საქართველოს ბანკში იმუშაონ.
ერთ-ერთი მთავარი, რაც დამწყებ პროგრამისტებს შეუძლიათ გაითვალისწინონ არის ის, რომ როდესაც ამხელა პროექტი არის და ამდენი გამოცდილება, შეიძლება რაღაც საქმე, მაგალითად, სტრუქტურა რომ მისცე კოდს, ზედმეტად ეჩვენებოდეს ადამიანს, მაგრამ დროთა განმავლობაში ხვდები, რომ ეს სტრუქტურა და ორგანიზება გადამწყვეტია რეალურად, რომ ერთიანად არ დაინგრეს შემდეგ პროექტი და ესეც აუცილებელია, რომ იმ გაიდლაინებს, რაც შემუშავებული გვაქვს, ეცადოს რომ მიყვეს და გაარკვიოს, რა საჭიროა.
ბევრი ჯგუფი ვართ, სენიორ დეველოპერიც ბევრია. იმის შესაძლებლობა, რომ ჯუნიორმა იკითხოს და გაარკვიოს, ყოველთვის არის.
ჯუნიორებს საშუალებას აძლევთ, რომ ისწავლონ და უფრო დიდ პროექტებზე იმუშაონ. თქვენი მაგალითიც ამის ილუსტრაციაა...
კი, ჯუნიორი ვიყავი. საკმაოდ ბევრ ტექნოლოგიას იყენებს ჩვენი აპლიკაცია. ანდროიდი თითქოს ერთი ენაა, თუმცა შიგნით უამრავი განსხვავებული ტექნოლოგიაა. მათ შორის, ბიბლიოთეკა. ძალიან ბევრ რამეს ვფარავთ და პრაქტიკულად შეუძლებელია, ჯუნიორმა ეგ იცოდეს.
როგორც ვიცით, ეჯაილ სისტემით მუშაობთ, რაც გულისხმობს, რომ თიმში სხვადასხვა კომპეტენციის ადამიანი ერთიანდება და ერთი დავალების შესრულებისთვის მუშაობს. პროდუქტის, ან კონკრეტული ფუნქციონალის ჩაშენების საჭიროებისას როდის ერთვება დეველოპერი საქმეში? რა ეტაპზეა მისი როლი კრიტიკული?
რაღაც მხრივ, დეველოპერის პოზიციასაც გააჩნია. ძირითადად, ბიზნეს მიმართულებას აქვს იდეა, რომლის განხორციელებაც უნდა, ამის განხილვა ხდება ანალიტიკოსებთან და პროდუქტის მფლობელებთან ერთად. დეველოპერი აქ დასაწყისიდანვე არის ჩართული, თუ იდეა ეხება რაღაც ახალს. აქ მნიშვნელოვანია დეველოპერის აზრი იმ კუთხით, თუ რამდენად რეალისტური და გამოსვლადია იდეა.
ჰიპოთეტური თასქი რომ ავიღოთ, მაგალითად, ფოტოთი გადახდა. აქ თუ თავიდანვე არ ჩართე დეველოპერი, შეიძლება მთელი პროცესები გაიარო და საკმაოდ გვიან მიხვიდე იმ დასკვნამდე, რომ ეს არ გამოდის, ტექნიკურად. ამიტომ ხშირად იდეა რომ გაჩნდება, სანამ გაიწერება, მაშინვე ერთვება ხოლმე დეველოპერი. ძირითად შემთხვევებში ეს ასე არ ხდება და იდეის განხილვის შემდეგ გუნდში მიდის იმის განხილვა, თუ ვისი ჩართვაა საჭირო იდეის განსახორციელებლად და რა რესურსის მობილიზებაა საჭირო. რადგან შეიძლება მარტო ფრონტის მხარე იყოს გასაკეთებელი, ან შუა ნაწილის, ბაზების ჩართვა და ა.შ. ბევრ პროდუქტს თუ ეხება, შეიძლება სხვადასხვა გუნდიდან იყოს საჭირო ვიღაცების მოწვევა.
დეველოპერი ყველაზე საჭირო, რა თქმა უნდა, აღსრულების ნაწილშია. როცა უკვე გაიწერება ყველაფერი, ამ ყველაფრის იმპლემენტაციაა საჭირო. თვითონ შეხვედრაზეც, მე ხომ ვარ ანდროიდ დეველოპერი და შეიძლება აიოესის მხარეს იყოს რაღაც გასაკეთებელი. მეც ვერთვები იმის შეფასებაში და დაგეგმვაში.
ტექნოლოგიებზე საუბრობდით მობილბანკში. რა არის ის ძირითადი ტექნოლოგიები, რომელიც მობილბანკშია გამოყენებული?
დივაისის პრაქტიკულად ყველა შესაძლებლობას ვიყენებთ, იქნება ეს QR-ის წაკითხვა, თუ შესაბამისი მოქმედების გაკეთება, აპლიკაციაში ნავიგაცია თუ სხვა საიტზე გადასვლა. ვიყენებთ ლოკაციას, ბანკომატებისა თუ ფილიალების მომხმარებლისთვის შესათავაზებლად. ამისთვის Google-ის API-ებს ვიყენებთ და გვყავს ასევე ვენდორები, რომელთა საქმიანობასაც ვიყენებთ, დავუშვათ, ონბორდინგი გვაქვს ერთ-ერთი ნაბიჯი აპლიკაციაში, დარეგისტრირების დროს, სადაც კამერით ვამოწმებთ ადამიანის ნამდვილობას. გარდა ამისა, არის ანალიტიკა, სადმე მომხმარებელს ხომ არ უჭირს ნავიგაცია, ხო არ იკარგება რომელიმე პროცესში.
საქართველოში დეველოპერობის მსურველებს რას ურჩევდით? რა შეიძლება რომ გააკეთონ დღეს? გასაგებია, რომ თქვენი გამოცდილება, მით უფრო 2010 წლამდე მიღებული, განსხვავებულია იმისგან, რისი მიღებაც ახლა შეუძლიათ მსურველებს. თუმცა, თქვენი დაკვირვებით, რა უნდა გააკეთოს დღეს ადამიანმა, რომ დეველოპერად შედგეს?
ამისთვის ერთი და საუკეთესო გზა არ არსებობს და ადამიანის არჩევანზეა დამოკიდებული. არსებობს ტრადიციული გზა — სკოლის შემდეგ უნივერსიტეტში ჩაბარება და შემდეგ საქართველოს ბაზარზე სტაჟირების გავლა — მე ეს გავიარე. ასევე, დღეს უკვე არსებობს შესაძლებლობა, რომ თვითონ ადამიანი ჩაუჯდეს თუნდაც სახლში და ინტერნეტით ისწავლოს. არის ასევე ცენტრები, რომლებიც სწრაფ კურსებს სთავაზობენ მსურველებს.
ვიტყოდი, რომ კვლევის უნარები არის ძალიან მნიშვნელოვანი და გამოდგომადი, როცა რაღაცა პრობლემა წარმოგეშვა და ახლა წიგნის მოძებნა ან პროფესორისთვის კითხვა აღარ არის აუცილებელი. ახლა შეგიძლია ფორუმებსა თუ საიტებზე ეცადო ამ პრობლემის მოძიებას, რადგან დიდი ალბათობით, სხვას მანამდე უკვე შექმნია მსგავსი შეფერხება. მსგავსი ქეისების პოვნა და დამოუკიდებლად გაგებას, თუ როგორ აღმოფხვრა პრობლემა, ძალიან მნიშვნელოვანია.
ასევე, რაც ისწავლეს იმის რეალურ პროექტად სწრაფადვე ქცევას ვურჩევდი დეველოპერობის მსურველებს. როგორც კი რამე ცოდნას დააგროვებენ ამის იმპლემენტაცია დაეხმარებათ პორტფოლიოს შექმნაში. სხვა მხრივ, როცა სწავლობ და ამას პრაქტიკაში ნერგავ, სხვადასხვა სახის თეორიული ცოდნის გაერთიანება გიწევს და რაც დრო გადის, სულ უფრო მეტი თეორიის გაერთიანების საჭიროების წინაშე ხარ. შესაბამისად, ჯობს, ეს ნელ-ნელა გააკეთო.
კომენტარები