Przejdź do treści
Ten artykuł został przetłumaczony z języka japońskiego za pomocą AI
Czytaj po japońsku
Ten artykuł znajduje się w Domenie Publicznej (CC0). Możesz go swobodnie używać. CC0 1.0 Universal

Inżynierowie wszechstronni w erze Liquidware

Powszechnie wiadomo, że generatywna sztuczna inteligencja (AI) potrafi tworzyć fotorealistyczne obrazy, ilustracje i malowidła, jedynie na podstawie podanych instrukcji.

Tymczasem w świecie biznesu uwaga skupia się na zdolności generatywnej AI do tworzenia programów.

Konwersacyjna AI, oparta na modelach dużych języków – technologii fundamentalnej – doskonale radzi sobie z prowadzeniem rozmów w różnych językach i tłumaczeniem między nimi.

Języki programowania, używane do tworzenia programów, również są rodzajem języka. Ludzcy programiści, w pewnym sensie, tłumaczą werbalnie otrzymane wymagania dotyczące oprogramowania na języki programowania.

Dlatego właśnie konwersacyjna generatywna AI, wykorzystująca modele dużych języków, jest również bardzo biegła w programowaniu.

Co więcej, programowanie to zadanie intelektualne, gdzie poprawność wyników często może być automatycznie i natychmiastowo zweryfikowana. Wynika to z faktu, że stworzony program można wykonać i automatycznie sprawdzić, czy generuje pożądane wyjście.

W rzeczywistości, ludzcy programiści, tworząc program, często równocześnie piszą programy testujące, aby zweryfikować wyniki, rozwijając główny program i sprawdzając, czy działa on zgodnie z zamierzeniem.

Generatywna AI może również postępować w programowaniu w ten sam sposób, przeprowadzając testy. Jeśli człowiek poda precyzyjne instrukcje, AI może automatycznie iterować i ukończyć program, aż przejdzie wszystkie testy.

Oczywiście, ze względu na ograniczenia zdolności programistycznych generatywnej AI i niejednoznaczność ludzkich instrukcji, często zdarza się, że testy nie mogą zostać zaliczone nawet po wielu iteracjach. Ponadto, nieadekwatne lub błędne testy często prowadzą do błędów lub problemów w ukończonym programie.

Jednakże, w miarę poprawy możliwości generatywnej AI i udoskonalania przez inżynierów metod wydawania instrukcji, w połączeniu z mechanizmami wzmacniania wiedzy programistycznej generatywnej AI poprzez wyszukiwanie w internecie, zakres automatycznego generowania odpowiednich programów powiększa się z każdym dniem.

Dodatkowo, dzięki zainteresowaniu świata biznesu, czołowe firmy zajmujące się badaniami i rozwojem generatywnej AI intensywnie inwestują w doskonalenie jej zdolności programistycznych.

W tej sytuacji przewiduje się przyspieszenie rozszerzania zakresu i wolumenu zautomatyzowanych zadań programistycznych, które można powierzyć generatywnej sztucznej inteligencji.

Istnieje wiele przykładów osób, które nigdy wcześniej nie tworzyły programów, a mimo to skonfigurowały podstawowe środowisko programistyczne, korzystając z informacji internetowych, a następnie polegały na generatywnej AI w kwestii programowania, wspólnie realizując projekty w dwuosobowym zespole.

Jako programista sam używam generatywnej AI do programowania. Gdy już opanuję tę technikę, mogę tworzyć oprogramowanie bez żadnej edycji programu, po prostu kopiując i wklejając kod do plików zgodnie z instrukcjami generatywnej AI.

Z pewnością często zdarza mi się utknąć. Wynika to głównie z drobnych różnic między ustawieniami mojego komputera lub narzędzi programistycznych a typowymi konfiguracjami, albo z tego, że darmowe komponenty oprogramowania są nowsze niż te, na których została wytrenowana generatywna AI, co prowadzi do luki w wiedzy, lub też moje prośby są nieco nietypowe.

W przypadkach, gdy nie występują takie drobne rozbieżności czy specjalne okoliczności, a polecenie dotyczy stworzenia bardzo typowych funkcji oprogramowania, w większości sytuacji generowane są odpowiednie programy.

W stronę ery Liquidware

Jako twórca oprogramowania, mogę je wydawać, a to oprogramowanie, udostępnione przez nas, inżynierów, jest następnie używane przez różnych użytkowników.

