Citizen Development – przemyślenia

W ostatnich miesiącach przez Internet (a przynajmniej przez śledzoną przeze mnie jego część) przetoczyło się kilka dyskusji na temat tzw. Citizen Development. Pojęcie to wróciło ostatnio do szerokiej świadomości za sprawą firmy Microsoft. Wielki Brat z Redmond promując swoje najnowsze aplikacje biznesowe, pochodzące z pakietu PowerApp Suite (Microsoft Flow, Power BI, PowerApps i Common Data Service), wielokrotnie w materiałach marketingowych podkreślał możliwości ich rozbudowy funkcjonalnej właśnie we wspomnianym modelu Citizen Development.

„Ki diabeł?” – pomyśli zapewne spor grupa czytelników bloga. Tak było przynajmniej na początku ze mną. Czym prędzej wrzuciłem więc wspomnianą frazę do jedynej słusznej wyszukiwarki. Przeszukując zasoby sieci, natrafiłem na kilka definicji, trochę marketingowego „bla, bla, bla” oraz kilka artykułów opisujących tworzenie makr do Excela (!). I o to w tym naprawdę chodzi 😊. Pomijają aspekt marketingowy, Citizen Development to po prostu sposób rozbudowy funkcjonalnej posiadanego oprogramowania biznesowego bez angażowania do tego developerów. W zamierzchłych czasach (czyli w końcówce dwudziestego i początku dwudziestego pierwszego stulecia) pojęciem Citizen Developera określano Panią lub Pana, którzy tworzyli marka do aplikacji pakietu Office, kwerendy wyciągające dane z firmowej bazy i wszelki kod, powstający poza nadzorem działu IT. Później, z uwagi na rozwój tworzenia biznesowego oprogramowania w modelu outsourcingu, pojęcie to zniknęło ze świadomości przeciętnego Kowalskiego. Teraz jednak za sprawą Microsoftu wraca i (jak to w Internetach bywa) powoduje gdzieniegdzie wybuchy paniki połączonej z masową histerią.

Citizen Development, a platforma Dynamics 365

Co się tak naprawdę stało? Microsoft, jeden z największych na świecie producentów oprogramowania, zamierza rozwijać swoje, przeznaczone dla biznesu produkty w sposób, który umożliwia ich rozbudowę funkcjonalną bez konieczności angażowania do tego programistów. Potrzebny Ci nowy workflow? Proszę bardzo, proces da się łatwo „wyklikać” za pomocą odpowiedniego narzędzia. Integracja z zewnętrznym systemem? Nie ma problemu, przeciągamy odpowiednie connectory, tworzymy połączenia między nimi w graficznym edytorze iXRM Labs by Piotr Gaszewski uruchamiamy całość naciśnięciem przycisku. Potrzebujemy klienta mobilnego? Nie ma sprawy. Wybieramy źródło danych, definiujemy widoki na te dane metodą „przeciągania i upuszczania”, publikujemy rozwiązanie i przesyłamy zainteresowanym linki do niego. Wszystko to bez ani jednej linii kodu.

Gdzie tu jakaś nowość zapytacie? Rozwiązania tego typu przecież są dostępne od dawna (np. znienawidzony przez wielu InfoPath). Różnica w moim przekonaniu polega na tym, że pierwszy raz udostępniono je w modelu SaaS (Software-as-a-Service), co w połączeniu z ogromną łatwością użytkowania za pomocą intuicyjnych jak nigdy interfejsów użytkownika sprawia, że są one dostępne dla każdego potencjalnego użytkownika (oczywiście, posiadającego kartę kredytową ;)). Witajcie w firmie przyszłości, gdzie do rozwoju i utrzymania aplikacji nie jest potrzebny zespół developerów i dział IT. Poniżej przedstawiam niektóre rozwiązania, winne opisanego powyżej stanu rzeczy z ramienia Microsoftu:

Dynamics 365

Nie ma co ukrywać, wspomniana platforma już od dawna podkopuje przekonanie o konieczności zatrudniania programistów. Przecież Roman ze sprzedaży, od dawna „wyklikuje” sobie samodzielnie procesy w systemie, a Anka odpowiedzialna za zarządzanie zasobami ludzkimi potrafi samodzielnie zainstalować nowe rozwiązania biznesowe.

PowerApps & Common Data Service

Wymienione powyżej rozwiązania umożliwiają tworzenie aplikacji na urządzenia mobilne metoda „przeciągnij i upuść”.

Power BI

Dzięki niemu dyrektorzy sprzedaży w końcu nie muszą wydawać grubych $$$, żeby zobaczyć mityczny lejek, który zawiera prognozowane dane z szans sprzedaży.

Microsoft Flow

Nigdy więcej do przerzucania danych między dwoma systemami w firmie nie będziemy musieli wdrażać drogich szyn integracyjnych, budować i utrzymywać usług sieciowych i dedykowanej dla nich infrastruktury. Teraz wystarczy wejść pod odpowiedni adres w przeglądarce internetowej, przeciągnąć kilka klocków oraz powiązań między nimi i… wszystko działa. Dane o fakturach są widoczne w firmowym systemie CRM, a zaplanowane zadania z tego drugiego trafiają prosto do naszego Wunderlista… tfu, tfu, do Microsoft ToDo oczywiście.

