Kiedy rozwijanie własnego oprogramowania staje się zbyt dużym obciążeniem? Nieustanny rozwój i utrzymanie oprogramowania w firmie produkcyjnej.

Biznes, Software house • 22.02.2024 • 12 minut

Wstęp


Wiele firm produkcyjnych boryka się z problemem rozwoju i utrzymania własnego oprogramowania. Często trudności te wynikają ze zbyt małego wewnętrznego zespołu programistów, który radzi sobie z utrzymywaniem aplikacji, wprowadzaniem zmian i jest swojego rodzaju wsparciem technicznym dla pracowników przedsiębiorstwa, ale nie posiada możliwości którymi zaspokoił by większe potrzeby działów zakładu. Istnieje wiele obiektywnych przesłanek z powodu których rozbudowywanie wewnętrznego zespołu jest nieopłacalne, które są przyczynkiem do poszukiwania alternatywnych rozwiązań w celu zaspokojenia pojawiających się coraz większych potrzeb.

Rozwój oprogramowania w firmie produkcyjnej


Często oprogramowanie produkcyjne utrzymywane jest w dosyć starych technologiach, a wizja migracji do nowszych wydaje się być biznesowo nieopłacalna i bardzo odległa w czasie. Ponadto chcielibyśmy, aby moduł pokrywający kolejny obszar produkcyjny był zintegrowany z istniejącym rozwiązaniem, tak żeby wdrożenie nie wywróciło całej firmy do góry nogami. Szukając rozwiązania rozważamy wiele przypadków - czy skorzystać z gotowego oprogramowania klasy ERP, szukamy samych modułów którymi jesteśmy zainteresowani np. APS, WMS, MES itp., poszukujemy specjalistów do własnego zespołu starając się rozszerzyć kompetencje o kolejne obszary albo staramy się znaleźć zewnętrzne zespoły (programistów, analityków, automatyków) lub firmy programistyczne, które są w stanie zaspokoić potrzeby związane z rozwojem oprogramowania w tej konkretnej branży. Przyjrzyjmy się każdemu z tych rozwiązań i przeanalizujmy korzyści i zagrożenia które niosą za sobą.

Wybór rozwiązania klasy ERP


W przypadku oprogramowania klasy ERP mamy styczność z systemem kompleksowym, który z reguły pokrywa większość obszarów firmy, co niewątpliwie jest zaletą takiego wyboru. Jego dostępność jest praktycznie natychmiastowa, ponieważ oprogramowanie istnieje i można je wyciągnąć z "pudełka". Kolejnym atutem takiego wyboru jest jasne poznanie kosztów przed wdrożeniem takiego oprogramowania. Często po konsultacji z przedstawicielem firmy jesteśmy w stanie zgromadzić takie informacje jak koszt licencji na stanowisko oraz koszt wdrożenia samego oprogramowania. Spoglądając z drugiej strony medalu oprogramowanie tej klasy ma też swoje wady. Pierwszą i największą z nich jest brak możliwości dostosowania do specyfiki pracy danego przedsiębiorstwa. Często padają tutaj pytania - "Czy w tym systemie można coś zrobić tak albo tak? Czy możemy zmienić to w ten sposób?". Niestety przeważnie odpowiedź jest negatywna, a wiele firm radzi sobie z tym w ten sposób, że wykorzystuje funkcje oprogramowania, które zostały zaprojektowane z innym przeznaczeniem. Co prawda takie kreatywne podejście pozwala rozwiązywać podstawowe problemy, jednak posiada naturalne ograniczenia i powoduje frustrację u użytkowników systemu. Kolejną wadą takiego systemu jest często ograniczona możliwość integracji i wymiany danych z naszym oprogramowaniem. Bardzo często wybór oprogramowania klasy ERP wiąże się z zastąpieniem istniejącego rozwiązania, a integracja z posiadanym rozwiązaniem jest bardzo czasochłonna i nieopłacalna. Przedsiębiorstwo musi dopasować swoje procesy biznesowe do oprogramowania.

Gotowe oprogramowanie pokrywające konkretny obszar działalności