Przyszłość, w której rozwój tego oprogramowania będzie dostępny dla każdego dzięki generatywnej AI, jest rozszerzeniem dotychczasowej dyskusji.

Jednakże, nie jest to tylko zmiana po stronie tworzenia oprogramowania; znaczące zmiany nadchodzą również dla strony użytkownika.

Zadanie werbalnego instruowania generatywnej AI w celu automatycznego dodawania lub modyfikowania funkcji w oprogramowaniu może być wykonywane nie tylko w fazie rozwoju przed wydaniem oprogramowania, ale także podczas jego użytkowania. Co więcej, może być wykonywane przez samego użytkownika oprogramowania.

Twórcy oprogramowania mogą zdefiniować zakres tego, co można i czego nie można zmienić, a następnie wydać oprogramowanie z funkcjami dostosowywania obsługiwanymi przez generatywną AI.

Umożliwiłoby to użytkownikom proszenie generatywnej AI o modyfikację drobnych niedogodności lub preferencji dotyczących wyglądu ekranu w oprogramowaniu.

Ponadto, użytkownicy mogliby dodawać przydatne funkcje znalezione w innych aplikacjach, łączyć wiele operacji w jedno kliknięcie lub przeglądać często używane ekrany na jednym wyświetlaczu.

Dla twórców oprogramowania, umożliwienie takiej personalizacji przez użytkowników oferuje znaczące korzyści: eliminuje wysiłek samodzielnego wdrażania żądań funkcji i może zwiększyć popularność oprogramowania, unikając negatywnych recenzji i niezadowolenia z użyteczności.

Gdy użytkownicy mogą swobodnie zmieniać ekrany i funkcje w ten sposób, koncepcja ta znacznie odbiega od tego, co tradycyjnie nazywamy „oprogramowaniem”.

Bardziej odpowiednie byłoby nazwanie go „Liquidware”, co implikuje coś jeszcze bardziej płynnego i adaptowalnego niż oprogramowanie (które jest już bardziej elastyczne niż sprzęt), i coś, co idealnie pasuje do użytkownika.

Funkcje były kiedyś realizowane wyłącznie przez sprzęt. Następnie pojawiło się wymienne oprogramowanie, umożliwiając realizację funkcji poprzez połączenie sprzętu i oprogramowania.

Z tego punktu możemy sobie wyobrazić pojawienie się Liquidware, czyli części, które mogą być modyfikowane przez generatywną AI. W konsekwencji funkcje będą realizowane przez sprzęt + oprogramowanie (dostarczane przez deweloperów) + Liquidware (modyfikacje użytkownika).

W erze Liquidware pomysły użytkowników na modyfikacje eksplodują.

Przełomowy pomysł na modyfikację wynaleziony przez jednego użytkownika może stać się gorącym tematem w mediach społecznościowych, prowadząc innych do naśladowania i modyfikowania różnych aplikacji Liquidware.

Co więcej, prawdopodobnie pojawi się także Liquidware zdolne do zintegrowanego obsługiwania różnych aplikacji programowych. Oznacza to, że użytkownicy mogliby przeglądać osie czasu z wielu różnych platform mediów społecznościowych w jednej aplikacji, lub wyniki wyszukiwania mogłyby integrować dane z wielu platform.

W ten sposób, w świecie, w którym Liquidware jest powszechne, różnorodne urządzenia, w tym komputery PC i smartfony, będą zapewniać funkcje, które idealnie pasują do indywidualnego życia i aktywności każdego z nas.

Zjawisko bieżące

Dla inżynierów oprogramowania, takich jak ja, kluczowe jest zrozumienie, że Liquidware nie jest koncepcją futurystyczną ani czymś odległym o kilka lat.

Dzieje się tak, ponieważ nawet bardzo proste Liquidware jest już osiągalne.

Na przykład, załóżmy, że jestem inżynierem rozwijającym aplikację internetową dla firmowego sklepu e-commerce.

Taka aplikacja internetowa posiadałaby bazy danych, systemy zarządzania sprzedażą i systemy wysyłki produktów na serwerach zarządzanych wewnętrznie lub w ramach usługi chmurowej. Kiedy użytkownik dokona zakupu, systemy te połączą się, aby obsłużyć płatność i wysyłkę produktu.

Kluczowe systemy biznesowe i bazy danych, takie jak te, nie mogą być dowolnie modyfikowane.

