#1 — Software – szyty na miarę czy gotowy?

W tym odcinku dowiesz się czym jest oprogramowanie szyte na miarę (dedykowane), a czym oprogramowanie gotowe. Opowiem także jak dokonać wyboru pomiędzy obydwoma rodzajami oprogramowania i co zrobić, gdy wybór wcale nie jest taki łatwy.

💡
Spodobał Ci się ten odcinek? Zasubskrybuj mój podcast na swojej ulubionej platformie i podziel się nim ze znajomymi!

Transkrypcja odcinka

Cześć, nazywam się Krzysztof Rychlicki-Kicior i witam cię serdecznie w podcaście „Software z każdej strony”, w którym dowiesz się, jak łączą się ze sobą świat biznesu i IT.

W tym odcinku dowiesz się, czym jest oprogramowanie szyte na miarę, nazywane też dedykowanym, a czym z kolei jest oprogramowanie gotowe, pudełkowe. Dowiesz się również, kiedy warto stosować który z rodzajów oprogramowania.

Trzeba przyznać, że na pierwszy merytoryczny odcinek podcastu wybrałem dość specyficzny temat. Jestem w końcu prezesem Software House’u Makimo, firmy tworzącej oprogramowanie dedykowane, więc ten odcinek mógłby wyjść kompletnie, absolutnie sztampowo. Mógłbym opowiedzieć, jak wiele jest powodów, dla których warto współpracować z moją firmą i brzmiałoby to jak wiele artykułów, które można znaleźć w Internecie, zachęcających do współpracy z software house’ami.

Oczywiście nie jest tak, że taka współpraca nie ma sensu. Inaczej prowadzenie tego rodzaju firmy kompletnie mijałoby się z celem. Natomiast w tym odcinku chcę zająć się przede wszystkim rozróżnieniem obu rodzajów oprogramowania i ich zastosowaniami. Chciałbym, abyście po zakończeniu tego odcinka wiedzieli, w jakich sytuacjach warto stosować oprogramowanie dedykowane, szyte na miarę, a w jakich oprogramowanie gotowe. Jednocześnie swego rodzaju korzyść dla mojej firmy, a także dla innych software house’ów może faktycznie wystąpić. Chodzi po prostu o budowanie świadomości wśród was, drodzy słuchacze. Będziecie lepiej rozumieć, w którym przypadku warto udać się do software house’u, kiedy szukać oprogramowania gotowego, a kiedy także skorzystać z innych opcji. Bezpośrednią inspiracją dla tego odcinka są moje doświadczenia z naszymi poprzednimi klientami, kiedy już po zakończeniu realizacji projektu okazywało się, że choć projekt został zakończony, zrealizowany zgodnie z dokumentem specyfikacji, z jakimś ustalonym zakresem, a kwoty na fakturach były uiszczane w terminie na nasze konto, to nie czuliśmy zawodowej satysfakcji, bo okazywało się, że projekt oprogramowania dedykowanego nie był najlepszym rozwiązaniem problemu biznesowego.

