ბოლო ორი წლის განმავლობაში, მე და ჩემი გუნდი Work & Co-ში ვამოწმებთ და თანდათან ვაერთიანებთ AI კოდირების ინსტრუმენტებს, როგორიცაა Copilot, Cursor, Claude და ChatGPT, რათა დაგვეხმაროს გამოგვეგზავნოთ ვებ გამოცდილება, რომელსაც იყენებს მასები. მართალია, თავდაპირველი სკეპტიციზმისა და რამდენიმე აჰა მომენტის შემდეგ, AI-ის სხვადასხვა ინსტრუმენტმა იპოვა გზა ჩემს ყოველდღიურ გამოყენებაში. დროთა განმავლობაში, აპლიკაციების სია, სადაც მივხვდით, რომ აზრი ჰქონდა AI-ს ხელში ჩაგდებას, დაიწყო ზრდა, ამიტომ გადავწყვიტე გამეზიარებინა AI ინსტრუმენტების პრაქტიკული გამოყენების შემთხვევები, რასაც მე „პასუხისმგებლიან დეველოპერს“ ვუწოდებ. რას ვგულისხმობ პასუხისმგებელ დეველოპერში? ჩვენ უნდა დავრწმუნდეთ, რომ მივაწოდოთ ხარისხიანი კოდი, როგორც ამას ჩვენი დაინტერესებული მხარეები და კლიენტები მოელიან. ჩვენი წვლილი (ანუ, მოთხოვნა) არ უნდა გახდეს ტვირთი ჩვენი კოლეგებისთვის, რომლებსაც მოუწევთ ჩვენი მუშაობის გადახედვა და ტესტირება. ასევე, იმ შემთხვევაში, თუ თქვენ მუშაობთ კომპანიაში: ინსტრუმენტები, რომლებსაც ჩვენ ვიყენებთ, დამტკიცებული უნდა იყოს ჩვენი დამსაქმებლის მიერ. ისეთ სენსიტიურ ასპექტებს, როგორიცაა უსაფრთხოება და კონფიდენციალურობა, სათანადოდ უნდა დამუშავდეს: არ ჩასვათ საიდუმლოებები, მომხმარებლის მონაცემები (PII) ან საკუთრების კოდი ინსტრუმენტებში პოლიტიკის დამტკიცების გარეშე. მოექეცით მას, როგორც ინტერნეტში უცხო ადამიანის კოდს. ყოველთვის შეამოწმეთ და გადაამოწმეთ. შენიშვნა: ეს სტატია ითვალისწინებს გარკვეულ ელემენტარულ ცოდნას AI კოდირების ინსტრუმენტებთან, როგორიცაა Copilot VSCode-ში ან Cursor-ში. თუ ეს ყველაფერი თქვენთვის სრულიად ახალად და უცხოდ ჟღერს, Github Copilot-ის ვიდეო გაკვეთილები შეიძლება იყოს ფანტასტიკური საწყისი წერტილი თქვენთვის.
AI კოდირების ხელსაწყოების სასარგებლო აპლიკაციები შენიშვნა: შემდეგი მაგალითები ძირითადად ფოკუსირებული იქნება JavaScript-ზე დაფუძნებულ ვებ აპლიკაციებში მუშაობაზე, როგორიცაა React, Vue, Svelte ან Angular. უცნობი კოდების ბაზის გაგება არცთუ იშვიათია დადგენილ კოდების ბაზაზე მუშაობა და დიდი მემკვიდრეობითი კოდების ბაზასთან შეერთება შეიძლება შეშინდეს. უბრალოდ გახსენით თქვენი პროექტი და თქვენი AI აგენტი (ჩემს შემთხვევაში, Copilot Chat VSCode-ში) და დაიწყეთ კითხვების დასმა ისევე, როგორც კოლეგას დაუსვამთ. ზოგადად, მე მომწონს ნებისმიერ AI აგენტთან საუბარი ისევე, როგორც თანამემამულესთან. აქ არის უფრო დახვეწილი მაგალითის მოთხოვნა: "მომეცი მაღალი დონის არქიტექტურის მიმოხილვა: შესასვლელი წერტილები, მარშრუტიზაცია, ავტორიზაცია, მონაცემთა ფენა, build tooling. შემდეგ ჩამოთვალეთ 5 ფაილი, რომლებიც უნდა წაიკითხოთ თანმიმდევრობით. განიხილეთ განმარტებები ჰიპოთეზად და დაადასტურეთ მითითებულ ფაილებზე გადასვლით."
შეგიძლიათ განაგრძოთ შემდგომი კითხვების დასმა, როგორიცაა „როგორ მუშაობს მარშრუტიზაცია დეტალურად?“ ან „დამილაპარაკე ავთენტიფიკაციის პროცესისა და მეთოდების შესახებ“ და ის მიგიყვანთ გამოსადეგ მიმართულებამდე, რათა გაანათოთ შუქი უცნობი კოდების ბაზის სიბნელეში. დამოკიდებულებების განახლებისას ცვლილებების შეწყვეტა npm პაკეტების განახლება, განსაკუთრებით მაშინ, როდესაც ისინი არღვევენ ცვლილებებს, შეიძლება იყოს დამღლელი და შრომატევადი სამუშაო და გაგიადვილოთ რეგრესიების საკმაოდ დიდი რაოდენობა. მე ცოტა ხნის წინ მომიწია მონაცემთა ვიზუალიზაციის ბიბლიოთეკის განახლება plotly.js ერთი ძირითადი გამოშვების ვერსიიდან 2-დან 3-მდე და ამის შედეგად ზოგიერთ გრაფიკზე ღერძის მარკირება შეწყვიტა მუშაობა. მე გავაგრძელე ChatGPT-ის კითხვა: "მე განვაახლე ჩემი Angular პროექტი, რომელიც იყენებს Plotly-ს. განვაახლე plotly.js - დისტანციური პაკეტი 2.35.2 ვერსიიდან 3.1.0-მდე - და ახლა ეტიკეტები x და y ღერძზე გაქრა. რა მოხდა?"
აგენტი სასწრაფოდ დაბრუნდა ხსნარით (იხილეთ თქვენთვის ქვემოთ). შენიშვნა: მე მაინც გადავამოწმე ახსნა ოფიციალური მიგრაციის სახელმძღვანელოსთან დაკავშირებით, სანამ გამოსწორებას გადავიტანდი.
რეფაქტორების უსაფრთხოდ გამეორება ფაილებში მზარდი კოდების ბაზები, რა თქმა უნდა, ავლენს კოდების კონსოლიდაციის შესაძლებლობებს. მაგალითად, შეამჩნევთ კოდის დუბლირებას ფაილებში, რომლებიც შეიძლება ამოღებულ იქნეს ერთ ფუნქციაში ან კომპონენტში. შედეგად, თქვენ გადაწყვიტეთ შექმნათ გაზიარებული კომპონენტი, რომელიც შეიძლება იყოს ჩართული და შეასრულოთ ეს რეფაქტორი ერთ ფაილში. ახლა, იმის ნაცვლად, რომ ხელით განახორციელოთ ეს ცვლილებები თქვენს დარჩენილ ფაილებში, თქვენ სთხოვთ თქვენს აგენტს გამოაქვეყნოს რეფაქტორი თქვენთვის. აგენტები საშუალებას გაძლევთ აირჩიოთ მრავალი ფაილი კონტექსტად. ერთი ფაილის რეფაქტორის დასრულების შემდეგ, მე შემიძლია დავამატო როგორც რეფაქტორული, ისე ხელუხლებელი ფაილები კონტექსტში და ვთხოვ აგენტს გააფართოვოს ცვლილებები სხვა ფაილებში შემდეგნაირად: „გაიმეორეთ A ფაილში შეტანილი ცვლილებები B ფაილზეც“. ფუნქციების დანერგვა უცნობ ტექნოლოგიებში ჩემი ერთ-ერთი საყვარელი აჰა-მომენტი ხელოვნური ინტელექტის კოდირების ხელსაწყოების გამოყენებით იყო, როდესაც ის დამეხმარა შეგვექმნა საკმაოდ რთული ანიმაციური გრადიენტური ანიმაცია GLSL-ში, ენაზე, რომელიც საკმაოდ არ ვიცნობდი. უახლეს პროექტზე, ჩვენმა დიზაინერებმა გამოიგონეს ანიმაციური გრადიენტი, როგორც დატვირთვის მდგომარეობა 3D ობიექტზე. მე ძალიან მომეწონა კონცეფცია და მინდოდა მიმეწოდებინა რაღაც უნიკალური და საინტერესო ჩვენს კლიენტებს. Theპრობლემა: მე მხოლოდ ორი დღე მქონდა მის განსახორციელებლად და GLSL-ს საკმაოდ ციცაბო სწავლის მრუდი აქვს. კიდევ ერთხელ, AI ინსტრუმენტი (ამ შემთხვევაში, ChatGPT) გამომადგა და მე დავიწყე უბრალოდ ვთხოვე, რომ შემექმნა დამოუკიდებელი HTML ფაილი ჩემთვის, რომელიც ასახავს ტილოს და ძალიან მარტივ ანიმაციურ ფერთა გრადიენტს. ნაბიჯ-ნაბიჯ, მე ვთხოვე AI-ს დაემატებინა მეტი დახვეწილობა, სანამ არ მივიდოდი ღირსეულ შედეგს, რათა დამეწყო ჩრდილის ინტეგრირება ჩემს რეალურ კოდის ბაზაში. საბოლოო შედეგი: ჩვენი კლიენტები იყვნენ ძალიან ბედნიერები და ჩვენ მივაწოდეთ რთული ფუნქცია მცირე დროში ხელოვნური ინტელექტის წყალობით. წერითი ტესტები ჩემი გამოცდილებიდან გამომდინარე, პროექტებზე იშვიათად არის საკმარისი დრო, რომ განუწყვეტლივ დაწერონ და შეინარჩუნონ ერთეულებისა და ინტეგრაციის ტესტების სათანადო ნაკრები, და ამის გარდა, ბევრ დეველოპერს ნამდვილად არ სიამოვნებს ტესტების წერის ამოცანა. თქვენი ხელოვნური ინტელექტის დამხმარის თხოვნა, დააყენოს და დაწეროს თქვენთვის ტესტები, სავსებით შესაძლებელია და შეიძლება გაკეთდეს მცირე დროში. რა თქმა უნდა, თქვენ, როგორც დეველოპერმა, მაინც უნდა დარწმუნდეთ, რომ თქვენი ტესტები რეალურად ათვალიერებენ თქვენი აპლიკაციის მნიშვნელოვან ნაწილებს და მიჰყვებიან გონივრული ტესტირების პრინციპებს, მაგრამ შეგიძლიათ ტესტების ჩაწერა ჩვენს AI დამხმარეს „გააუფორმოთ“. მოთხოვნის მაგალითი: "დაწერეთ ერთეული ტესტები ამ ფუნქციისთვის Jest-ის გამოყენებით. დაფარეთ ბედნიერი გზა, საზღვრების შემთხვევები და წარუმატებლობის რეჟიმები. ახსენით, რატომ არსებობს თითოეული ტესტი."
თქვენ შეგიძლიათ გაეცნოთ ტესტირების გურუ კენტ ს. დოდსის ტესტირების საუკეთესო პრაქტიკებს, როგორც მითითებებს თქვენი აგენტისთვის, როგორიცაა ქვემოთ:
შიდა ხელსაწყოები ადრე ნახსენები შადერის მაგალითის მსგავსად, მე ახლახანს დავალებული მქონდა გამეანალიზებინა კოდების დუბლირება კოდის ბაზაში და შედარება რეფაქტორამდე და მის შემდეგ. რა თქმა უნდა, არ არის ტრივიალური ამოცანა, თუ არ გსურთ ფაილების ხელით შედარების შრომატევადი მარშრუტის გავლა. Copilot-ის დახმარებით შევქმენი სკრიპტი, რომელიც აანალიზებდა ჩემთვის კოდის დუბლირებას, მოვაწესრიგებდი და ვაწესრიგებდი გამომავალს ცხრილში და ექსპორტზე ვატარებდი მას Excel-ში. მერე კიდევ ერთი ნაბიჯი გადავდგი. როდესაც ჩვენი კოდის რეფაქტორი დასრულდა, მე ვთხოვე აგენტს, აეღო ჩემი არსებული Excel ფურცელი, როგორც საბაზისო ხაზი, დაემატებინა დუბლირების მიმდინარე მდგომარეობა ცალკეულ სვეტებში და გამოთვალა დელტა. დიდი ხნის წინ დაწერილი კოდის განახლება ცოტა ხნის წინ, ჩემმა ძველმა კლიენტმა დამემართა, რადგან დროთა განმავლობაში, რამდენიმე ფუნქცია მის ვებსაიტზე გამართულად აღარ მუშაობდა. დაჭერა: ვებგვერდი აშენდა თითქმის ათი წლის წინ და JavaScript და SCSS იყენებდნენ საკმაოდ ძველ კომპილაციის ინსტრუმენტებს, როგორიცაა requireJS, და დაყენება მოითხოვდა Node.js-ის უფრო ძველ ვერსიას, რომელიც არც კი იმუშავებდა ჩემს 2025 წლის MacBook-ზე. მთელი აშენების პროცესის ხელით განახლებას დღეები დამჭირდებოდა, ამიტომ გადავწყვიტე AI აგენტს ვთხოვო: „შეგიძლიათ განაახლოთ JS და SCSS build პროცესი 2025 წლის მჭლე სტეკზე, როგორიცაა Vite?“ ეს ნამდვილად მოხდა და აგენტთან დახვეწის დაახლოებით ერთი საათის შემდეგ, მე გადავიტანე ჩემი SCSS და JS build Vite-ზე და შევძელი ფოკუსირება ფაქტობრივ შეცდომების გამოსწორებაზე. უბრალოდ დარწმუნდით, რომ სწორად გადაამოწმეთ გამომავალი და შედგენილი ფაილები, როდესაც ახორციელებთ ასეთ განუყოფელ ცვლილებებს თქვენი მშენებლობის პროცესში. შეჯამება და შედგენა გსურთ შეაჯამოთ ყველა თქვენი ბოლო კოდის ცვლილება ერთ წინადადებაში commit შეტყობინებისთვის, თუ გქონდეთ ვალდებულებების გრძელი სია და გსურთ შეაჯამოთ ისინი სამ პუნქტში? პრობლემა არ არის, ნება მიეცით AI-ს იზრუნოს ამაზე, მაგრამ გთხოვთ, დარწმუნდით, რომ შეასწორეთ იგი. მაგალითის მოთხოვნა ისეთივე მარტივია, როგორც მესიჯის გაგზავნა თანამემამულესთან: „გთხოვთ, შეაჯამოთ ჩემი ბოლო ცვლილებები მოკლე პუნქტებში“. ჩემი რჩევა აქ იქნება, გამოიყენო GPT სიფრთხილით დასაწერად და, როგორც კოდის შემთხვევაში, გთხოვთ, გადაამოწმოთ გამოსავალი გაგზავნამდე ან გაგზავნამდე. რეკომენდაციები და საუკეთესო პრაქტიკა მოწოდება ხელოვნური ინტელექტის გამოყენების ერთ-ერთი არც თუ ისე აშკარა უპირატესობა არის ის, რომ რაც უფრო კონკრეტული და მორგებული იქნება თქვენი მოთხოვნები, მით უკეთესი იქნება გამომავალი. AI აგენტის მოთხოვნის პროცესი გვაიძულებს ჩამოვაყალიბოთ ჩვენი მოთხოვნები რაც შეიძლება კონკრეტულად, სანამ დავწერთ და კოდირებთ. ამიტომ, როგორც წესი, გირჩევთ იყოთ რაც შეიძლება კონკრეტული თქვენი მოთხოვნით. რაიან ფლორენსი, Remix-ის თანაავტორი, გვთავაზობს მარტივ, მაგრამ მძლავრ გზას ამ პროცესის გასაუმჯობესებლად, თქვენი საწყისი მოთხოვნა წინადადებით დაასრულეთ: "სანამ დავიწყებთ, გაქვთ რაიმე შეკითხვები ჩემთან?"
ამ ეტაპზე, ხელოვნური ინტელექტი ჩვეულებრივ ბრუნდება სასარგებლო კითხვებით, სადაც შეგიძლიათ დააზუსტოთ თქვენი კონკრეტული განზრახვა, ხელმძღვანელობით აგენტს, რომ მოგაწოდოთ უფრო მორგებული მიდგომა თქვენი ამოცანისთვის.
გამოიყენეთ ვერსიის კონტროლი და იმუშავეთ საჭმლის მომნელებელ ნაწილებში ვერსიის კონტროლის გამოყენება, როგორიცაა git, არა მხოლოდ გამოსადეგია გუნდურად თანამშრომლობისას ერთი კოდის ბაზაზე, არამედ მოგაწოდოთ როგორცინდივიდუალური კონტრიბუტორი სტაბილური ქულებით, რომელზედაც უნდა დაბრუნდეს გადაუდებელი შემთხვევების შემთხვევაში. მისი არადეტერმინისტული ბუნების გამო, ხელოვნური ინტელექტი ხანდახან შეიძლება ბოროტი იყოს და შეიტანოს ცვლილებები, რომლებიც უბრალოდ არ არის გამოსადეგი იმისთვის, რის მიღწევასაც ცდილობთ და საბოლოოდ გამოუსწორებლად დაარღვიოს რამე. თქვენი სამუშაოს მრავალჯერად დაყოფა დაგეხმარებათ შექმნათ სტაბილური პუნქტები, რომლებზეც შეგიძლიათ დაუბრუნდეთ იმ შემთხვევაში, თუ რამე გვერდით წავა. და თქვენი თანაგუნდელებიც მადლობას მოგახსენებთ, რადგან მათ გაუადვილდებათ თქვენი კოდის განხილვა, როდესაც ის დაყოფილია სემანტიკურად კარგად სტრუქტურირებულ ნაწილებად. გადახედეთ საფუძვლიანად ეს უფრო ზოგადი საუკეთესო პრაქტიკაა, მაგრამ, ჩემი აზრით, კიდევ უფრო მნიშვნელოვანი ხდება AI ინსტრუმენტების გამოყენებისას განვითარების სამუშაოებისთვის: იყავით თქვენი კოდის პირველი კრიტიკული მიმომხილველი. დარწმუნდით, რომ გარკვეული დრო დაუთმეთ თქვენს ცვლილებებს სტრიქონ-სტრიქონზე გადასასვლელად, ისევე, როგორც სხვის კოდს განიხილავდით და გაგზავნეთ თქვენი ნამუშევარი მხოლოდ მას შემდეგ, რაც ის გაივლის თქვენს საკუთარ თვითგანხილვას. „ორი რამ მართალია ჩემთვის ახლა: ხელოვნური ინტელექტის აგენტები გასაოცარია და უზარმაზარ პროდუქტიულობას აძლიერებს. ისინი ასევე არიან მასიური სლოპ მანქანები, თუ ტვინს გამორთავ და მთლიანად გაუშვი.“ - არმინ რონახერი თავის ბლოგ პოსტში Agent Psychosis: Are We Going Insane?
დასკვნა და კრიტიკული აზრები ჩემი აზრით, AI კოდირების ინსტრუმენტებს შეუძლიათ გააუმჯობესონ ჩვენი პროდუქტიულობა, როგორც დეველოპერები ყოველდღიურად და გაათავისუფლონ გონებრივი შესაძლებლობები მეტი დაგეგმვისა და მაღალი დონის აზროვნებისთვის. ისინი გვაიძულებენ გამოვხატოთ ჩვენი სასურველი შედეგი დეტალური დეტალებით. ნებისმიერ AI-ს შეუძლია, ზოგჯერ ჰალუცინაცია, რაც ძირითადად ნიშნავს, რომ ის თავდაჯერებულ ტონშია. ამიტომ, დარწმუნდით, რომ შეამოწმეთ და შეამოწმეთ, განსაკუთრებით მაშინ, როდესაც ეჭვი გეპარებათ. ხელოვნური ინტელექტი არ არის ვერცხლის ტყვია და მე მჯერა, რომ ბრწყინვალება და პრობლემების გადაჭრის უნარი, როგორც დეველოპერი, არასოდეს გადავა მოდიდან. დეველოპერებისთვის, რომლებიც ახლახან იწყებენ კარიერას, ეს ხელსაწყოები შეიძლება იყოს ძალიან მაცდური, რომ შეასრულონ სამუშაოს უმეტესი ნაწილი მათთვის. ის, რაც აქ შეიძლება დაიკარგოს, არის ხშირად დამღლელი და მტკივნეული მუშაობა შეცდომებისა და პრობლემების გამო, რომელთა გამართვა და გადაჭრა რთულია, ა.შ. კურსორის ხელოვნური ინტელექტის საკუთარი ლი რობინსონიც კი კითხულობს ამას თავის ერთ-ერთ პოსტში:
ხელოვნური ინტელექტის კოდირების ხელსაწყოები ვითარდება სწრაფი ტემპით და მე აღფრთოვანებული ვარ შემდეგში. იმედი მაქვს, რომ ეს სტატია და მისი რჩევები თქვენთვის სასარგებლო აღმოჩნდა და სიამოვნებით გამოსცადეთ ზოგიერთი მათგანი თქვენთვის.