Jednakże projekt ekranu strony internetowej sklepu e-commerce, z którym styka się użytkownik, może być modyfikowany tak, aby odpowiadał indywidualnym użytkownikom, nie powodując przy tym znaczących problemów. Oczywiście, gdyby zmiany jednego użytkownika wpływały na ekrany innych użytkowników, byłoby to problemem, ale indywidualne dostosowania specyficzne dla użytkownika są w porządku.

Na przykład, możliwe są różnorodne modyfikacje: powiększenie tekstu, zmiana tła na ciemny ton, przeniesienie często naciskanych przycisków w miejsce łatwiejsze do obsługi lewą ręką, sortowanie elementów według ceny na ekranie listy, czy wyświetlanie szczegółów dwóch produktów obok siebie.

Technicznie, modyfikacje te można osiągnąć poprzez zmianę plików konfiguracyjnych i programów takich jak HTML, CSS i JavaScript, które wyświetlają ekran w przeglądarce.

Z perspektywy bezpieczeństwa, te pliki pierwotnie działają w przeglądarce internetowej. Dlatego też części, które mogą być modyfikowane przez inżyniera znającego się na aplikacjach webowych, obsługują jedynie funkcje i dane, które można bezpiecznie modyfikować.

W ten sposób, po stronie serwera aplikacji internetowej e-commerce, można stworzyć mechanizm do przechowywania tych plików oddzielnie dla każdego zalogowanego użytkownika, dodać ekran do rozmowy z czatową sztuczną inteligencją, a następnie modyfikować pliki HTML, CSS i JavaScript tego użytkownika na serwerze zgodnie z jego żądaniami.

Gdyby ten tekst, wraz z informacjami konfiguracyjnymi i kodem źródłowym istniejącej aplikacji internetowej e-commerce, został przedstawiony generatywnej sztucznej inteligencji, prawdopodobnie dostarczyłaby ona kroki i niezbędne programy do dodania takiej funkcjonalności.

W ten sposób Liquidware jest już tematem aktualnym; nie byłoby zaskoczeniem, gdyby było to zjawisko trwające właśnie teraz.

Inżynierowie Wszechstronni

Nawet przy rosnącym zakresie automatycznego programowania opartego na sztucznej inteligencji i nadejściu ery Liquidware, rozwój oprogramowania nadal nie może być realizowany wyłącznie przez generatywną AI.

Jest jednak pewne, że waga programowania w procesie tworzenia oprogramowania znacznie zmaleje.

Ponadto, aby płynnie rozwijać oprogramowanie, wymagany jest szeroki zakres wiedzy i umiejętności inżynierskich, począwszy od ogólnego programowania, przez infrastrukturę chmurową, sieci, bezpieczeństwo, platformy, frameworki deweloperskie i bazy danych – czyli cały stos systemowy, aby cały system mógł funkcjonować.

Pracownicy posiadający taką wiedzę i umiejętności nazywani są inżynierami full-stack.

Tradycyjnie, kilku inżynierów full-stack zajmowało się ogólnym projektem, podczas gdy pozostali inżynierowie specjalizowali się w programowaniu lub skupiali na konkretnych, nieprogramistycznych obszarach w ramach stosu systemowego, dzieląc w ten sposób role.

Jednakże, gdy generatywna AI przejmie aspekt programowania, koszty tworzenia oprogramowania znacznie się obniżą, co doprowadzi do planowania wielu nowych projektów rozwoju oprogramowania.

W konsekwencji, w każdym projekcie deweloperskim inżynierowie, którzy potrafią jedynie pisać programy, będą w dużej mierze niepotrzebni; zamiast tego, zapotrzebowanie będzie na dużą liczbę inżynierów full-stack.

Co więcej, w tym scenariuszu, samo posiadanie wiedzy i umiejętności full-stack będzie niewystarczające. Dzieje się tak, ponieważ typy oprogramowania wymagane w różnych projektach deweloperskich ulegną dywersyfikacji, co oznacza, że rozwój nie zawsze będzie wymagał użycia tego samego stosu systemowego. Ponadto, bez wątpienia wzrośnie zapotrzebowanie na złożone systemy wymagające wielu stosów systemowych.

Na przykład, stos systemowy dla aplikacji internetowej różni się od stosu dla systemów biznesowych lub podstawowych. Dlatego inżynier full-stack aplikacji internetowych nie może być odpowiedzialny za projekt rozwoju systemu podstawowego.