Zacznijmy od definicji. Również, gdy prowadzę zajęcia na uczelni, to zanim omówię meritum danego zagadnienia konieczne jest wprowadzenie wspólnego słownictwa, żebyśmy naprawdę dobrze rozumieli, o czym właściwie mówimy. Oprogramowanie dedykowane, nazywane też szytym na miarę – po angielsku bespoke software, tailormade software. Jest to oprogramowanie tworzone od podstaw. Już tutaj dochodzimy do dość kontrowersyjnej sytuacji, bo czym właściwie są podstawy. Co to znaczy, że oprogramowanie tworzymy od podstaw, od zera? Po angielsku często się mówi „from scratch”. To jest rzecz względna, bo praktycznie zawsze korzystamy z jakichś fundamentów. Nie tworzymy przecież układów scalonych od zera, nie piszemy również systemów operacyjnych, korzystamy z gotowych systemów, takich jak Windows, MAC OS, Linux czy też iOS lub Android. Używamy też przy tworzeniu oprogramowania dedykowanego licznych języków programowania czy dodatkowych mechanizmów, komponentów, nazywanych bibliotekami czy też frameworkami. Także nawet tworząc oprogramowanie dedykowane w powszechnym tego słowa rozumieniu, nie tworzymy de facto oprogramowania od zera. Trudno więc upierać się przy jakiejś jednolitej definicji, zresztą od strony technicznej nie jest ona tak naprawdę potrzebna. Oprogramowaniem dedykowanym można nazwać takie, w którym praktycznie każdy aspekt jego działania można swobodnie dopasować według uznania i potrzeb klienta. Dotyczy to zarówno spraw wizualnych, wyglądu aplikacji czy systemu, jak również mechaniki przechowywania danych, przetwarzania reguł biznesowych i krótko mówiąc, wszystkich innych elementów aplikacji.

Po drugiej stronie mamy z kolei oprogramowanie gotowe, nazywane też pudełkowym. Nazwa ta pochodzi z czasów, kiedy powszechnym było kupowanie oprogramowania faktycznie w formie pudełek. Szło się do jakiegoś sklepu komputerowego i przy zakupie Windowsa otrzymywaliśmy pudełko, w którym była płyta, kod, numer seryjny naszej licencji, jakaś instrukcja. Także było to po prostu pudełko. Obecnie, chociaż dalej można nabyć oprogramowanie w takiej formie, coraz większą popularność, zwłaszcza w biznesie, zdobywają aplikacje dystrybuowane w modelu SaaS, czyli Software as a Service. Mówiąc w dużym uproszczeniu, jest to model abonamentowy, w którym kupujemy dostęp do aplikacji i płacimy w jakimś interwale czasu – miesięcznym, kwartalnym czy też rocznym – za dostęp do aplikacji. Tego rodzaju aplikacje z reguły są dostępne przez przeglądarkę internetową, rzadziej także w formie aplikacji mobilnej czy też jakiejś desktopowej, czyli tradycyjnej. Natomiast to, co jest niezwykle istotne, to że model abonamentowy jest z reguły dużo bardziej elastyczny niż zakup takiej licencji w formie pudełkowej, czyli wieczystej z reguły, ponieważ możemy dopasować nasze zakupy do aktualnych potrzeb, do aktualnej liczby pracowników i tego, ilu użytkowników w danej chwili musi korzystać z danej usługi SaaS. Tutaj musimy pamiętać, że choć w oprogramowaniu pudełkowym – czy to SaasS-owym , czy takim klasycznym – otrzymujemy komplet funkcji dostępny od razu, od ręki. Można powiedzieć – out of the box, zgodnie z definicją. To niestety, oprogramowanie gotowe nie jest po prostu tak elastyczne. Niektórzy dostawcy oprogramowania pudełkowego, tutaj zwłaszcza SaaS-ów są w stanie dopasowywać na przykład listę modułów w aplikacji, włączać niektóre funkcje i wyłączać na żądanie. Niemniej wciąż nie możemy spodziewać się, iż nasze bardziej nietypowe pomysły zostaną bez problemów uwzględnione.

Widzimy więc, że zasadniczą różnicą w oprogramowaniu dedykowanym i oprogramowaniu gotowym jest z jednej strony elastyczność – oprogramowanie dedykowane jest oczywiście dużo bardziej elastyczne. Natomiast oczywiście takie oprogramowanie dedykowane musi być tworzone w dużej mierze od podstaw, w związku z czym czas jego wytworzenia i kosz jego wytworzenia są istotne. I trudno na przykład wyobrazić sobie, aby ktoś, chcąc korzystać z systemu operacyjnego klasy Windowsa czy Linuksa poprosił firmę informatyczną, software house, o stworzenie takiego dedykowanego rozwiązania, bo to byłyby ogromne koszty i również ogromna ilość czasu potrzebna na realizację takiego zadania. Teraz, skoro wiemy już, czym oprogramowanie dedykowane różni się od gotowego, chociaż oczywiście można by ten temat bardzo szeroko rozwinąć, też nie chcę już zanudzać cię zbyt wieloma szczegółami. Możemy przejść do kluczowej części odcinka, czyli w zasadzie odpowiedzieć sobie na tytułowe pytania. Kiedy stosować oprogramowanie dedykowane, a kiedy gotowe?