Koniec świata?

Jeżeli przed oczami staje Ci w tym momencie wizja świata, w którym armie bezrobotnych programistów szturmują biura pośrednictwa pracy, pragnę Cię uspokoić. W moim przekonaniu droga do tego stanu jest jeszcze daleka.

Poniżej postaram się przedstawić kilka argumentów, dlaczego w moim przekonaniu developerzy nigdy nie znikną z powierzchni ziemi i nie zostaną zastąpieni przeze para-developerskie automatyzacje. Powody moim skromnym zdaniem są następujące:

Konieczność osiągnięcia przewagi konkurencyjnej

Zakup i wdrożenie produktu „pudełkowego” nigdy nie zagwarantuje organizacji zdecydowanej przewagi konkurencyjnej nad innymi podmiotami działającymi w danej branży. Dawno, dawno temu posiadanie zwykłej strony WWW (nie wspominając o internetowych kanałach sprzedaży) pozwalało na osiągnięcie przewagi nad konkurencją. Podobnie było ze wdrożeniami systemów ERP i CRM. Kto ich nie posiadał, odpadał z wyścigu polegającego na efektywnym zarządzaniu przedsiębiorstwem i skutecznej obsługi klienta końcowego. Kolejnym krokiem informatyzacji było umożliwienie sprzedaży i obsługi klienta za pomocą urządzeń mobilnych. Dzisiaj wszystkie wspomniane powyżej rozwiązania stały się standardem i w niektórych branżach po prostu nie wypada ich nie posiadać.

W tym miejscu nasuwa się pytanie, co w takim razie pozwala obecnie wyprzedzić działania konkurencji, skoro sklep internetowy, system CRM oraz aplikację mobilną posiada już przeważająca grupa przedsiębiorstw? Odpowiedź brzmi: „Nie mam pojęcia” 😊. Być może będą to systemy oparte na zaawansowanej sztucznej inteligencji, wirtualnej lub rozszerzonej rzeczywistości. Być może powstaną zupełnie nowe kanały sprzedaży, o których na razie nie nikt głośno nie wspomina. Wiem natomiast to, że nie będzie możliwe zbudowanie przewagi konkurencyjnej (lub też będzie to możliwe jedynie na bardzo krótki czas) na bazie standardowych, pudełkowych produktów, które może posiadać każdy.

Wydajność i optymalizacja procesów

Na pewno każdy spotkał się kiedyś z sytuacją, w której rozszerzenia tworzone przez zaawansowanych użytkowników systemu (tzw. biznesowych administratorów lub „power-userów”) spowodowały zakłócenia w jakimś obszarze jego działania. Ekstremalnym przypadkiem, z którym miałem do czynienia kilka lat temu była sytuacja, w której automatyzacje utworzone przez Panią z marketingu w systemie CRM 4.0 spowodowały, że „farma klękła” 😊. Całkiem solidna farma składająca się z sześciu potężnych jak na owe czasy serwerów. Oczywiście są to pojedyncze, ekstremalne przypadki, które jednak zdarzają się w rzeczywistości. Wynikają one z tego, że użytkownicy biznesowi nie posiadają dogłębnej wiedzy na temat działania systemu, jego wewnętrznych mechanizmów, czy też najlepszych praktyk jego rozbudowy funkcjonalnej. Dawniej popełniane przez nich błędy przekładały się najczęściej na utrudnienia w pracy innych użytkowników. Obecnie w epoce chmury mogą one jednak skutkować pokaźnym rachunkiem oraz stratami dla firmy liczącymi w setkach lub nawet tysiącach dolarów. Dodatkowo pewnych optymalizacji związanych z wydajnością, czasem działania procesu lub jego określoną funkcjonalnością nie da się w dalszym ciągu (i prawdopodobnie nigdy nie będzie to możliwe dla wszystkich możliwych scenariuszy) osiągnąć bez tworzenia niestandardowego kodu.

Sky is a limit…

Słowo „efektywność” zrobiło w ostatnich latach ogromną karierę. Po firmach grążą gromady trenerów, specjalistów od zarządzania czasem i innym takich, w moim przekonaniu, mocno wydumanych problemów. Nieskończona pogoń za zwiększaniem efektywności jest bowiem typową, ślepą uliczką. Pamiętajmy, że podobnie jak w przypadku PKB (w którymś momencie musi nastąpić „tąpnięcie”, które umożliwi powrót na ścieżkę wzrostu), efektywność pracy również nie może rosnąć w nieskończoność. W którymś momencie dojdziemy do granicy możliwości wykonywania określonej ilości pracy w zadanym odstępie czasu przez człowieka i przez zaawansowane komputerowe automatyzacje. No, chyba że dożyjemy czasów, w których pod każdym biurkiem znajdzie się komputer oparty o technologie kwantowe (podpowiedź: „Nie dożyjemy”). W tym momencie kluczową kwestią stanie się nie efektywność, ale kreatywność. Wdrażanie nowych, innowacyjnych rozwiązań w obszarze IT będzie natomiast niezwykle trudnym rozwiązaniem bez posiadania… programistów właśnie.