Wybierając sam moduł, którym jesteśmy zainteresowani, wydaje się, że dostaniemy dokładnie to, czego oczekujemy. Korzyści płynące z tego wyboru są początkowo jasne - skoro jest to pewien wycinek oprogramowania, to powinien być on tańszy od całego systemu. Pokrywa on naszą specyficzną potrzebę realizując określone funkcje, które są dla nas niezbędne. Jednak analizując możliwość wdrożenia gotowego modułu zaczynają pojawiać się pytania. W jaki sposób zorganizować wymianę danych z istniejącym oprogramowaniem? Czy jest to w ogóle możliwe w przypadku naszego systemu? W jaki sposób pobierać dane z nowego modułu? Czy jest możliwość dostosowania modułu do procesów biznesowych zachodzących w naszym przedsiębiorstwie? Posiadając własną drużynę programistów można pokusić się o wdrożenie takiego modułu korzystając z dokumentacji dostarczonej przez producenta, jednak nie rozwiąże to wszystkich problemów, które możemy napotkać przy wdrożeniu takiego rozwiązania. Konieczne jest zgodzenie się na pewne ustępstwa i zaakceptowanie takiego stanu rzeczy.

Własny zespół deweloperski


Rozwój oprogramowania za pomocą wewnętrznego zespołu wydaje się optymalnym rozwiązaniem. Znany jest stały miesięczny koszt utrzymywania zespołu deweloperskiego. Zespół powinien posiadać doświadczenie i znać specyfikę oraz problematykę firmy. Zespół zna obecne oprogramowanie przez co sprawnie reaguje na pojawiające się problemy oraz jest w stanie szybko dostarczać małe aktualizacje dotyczące obecnego oprogramowania. W tym momencie musimy się zatrzymać, żeby zadać sobie kilka pytań. Czy nasz zespół składa się z doświadczonych specjalistów? Czy nasz zespół posiada kompetencje w kierunku analizy procesów biznesowych zachodzących w naszym przedsiębiorstwie? Czy nasz zespół posiada doświadczenie w nowych technologiach oraz jest w stanie sukcesywnie aktualizować i optymalizować działanie oprogramowania? Czy oprogramowanie które wytwarza jest skalowalne? Czy zespół posiada zasób żeby budować nowe moduły dla kolejnych działów przedsiębiorstwa, a co za tym idzie sprawnie potem je utrzymywać? Rzadko kiedy odpowiedzi na te wszystkie pytania są twierdzące. W takim wypadku poszukujemy rozwiązania tego problemu zwracając swoją uwagę na kolejnych specjalistów lub staramy znaleźć się brakujące kompetencje na zewnątrz przedsiębiorstwa.

Dedykowany zespół programistów


Zlecenie wytworzenia oprogramowania firmie zewnętrznej jest ostatnim przypadkiem, któremu przyglądamy się analizując możliwe rozwiązania. Niewątpliwie jest to jedno z kosztowniejszych rozwiązań w porównaniu do innych możliwości, co można uznać za wadę takiego wyboru. Wydaje się, że kolejną wadą może być konieczność zaangażowania pracowników w proces wytwarzania oprogramowania, ale jak może później się okazać, to co na początku wydaje się być wadą może stać się zaletą takiego wyboru. Korzyści, których możemy doświadczyć, być może na pierwszy rzut oka nie są łatwo dostrzegalne, jednak postaram się je przybliżyć. Pierwszym i niezaprzeczalnym atutem jest to, że oprogramowanie zostanie dopasowane do przedsiębiorstwa. Zespół analizując potrzeby i procesy zachodzące w firmie rozwija oprogramowanie, które może integrować się z obecnymi systemami i rozwiązuje realne potrzeby pracowników. Można powiedzieć, że klient płaci tylko za to, co chce uzyskać, a wszelkie poboczne opcje z których normalnie by nie korzystał, są w tym przypadku zbędne. Kolejną zaletą jest to, że zewnętrzny zespół może współpracować ze specjalistami przedsiębiorstwa, dzięki czemu mają oni realny wpływ na powstające oprogramowanie i są zaznajomieni z technologią - pracując razem dzielimy się "know how". Realizując dziesiątki projektów posiadamy doświadczenie którym chętnie dzielimy się z naszymi klientami. Dedykowany zespół specjalizujący się w wytwarzaniu oprogramowania produkcyjnego to też czas poświęcony na wspólne warsztaty projektowe, cykliczną walidację tego, czy to co zostało wytworzone jest tym, czego oczekuje klient. Więcej informacji na temat procesu powstawania oprogramowania znajduje się w artykule - Jak wygląda proces powstawania aplikacji we współpracy z klientem.