Po wielu doświadczeniach, po wielu zrealizowanych projektach tak naprawdę przyjęliśmy dość może nietypowe na pierwszy rzut oka, ale bardzo dobre – naszym zdaniem – kryterium. Mianowicie to, jakie oprogramowanie warto zakupić czy też zamówić jest funkcją tego, jaką organizację reprezentujesz. Oczywiście moglibyśmy zacząć od takich dość oczywistych kryteriów, jak zestaw funkcji oferowany przez oprogramowanie gotowe, czas czy koszt realizacji oprogramowania dedykowanego, natomiast są to takie dość oczywiste kryteria, które również warto przeanalizować, natomiast one nasuwają się chyba już w pierwszej kolejności. Natomiast z naszego doświadczenia, choć na te pytania również warto odpowiedzieć, to właśnie rodzaj organizacji ma znaczenie kluczowe.

Pierwszym rodzajem organizacji, jaką tutaj rozpatrzymy, są start-upy. Dlaczego start-upy są takie wyjątkowe? No cóż – start-upy i software house’y często pracują razem, ponieważ ideą istnienia start-upy jest z reguły dostarczenie jakiejś usługi lub produktu, często w formie cyfrowej i software house jest organizacją, która potrafi taką usługę czy produkt po prostu wykonać. We współpracy z software house’ami start-upy widzą jedną kluczową wartość i jest nią własność intelektualna. Rozwiązania wytwarzane przez software house’y na rzecz start-upów mają niezwykłą wagę, ponieważ przechodzą one na własność danego start-upu i jest to – nie da się ukryć – podstawa do ciągłej ewolucji, do uzyskania kolejnych rund finansowania. Jest nią fakt, że dany start-up posiada oprogramowania, które stanowi podstawę jego biznesu. Oczywiście to też nie jest tak, że start-upy nie istnieją bez oprogramowania dedykowanego. Bardzo często, kiedy start-up jest w jednej z pierwszych faz finansowania, nazywanej nieco żartobliwie FFF, czyli family, friends and fools, to nie stać takiego start-upy na w pełni działające, w pełni funkcjonalne oprogramowanie. I wtedy często warto rozważyć stworzenie jakiegoś prototypu, czyli tak zwanego MVP – Mimimum Viable Product – czy nawet PoC – Proof of Concept – po to, aby móc uzyskać dalsze finansowanie i co za tym idzie – rozwój swojego biznesu. Koniec końców, chodzi o to, aby pokazać w działaniu swoją ideę, swój pomysł. Podsumowując, w przypadku start-upów w dłuższym terminie trudno jest uciec całkowicie od oprogramowania dedykowanego, posiadanego na własność przez start-up. Jednak na pierwszych etapach może się okazać, że jakiś taki prototyp sklejony z już istniejących narzędzi będzie lepszym rozwiązaniem. Natomiast, o czym warto pamiętać, tu też software house’y są w stanie pomóc, bo z reguły, jeżeli taka firma jest w stanie stworzyć oprogramowanie od podstaw, to również taki rodzaj sklejki, można powiedzieć, pewnego rodzaju prototypu, jest możliwy do wykonania.