Dodatkowo „pudełkowe” narzędzia, sprawdzają się zazwyczaj w przypadku prostych, powtarzalnych scenariuszy. Chcąc zbudować system, wspierający innowacyjne, niespotykane nigdzie indziej rozwiązania i procesy, biznes w dalszym ciągu będzie „skazany” na współpracę z programistami.

Bądźmy szczerzy, kolejnej Tesli nie zbuduje się, bazując na gotowych elementach, ściągniętych z Chin. W przypadku tworzenia innowacyjnego, wspomagającego działanie przedsiębiorstwa oprogramowania, które umożliwi zdobywanie lub tworzenie nowych rynków zbytu, sytuacja będzie wyglądać podobnie.

Przykład z autopsji: czy wprowadzenie silnika reguł biznesowych do systemu Dynamics 365 zabiło development pluginów oraz bibliotek JavaScript przeznaczonych dla tego systemu? Absolutnie nie.

Utrzymanie oraz integracja wewnętrznych systemów

Przeniesienie wszystkich możliwych aplikacji do chmury i migracja wykorzystywanych rozwiązań do modelu subskrypcji to na pewno mokry sen niejednego CEO współczesnych gigantów IT. Tymczasem rzeczywistość może wyglądać zupełnie inaczej. Pewne branże, obszary biznesowe lub aplikacje nigdy nie znajdą się w mitycznej chmurze z uwagi na wiele kwestii (uwarunkowania prawne, przepisy, bezpieczeństwo, koszty itp.). Systemy te będą w dalszym ciągu potrzebować programistów, pracujących nad ich rozwojem utrzymaniem oraz naprawiającym błędy. Dodatkowo pewne branże nigdy nie będą korzystać z aplikacji w modelu SaaS lub też rozwiązań dostępnych w chmurze z uwagi na brak dedykowanych, branżowych rozwiązań / niszowość biznesu / koszty ich posiadania (niepotrzebne skreślić). Ponownie, wspomniane organizacje będą w dalszym ciągu potrzebować programistów.

Podsumowując, coraz większe możliwości dostosowań i rozszerzania funkcjonalnego systemów przeznaczonych dla biznesu nie spowodują w moim przekonaniu wyginięcia developerów. Na pewno zdejmą natomiast z tych ostatnich konieczność budowy powtarzalnych, nieinnowacyjnych rozwiązań, których to tworzeniem i utrzymywaniem zajmuje się w tym momencie ogromna rzesza pracujących w IT ludzi. Mnie osobiście ogromnie cieszy wizja integracji między-systemowej, która nie będzie wymagać pracy programistycznej. Ile razy w życiu można przerabiać schemat: „usługa sieciowa -> moduł integracyjny -> usługa sieciowa”? Dlaczego na kolejnym projekcie tworzymy po raz kolejny rozszerzenie do automatycznej numeracji rekordów? Każdy na pewno jest w stanie wymienić kilka podobnych funkcjonalności, które dostarczane są w czasie każdego wdrożenia Dynamics 365, a ich implementacja w środowiskach klientów stała się pewnego rodzaju rutyną.

Coraz więcej kodu będzie natomiast tworzonego z myślą o uruchamianiu wewnątrz rozmaitych internetowych chmur oraz istniejących platform aplikacyjnych. To z kolei będzie wymagać ze strony programistów szerszego spojrzenia, zrozumienia analizowanego i rozwiązywanego problemu oraz przede wszystkim kreatywności. Być może staną się oni wówczas faktycznie prawdziwymi konsultantami (pojęcie nadużywane obecnie przez większość firm działających na rynku), a nie klepaczami kodu ukrytymi pod efektowną stopką w mailu.

Automatyzację wysyłającą maila, prostą aplikację mobilną lub przenoszenie danych klientów z systemu ERP do CRM „wyklika” sobie w niedalekiej przyszłości każdy średnio ogarnięty użytkownik komputera.

Wszystko to sprawia, że przyszłość zawodu programisty wygląda niezwykle intrygująco i interesująco.

 

Total Views: 633 ,
This Article Has 2 Comments
  1. Pingback: dotnetomaniak.pl

  2. Michał Komorowski Reply

    Od siebie dodam, że według Instytutu Gartnera, przed rokiem 2020, około 50% wszystkich aplikacji biznesowych będzie tworzona przy pomocy „high-productivity toolsets” w szczególności platform typy low-code/no-code. To są narzędzia, które umożliwiają tworzenie oprogramowania bez tradycyjnego programowania albo przynajmniej bardzo je ograniczają. Tym samym mogą być używane przez osoby o ograniczonej wiedzy technicznej. Oczywiście nie wyeliminuje to programistów jako takich w bliskiej przyszłości chyba, że „code-monkey”. W kontekście .NET/C# taką platformą low-code jest na przykład: Outsystems (https://www.outsystems.com/).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *