Чи замінить штучний інтелект розробників? Аналіз майбутнього програмування

by Matt Stamp
Чи замінить штучний інтелект розробників? Аналіз майбутнього програмування thumbnail

Чи може майбутній ШІ насправді писати повністю додатки та забирати роботу у програмістів? Давайте реалістично розглянемо, що ШІ може та не може робити станом на 2024 рік.

Ви, мабуть, чули, як люди говорять про ChatGPT та інші нові чат-боти на базі штучного інтелекту. Вони ведуть бесіду на різні теми дивовижно добре. І так, вони також можуть вирішувати багато проблем з програмуванням.

Але чи є ШІ екзистенційною загрозою для кар’єри розробників? Чи стане він лише ще одним інструментом для підвищення можливостей програмістів?

У цьому посібнику ми розглянемо реальні можливості ШІ у розробці програмного забезпечення, де технологія все ще має недоліки, та як ви можете захистити свої навички в цьому швидкозмінному середовищі.

ChatGPT та LLM: Розуміння технологій ШІ

LLM з даними для навчання зліва, що показує інформацію, яка надходить у фільтр, та зліва на право - від даних до чату, показуючи введення користувача до аналізу шаблонів і генерації відповіді

Чатботи, такі як ChatGPT, не є програмами, які “мислять“. Вони не розуміють мову чи кодування. Вони передбачають розумні відповіді, виявляючи шаблони у величезних купах текстових даних з інтернету.

Програмісти називають їх «великі мовні моделі» (LLMs), що є складним терміном для передбачувача тексту на стероїдах.

Щоб поставити “велике” у перспективу, ChatGPT було навчено на наборі даних від 570GB до 45TB текстових фрагментів, що охоплюють інтернет-форуми, книги та онлайн-письмо, і багато інформації було взято прямо з Reddit.

Цей великий обсяг текстових даних дозволяє ChatGPT генерувати уривки, відповідати на запитання та навіть писати код на основі текстових підказок. Його знання повністю походять з цих уже існуючих текстів, а не через справжнє розуміння світу.

Отже, хоча ChatGPT здається обізнаним у розмові, його інтелект має обмеження.

  • Він може підтримувати контекст лише до кількох тисяч слів.
  • Не має реального досвіду.
  • Не може міркувати або робити інтуїтивні стрибки.
  • Має труднощі з розумінням складного коду.

Та все ж, ця технологія швидко розвивається. Отже, як ChatGPT та інші LLMs справляються з програмувальними завданнями сьогодні?

Чи може ChatGPT писати функціональний код?

ChatGPT може створювати працюючий код на JavaScript, Python, SQL, Bash та інших мовах, коли його належним чином запитати. Він новачок у програмуванні, але ви можете продовжувати ставити йому запитання для коригування помилок, щоб отримати працюючий код.

Для простих завдань з кодування ChatGPT забезпечує вражаючу універсальність і дозволяє вам заощадити час на створенні базового коду, який ви інакше робили б вручну. У таких випадках LLM, безумовно, економить час для програмістів.

Однак, його код часто є неефективним або ігнорує крайові випадки, оскільки він не має повного контексту проблеми. Насправді, ChatGPT іноді навіть попереджає, що його прикладний код вимагає ретельного перегляду перед застосуванням.

Отже, ми точно знаємо, що LLMs ще не на тому рівні. Але ми можемо лише уявити, наскільки вони будуть хорошими, адже передові LLMs існують лише один рік (ChatGPT був запущений 30 листопада 2022 року).

“Якщо штучний інтелект продовжуватиме розвиватися такими темпами, то через 30 років більшість людської раси матиме проблеми з робочими місцями, не лише програмісти,” сказав один користувач Reddit на сабреддіті /r/learnprogramming/.

Завдання з розробки, які може виконати ШІ