Przejdźmy do kolejnego rodzaju firmy, czyli takiego typowego polskiego MMiŚ-ia – mikro, małego czy też średniego przedsiębiorstwa. Masz pewien problem i masz przeczucie, że ten problem da się rozwiązać dzięki użyciu informatycznych narzędzi. Twoje przeczucie może być całkiem dobre, jednak oprogramowanie dedykowane coraz częściej nie jest dobrą odpowiedzią dla tego typu segmentu. Dlaczego? No niestety, koszty pracy programistów głownie, ale także i innych ról pochodzących z naszej branży, wzrosły znacząco. Jeszcze 15, a nawet 10 lat temu, rozwiązanie wielu problemów mogło być osiągnięte dzięki wynajęciu zespołu profesjonalistów, ustaleniu zakresu prac i po prostu stworzeniu aplikacji czy też jakiegoś tam systemu informatycznego. Natomiast obecnie koszty, jakie generuje stworzenie nawet prostych narzędzi, okazują się być po prostu niewspółmierne do korzyści, które takie przedsiębiorstwo może odnieść. Sam na przestrzeni kilku ostatnich lat byłem członkiem różnego rodzaju grup biznesowych, miałem okazję rozmawiać z dziesiątkami przedsiębiorców, analizować ich potrzeby i oni również byli zainteresowani tym, czy ja jako software house, moja firma, jest w stanie dostarczyć im rozwiązania. I z reguły okazywało się, że jest to oczywiście możliwe, natomiast przywołując tutaj przykład znajomej firmy budowlanej, analizowaliśmy możliwość zaprojektowania i wdrożenia rozwiązania do planowania, harmonogramowania prac budowlanych. I chociaż oczywiście wykonanie takiego narzędzia leżało w zakresie naszych kompetencji, to po przygotowaniu analizy kosztowej, czasowej, okazało się, że znacznie taniej będzie dla tej firmy kupić oprogramowanie gotowe. I choć zdecydowanie to oprogramowanie nie spełniało potrzeb w 100%, to jak tak mniej więcej szacowaliśmy, około 80, może 85%, gdzieś na tym poziomie, potrzeb było osiągniętych i to była wartość zadowalająca dla tej firmy. I jest to właśnie moim zdaniem bardzo dobry taki typowy przykład, w którym małe, średnie przedsiębiorstwa w Polsce powinny rozejrzeć się w przypadku danej potrzeby, posiadania pewnej potrzeby informatycznej, niekoniecznie od razu za usługą realizacji takiego systemu, ale bardziej za usługą doradztwa czy też consultingu, gdzie konsultant pomoże przede wszystkim przeanalizować rynek, przeanalizować też potrzeby takiej firmy i zasugerować możliwe opcje, czyli na przykład zakup licencji na oprogramowanie gotowe versus koszt wytworzenia oprogramowania dedykowanego. Zawsze warto wykonać sobie takie porównanie, natomiast trzeba być świadomym, jakie są szanse na osiągnięcie jednej bądź drugiej opcji.

Oczywiście proszę, nie przywiązujcie się tutaj do definicji MŚP w Polsce, bo tak naprawdę im większa firma, tym większy jest z reguły sens wytwarzania oprogramowania dedykowanego, natomiast jeżeli już mówimy o firmach większych – dużych czy też wprost korporacjach – to zakup takiego oprogramowania ma o wiele większy sens. Po pierwsze koszty wytworzenia oprogramowania stają się po prostu o wiele mniejszym problemem. Po drugie z reguły w dużych organizacjach procesy i potrzeby są znacznie bardziej wyszukane. I nie da się ukryć, że zastosowanie czy wdrożenie gotowego oprogramowania okazuje się być mocno niewystarczające, dlatego nawet wyższy koszt oprogramowania dedykowanego może być po prostu zrekompensowany późniejszymi korzyściami, bo jeżeli na przykład każdy z pracowników w dziale, a jest ich setka, zaoszczędzi na wykonywaniu zadań godzinę w miesiącu, no to już mamy 100 godzin miesięcznie w jednym dziale oszczędności naszych pracowników.