Podobnie, aplikacje internetowe, aplikacje na smartfony i aplikacje na komputery PC mają różne stosy systemowe. W świecie oprogramowania wbudowanego, takiego jak IoT, stos systemowy będzie całkowicie inny dla każdego urządzenia wbudowanego.

Jednakże, w miarę jak znaczenie programowania maleje, a ogólne koszty tworzenia oprogramowania spadają, rozwój złożonych systemów łączących oprogramowanie z różnymi stosami systemowymi prawdopodobnie wzrośnie.

Chociaż taki rozwój będzie wymagał zgromadzenia wielu odrębnych inżynierów full-stack, to inżynierowie, którzy będą potrafili nadzorować cały system i zajmować się podstawowym projektem, odegrają kluczową rolę.

Oznacza to, że będzie zapotrzebowanie na inżynierów z wszechstronną wiedzą i umiejętnościami w wielu stosach systemowych, przekraczających granice poszczególnych stosów.

Tacy inżynierowie prawdopodobnie zostaną nazwani inżynierami wszechstronnymi.

I tak jak zapotrzebowanie na inżynierów, którzy potrafią tylko programować, zmniejszy się z powodu generatywnej sztucznej inteligencji, tak w końcu nadejdzie era, w której zmniejszy się zapotrzebowanie na inżynierów full-stack ograniczonych do pojedynczego stosu systemowego.

Jeśli chcesz pozostać aktywnym inżynierem IT w tamtej erze, musisz natychmiast rozpocząć drogę do zostania inżynierem wszechstronnym.

Rola Inżynierów Wszechstronnych

Języki programowania, platformy i frameworki, które będą rozwijane, są różnorodne.

Jednak inżynier wszechstronny nie musi opanowywać ich wszystkich, ponieważ może również korzystać z pomocy generatywnej AI.

Jeśli powierzy się to generatywnej AI, nawet języki programowania, platformy czy frameworki, których nigdy wcześniej się nie używało, mogą zostać wygenerowane po prostu poprzez wydanie ustnych instrukcji.

Oczywiście, istnieje ryzyko wprowadzenia błędów lub luk bezpieczeństwa, lub nagromadzenia długu technicznego, który może utrudnić przyszłe modyfikacje.

Aby zidentyfikować i złagodzić te ryzyka, niezbędna jest znajomość konkretnego języka lub biblioteki. Jednak tę wiedzę można również uzyskać od generatywnej AI. Inżynier wszechstronny musi jedynie być w stanie solidnie skonstruować procedury i mechanizmy do wykrywania i zapobiegania tym problemom, lub do ich obsługi po wystąpieniu.

Procedury i mechanizmy te nie zmieniają się drastycznie w zależności od różnych stosów systemowych. Jeśli procedury i mechanizmy zapobiegania błędom i lukom bezpieczeństwa oraz zapewniania przyszłej rozszerzalności zostaną sformalizowane, resztę można pozostawić generatywnej AI lub inżynierom specjalizującym się w tych konkretnych obszarach.

Inżynierowie wszechstronni nie muszą posiadać szczegółowej wiedzy ani długoterminowego doświadczenia z każdym pojedynczym stosem systemowym.

Jedną z głównych ról inżyniera wszechstronnego jest projektowanie sposobu dystrybucji funkcji oraz wzajemnego działania wielu złożonych systemów oprogramowania, współpracujących w różnych stosach systemowych.

Ponadto, rozważenie sposobu rozwijania i zarządzania całym oprogramowaniem jest również kluczową rolą dla inżyniera wszechstronnego.

Oprogramowanie Wszechstronne

Zastanówmy się, do jakiego rodzaju tworzenia oprogramowania potrzebny jest inżynier wszechstronny.

Wcześniej podałem przykład rozwoju aplikacji internetowej e-commerce.

Pod kierownictwem dyrektora, któremu zarząd powierzył odświeżenie tej aplikacji internetowej e-commerce, zespół planistyczny może przedstawić następujące wymagania:

Integracja z platformą społeczności użytkowników: Oznacza to stworzenie platformy nie tylko dla dedykowanej aplikacji czy witryny e-commerce, ale takiej, na której użytkownicy mogą wchodzić w interakcje dotyczące samych produktów i sposobów ich użytkowania. Celem jest zatrzymanie użytkowników, efekt marketingu szeptanego, wzbogacenie treści poprzez wkład użytkowników oraz integracja informacji zwrotnych (zarówno pozytywnych, jak i negatywnych) z rozwojem produktów, planowaniem nowych produktów i marketingiem.

