სკრიპტი - რა არის ვებ დეველოპმენტი და ვინ არიან ვებ დეველოპერები
ვებ დეველოპმენტი ვებსაიტებისა და ვებ აპლიკაციების შექმნის პროცესია, რომელიც სხვადასხვა პროგრამირების ენების, ბიბლიოთეკების, ფრეიმვორქების, ძრავების და ხელსაწყოების გამოყენებით იქმნება, მათზე წვდომა ინტერნეტის საშუალებითაა შესაძლებელი. ეს ყველაფერი ცვალაბადი პროცესია და საბოლოოდ მისაღები პროდუქტის სირთულეზეა დამოკიდებული.
დეველოპმენტი ზოგადად გუნდური სამუშაოა და მიუხედავად იმისა რომ ბევრ ჩვენგანს შეუძლია თავიდან ბოლომდე მარტომ გაიყვანოს პროექტი ბოლოში, კომერციული თვალსაზრისით ეს ყველაზე არასწორი გადაწყვეტილება იქნებოდა, რადგან პროექტის დასასრულებლად ძალიან დიდი ძალისხმევა და დრო იქნებოდა საჭირო. შესაბამისად შეიქმნა მიდგომები და გამოიყო როლები, რომლებიც ურთიერთშემავსებელი პრინციპით მუშაობს პროექტის დაგემვისა თუ უშუალო კეთების პროცესში.
რა თქმა უნდა მიდგომებში ვგულისხმობ მენეჯმენტისა და დეველოპმენტ პროცესების ოპტიმიზაციის მეთოდოლოგიებს რაც გვეხმარება რთული კომპონენტები მარტივ ამოცანებად დავყოთ, სწორი პრიორიტეტები გავწეროთ და ისე დავიწყოთ ამ ყველაფრის შენება. ეს დაახლოებით სახლის შენების პროცესს ჰგავს. ჯერ კლიენტი ყვება რა ჭირდება, არქიტექტორი ხატავს მონახაზს, განგრძობითი კომუნიკაციის ხარჯზე კლიენტი იღებს დასრულებულ მონახაზს, მომდევნო ეტაპზე დიზაინერი ექსტერიერის ვიზუალს ამუშავებს და ბოლოს ინჟინრები და მშენებლები იწყებენ პროექტის ფურცლიდან რეალობაში გადატანას.
დამეთანხმებით მკაფიოდ განსაზღვრული და წინასწარ სწორად დაგეგმილი სამუშაობების გარეშე სახლი ვერ აშენდება ან ძალიან ბევრი ხარვეზი გამოჩნდება რაც პროცესსა და ხარჯებს დაუსრულებლად გაწელავს როგორც წელიწადზე გაწელილი რემონტი.
იგივე პროცესები მიმდინარეობს დეველოპმენტშიც. პროექტში ბევრი როლი არსებობს სხვადასხვა გამოყოფილი პასუხისმგებლობებითა და ფუნქციონალით, რაც ასევე ცვალებადი პროცესია კომპანიის შიდა კულტურის შესაბამისად ამიტომ სხვადასხვა კომპანიაში სხვადასხვა სიტუაცია დაგხვდებათ და ეს სიურპრიზი არ უნდა იყოს. დღეს თითქმის ყველა კომპანია მენეჯმენტში იყენებს Agile მიდგომებს და ამ მეთოდოლოგიის გაცნობით შეძლებთ ზუსტი წარმოდგენა შეიქმნათ როგორ პროცესულ გარემოში მოგიწევთ მუშაობა.
როცა საქმე ეხება ვებ-ზე დაფუძნებული პროექტების შემუშავებას, არსებობს რამდენიმე საკვანძო როლი, რომლებიც ერთად მუშაობენ პროექტის განსახორციელებლად. იმისთვის რომ მკაფიო წარმოდგენა გვქონდეს პროექტზე მუშაობის პროცესზე აუცილებელია ვიცოდეთ ვისთან ერთად გვიწევს მუშაობა და რა არის პროექტში ჩვენი პასუხისმგებლობა. აქვე სანამ როლების აღწერაზე გადავალთ უნდა აღინიშნოს რომ გუნდში ყველა როლს ერთმანეთთან მკაფიო კომუნიკაცია აქვს და ყოველთვის შეგიძლიათ მიხვიდეთ ნებისმიერ როლთან და მათი კომპეტენციის შესაბამისი კითხვები დაუსვათ.
პროდუქტის მენეჯერი ან Product owner, ეს როლი შეიძლება სხვადასხვა დასახელებით შეგხვდეთ კომპანიის და იქ განსსაზღრული პროდუქტის როლის შესაბამისად. ეს როლი წარმოადგენს კლიენტს ან საბოლოო მომხმარებლებს. ეს როლი პასუხისმგებელია პროექტის მახასიათებლების, ფუნქციების განსაზღვრაზე და პრიორიტეტზე. ოუნერები მჭიდროდ თანამშრომლობენ პროექტის მენეჯერთან, დეველოპმენტ გუნდთან და დაინტერესებულ მხარეებთან რომლებსაც პროექტში სთეიქჰოლდერებს ეძახიან, რათა უზრუნველყონ, რომ პროექტი აკმაყოფილებდეს სასურველ მიზნებსა და მოთხოვნებს. მოკლედ რომ შევაჯამოთ ოუნერები არიან ის ადამიანები ვინც ეუბნებიან პროექტ მენეჯერებს და დეველოპმენტ გუნდს რა და როდის უნდა გაკეთდეს.
დეველოპმენტ გუნდი მოიცავს დიზაინერებს, ტესტერებს, პროექტ მენეჯერებს და უშუალოდ ინჟინრებს რომლებსაც დეველოპერებს ვეძახით.
მომდევნო როლია პროექტის მენეჯერი რომელიც ზედამხედველობს მთელ პროექტს. ისინი პასუხისმგებელნი არიან პროექტის ყველა აქტივობის დაგეგმვაზე, ორგანიზებასა და კოორდინაციაზე. ისინი მჭიდროდ თანამშრომლობენ კლიენტთან, სთეიქჰოლდერებთან და გუნდთან, რათა უზრუნველყონ პროექტის დროულად და ბიუჯეტის ფარგლებში მიწოდება.
წმინდა ეჯაილური მიდგომით პროექტ მენეჯერებს Scrum Masterებს ეძახიან. ისინი მჭიდროდ მიჰყვებიან Agile მეთოდოლოგიას, ისინი ხელს უწყობენ კომუნიკაციას და თანამშრომლობას დეველოპმენტ გუნდში. Scrum master-ები აშორებენ ყველა დაბრკოლებას, რამაც შეიძლება ხელი შეუშალოს პროგრესს და უზრუნველყოს, რომ პროექტი წარიმართოს Agile პრინციპების შესაბამისად.
აქვე ისიც დავამატოთ რომ ხშირად პროექტი და ფროდაქთი ერთი და იგივე ადამიანია ხოლმე და პირდაპირ დეველოპმენტ გუნდთან აქვს კომუნიკაცია. ესეც რა თქმა უნდა დამოკიდებულია კომპანიის სპეციფიკაზე. დიდ კომპანიებში უნდა გქონდეთ მოლოდინი რომ ეს როლები ცალ-ცალკე იქნება გამოყოფილი გუნდის მოცულობიდან და კომუნიკაციის კომპლექსურობიდან გამომდინარე. შედარებით მცირე კომპანიაში კი ერთი ადამიანი ითავსებს ყველაფერს.
მომდევნო როლი რაზეც უნდა ვისაუბროთ არის UX/UI დიზაინერი. ეს როლი ორიენტირებულია მომხმარებლისთვის მოსახერხებელი და ვიზუალურად მიმზიდველი გამოცდილების შექმნაზე ვებსაიტის ან ვებ აპლიკაციისთვის. ისინი ატარებენ სამიზნე აუდიტორიის კვლევას, ქმნიან მომხმარებლური გამოცდილების ანალიზს, აპროექტებენ ინტერფეისებს და გვაძლევენ პროექტის მოთხოვნების შესაბამის ვიზუალურ ნაწილს. დიზაინერები თანამშრომლობენ დეველოპერებთან, რათა შექმნან ინტუიციური და მარტივად მოსახმარებელი სასიამოვნო დიზაინის ელემენტები.
გადავიდეთ საინჟინრო როლებზეც: ფრონტ-ენდის დეველოპერი, ეს არის ის როლი რომლის საქმიანობის შესწავლას ამ კურსის განმავლობაში შეძლებთ. ფრონტ-ენდ დეველოპერი პასუხისმგებელია დიზაინისა და მომხმარებლის ინტერფეისის გამართვაზე. ანუ უფრო მარტივად რომ ვთქვათ ვიზუალურად როგორ გამოიყურება და ფუნქციონირებს ვებსაიტი ამას ფრონტენდი აკეთებს. ფრონტერები მუშაობენ ფრონტენდის ენებთან როგორიცაა:HTML, CSS და JavaScript. ამ ენებს ამ კურსზე ბოლომდე შევისწავლით რაც დაგეხმარებათ შექმნათ მომხმარებლის მხარის კომპონენტები. ფრონტ ენდ დეველოპერები გარდა ვებსაიტის ვიზუალური ნაწილისა პასუხისმგებელნი არიან ინფორმაციის მოთხოვნაზე და ამ ინფორმაციის დიზაინის შესაბამისად განლაგებაზე. ხოლო ეს ამ ინფორმაციის ლოგიკურად დამუშავებასა და თქვენამდე მოტანაზე უკვე მომდევნო როლი, ბექ-ენდ დეველოპერი ზრუნავს.
Back-End Developer: დეველოპერი ამუშავებს სერვერის ლოგიკასა და მონაცემთა ბაზას. ისინი მუშაობენ პროგრამირების ენებთან, როგორიცაა Python, PHP, ან Ruby, და ფრეიმორქებით, როგორიცაა Node.js ან Django. ისინი აწყობენ სერვერის კომპონენტებს, რომლებიც უზრუნველყოფენ ვებსაიტის ან ვებ აპლიკაციის გამართულ მუშაობას. ბექ ენდი პასუხისმგებელია როგორც ლოგიკის ასევე ბაზისა და კიბერ უსარფრთხოების ნაწილის გამართულობაზე.
ზემოთ ჩამოთვლილ ბოლო ორ როლს აერთიანებს Full-Stack დეველოპერი. ანუ ადამიანი ვინც ფლობს როგორც ფრონტ-ენდის, ასევე ბექ-ენდი უნარებს. მათ აქვთ საშუალება იმუშაონ როგორც კლიენტის, ასევე სერვერის მხარეს. ფულ სთექ დეველოპერებს შეუძლიათ გაუმკლავდნენ ამოცანების უფრო ფართო სპექტრს და შეუძლიათ დამოუკიდებლად იმუშაონ ან ითანამშრომლონ კონკრეტულ სფეროებში სპეციალისტებთან. რა თქმა უნდა მათზე მოთხოვნა ბევრად უფრო მაღალია, ანაზღაურებაც მეტი აქვთ და მათი შესრულებული სამუშაოს ხარისხიც ბევრად უკეთესია.
ალბათ დამეთანხმებით რომ ასეთ კომპლექსურ საქმეს კარგად გატესტვა ჭირდება თორემ შესაძლოა მარტივ შეცდომასაც კი ძალიან დიდი გავლენა ჰქონდეს მომხმარებლის გამოცდილებაზე პროდუქტის გამოყენებისას. მომდევნო როლი ხარისხის უზრუნველყოფის ტესტერია, იგივე QA ტესტერი. ის უზრუნველყოფს პროდუქტის ტესტირებას იმ მოთხოვნილი ხარისხის სტანდარტების მიხედვით, რაც დეველოპერს გადაეცა მენეჯმენტის გუნდისგან. ტესტერის როლი ძალიან მნიშვნელოვანია კომპლექსური ლოგიკის მქონე პროექტებში. გამოიყოფა ორი ტიპის ტესტინგი. არსებობს ხელით ტესტირება როცა QA თითოეულ კომპონენტს მომხმარებელივით მიყვება და ტესტავს ანუ მანუალ ტესტინგი და მეორე როლი არის ავტომატიზაციის ტესტერი რომელიც შესაბამის კოდს წერს იმისთვის რომ დეველოპერის ნამუშევარი ავტომატურად გაიტესტოს. აღმოჩენილი ხარვეზები რეგისტრირდება როგორც ბაგები და უბრუნდება დეველოპერს გასასწორებლად.
ალბათ უკვე გაგიჩნდებოდათ კითხვა ეს ყველაფერი როგორ იკვრება ერთად და მიდის მომხმარებლამდე. აქ შემოდის DevOps ინჟინერის როლი. DevOps ინჟინერი ფოკუსირებულია პროექტის გაშვებაზე, სერვერული გარემოს რესურსების ოპტიმიზაციაზე, ავტომატიზაციასა და შენარჩუნებაზე. ისინი ქმნიან და მართავენ ინფრასტრუქტურას, ახორციელებენ უწყვეტი ინტეგრაციისა და გამართულობის შესაბამის პროცესებს, ზრუნავენ პროექტის ზრდის სტრატეგიაზე ანუ დასქეილებაზე რაც გულისხმობს მეტი რესურსების ოპტიმალური დანახარჯით ოპტიმიზაციაზე, სერვერის უსაფრთხოებაზე.
რა თქმა უნდა ეს არ არის სრული ჩამონათვალი იმ როლებისა რომელსაც სამსახურში შეხვდებით და პროექტის კომპლექსურობიდან გამომდინარე ჩნდება ბევრი სხვა როლის საჭიროებაც, თუმცა ზემოთ ჩამოთვლილი როლები არიან ის ძირითადი დეველოპმენტ გუნდის წევრები რომლებზეც დგას მთელი პროექტი. მნიშვნელოვანია აღინიშნოს, რომ მცირე გუნდებში ან სტარტაპებში, ინდივიდებმა შეიძლება შეასრულონ რამდენიმე როლი, მაშინ როდესაც უფრო დიდ გუნდებს შეიძლება ჰყავდეთ სპეციალიზებული ინდივიდები თითოეული როლისთვის.
ამ როლებისა და მათი პასუხისმგებლობების გაცნობიერებით, შეგიძლიათ შეაფასოთ ერთობლივი ძალისხმევა, რომელიც საჭიროა ვებ-ზე დაფუძნებული პროექტის წარმატებით განსახორციელებლად. ეს კი ძალიან მნიშვნელოვანი მომენტია რადგან მსგავსი პროექტები რამდენიმე ათეული ათასი დოლარი ღირს და რესურსებს სწორად ათვისება ჭირდება. ამითვის თითოეული როლი გადამწყვეტ როლს ასრულებს მომხმარებლის უწყვეტი და სასიამოვნო გამოცდილების შექმნაში.