W przypadku dużych firm czy też korporacji ponownie wraca do gry temat własności intelektualnej, ponieważ po skutecznym wdrożeniu takiej aplikacji dedykowanej w jednym kraju, czy też nawet w jednym regionie, może pojawić się chęć wyskalowania rozwiązania i drożenia go w całej organizacji.           I wtedy posiadanie już praw intelektualnych do całego rozwiązania znacząco redukuje koszt wyskalowania go na całą organizację niż gdybyśmy musieli dokupić, będąc korporacją, ileś set czy tysięcy licencji oprogramowania gotowego.

Podsumowując wszystkie trzy rodzaje organizacji, można powiedzieć, że zarówno start-upy,
jak i korporacje, czyli takie dwa skrajne rodzaje organizacji, firm, stanowią – nie da się ukryć – dość dobre grono klientów dla firm typu software house, natomiast mikro, małe czy średnie przedsiębiorstwa, myślę, że powinny rozejrzeć się za consultingiem, nie wykluczać całkowicie oprogramowania dedykowanego, natomiast mimo wszystko przy bogactwie gotowych aplikacji, SaaS-ów czy też rozwiązań typowo pudełkowych, zdecydowanie takie firmy powinny rozejrzeć się najpierw za takimi rozwiązaniami.

Omówiliśmy to główne, podstawowe kryterium, które moim zdaniem warto rozważyć przy wyborze rodzaju oprogramowania, natomiast oczywiście nie jest ono jedyne. Warto rozważyć przede wszystkim dodatkowe koszty czy też konsekwencje podjęcia tego wyboru i pozwolę sobie je teraz po krótce omówić.

W przypadku oprogramowania dedykowanego musimy pamiętać, iż choć zasadniczą rolę odgrywa koszt jego wytworzenia, to musimy uwzględnić także koszt utrzymania, tak zwanego wsparcia czy też suportu, również pamiętając o koszcie infrastruktury. Tutaj mamy do czynienia z różnymi podejściami. Czasami w przypadku większych firm mamy infrastrukturę należącą do danej firmy, wtedy mówmy o wdrożeniach on-premise. W przypadku mniejszych firm rozsądne jest zastosowanie dostawców chmurowych, takich jak Amazon, Google czy Microsoft. Niezależnie od infrastruktury musimy pamiętać o konieczności aktualizowania i rozwoju oprogramowania, choćby pod kątem bezpieczeństwa. Technologie dezaktualizują się i tak jak musimy instalować aktualizacje w systemach operacyjnych, czy to mobilnych, czy stacjonarnych, tak również oprogramowanie dedykowane powinno być aktualizowane. W przypadku oprogramowania gotowego o aktualizacje dba na ogół jego producent, więc tutaj jest to, można powiedzieć, punkt na korzyść oprogramowania gotowego. Natomiast musimy pamiętać o jednej bardzo istotnej wadzie tego rodzaju oprogramowania. W przypadku usług oferowanych zwłaszcza w modelu SaaS nie mamy niestety z reguły gwarancji kosztu tychże usług. Może się okazać, że po jakimś czasie, kiedy zintegrujemy daną usługę z naszą organizacją, nabędziemy kilkanaście, kilkadziesiąt licencji, producent w pewnym momencie po prostu podniesie stawkę za każdego użytkownika. I niestety, niewiele będziemy mogli z tym zrobić. Alternatywą jest wtedy skorzystanie z innego narzędzia, ale migracja do innego systemu jest z reguły dość kosztownym i bolesnym procesem. Lub oczywiście wtedy wybór oprogramowania dedykowanego. Natomiast jego wytworzenie również wtedy zabierze czas i koszty. Także w przypadku wyboru oprogramowania gotowego musimy mieć pewnego rodzaju plan, co w sytuacji, gdy jego koszty wzrosną w drastyczny sposób.