Хоча ChatGPT не може замінити старшого розробника, він пропонує просту користь, роблячи програмістів більш ефективними. Давайте подивимося, як ChatGPT може підсилити вас як програміста та усунути звичайні більш трудомісткі процеси.

Автоматизація повторюваних завдань

Для досвідчених розробників написання CRUD-додатків, простих скриптів та backend шаблонного коду є одними з найбільш одноманітних аспектів роботи.

За допомогою ШІ ви можете позбутися цієї рутини через автоматизоване генерування коду. Замість ручного кодування базових систем реєстрації користувачів знову і знову, модель ШІ могла б миттєво створювати функціональні прототипи, адаптовані до схеми бази даних кожного проекту.

Користь ШІ для повторюваного кодування лише зростатиме, оскільки вищі рівні абстракцій продовжують входити в загальне використання через фреймворки, такі як React і Django.

Отримуйте вміст безпосередньо у свою скриньку

Підпишіться зараз, щоб отримувати всі останні оновлення безпосередньо у свою скриньку.

Обробка природної мови

Менеджери продуктів часто складають специфікації у звичайній прозі, наприклад: “Користувачі повинні мати можливість оновлювати свою збережену інформацію про оплату.” Програмування таких нечітко визначених поведінок залишає широкий простір для розбіжностей з очікуваннями зацікавлених сторін.

За допомогою потужних LLM, таких як ChatGPT 4, штучний інтелект може допомогти інтерпретувати вільноформатні запити клієнтів для формулювання детальних технічних вимог.

Використовуючи документи клієнтів та розмови, LLMs можуть допомогти перекласти запити на виконавчі семантики для програмістів. LLMs можуть допомогти виявити неоднозначності, щоб вирішити їх на початку, а не в середині проекту, коли ви оптимізуєте свої запити.

Виявлення помилок

Моделі ШІ, навчені на великих обсягах відкритого коду, також можуть ефективно перевіряти програмне забезпечення на наявність дефектів. Дослідники з Microsoft розробили спеціалізовані нейронні мережі для виявлення помилок, досягнувши вищої точності, ніж людські програмісти в деяких випробуваннях.

приклад скріншоту помилки серіалізації часу виконання системи у випадку підключення інструменту ШІ, праворуч текстове поле, що описує причину помилки

Джерело

Як програміст, ви могли б використовувати цього штучного інтелектуального колегу для швидкого аналізу комітів на предмет помилок у логіці, помилок застарівання залежностей та навіть вразливостей безпеки. Замість того, щоб вручну переглядати тисячі рядків, ви отримаєте анотовані пропозиції щодо того, що потребує виправлення.

Прогнозування проблем

Понад реактивний пошук помилок, достатньо розвинений штучний інтелект може передбачати проблеми до їх виникнення на основі написаного вами коду. Він може це робити, постійно перевіряючи код та визначаючи, чи може він зазнати невдачі на будь-якому етапі виконання.

Або, для бібліотек та фреймворків з багатьма залежними компонентами, AI-помічники можуть виявити майбутні критичні зміни перед випусками. Це допомагає вам гладко переходити і мінімізувати перерви проактивно без додаткового використання ресурсів.

Краще планування проектів та термінів

Говорячи про використання ресурсів, люди хронічно недооцінюють скільки часу займуть програмні проекти. Ми або схильні бути занадто оптимістичними, або забуваємо про ризики. Це призводить до того, що проекти перевищують бюджет і часові рамки.

Інструменти ШІ починають допомагати, аналізуючи дані з попередніх проектів, щоб дізнатися, скільки часу зайняли схожі проекти. Наприклад, CloudBees бере контекст з усіх ваших інструментів і робить його зрозумілим для вас. Потім він може використовувати цю інформацію для оцінки термінів доставки програмного забезпечення.

Звичайно, ШІ не може передбачити все, що може піти не так, але враховуючи обсяг даних, який він аналізує перед оцінкою термінів, це може бути чудовою відправною точкою. З часом, коли інструменти отримають більше даних, оцінки повинні покращитись.

