Мария Малцева | 25.10.23
Истина е – ChatGPT може да пише програмен код. С негова помощ можем да правим множество програми – бързо, лесно, ефективно. Изглежда, че професията „програмист“ отива към залез? За какво ни е да се учим на софтуерно инженерство тогава…
Този въпрос раздира душите не само на начинаещите програмисти. Мнозина в гилдията потръпват от опасението, че щом изкуственият интелект става все по-умен, неизбежно ще дойде момент, в който софтуерните инженери ще станат излишни – ще останат без работа.
Но ако се вслушаме в това, което казват „гуру“-софтуеристите, ще забележим, че те са единодушни: професията на софтуерния специалист, според тях, не само няма да изчезне, а дори ще става все по-ценена и скъпо платена! Как? Сега ще обясня.
Алгоритмите пишат код
ChatGPT и други програми за автоматизирано програмиране като Co-pilot са способни да създават програмен код бързо, ефективно, лесно – но това важи само за относително малки софтуерни фрагменти. Можем да автоматизираме писането на малки късове, след като сме раздробили дадена задача на по-дребни, елементарни под-задачи. Ще имаме полза – това, което сам човек би писал 5 или 10 минути, ще стане готово за няколко секунди.
Но кой ще раздели проекта на малки блокчета, на под-задачи? Кой ще определи от какви софтуерни фрагменти следва да се състои цялостното приложение? ChatGPT и Co-pilot не умеят да направят това. За целта е нужен човешки ум: потребни са съобразителност, предвидливост, планиране и далновидност. Изкуственият разум не притежава такива качества.
Ако направим сравнение със строеж, то можем да възложим на робот да реди тухлите и да ги слепва с хоросан – тухла след тухла, ред след ред. Но преди това да се случи някой трябва да е измислил сградата, да е преценил къде ще има стена и къде – врата, да е предвидил къде бъдещите обитатели биха искали да поставят гардероба си и да е съобразил дали ще искат френски прозорец за детската стая. Едва когато всичко е премислено добре и планирано, можем да автоматизираме работата от най-базово ниво, рутинната, чрез робота за редене на тухли.
Накратко, можем да впрегнем ChatGPT да изпълнява семпли задачи за програмиране – и той ще ни помогне, написвайки малки фрагменти код или много проста малка програма (на популярни езици за програмиране като JavaScript, Python, C#, PHP и Java). Но той не може да изгради структурата на цялото приложение. Това е задача за човешки ум.
Инструмент, не заместител
От казаното следва, че всеки алгоритъм за създаване на програмен код трябва да се гледа като инструмент, който е част от арсенала на разработчика – така, както е GitHub в днешно време. Инструментът е средство, но не е разработчик.
Бидейки инструмент за улеснение, ChatGPT е като автомата за обръщане на палачинки в кухнята на заведение – облекчава, спестява време и освобождава вниманието на шеф-готвача, за да се съсредоточи той върху истински важното – да създаде добро преживяване.
Разбиране на кода и проверка
Дори ако възложим на ChatGPT да пише малки фрагменти код, ние трябва впоследствие да проверим какво е написал и да го интегрираме в по-цялостното решение, което сме проектирали. Ще трябва да имаме широкоспектърни познания по програмиране, за да разберем правилно ли е написан кодът от алгоритъма.
Опитните програмисти ще знаят как да проверят дали кодът на приложението е коректен. Те ще имат „око“ за долавяне на потенциалните малки, фини грешки.
Можем да сравним разбирането и проверката с използването на програмите за автоматизиран превод на различни езици. Да, ние можем да вземем един текст и да го прекараме през онлайн преводач; ала без да знаем добре и двата езика ние няма как да как да се уверим дали преводът е коректен и дали в него няма грешки и двусмислици. А една миниатюрна грешка понякога е достатъчна да промени смисъла генерално.
Гарантиране на сигурността
Алгоритъмът може да бъде изкривен от вида и типа на данните, използвани за обучението му. Но знаем ли с какво се е обучавал на програмиране? Ами ако материалите, на база на които се е тренирал, съдържат грешки?
Най-големият проблем е сигурността на кода. Това е нещо, за което трябва да се мисли по време на писането на софтуера. Самият софтуерен инженер съобразява, с всеки написан ред, как всеки елемент в неговия код може да бъде експлоатиран от злонамерени лица.
Алгоритъмът не е способен да мисли за надеждността и сигурността. Той се е обучил от нечии чужд код, за който не знаем колко е сигурен. Не можем да сме убедени 100% в сигурността на софтуера, който алгоритъмът създава. Затова е нужна човешката мисъл!
Добрите програмисти са креативни мислители, които могат да предвидят много потенциални ситуации.
Софтуерен инженер и „промпт-инженер“
казаното дотук означава и още нещо. Имайки солидни, цялостни познания по програмиране, ние можем по-прецизно и по-лесно да дефинираме заданието, което да подадем на ChatGPT, за да напише софтуерен фрагмент за нас. Това е така нареченият „промпт“. Формулирането на „промпт“ е въпрос на майсторлък, пораждайки нещо като нова професия – „промпт-инженер“.
И докато софтуерните гурута са убедени, че генеративните AI няма как да заменят програмиста, някои от тях предвиждат, че съвременният софтуерен специалист може да бъде изместен от …. колега с богат опит и познания за „промпт-инженер“.
Именно доброто познаване на основите на софтуерното инженерство дават възможност да знаем как следва да се подаде заявка, за да накараме ChtGPT да произведе точно такъв код, какъвто ни трябва. Богатите, задълбочени познания по програмиране правят възможно за специалиста да стане „майстор“ на ChatGPT.
ChatGPT като junior програмист
Вече разбираме, че ChatGPT може да действа като наш „личен асистент за писане на код“ и да ни помогне с генерирането на някои фрагменти софтуер по-бързо и по-ефективно, като автоматизира определени задачи вместо вас, но не може да създава сам софтуерни приложения.
Накратко, можем да гледаме на алгоритъма като на един начинаещ, прохождащ програмист – junior. Той изпълнява дребни, прости задачи по възложение на по-знаещия, старшия. И под негов контрол. За да му възлагаме работа, трябва да знаем и владеем истинското софтуерно инженерство: да създаваме архитектурата на софтуерното приложение, да имаме опита и квалификацията да можем да проверим за грешки написаното от AI, да сме в състояние да съобразим как да възложим дребните софтуерни фрагменти, за да ги напише възможно най-добре.
С подобна добра квалификация софтуерните специалисти ще са наистина инженери – и наистина ще са далеч по-скъпо платени, отколкото сега можем да си представяме.