Technologie. Tylko tyle i aż tyle.


Warto poszukać specjalistów, którzy są zaznajomieni z branżą oraz technologią, która jest wykorzystywana w firmie. Zazwyczaj mamy do czynienia z aplikacjami zbudowanymi o platformy .NET (dotnet) i Java. W tym przypadku używana technologia jest dość istotnym parametrem, bo przecież mamy zespół wewnętrzny znający konkretne języki programowania, istniejące oprogramowanie oraz perspektywę współpracy z zewnętrznym teamem. Wybór partnera, który specjalizuje się w konkretnej technologii ma bardzo duże znaczenie ze względu na doświadczenie we wdrażaniu nowych rozwiązań do istniejących już systemów i aplikacji. Jako firma specjalizująca się w platformie .NET często mamy do czynienia z aplikacjami o wysokiej złożoności w technologiach takich jak Windows Forms, WPF, WinUI, UWP, które rozwijane są przez wiele lat i pokrywają bardzo wiele obszarów przedsiębiorstwa. Doskonale rozumiemy platformę .NET i można powiedzieć, że budując i rozwijając aplikacje na tej platformie staliśmy się swojego rodzaju ekspertami jeżeli chodzi o współpracę z klientami, którzy posiadają swój dział IT, który wykorzystuje technologie ze spektrum .NET.

Wymiana doświadczeń.


Bardzo dużą zaletą współpracy z zespołem zewnętrznym jest możliwość rozwoju kompetencji własnych pracowników. Zespoły mają okazję do obustronnego zdobywania wiedzy i nowych umiejętności od siebie nawzajem. Dużym wkładem we współpracę jest posiadana przez pracowników wiedza na temat procesów zachodzących w przedsiębiorstwie, relacjach między działami, czy obiegu dokumentów. W większości przypadków nasza firma przydziela do projektów specjalistów z wieloletnim doświadczeniem, udostępnia analityka procesów biznesowych oraz osobę zarządzającą pracą całego zespołu. Dzięki takiej filozofii podchodzimy do współpracy kompleksowo, pokrywając wszystkie obszary od organizacji pracy zespołu, po zbieranie wymagań dotyczących nowych funkcji. Dużym plusem jest wspólna wymiana doświadczeń oraz dzielenie się wiedzą między zespołami, a co za tym idzie poznanie nowych technologi, frameworków, bibliotek. Dzielenie się wzajemnymi spostrzeżeniami pozwala na lepsze zrozumienie istoty działalności oraz dostarczanie rozwiązań, które spełniają wszystkie potrzeby przedsiębiorstwa.

Podsumowanie


Czasami przychodzi taki moment, kiedy przedsiębiorstwo rozwija się szybciej niż oprogramowanie z którego korzysta. Początkowo rozrost generuje małe problemy, które są adresowane wewnętrznie, jednak z biegiem czasu staje się to przytłaczające i hamuje wzrost firmy. Pojawiające się kolejne dokumenty obiegowe, czynności sprawdzające i rozrost biurokracji to moment w którym trzeba zastanowić się nad modernizacją obecnego oprogramowania. W tym artykule omówiliśmy różne podejścia, które firma może podjąć w celu rozwinięcia swojego oprogramowania. Każde podejście ma swoje wady i zalety, a ostateczny wybór zależy od indywidualnych potrzeb oraz możliwości firmy.

O autorze

Michał od ponad dekady projektuje aplikacje internetowe zbudowane w oparciu o framework ReactJS. Jego podejście do UX pozwala aveneo, jako software house, dostarczać czytelne i proste w obsłudze narzędzia, które adresują najbardziej zaawansowane potrzeby biznesowe.

Michał
Frontend lead & UX designer
Jesteś gotowy, żeby porozmawiać o swoim projekcie?