Оптимізація вашого коду

Чудово мати другу пару очей для вашого коду. Це може допомогти вам виявити проблеми з логікою коду, знайти кращі та простіші способи отримання того ж результату, а також оптимізувати швидкість.

Програмісти постійно вкладають зусилля в удосконалення систем для швидкості та ефективності, але налаштування коду методом проб та помилок стає виснажливим.

LLMs можуть надавати рекомендації щодо оптимізації, щоб допомогти вам швидко оптимізувати та рефакторити код.

скріншот запиту ChatGPT «для оптимізації та рефакторингу функції 'exit_adjustment' та виводу в Python як засобу оптимізації коду

Замість сліпих здогадок, у вас буде штучний інтелект, який чітко визначить низьковисячі плоди для цілей максимального приросту. Він може порадити розділити моноліти на мікросервіси, додати індекси для вартісних запитів або оновити фреймворки для сучасних кращих практик.

Обмеження інструментів ШІ у розробці

Чи повинні розробники відчувати загрозу від корисності штучного інтелекту в автоматизації рутинного кодування та допоміжних завдань розробки?

Сучасні технології виявилися недостатньо ефективними навіть для помірно складних програмних завдань. Таким чином, основні аспекти робочого процесу розробника, схоже, залишаться під керівництвом людей на передбачуване майбутнє.

Код поганої якості

Код, повністю створений моделями ChatGPT або подібними, схильний до тонких недоліків. Хоча він придатний до використання, код не враховує різноманітність крайових випадків, які ви можете знати, і без логічного обґрунтування він покладається виключно на те, що ви його просите зробити.

Ось експеримент, проведений користувачем GitHub. Ви можете побачити, що ChatGPT чудово пояснює та розбирає проблему:

скріншот відповіді ChatGPT з розбором кожного рядка коду (для n-1, розріз не потрібен, отже відповідь є ) тощо

Але потім видає лише частково правильний код, де пропускається логіка встановлення відповіді на 0, коли n дорівнює 1.

Щоб переконатися, що всі крайові випадки враховані, код потребував додавання цієї умови if, як ви можете бачити на скріншоті нижче.

частково правильний код проти правильного коду з блоками фрагментів коду, які підкреслюють, як ChatGTP виправив перший рядок коду, вивівши правильне твердження

Отже, код, створений за допомогою ChatGPT, зазвичай призводить до нестабільних додатків, які ламаються у виробництві через необроблені винятки.

До тих пір, поки штучний інтелект не зробить радикальний крок вперед, генерований код залишатиметься надто низької якості для більшості реальних застосувань без серйозного нагляду та редагування.

Потенційні ризики безпеки

Поряд з проблемами стабільності, код, написаний мовними моделями, створює тривожні ризики безпеки. Оскільки ШІ не завжди може враховувати крайові випадки, ваш код може бути відкритим для експлуатованих помилок та ризиків безпеки.

Наприклад, якщо ви розробляєте веб-додаток і не належним чином очищуєте вхідні дані користувачів, хакери можуть скористатися цим, щоб отримати доступ до вашої бази даних через SQL-ін’єкції та атаки XSS.

Не можу вирішити нові проблеми

Щоб замінити людських програмістів, а не допомагати їм, штучному інтелекту потрібно вирішувати нові проблеми. Сучасні моделі лише асоціюють запити з рішеннями, з якими вони зіткнулися під час навчання. У незалежному дослідженні, дослідники виявили, що ChatGPT не впорався з 52% програмувальних питань, надаючи частковий або некоректний код.

Тим не менш, користувачі все ж обирали відповідь ChatGPT 39,34% часу через її загальну всебічність.

Лише коли моделі можуть виводити розумні рішення та думати поза базовими кроками, як люди, вони можуть самостійно сприяти розвитку. До того часу їхня цінність обмежується прискоренням відомих завдань, а не новаторством.

