AplikacjeBranża ITProgramowaniePolecane tematy
Low code i AI zmienią branżę oprogramowania, w jakim stopniu to kwestia dyskusyjna
PROGRAMIŚCI OTWARCIE
Z Chris Cooper-Bland, Group Head of Architecture w Endava, rozmawiamy o: najważniejszych aspektach w zarządzaniu projektem tworzenia aplikacji; wyzwaniach związanych z tym procesem; tym, co hamuje rozwój programistów; kompetencjach, które warto posiadać jako deweloper; rozwoju narzędzi low code/no code i sztucznej inteligencji; a także sytuacji kobiet w branży IT.
Czy może Pani wskazać największe wyzwanie zawodowe związane z tworzeniem aplikacji?
Myślę, że największym wyzwaniem jest wzrost złożoności aplikacji w organizacjach. Kiedy zaczynałam, nawet w dużych bankach, było to tylko kilka, głównych systemów mainframe. Miały one bardzo jasne funkcje, przejrzyste interfejsy i zajmowały się głównie przetwarzaniem back-office. Ponieważ teraz aplikacje kierowane są do klientów, to rozprzestrzeniły się po całej firmie.
Często widzimy organizacje z tysiącami aplikacji w rejestrze aktywów, które niekiedy są dość słabo zrozumiałe. Istnieją aplikacje o nieznanych funkcjach, które nie są dobrze obsługiwane, co oznacza, że nie można ich tak po prostu zmienić. Poruszanie się w tak złożonym środowisku staje się dużym wyzwaniem.
Jak zatem rozwijać aplikacje, nie pogarszając tego problemu?
Kluczowe staje się zrozumienie, w jaki sposób rozwijane oprogramowanie wpisuje się w dane środowisko. Jeśli zastępuje ono istniejące funkcje, to czy można je wyłączyć? W takich środowiskach równie złożone jest zarządzanie danymi. Ważne pytania, na które należy odpowiedzieć to: Gdzie znajdują się dane? Kto nimi zarządza? W jaki sposób są udostępniane?
Wracając do Pana pierwszego pytania, moim największym wyzwaniem zawodowym – związanym z tworzeniem aplikacji – jest upewnienie się, że te, które tworzymy dla klientów, dobrze pasują do ich środowisk IT i odpowiednio zaspokajają ich potrzeby biznesowe.
Kluczowe staje się zrozumienie, w jaki sposób rozwijane oprogramowanie wpisuje się w dane środowisko. Jeśli zastępuje ono istniejące funkcje, to czy można je wyłączyć? W takich środowiskach równie złożone jest zarządzanie danymi. Ważne pytania, na które należy odpowiedzieć to: Gdzie znajdują się dane? Kto nimi zarządza? W jaki sposób są udostępniane?
Czy mogłaby Pani wymienić jakiś projekt, który odzwierciedlałby takie dylematy?
Pracowaliśmy dla bardzo dużego banku nad systemem, który polegał na zarządzaniu płatnościami. Zasadniczo chodziło o dokonywanie wielu płatności o niewielkiej wartości z jednego kraju do wielu krajów. Oznaczało to, że musieliśmy wysyłać płatności przy użyciu najtańszego możliwego mechanizmu. W Australii płatności trafiały do australijskiego krajowego systemu rozliczeniowego, w Europie do SEPA, w Wielkiej Brytanii do brytyjskiego systemu bankowości detalicznej, w niektórych krajach był to zaś SWIFT, który jest dość złożonym formatem płatności, a jeszcze w innych drukowane były czeki bankowe. Liczba systemów, z którymi musieliśmy współpracować, była ogromna, a zrozumienie ich formatów i złożoności sieci IT wymagało wiele pracy. Rozwiązanie udało się dostarczyć dopiero po dwóch, nieudanych próbach.
Co jest więc najważniejsze w procesie zarządzania projektem tworzenia aplikacji?
Rola zarządzania projektem w zwinnym tworzeniu aplikacji obejmuje różne wyzwania i obowiązki. Po pierwsze, menedżer projektu powinien skupić się na zrozumieniu interesariuszy zaangażowanych w tworzoną aplikację, wiedząc kim są, czego potrzebują i jak zamierzają mierzyć sukces. Ponadto menedżerowie projektów powinni upewnić się, że zespoły mają wszystkie odpowiednie zasoby do efektywnej pracy, jeśli np. zespół będzie potrzebował środowiska testowego za dwa sprinty, menedżer musi umieć to przewidzieć i upewnić się, że będzie ono gotowe do użycia.
Project Managerowie odpowiedzialni są także za upewnienie się, że postępy w projekcie są prawidłowo śledzone i raportowane. Pomaga to zidentyfikować problemy, którymi można zająć się jeszcze na wczesnym etapie. W przypadku wystąpienia komplikacji, wykrycie ich w odpowiednim czasie pozwala na podjęcie właściwych działań, których celem jest usunięcie lub zapobiegnięcie wszelkim blokadom, a także zarządzanie ryzykiem, które może pojawić się w procesie tworzenia aplikacji. Podsumowując, zarządzanie projektem polega na upewnieniu się, że pracujemy efektywnie i wydajnie.
Co dziś hamuje rozwój programistów?
Głównym czynnikiem jest brak nowych wyzwań. Najwięcej uczysz się, gdy zaczynasz robić coś nowego. Jeśli jest się przypisanym do jednego projektu przez zbyt długi czas, może to wpływać na tempo rozwoju. Staramy się więc upewniać się, że ludzie mają możliwość rotowania pomiędzy projektami, aby nie pozostawali zbyt długo w tym samym miejscu, czy w tej samej roli i mieli możliwość ciągłego uczenia się oraz doświadczania nowych rzeczy.
Wspieramy ich też w dzieleniu się wiedzą. Mamy wiele inicjatyw, które do tego zachęcają – choćby aktywne społeczności programistów skupionych wokół takich technologii jak Java, .NET, front-end, i inne. Dzięki temu ludzie z różnych lokalizacji mogą dzielić się wiedzą i doświadczeniem. Oznacza to, że jeśli natrafisz na problem, możesz szybko skonsultować go, przedyskutować, a następnie wdrożyć w projekcie wypracowane rozwiązanie. Taka pomoc to dobry sposób na dalszy rozwój.
Mamy również wiele kursów z zakresu umiejętności technicznych, miękkich czy wiedzy domenowej, jak np. szkolenia dotyczące płatności i rynków kapitałowych. Znaczącą część szkoleń technicznych prowadzimy wewnętrznie. Wspieramy tym naszych juniorów, ucząc ich różnych rzeczy. Ale korzyści zyskują też osoby, które te kursy przygotowują i prowadzą. Nie ma to jak konieczność prawdziwego zrozumienia koncepcji – gdy musisz zaprezentować dane zagadnienie innej osobie i przeszkolić ją z określonego tematu, trzeba naprawdę dogłębnie zrozumieć temat, aby zrobić to dobrze. Dodatkową korzyścią jest okazja popracowania nad umiejętnościami prezentacji i komunikacji. To jest kolejnym, cennym aspektem.
Istnieje wiele aplikacji napisanych w tradycyjnych językach programowania jak Java, .NET, Python i inne, które muszą być utrzymywane i ulepszane. W tym celu będzie możliwe korzystanie ze wsparcia generatywnych asystentów kodowania AI, ale low code raczej nie zastąpi obecnego oprogramowania, przynajmniej w najbliższej przyszłości.
Jakie umiejętności warto posiadać jako programista, aby sprostać oczekiwaniom współczesnego rynku?
Czasy się zmieniły i wizja samotnego programisty piszącego kod w środku nocy to przeszłość. Aby odnieść sukces, programiści potrzebują umiejętności miękkich, a te rozwijamy wraz ze zdobywaniem doświadczenia. Na wszystkich poziomach programiści potrzebują silnych umiejętności analitycznych i rozwiązywania problemów, jest to sedno naszej pracy. Musimy wymyślać innowacyjne rozwiązania, aby zaspokoić potrzeby biznesowe klientów.
Kiedy zaczyna się pracę jako programista, ważna jest także umiejętność pracy zespołowej oraz skutecznego komunikowania się, aby pracować w sposób oparty na współpracy. Ważne też jest zarządzanie czasem, aby dostarczyć to, do czego zobowiązano się w sprincie.
W miarę zdobywania doświadczenia, programiści są zazwyczaj zaangażowani w kontakty z ludźmi spoza zespołu. Oznacza to, że potrzebują umiejętności prezentacji, aby móc wejść w interakcję z klientem. Ważna jest także umiejętność doboru komunikatu do aktualnych odbiorców, którzy mogą mieć niewielką wiedzę techniczną. Przydatne mogą być też umiejętności negocjacyjne. Programiści mogą również pełnić rolę lidera zespołu, więc muszą mieć silne umiejętności coachingowe i mentorskie, aby pomóc juniorom w ich rozwoju.
A co z różnicami między pracą w biurze, a pracą zdalną, pod względem wspomnianych umiejętności miękkich?
Myślę, że to naprawdę ważny punkt. Pracując zdalnie powinniśmy być bardziej intencjonalni w interakcjach. W szczególności osoby na stanowiskach seniorskich muszą świadomie angażować juniorów. W każdym zespole znajdą się osoby, które są bardziej ekstrawertyczne i zazwyczaj chętniej i dużo szybciej zwrócą się o pomoc. Tymczasem ktoś inny, mniej pewny siebie, mając pytanie lub problem, z którym siedzi sam w domu, może zmagać się z tym zbyt długo, zanim zwróci się o pomoc. Kiedy ludzie są w biurze, seniorzy potrafią wyczuć, kiedy ktoś się z czymś zmaga i mogą po prostu wpaść i zapytać, czy ktoś potrzebuje wsparcia. Uważam, że pracując zdalnie wszyscy musimy myśleć o komunikacji i mieć więcej empatii, ponieważ jest to mniej naturalne niż w przypadku pracy stacjonarnej.
Co sądzi Pani na temat rozwoju narzędzi low code? Mówi się, że do spółki ze sztuczną inteligencją zastąpią najmniej doświadczonych programistów.
Low code i sztuczna inteligencja na pewno zmienią branżę oprogramowania. Jak bardzo to już kwestia dyskusyjna. Kiedy zaczynałam jako programistka, pracowałam z narzędziem do generowania COBOL. Było to w latach 80-tych XX wieku. Od tego czasu pojawiło się wiele narzędzi low code, a jednak wciąż mamy programistów.
Istnieje wiele aplikacji napisanych w tradycyjnych językach programowania jak Java, .NET, Python i inne, które muszą być utrzymywane i ulepszane. W tym celu będzie możliwe korzystanie ze wsparcia generatywnych asystentów kodowania AI, ale low code raczej nie zastąpi obecnego oprogramowania, przynajmniej w najbliższej przyszłości. Narzędzia low code są wartościowe i sprawdzają się naprawdę dobrze w przypadku standardowych lub prostych systemów. Ale tam, gdzie trzeba wziąć pod uwagę atrybuty jakości, takie jak wydajność, bezpieczeństwo i skalowalność lub złożoną funkcjonalność, nie dają rady.
W przeszłości często występował problem ze wsparciem dla tego rodzaju rozwiązań. Na rynku nie było wystarczającej liczby osób z potrzebnymi umiejętnościami. Stąd narzędzia low code rzadko kiedy były dobrym wyborem dla organizacji, podobnie jak w przypadku niektórych niszowych języków programowania. Przykładowo, pracowałam z organizacją, która zdecydowała się używać Erlanga, co było świetne dla problemu, który próbowali rozwiązać. Był to właściwy wybór, ale kiedy próbowali pozyskać ludzi z doświadczeniem w tym języku, nie mogli ich zrekrutować. Okazało się zatem, że z powodów nietechnicznych wybór Erlanga był złym wyborem i myślę, że jest to bariera, którą ma obecnie wiele narzędzi low code. Może się to jednak zmienić? Zobaczymy.
W dyskusjach na temat kariery i sesjach informacji zwrotnych z kobietami należy zastanowić się, czy czasem nie mogłyby one rozkwitnąć na wyższym stanowisku technicznym, nie opuszczając tym samym nurtu technicznego w celu uzyskania awansu. Kluczowe znaczenie ma praca nad identyfikacją i usuwaniem blokad i barier utrudniających wejście kobietom na rynek pracy w celu osiągnięcia parytetu płci na stanowiskach IT.
Jak w Endavie podchodzicie Państwo do narzędzi low code i Generative AI?
W Endavie aktywnie monitorujemy trendy w rozwoju low code i generatywnej sztucznej inteligencji. Prowadzimy projekty wykorzystujące te technologie. Badamy także dostępne już produkty, takie jak GitHub Copilot, AWS Code Whisperer czy Tabnine. Aktywnie je analizujemy, aby sprawdzić, jak dobrze sprawują się dla naszych programistów i jak są skuteczne. Prowadzimy też pilotaż naszego własnego asystenta kodowania AI, opartego na OpenAI, hostowanego na naszej infrastrukturze, aby uniknąć obaw związanych z bezpieczeństwem informacji, które przekazują nam klienci.
Wstępne ustalenia dotyczące asystentów kodu opartych o Generative AI są takie, że mogą one zwiększyć wydajność programistów. Choć niektórzy je lubią, a inni nie. Dla mniej doświadczonych programistów mogą one być „niebezpieczne”, poza korzystaniem z małych fragmentów kodu, ponieważ tworzony obecnie kod nie jest doskonały i może mieć znaczące wady. Jednak narzędzia te prawdopodobnie szybko rozwiną się i w przyszłości będą rutynowo wykorzystywane w niektórych obszarach działalności.
Jaki jest Pani pogląd na fakt, że w IT jest tak mało kobiet na wyższych stanowiskach?
Naprawdę nie rozumiem, dlaczego IT jest tak zdominowane przez mężczyzn. Chociaż w ostatnich latach nastąpił postęp, to liczba kobiet na wyższych stanowiskach inżynierskich w IT nadal jest zbyt niska. Na stanowiskach managerskich chodzi o podejmowanie decyzji i zawieraniu kompromisów w oparciu o zrozumienie problemu w danym momencie. Polega to m.in. na znalezieniu właściwej równowagi, umiejętności współpracy z interesariuszami oraz dobrych predyspozycjach komunikacyjnych. Są to rzeczy, w których kobiety stereotypowo są dobre. Muszą więc istnieć inne czynniki. Brak wzorców do naśladowania i uprzedzenia ze względu na płeć od najmłodszych lat z pewnością mają wpływ na obecny stan rzeczy.
Istnieją dwa pytania, które należy rozważyć: Czy jest to złe zjawisko? i Co powinniśmy zrobić, by poprawić sytuację? Skupmy się na łatwiejszym pytaniu – czy to złe zjawisko? Oczywiście, że tak. Po pierwsze, mamy ogromny niedobór talentów w IT, a stosując uprzedzenia branża traci znaczną grupę potencjalnych pracowników. Patrząc 30 lat wstecz, IT wspierało głównie systemy biurowe. Dziś, mamy cyfrowy, połączony świat, który dotyka wszystkich części naszego życia. Nowe wyzwania wymagają różnorodnych rozwiązań, które będą pochodzić od zróżnicowanej grupy pracowników. Co niemniej ważne, same kobiety tracą możliwość pełnienia fascynującej i pełnej wyzwań roli.
Jeśli zgadzamy się, że mamy do czynienia z problemem, to co możemy z nim zrobić?
Chciałabym mieć prostą odpowiedź, ale nie mam. Ludzie pracujący w branży IT powinni zastanowić się nad tym, jakie działania podjąć, aby rozwiązać ten problem i wykorzystać każdą okazję, by pomóc w naprawieniu nierównowagi. Po pierwsze, warto upewnić się, że wszystkie części procesu rekrutacji i awansu są wolne od uprzedzeń. W dyskusjach na temat kariery i sesjach informacji zwrotnych z kobietami należy zastanowić się, czy czasem nie mogłyby one rozkwitnąć na wyższym stanowisku technicznym, nie opuszczając tym samym nurtu technicznego w celu uzyskania awansu. Kluczowe znaczenie ma praca nad identyfikacją i usuwaniem blokad i barier utrudniających wejście kobietom na rynek pracy w celu osiągnięcia parytetu płci na stanowiskach IT.