Kolejną kwestią przy tworzeniu oprogramowania dedykowanego, która jest swego rodzaju szkolnym błędem popełnianym przez zarówno niedoświadczonych klientów, jak i mniej doświadczone firmy tego typu, jest to, że w przypadku realizacji, rozpoczęcia realizacji projektu, nie wyznacza się osób odpowiedzialnych po stronie klienta. Klient ustala jakiś zakres prac, firma typu software house dostarcza zespół i założenie jest taki, że taka firma po prostu dowiezie produkt bez żadnego wkładu, bez żadnej pracy, dalszej pracy ze strony klienta. No niestety, choć oczywiście, jak byśmy mieli podsumować to godzinowo, to więcej pracy jest zdecydowanie po stronie software house’u, to tworzenie oprogramowania dedykowanego to jest też pewne zobowiązanie po stronie klienta. Konieczne jest wyznaczenie osób, które będą komunikować się z zespołem projektowym, które będą również testować, sprawdzać oprogramowanie i jego użyteczność w pracy po stronie klienta. Także oprogramowanie dedykowane, krótko mówiąc, nie powstanie samo. Nie powstanie bez klienta.

W przypadku oprogramowania gotowego, choć nie musimy obawiać się o interakcje naszych pracowników z zespołem software house’u, to jesteśmy oczywiście zdani na to, co dostarczy nam producent. Niektórzy producenci są otwarci na przekazywanie mu uwag o tak zwanych feature request, czyli prośbach o nowe funkcje, ale ich realizacja jest często mocno czasochłonna, nowe funkcje pojawiają się dość rzadko, jeżeli w ogóle. Także musimy być na to też gotowi.

Tak naprawdę o ile nie mamy jakiejś takiej bardzo oczywistej sytuacji w stylu – jesteśmy start-upem i musimy po prostu uzyskać oprogramowanie na własność, to warto skorzystać z pracy konsultanta czy też firmy doradczej, która wykona tak zwaną analizę przedwdrożeniową i dzięki temu doradzi nam, w którą stronę warto pójść. Czy to w stronę oprogramowania dedykowanego, czy też gotowego. W swej pracy często używam porównać do motoryzacji, bo każdy albo ma samochód, albo chociaż jeździł jakimś samochodem. Jest to obszar, branża dużo bardziej znana niż tworzenie oprogramowania i moim zdaniem każdy samochód ma swoją grupę docelową. Jeżeli mamy kilkoro dzieci, to nie kupujemy sportowego auta. Znaczy w sumie możemy, ale raczej nie do wożenia tychże dzieci. I w drugą stronę – jeżeli chcemy się przemieszczać szybko i sprawnie we dwójkę, to nie jest nam potrzebne auto typowo rodzinne. Mam nadzieję, że po wysłuchaniu tego odcinka, jeżeli znajdziecie się w sytuacji, w której konieczne będzie dokonanie wyboru pomiędzy wytwarzaniem oprogramowania dedykowanego lub zakupem gotowego, znacznie łatwiej będzie wam podjąć decyzję.

Na tym kończę już dzisiejszy odcinek. Jeżeli jeszcze nie mieliście okazji, to zapraszam do zapoznania się z odcinkiem zerowym, w którym opowiadam co nieco o sobie, o swojej przeszłości, teraźniejszości i przyszłości, pod kątem zawodowym oczywiście, a kolejny odcinek ukaże się już za dwa tygodnie, bo taki właśnie interwał postanowiłem przyjąć dla tego podcastu. Mam nadzieję, że nie dopadnie choroba wieku dziecięcego, można powiedzieć, która często ma miejsce w przypadku podcastów, czyli nieregularna publikacja materiałów. Myślę, że w takich odstępach dwutygodniowych będę w stanie dowozić wam wartościowe treści, nie zaniedbując przy tym innych moich obowiązków. Życzę wam wszystkiego dobrego na kolejne dwa tygodnie i do usłyszenia w kolejnym odcinku podcastu.