TECH-IT-UP

event 8 luni în urmă
record_voice_over Carmen Marina
visibility 571

Pe măsură ce complexitatea crește, inginerii software sunt asistați tot mai mult de instrumente inteligente de automatizare. Va duce această tendință în cele din urmă la preluarea dezvoltării software de către AI?

Dezvoltarea software pe componente (object oriented) a fost introdusă cu câteva decenii în urmă și, ca urmare, mediile de lucru din inginerie software au devenit din ce în ce mai sofisticate. Această sofisticare va continua să crească în viitorul previzibil, dar cu niveluri tot mai mari de automatizare. Cu toate acestea, capacitatea AI va reduce nevoia de programare de rutină bazată pe oameni și va crește utilizarea componentelor interschimbabile.

Poate un AI din ce în ce mai sofisticat să înlocuiască dezvoltatorii front-end? Răspunsul scurt este: „Nu”. Cu toate acestea, scrierea multor linii de cod într-un anumit limbaj va ocupa o proporție mai mică din rolul unui inginer software.

Rezolvarea problemelor prin creativitate, abilități de proiectare, conștientizare a securității, reglare a performanței, implementare eficientă și un nivel foarte larg de înțelegere a modului în care componentele complexe și sofisticate ale sistemului se potrivesc împreună va fi partea semnificativă a rolului.

Platformele fără cod, low-code, îmbunătățite cu inteligență artificială și aplicațiile composabile (de tipul componentelor lego) vor crește în popularitate, deoarece permit întreprinderilor o productivitate tot mai mare, putând să răspundă rapid la schimbările pieței și la oportunitățile emergente.

Mentalitatea și gândirea de proiectare vor fi o abilitate de bază pentru profesioniștii IT, deoarece nivelurile crescânde de automatizare, mediile low-code și AI generativă iau o proporție tot mai mare din sarcina de codare. Designul bazat pe date, designul centrat pe om, designul interfeței cu utilizatorul, diversitatea experienței, testarea și învățarea vor fi toate abilități importante pentru a avea succes.

Cu toate acestea, moștenirea ultimilor patruzeci de ani înseamnă că este puțin probabil ca abilitățile tradiționale de programare să dispară pe termen scurt. Java a fost pilonul de bază al dezvoltării de aplicații pentru companii de peste două decenii, cu milioane de linii de cod susținând lumea modernă. Full-stack JavaScript alimentează multe site-uri web și aplicații mobile. Python este extrem de popular pentru învățarea automată, big data, AI și IoT și este încă limbajul principal pentru cercetarea științifică.


Este ingineria AI mai bună decât ingineria software?

În loc ca AI să înlocuiască inginerul de software, utilizarea învățării automate de către inginerii calificați va îmbunătăți rezultatele activităților de inginerie software prin creșterea practicilor necesare, cum ar fi Co-Pilot de la GitHub: un instrument AI destinat dezvoltatorilor care pot completa automat linii de cod, pot adăuga linii întregi de cod sau pot adăuga funcții întregi. Acest lucru va continua să fie rafinat pentru a îmbunătăți productivitatea dezvoltatorului și a gestiona erorile comune (sau pentru a produce erori comune în masă dacă sunt dezvoltate/utilizate prost!).

Un alt exemplu este inițiativa CodeQL – care poate oferi un feedback acționabil în mod eficient unui dezvoltator, care va putea găsi eficient vulnerabilități în diferite scenarii.


Ce poate face AI în dezvoltarea și programarea software?

Utilizarea inteligenței artificiale va crește în ingineria software pe parcursul ciclului de viață al dezvoltării software pentru a include activități precum:

automatizarea revizuirilor de cod și optimizarea performanței – folosind parametrii învățați de mașină, evitând regresia repetitivă și testele de performanță conduse de om

îmbunătățirea experienței utilizatorilor prin învățarea modului în care anumiți utilizatori se comportă și ajustarea interfeței de utilizator în mod adaptativ cu conținut variabil pentru a reduce ratele de abandon ale clienților, a crește ratele de conversie și a face interfețele mai accesibile

automatizarea activităților repetitive DevOps în jurul implementărilor de software cu un nivel ridicat de control inteligent pentru a proteja împotriva greșelilor accidentale în timpul procesului de implementare

îmbunătățirea abordării securității în timpul procesului de dezvoltare prin revizuiri automate ale securității codului și evaluarea față de vulnerabilități cunoscute; aplicarea constantă a evaluării securității în timpul utilizării în timp real poate fi o modalitate dinamică de a menține un domeniu din ce în ce mai critic al ingineriei software

capacitate de testare software din ce în ce mai inteligentă pentru a conduce execuția testului, a califica și a reproduce problemele în mod fiabil, scurtând ciclul de dezvoltare și asigurând rezultate de calitate superioară

aplicarea AI în faza de proiectare pentru a oferi un nivel mai ridicat de intrare directă atunci când luați în considerare avantajele și dezavantajele opțiunilor arhitecturale

îmbunătățirea acurateței estimărilor prin aplicarea experienței din proiectele anterioare, poveștile utilizatorilor, metodele de implementare și descrierea caracteristicilor

automatizarea refactorizării codului atunci când apare aplicarea celei mai recente versiuni a unei anumite tehnologii

analiza jurnalelor mari de sistem pentru a identifica și prezice problemele înainte ca acestea să devină critice și pentru a răspunde mai inteligent la scenariile cu erori

îmbunătățirea productivității dezvoltatorului prin recomandarea metodelor, completarea parametrilor și prevenirea erorilor de sintaxă ale dezvoltatorului prin integrarea AI în mediul de dezvoltare ca IDE (mediu de dezvoltare integrat)

îmbunătățirea calității dezvoltatorului prin creșterea sintaxei de codare prin sugestie automată a modului de îndeplinire a unei cerințe funcționale și sfaturi despre metode alternative care pot fi mai bune în anumite condiții

actualizări/migrări ale bazelor de date fără timpi de nefuncționare – în general, fac implementările fără timpi de nefuncționare mai ușor de realizat și mai populare

automatizare în proces – făcând mediile pentru dezvoltatori fără fricțiuni și mai ușor de identificat și remediat dependența de vulnerabilități. Automatizarea potențială a generării interfeței de utilizare din schițe și documentație


Inginerii vor trebui să aibă o bază mai largă de abilități, deoarece ingineria software va deveni tot mai mult o disciplină generalistă, cu mai putține sarcini de rutină, mai puține specializări segmentate, o cerință mai mare pentru abilități de arhitectură composabilă și un accent general mai mare pe performanță, fiabilitate, durabilitate și securitate față de programarea tradițională.


Ai o idee ce ar putea salva timpul oamenilor din compania ta? Oferim consultanță și dezvoltăm software la comandă, cu scopul de transforma procese învechite, consumatoare de timp și atenție, cu grad ridicat de erori umane în flow-uri intuitive, rapide pe care echipa ta să le adopte ușor.