Штучний інтелект не має розуміння

Існуючий штучний інтелект не має належного розуміння коду або здатності до абстрактного міркування – він просто розпізнає шаблони у вхідних запитах і надає відповідні за звучанням результати. Без контекстуального розуміння його рішення часто ігнорують критичні обмеження або приймають ірраціональні рішення, яких жоден інженер не допустив би.

Розгляньте аналогію медичного бота, навченого діагностувати пацієнтів, співставляючи симптоми з записаними захворюваннями. Він би непогано справлявся з рекомендацією загальних методів лікування, але міг би катастрофічно призначити хіміотерапію для родимки на нозі, просто тому що поверхово схожа мова з’єднувала їх.

Інженерія, з іншого боку, залежить від людської раціональності та судження для створення послідовних проектів. Тому, доки не буде досягнуто кращого штучного інтелекту, розробники можуть використовувати ШІ для покращення своїх існуючих робочих процесів з кодування.

Майбутня роль ШІ в програмуванні

Хоча ШІ наразі має значні обмеження, темпи зростання в цій сфері феноменальні. ШІ перейшла від незрозумілого письма до бездоганної англійської прози, невідрізненної від тексту, написаного людиною, всього за один рік.

У найближчому майбутньому штучний інтелект зможе замінити початківця програміста, виконуючи базові завдання з кодування автоматично. Насправді, за внутрішніми оцінками OpenAI, GPT-4 значно перевершує свої попередні версії за всіма оцінками, включаючи завдання, пов’язані з кодуванням.

стовпчаста діаграма, що показує еволюцію Chat GPT 1-3 (40-48%) порівняно з GPT-4 (близько 55%)

“Це буде інструмент у наборі розробника, який зробить їхню роботу швидшою та простішою, одночасно вносячи рівень складності та непрозорості, який безсумнівно викличе нові проблеми,” каже Lawjarp2, користувач Reddit.

Природа програмування вже змінюється, як ми бачимо на прикладі GitHub Copilot, CodeWhisperer від Amazon та багатьох інших.

Кодування перетвориться з ручного введення на спільну роботу з генеративними системами ШІ — люди забезпечуватимуть контекст, бачення, нагляд та усунення проблем.

Ця гібридна модель дозволяє штучному інтелекту займатися рутинною програмною роботою, тоді як розробники зосереджуються на архітектурі систем вищого рівня, складних завданнях з вирішення проблем, креативності та запобіганні проблем.

Отже, хоча завдання змінюються, розробники програмного забезпечення повністю не замінюються. Професія, однак, через кілька років буде виглядати радикально інакше.

Як забезпечити майбутнє вашої кар’єри в кодуванні

Замість того, щоб панікувати через захоплення штучним інтелектом, майбутні та сучасні розробники повинні розглядати мовні моделі як помічників, а не замінників. Ось поради, щоб ваші навички залишалися актуальними:

Вивчіть інженерію запитів

Максимізація корисності ChatGPT та GitHub Copilot залежить від ефективного складання запитів. На жаль, складання запитів наразі є більше мистецтвом, ніж наукою.

Але очікування, що інженери будуть ручно кодувати все, як це робили попередні покоління, вже не має сенсу. Краще дозволити новим розробникам використовувати нові інструменти, які є в наявності.

Досвідчені програмісти повинні проводити час, експериментуючи з моделями мови з різними вхідними даними та розвивати інтуїцію щодо того, що працює. Пам’ятайте, кожна LLM має унікальний стиль, і це добре їх розуміти, враховуючи, що вони стають частиною щоденних робочих процесів.

Вдосконалюйте свої навички вирішення проблем

Людська креативність та інтуїція залишаються незамінними, оскільки розробка програмного забезпечення вирішує відкриті проблеми. Це не просто механічний переклад технічних специфікацій у код.