Kompatybilność z wieloma urządzeniami (Omni-device): Umożliwia dostęp do społeczności użytkowników i informacji o produktach z różnych urządzeń, w tym nie tylko aplikacji internetowych, ale także aplikacji na smartfony, asystentów głosowych, urządzeń noszonych i inteligentnych urządzeń domowych.

Kompatybilność z wieloma platformami (Omni-platform): Obejmuje to nie tylko własną platformę społeczności użytkowników firmy, ale także, na przykład, oferty produktów i udostępnianie recenzji na kompleksowych witrynach e-commerce, integrację z mediami społecznościowymi oraz funkcjonalne i informacyjne powiązania z różnymi narzędziami AI.

Odświeżenie systemów biznesowych: Chociaż tymczasowo połączone z istniejącymi systemami zarządzania sprzedażą i dostawą produktów, obejmuje to również odświeżenie tych systemów. Po odświeżeniu, plan obejmuje agregację danych sprzedażowych w czasie rzeczywistym i prognozowanie popytu, a także integrację z systemami zarządzania zapasami. Ponadto, stopniowo wprowadzane będą połączenia z regionalnie rozproszonymi systemami magazynowania dostarczanymi przez firmy kurierskie i usługi dostawcze po stronie przewoźnika, co wymaga, aby system informatyczny odpowiednio dostosowywał swoje integracje.

Kompatybilność z Liquidware: Wszystkie interfejsy użytkownika będą oczywiście kompatybilne z Liquidware. Dodatkowo, wewnętrzne interfejsy użytkownika do rozwoju i planowania produktów (takie jak agregacja informacji i informacje zwrotne), działy operacji systemowych i raporty dla kierownictwa również zostaną przekształcone w Liquidware.

Gdyby przedstawiono plan rozwoju tak złożonego oprogramowania, tradycyjny zespół programistyczny prawdopodobnie nie przyjąłby go od razu. Alternatywnie, poprzez dyskusje na temat specyfikacji systemu, logicznie wykazaliby potrzebę ogromnych kosztów i czasu rozwoju, dążąc do znacznego ograniczenia specyfikacji.

A jednak, co by się stało, gdyby generatywna sztuczna inteligencja mogła zautomatyzować większość programowania, a ponad połowa proponowanych stosów systemowych była już doświadczona przez kogoś w zespole? Co więcej, gdyby zespół miał na swoim koncie pomyślne uruchomienie nowych stosów systemowych, platform i frameworków od podstaw, z pomocą generatywnej sztucznej inteligencji? I co, gdybyś ty, jako inżynier wszechstronny, już rozpoczął tę ścieżkę i zamierzał nią podążać?

Z tej perspektywy powinien to być bardzo atrakcyjny projekt. Miałbyś okazję pracować z zespołem planistycznym, który przedstawia ambitne propozycje od najwyższego kierownictwa, oraz z zespołem deweloperskim, który ma potencjał, by rozwinąć się w zespół tworzący oprogramowanie wszechstronne.

Pewności dodaje również istnienie już istniejących systemów. Jest to również projekt, który można stopniowo rozwijać poprzez zwinny proces deweloperski, zaczynając od szybko przynoszących rezultaty, wysoce efektywnych funkcji i zbierając opinie od pierwszych użytkowników.

Biorąc to wszystko pod uwagę, rozwój tego wszechstronnego oprogramowania powinien wydawać się bardzo atrakcyjnym projektem.

Podsumowanie

Dzięki automatycznemu programowaniu sterowanemu generatywną sztuczną inteligencją (AI), Liquidware i wszechstronny rozwój oprogramowania stają się już rzeczywistością.

W tym kontekście, inżynierowie IT muszą coraz częściej wykraczać poza koncepcję full-stack i dążyć do bycia inżynierami wszechstronnymi.

Poza tym, ich zakres działania rozszerzy się jeszcze bardziej, wykraczając poza sferę systemów IT, obejmując wszechstronną inżynierię biznesową – inżynierię samych działań organizacyjnych, poprzez łączenie klientów, pracowników wewnętrznych i AI – oraz wszechstronną inżynierię społecznościową.

A jeszcze dalej, przewiduję pojawienie się dziedziny zwanej wszechstronną inżynierią społeczną, mającej na celu kompleksowe ulepszanie społeczeństwa.