Na początku mojej kariery stworzyłem interfejs obsługujący stanowisko przyjęć w magazynie. Byłem dumny z tego, co uważałem za dobrze zaprojektowany, elegancki produkt końcowy. Okazało się jednak, że nie był funkcjonalny ani intuicyjny dla operatora magazynu, który powiedział bez ogródek: „To najgłupsza rzecz, jaką kiedykolwiek widziałem”.
Auć.
Była to wczesna lekcja tworzenia produktów programistycznych, które można zastosować w środowisku fizycznym — w tym przypadku w magazynie. Jeśli oprogramowanie obsługuje interfejs, który wygląda dobrze, ale nie został stworzony z myślą o rzeczywistym świecie, jest bezużyteczne.
Choć to, co stworzyłem, wyglądało dobrze (przynajmniej moim zdaniem), nie obejmowało funkcjonalności, która czyniłaby je naprawdę użytecznym dla pracownika przyjęcia — a przecież właśnie o to chodziło.
Dziś moja firma, Flowspace, rejestruje codziennie ponad 200 000 zdarzeń fizycznych w ramach naszej sieci realizacji zamówień e-commerce. Doskonale poznałem wyjątkowe wymagania związane z tworzeniem technologii zależnej od rzeczywistego świata.
Świadomość występowania tych zdarzeń to tylko jedno z wyzwań związanych z tworzeniem oprogramowania dla sfery fizycznej. Drugim jest optymalne koordynowanie zdarzeń, aby zapewnić sprawną i niezawodną realizację zamówień oraz współdziałanie z innymi kluczowymi systemami technologicznymi.
W tym artykule szczegółowo opisuję, w jaki sposób programiści powinni podchodzić do wyjątkowych wyzwań pojawiających się podczas tworzenia oprogramowania cyfrowego, które umożliwia podejmowanie działań w sferze fizycznej.
SaaS w materialnym świecie
Produkty typu oprogramowanie jako usługa (SaaS) zazwyczaj obsługują dużą ilość niewidocznej pracy. Jednym z przykładów istotnych dla handlu elektronicznego jest Shopify.
Marki mogą użyć Shopify do uruchomienia sklepu w zaledwie pół godziny, bez potrzeby posiadania fizycznego lokalu. Sprzedawcy kontrolują wygląd, charakter i funkcje swojego sklepu. Mogą korzystać z ponad 6000 aplikacji i integracji umożliwiających dodawanie kolejnych funkcji oraz łączyć się z platformami zewnętrznych dostawców. Jednak dla końcowego kupującego widoczny jest prosty, spójny sklep internetowy umożliwiający dokonywanie zakupów online.
Patrząc na drugą stronę handlu elektronicznego — realizację zamówień — SaaS wygląda zupełnie inaczej. W tym przypadku logistyka musi wykonać fizyczne polecenie. W przeciwieństwie do technologii istniejących wyłącznie w chmurze i na ekranach, w realizacji zamówień występuje status 0/1. Dla końcowego konsumenta sprzedawcy pytanie brzmi: „Czy moja paczka dotarła, czy nie?”
W rzeczywistym świecie oprogramowanie musi uwzględniać setki poziomów fizycznej szczegółowości, które wpływają na wnioski algorytmiczne. Kod może być perfekcyjny, ale działania w świecie rzeczywistym, pozostające poza kontrolą oprogramowania, dodają warstwę złożoności do fizycznego SaaS.
Czy zamówienie zostało dostarczone do obiektu na czas? Czy operator pobrał z półki właściwy produkt? Czy oprogramowanie kieruje go do wybrania pudełka o odpowiednim rozmiarze, aby wskazać optymalnego i najbardziej opłacalnego przewoźnika? Czy produkt został dostarczony na czas i zgodnie z oczekiwaniami, czy też paczka zaginęła, została uszkodzona lub opóźniła się w transporcie?
We wszystkich tych scenariuszach oprogramowanie obsługujące proces realizacji zamówienia musi wykonać działanie zachodzące w świecie rzeczywistym, aby zapewnić najlepszy rezultat.
Wyjątkowe wyzwanie związane z oprogramowaniem do realizacji zamówień
W systemach programistycznych obsługujących zarówno produkty cyfrowe, jak i fizyczne występują błędy. Jednak w systemie fizycznym błąd może prowadzić do rzeczywistych problemów, takich jak pobranie niewłaściwych produktów, spóźnione ciężarówki lub pracownicy niemający nic do zrobienia.
Dlatego oprogramowanie logistyczne wymaga trzech kluczowych elementów: dokładności, współdziałania i wydajności. W przeciwnym razie poziomy zapasów będą nieprawidłowe, platformy nie będą się ze sobą komunikować, zamówienia będą opóźnione, a wszyscy będą niezadowoleni.
Cały ekosystem zależy od dokładności i integralności danych. Brak dostarczenia tych danych lub błąd w obliczeniach może uniemożliwić osiągnięcie pożądanego rezultatu, czyli sprawnej i niezawodnej realizacji zamówień.
Wszystko to opiera się na komunikacji między systemami — co ma szczególne znaczenie w handlu elektronicznym, obejmującym różne punkty styku i platformy sprzedażowe. Gdy dane znajdują się w silosach, a inne systemy technologiczne wykorzystywane w handlu detalicznym nie potrafią skutecznie się komunikować, sprzedawcy nie rozumieją, co się dzieje. Dlatego realizacja e-commerce na najwyższym poziomie nie jest możliwa bez oprogramowania na najwyższym poziomie.
Poza dokładnością danych i współdziałaniem platform system musi być zoptymalizowany. Jeśli na przykład sprzedawca skieruje zamówienie do nieoptymalnego obiektu, przesyłka będzie musiała pokonać większą odległość i dotrzeć szybciej do klienta, co zwiększy koszty. Marże sprzedawcy i operatora magazynu są niewielkie, dlatego każda optymalizacja ma znaczenie. Dla końcowego konsumenta każdy wysiłek włożony w bezproblemowe dostarczenie produktu po dokonaniu zakupu jest niezwykle istotny.
Tworzenie oprogramowania obsługującego operacje fizyczne
Pierwszym kluczowym elementem tworzenia oprogramowania do realizacji zamówień w świecie fizycznym jest dogłębne zrozumienie klienta. Na czym polega jego działalność? Jakie są wymagania dotyczące jego produktów? Gromadzone przez niego dane, przeprowadzane analizy oraz działania, które musi podjąć oprogramowanie, zależą od zrozumienia i zaspokojenia potrzeb jego końcowych konsumentów.
Skuteczne tworzenie oprogramowania dla rzeczywistego świata wymaga doświadczenia. W Flowspace zdobywamy wiedzę, angażując inżynierów we współpracę z naszymi klientami — bezpośrednio na hali magazynowej — aby obserwowali, jak operatorzy ręcznie wykonują dane działanie, proponowali pomysł, a następnie na tej podstawie wprowadzali kolejne usprawnienia.
Drugim aspektem tworzenia oprogramowania do realizacji procesów realizacji zamówień w świecie fizycznym są dane. Zbieraj jak najwięcej danych w czasie rzeczywistym i na tyle szczegółowo, na ile to możliwe. Nawet jeśli nie zostaną wykorzystane od razu, to bogate źródło informacji może okazać się przydatne po kilku tygodniach, miesiącach lub latach do zasilenia analizy albo optymalizacji nowego algorytmu lub procesu. Przechowywanie danych jest tanie, a w przyszłości możesz nie być w stanie uzupełnić brakujących danych.
Na koniec eksperymentuj i iteruj. Często pomysł, który teoretycznie wydaje się wiarygodny, po prostu nie sprawdza się w prawdziwym świecie. Dowodzi tego moje wczesne doświadczenie z reakcją operatora magazynu na mój interfejs oprogramowania.
Przyszłość SaaS w operacjach
Rzeczywistość prawdziwego świata jest taka, że on istnieje. Wielu założycieli firm technologicznych pragnie przełomowych zmian i opowiada się za piękniejszym rozwiązaniem, ekosystemem lub sposobem pracy. To właśnie w technologii jest wspaniałe – zawsze powstaje coś większego, lepszego i potężniejszego.
Jednak innym aspektem prawdziwego świata jest to, że niektóre rzeczy zmieniają się powoli, dlatego staraj się zachować równowagę między tworzeniem rozwiązań, które działają w oparciu o to, co już istnieje, a tym, co ostatecznie jest możliwe.
Istnieje możliwość koordynowania i optymalizowania systemów fizycznych za pomocą oprogramowania. Aplikacje oparte wyłącznie na oprogramowaniu mogą modelować optymalne scenariusze, zanim praca zostanie wykonana w prawdziwym świecie. Zbieranie możliwie bogatych danych w czasie rzeczywistym zwiększa inteligencję i możliwości systemów. Zapewnienie interoperacyjności wszystkich platform napędza realizację na najwyższym poziomie.
A ponieważ to wszystko napędza działania w prawdziwym świecie, dodatkową radość daje świadomość, że ta praca ostatecznie ułatwi, poprawi lub uprzyjemni komuś życie.
Jakie wnioski wyciągnęliście z tworzenia produktów programistycznych dla prawdziwego świata? Podzielcie się nimi w komentarzach poniżej i dołączcie do newslettera The CTO Club, aby otrzymywać więcej wiadomości branżowych i uczestniczyć w dyskusjach.