Жодна кількість швидкого кодування не може замінити розробку проникливих рішень або створення простих архітектур у складних середовищах. Тому зосередьтеся на знаннях, креативності та глибокому розумінні вашої індустрії, в той час як рутинну роботу можна перекласти на штучний інтелект.

Навчіться співпереживати користувачам

Пам’ятайте, що код пишеться для задоволення потреб та бажань людей. Оскільки ШІ стає здатнішим виконувати обов’язки програмування на нижчому рівні, розробники повинні зосередитися на тих сильних сторонах, яких машинам не вистачає, а саме емпатії.

Надавайте пріоритет ролям, таким як менеджери продуктів або дизайнери UX, які підкреслюють розуміння аудиторій та створення для людей. Виносьте мислення, орієнтоване на користувача, на передній план, навіть під час співпраці з програмістами ШІ щодо деталей реалізації.

Вивчення машинного навчання

Для тих, хто прагне перевершити межі, дослідження машинного навчання пропонує ознайомлення з останніми досягненнями штучного інтелекту з широким спектром застосувань. Нейронні мережі тепер лежать в основі рішень від обробки зображень до прогностичної аналітики.

Розуміння того, як моделі функціонують, навчаються та взаємодіють із програмними системами, також може допомогти вам відкрити нові можливості у вашій кар’єрі. Розгляньте можливість доповнення основ комп’ютерних наук курсами з аналізу даних та машинного навчання.

Часті питання

Чи замінить штучний інтелект програмістів через 5 років?

Ні. За п’ять років ШІ, ймовірно, буде виконувати більш рутинні завдання з кодування, але не зможе повністю замінити людський судження та контроль за створенням складних програмних систем. Розробники можуть побачити зміни у своїх ролях з помічниками ШІ, але все ще будуть проектувати рішення та обмеження.

Чи замінить штучний інтелект розробників коли-небудь?

Повна заміна здається малоймовірною навіть з передовим майбутнім ШІ, враховуючи постійно зростаючі вимоги програмного забезпечення та творчість, яка є невід’ємною частиною вирішення нових проблем. Просте програмування з часом стає товаром, але не стратегічне мислення високої цінності. Розробники, які навчаться використовувати ШІ, а не конкурувати з ним, залишаться на роботі.

В кінці дня не бійтеся захоплення машинами. Вітайте команду штучного інтелекту, яка підвищить продуктивність набагато більше, ніж може досягти будь-який інженер або алгоритм самотужки. Розробка програмного забезпечення розвивається занадто швидко, щоб будь-яка одна зміна домінувала назавжди. І особливо в контексті технологій, адаптивність є найважливішою навичкою.

Тож замість того, щоб турбуватися про те, чи буде код написаний біологічними або силіконовими руками в довгостроковій перспективі, розвивайте універсальність, незалежно від того, які інструменти з’являться.

Яке ваше ставлення до помічників з програмування на базі ШІ?

Вітри змін безсумнівно прискорюються в програмній інженерії. Оскільки ШІ стрімко розвивається, те, що ми колись вважали доменом людського пізнання, тепер можна делегувати машинам.

Чи дозволимо ми занепокоєнню щодо майбутнього паралізувати прогрес? Чи будемо ми активно переосмислювати наші ролі, користуючись експоненційною силою цієї технології?

Найбільш формідабельні конкуренти, як правило, ті, хто швидко впроваджує новітні технології, а не протистоїть змінам. Однак ключовим залишається обережне поєднання людського кмітливості та машинного інтелекту як доповнюючих сил, а не протилежних таборів.

Отже, оскільки програмне забезпечення продовжує “поглинати” світ, програмістам варто відмовитися від страху на користь впевненості у роботі над більш складними та викликаючими проектами.

Отримуйте вміст безпосередньо у свою скриньку

Підпишіться зараз, щоб отримувати всі останні оновлення безпосередньо у свою скриньку.