Во текот на последните две години, јас и мојот тим во Work & Co тестиравме и постепено ги интегриравме алатките за кодирање со вештачка интелигенција како Copilot, Cursor, Claude и ChatGPT за да ни помогнат да испраќаме веб-искуства што ги користат масите. Мора да се признае, по одреден првичен скептицизам и неколку аха моменти, разни алатки за вештачка интелигенција се најдоа во мојата секојдневна употреба. Со текот на времето, списокот на апликации каде што откривме дека има смисла да дозволиме вештачката интелигенција да ја преземе, почна да расте, па решив да споделам некои практични случаи за употреба на алатки за вештачка интелигенција за она што јас го нарекувам „одговорен развивач“. Што подразбирам под одговорен програмер? Мораме да се погрижиме да испорачаме квалитетен код како што се очекува од нашите засегнати страни и клиенти. Нашите придонеси (т.е. барања за повлекување) не треба да станат товар за нашите колеги кои ќе треба да ја прегледаат и тестираат нашата работа. Исто така, во случај да работите за компанија: Алатките што ги користиме треба да бидат одобрени од нашиот работодавец. Чувствителните аспекти како безбедноста и приватноста треба да се постапуваат правилно: не ставајте тајни, податоци за клиентите (PII) или заштитен код во алатки без одобрение од политиката. Третирајте го како код од странец на интернет. Секогаш тестирајте и проверувајте. Забелешка: Овој напис претпоставува некои многу основни познавања со алатките за кодирање со вештачка интелигенција како Copilot во VSCode или курсорот. Ако сето ова ви звучи сосема ново и непознато, видео упатствата за Github Copilot може да бидат фантастична почетна точка за вас.
Корисни апликации на алатките за кодирање со вештачка интелигенција Забелешка: Следниве примери главно ќе се фокусираат на работа во веб-апликации базирани на JavaScript како React, Vue, Svelte или Angular. Добивање разбирање за непозната база на кодови Не е невообичаено да се работи на воспоставени бази на кодови, а приклучувањето на големата наследна база на кодови може да биде застрашувачко. Едноставно отворете го вашиот проект и вашиот агент за вештачка интелигенција (во мојот случај, Copilot Chat во VSCode) и почнете да поставувате прашања исто како што би поставиле некој колега. Во принцип, сакам да разговарам со кој било агент за вештачка интелигенција исто како што би разговарал со друг човек. Еве еден попрефинет пример за барање: „Дајте ми преглед на архитектурата на високо ниво: влезни точки, рутирање, проверка, слој на податоци, алатки за градење. Потоа наведете 5 датотеки за читање по редослед. Објаснете ги објаснувањата како хипотези и потврдете со прескокнување на референцирани датотеки.
Може да продолжите да поставувате прашања за следење како „Како функционира рутирањето во детали?“ или „Зборувај ми низ процесот и методите за автентикација“ и ќе ве одведе до корисни насоки за да заблескате малку светлина во темнината на непознатата база на кодови. Triaging прекин на промените при надградба на зависности Ажурирањето на npm пакетите, особено кога тие доаѓаат со промени, може да биде досадна и одзема многу време и да ве натера да дебагирате прилично регресии. Неодамна морав да ја надградам библиотеката за визуелизација на податоци plotly.js до една голема верзија од верзијата 2 на 3, и како резултат на тоа, означувањето на оската во некои од графиконите престана да работи. Понатаму го прашав ChatGPT: „Го ажурирав мојот Angular проект кој користи Plotly. Го ажурирав plotly.js - dist пакет од верзијата 2.35.2 на 3.1.0 - и сега етикетите на оската x и y ги нема. Што се случи?
Агентот веднаш се врати со решение (видете сами подолу). Забелешка: Сè уште го потврдив објаснувањето во однос на официјалниот водич за миграција пред да ја испратам поправката.
Безбедно реплицирање на рефакторите низ датотеките Растечките бази на кодови секако ги откриваат можностите за консолидација на кодот. На пример, забележувате дуплирање на кодот низ датотеките што може да се извлечат во една функција или компонента. Како резултат на тоа, одлучувате да креирате споделена компонента што може да се вклучи наместо тоа и да го извршите тој рефактор во една датотека. Сега, наместо рачно да ги извршите тие промени во вашите преостанати датотеки, вие барате од вашиот агент да го претстави рефакторот за вас. Агентите ви дозволуваат да изберете повеќе датотеки како контекст. Откако ќе заврши рефакторот за една датотека, можам да ги додадам и рефакторираните и недопрените датотеки во контекст и да го поттикнам агентот да ги спроведе промените во други датотеки како ова: „Промените што ги направив во датотеката А да ги реплицирам и во датотеката Б“. Спроведување на карактеристики во непознати технологии Еден од моите омилени аха-моменти со користење на алатки за кодирање со вештачка интелигенција беше кога ми помогна да создадам прилично сложена анимирана градиентна анимација во GLSL, јазик со кој сум прилично непознат. На еден неодамнешен проект, нашите дизајнери дојдоа до анимиран градиент како состојба на вчитување на 3D објект. Навистина ми се допадна концептот и сакав да им испорачам нешто уникатно и возбудливо на нашите клиенти. Напроблем: Имав само два дена да го имплементирам, а GLSL има прилично стрмна крива на учење. Повторно, алатката за вештачка интелигенција (во овој случај, ChatGPT) ми се најде и почнав едноставно да ја поттикнувам да создаде самостојна HTML-датотека за мене што прикажува платно и многу едноставен анимиран градиент на боја. Чекор по чекор, ја поттикнав вештачката интелигенција да додаде повеќе финост во неа додека не стигнам до пристоен резултат за да можам да почнам да го интегрирам шејдерот во мојата вистинска база на кодови. Крајниот резултат: нашите клиенти беа супер среќни, а ние испорачавме сложена функција за мало време благодарение на вештачката интелигенција. Тестови за пишување Според моето искуство, ретко има доволно време за проекти за континуирано пишување и одржување на соодветен пакет на тестови за единици и интеграции, а згора на тоа, многу програмери навистина не уживаат во задачата да пишуваат тестови. Поттикнувањето на вашиот помошник за вештачка интелигенција да постави и пишува тестови за вас е сосема можно и може да се направи за мал временски период. Се разбира, вие, како развивач, сепак треба да бидете сигурни дека вашите тестови навистина ги разгледуваат критичните делови од вашата апликација и ги следат разумните принципи за тестирање, но можете да го „нарачувате“ пишувањето на тестовите на нашиот помошник за вештачка интелигенција. Пример за навестување: „Напишете единечни тестови за оваа функција користејќи Jest. Покријте среќна патека, случаи на рабови и режими на неуспех. Објаснете зошто постои секој тест“.
Можете дури и да ги пренесете најдобрите практики за тестирање на гуруто Кент Ц. Додс како упатства за вашиот агент, како подолу:
Внатрешна алатка Нешто слично на примерот за шејдер споменат претходно, неодамна добив задача да анализирам дуплирање на кодови во базата на кодови и да споредам пред и по рефактор. Секако, не е тривијална задача ако не сакате да одите по долгата рута на рачно споредување на датотеките. Со помош на Copilot, создадов скрипта што ми го анализираше дуплирањето на кодот, го подреди и нареди излезот во табела и го извезуваше во Excel. Потоа отидов чекор понатаму. Кога нашиот код рефактор беше завршен, го поттикнав агентот да го земе мојот постоечки лист на Excel како основна линија, да ја додаде моменталната состојба на дуплирање во посебни колони и да ја пресмета делтата. Ажурирање на кодот напишан многу одамна Неодамна, еден мој стар клиент ме удри, бидејќи со текот на времето, неколку функции повеќе не функционираа правилно на неговата веб-страница. Факт: веб-локацијата беше изградена пред речиси десет години, а JavaScript и SCSS користеа прилично стари алатки за компајлирање како што е requireJS, а поставувањето бараше постара верзија на Node.js што нема да работи ниту на мојот MacBook од 2025 година. Ажурирањето на целиот процес на градење рачно би ми одзело неколку дена, па решив да го поттикнам агентот за вештачка интелигенција: „Можете ли да го ажурирате процесот на градење на JS и SCSS на посен стек од 2025 година како Vite? Сигурно се случи, и по околу еден час рафинирање со агентот, ја префрлив мојата верзија на SCSS и JS на Vite и можев да се фокусирам на вистинското поправање на грешки. Само погрижете се правилно да ги потврдите излезните и компајлираните датотеки кога правите такви интегрални промени во вашиот процес на градење. Сумирање и изготвување Дали сакате да ги сумирате сите ваши неодамнешни промени на кодот во една реченица за порака за обврзување или да имате долга листа на обврски и би сакале да ги сумирате во три точки? Нема проблем, дозволете вештачката интелигенција да се погрижи за тоа, но ве молиме погрижете се да ја лекторирате. Пример за навестување е едноставно како испраќање пораки на сограѓанин: „Ве молам, сумирајте ги моите неодамнешни промени во концизни точки“. Мојот совет овде би бил да го користите GPT за пишување со претпазливост, и како и со кодот, ве молиме проверете го излезот пред да испратите или испратите. Препораки и најдобри практики Поттикнување Една од не толку очигледните придобивки од користењето на вештачката интелигенција е тоа што колку поконкретни и приспособени се вашите потсетници, толку е подобар излезот. Процесот на поттикнување агент за вештачка интелигенција нè принудува да ги формулираме нашите барања што е можно поконкретно пред да пишуваме и кодираме. Затоа, како општо правило, топло препорачувам да бидете што е можно поконкретни со вашето поттикнување. Рајан Флоренс, коавтор на Remix, предлага едноставен, но моќен начин за подобрување на овој процес со завршување на вашиот првичен предлог со реченицата: „Пред да започнеме, имате ли прашања за мене?
Во овој момент, вештачката интелигенција обично се враќа со корисни прашања каде што можете да ја разјасните вашата специфична намера, насочувајќи го агентот да ви обезбеди поприспособен пристап за вашата задача.
Користете контрола на верзијата и работете во сварливи парчиња Користењето на контрола на верзијата како git не само што е корисно кога соработуваме како тим на единствена база на кодови, туку и за да ви обезбедиме какоиндивидуален соработник со стабилни точки на кои треба да се вратите во случај на итност. Поради својата недетерминистичка природа, вештачката интелигенција понекогаш може да биде одвратна и да направи промени кои едноставно не се корисни за она што се обидувате да го постигнете и на крајот да ги разбие работите непоправливо. Поделбата на вашата работа на повеќе обврски ќе ви помогне да создадете стабилни точки на кои можете да се вратите во случај работите да тргнат настрана. И вашите соиграчи ќе ви се заблагодарат исто така, бидејќи ќе имаат полесно да го прегледаат вашиот код кога ќе се подели на семантички добро структурирани делови. Прегледајте темелно Ова е повеќе општа најдобра практика, но според мое мислење, станува уште поважно кога користите алатки за вештачка интелигенција за развојна работа: бидете првиот критички прегледувач на вашиот код. Погрижете се да одвоите малку време за да ги прегледате вашите промени ред по ред, исто како што би го прегледале туѓиот код и испратете ја вашата работа само откако ќе помине ваша сопствена рецензија. „Две работи ми се вистинити во моментов: агентите со вештачка интелигенција се неверојатни и огромно ја зголемуваат продуктивноста. Тие се исто така масивни slop машини ако го исклучите вашиот мозок и целосно го ослободите.“ - Армин Роначер во својот блог пост Agent Psychosis: Are We Going Insane?
Заклучок и критички мисли Според мое мислење, алатките за кодирање со вештачка интелигенција можат да ја подобрат нашата продуктивност како програмери на дневна основа и да го ослободат менталниот капацитет за повеќе планирање и размислување на високо ниво. Тие не принудуваат да го артикулираме посакуваниот исход со прецизни детали. Секоја вештачка интелигенција, понекогаш, може да халуцинира, што во основа значи дека лежи во самоуверен тон. Затоа, погрижете се да проверите и тестирате, особено кога се сомневате. ВИ не е сребрен куршум и верувам дека извонредноста и способноста да се решаваат проблемите како развивач никогаш нема да излезат од мода. За програмерите кои штотуку ја започнуваат својата кариера, овие алатки може да бидат многу примамливи да го завршат најголемиот дел од работата за нив. Она што може да се изгуби овде е често исцрпувачката и болна работа преку грешки и проблеми кои се незгодни за отстранување и решавање, познат како „мелење“. Дури и самиот Ли Робинсон на курсорот АИ го поставува прашањето во една од неговите објави:
Алатките за кодирање со вештачка интелигенција се развиваат со брзо темпо, и јас сум возбуден за она што ќе следи. Се надевам дека овој напис и неговите совети ви беа корисни и дека сте возбудени да пробате некои од нив самите.