• Zarządzanie

    Jak powstaje trend

    Zapewne większość z was słyszała o firmie Tesla, która staje się coraz bardziej sławna. Niedawno Tesla pokazała kolejny model samochodu elektrycznego – Model 3 – na który już teraz zapisało się ponad 370 tys. osób wpłacając od razu kwotę $1000. Ba, w chwili prezentacji podano, że 115 tys. osób już go sobie wcześniej zarezerwowało wpłacając po $1000 zaliczki – czyli zrobili to zanim zobaczyli Model 3.

    Warto przeanalizować w jaki sposób Tesla stworzyła z samochodu elektrycznego – który sam w sobie nie jest nowym wynalazkiem –  produkt, który ma wszelkie szanse zmienić rynek samochodowy. Warto, bo dokonała tego podchodząc do problemu zupełnie inaczej niż robili to wszyscy inni wcześniej. Do tej pory:

    • wszyscy zakładali, że aby uzyskać pojazd elektryczny o sensownym zasięgu konieczna jest nowa, przełomowa technologia w dziedzinie akumulatorów, w związku z czym nie próbowali wyzyskać do końca możliwości technologii już dostępnej,
    • wszyscy zakładali, że jak samochód elektryczny to wyłącznie miejski, bo jak dowodzą badania większość przebiegu samochody robią wykonując trasy poniżej 70 km / dzień po mieście, przy tym ich myślenie ograniczało przekonanie, że i tak więcej „nie da się” wynikające z poprzedniego punktu,
    • wszyscy zakładali, że auto elektryczne jest produktem dla „eko-świrów”, ludzi, którzy je kupią jako manifestację swojego przywiązania do Gai – jako takie (oraz miejskie) musi być nie tylko małe, musi być także plastikowe i mieć wygląd czegoś odjechanego, musi być po prostu brzydkie. No i oczywiście nie może mieć dużego przyspieszenia ani w ogóle dawać radości z jazdy (poza satysfakcją z bycia eko), gdyż eko-świrom na tym nie zależy.

    Efekt tego był taki, że mimo licznych zapowiedzi nie powstało nic naprawdę konkurencyjnego wobec istniejących samochodów spalinowych. Bo jednak większość ludzi lubi samochody ładne i duże (jak można zauważyć większość aut „rośnie” z generacji na generację), bo takie są wygodne – w większym aucie wygodniej się siedzi, łatwiej coś przewieźć itp. Ponadto, pomimo tego, że ludzie zazwyczaj jeżdżą po mieście to lubią wygodę i poczucie wolności, jakie daje im fakt, że nawet 15-o letnim VW Polo można – jeśli się chce – pojechać od ręki na drugi koniec Europy. No i większość kierowców (płci obojga) lubi dynamiczną jazdę i przyjemność, którą dają przyspieszenia. I – o dziwo – lubią to także „eko-świry” – jak się okazuje poza faktycznie skrajnymi przypadkami chęć nie szkodzenia (lub przynajmniej szkodzenia mniej) środowisku naturalnemu nie neguje tego, czego ludzie oczekują od samochodu.

    Tesla podeszła do projektowania swoich samochodów od samego początku inaczej od razu atakując wszystkie problemy dotychczas negujące sens auta elektrycznego jako praktycznej propozycji:

    • kwestia zasięgu – zrobiono wszystko by wydusić z istniejącej technologii akumulatorów co się da i od razu zbudowano samochod mający zasięg ok. 400 km. To jest dystans, który uspokaja każdego, że nie ma do czynienia z miejskim samochodzikiem do jazdy po zakupy – można spokojnie dojechać Teslą Model S z Krakowa czy Poznania do Warszawy. Ale na tym nie poprzestano – zdając sobie sprawę z problemu braku infrastruktury ładowania Tesla systematycznie działając przez kilka lat zainstalowała parę setek stacji szybkiego ładowania Superchargers. Można na nich w czasie ok. 30 min naładować samochód na tyle, by dojechać przynajmniej do następnego Superchargera, co okazało się całkowicie efektywnym rozwiązaniem problemu tzw. „range anxiety” (najlepiej dowodzi tego fakt, że Tesla pomyślała samochód tak, że możliwa jest również szybka wymiana baterii i stworzono autmatyczną stację, gdzie można tego dokonać – jednak jedyna taka stacja w Kalifornii po okresie próbnym stoi zamknięta – najwyraźniej sieć ładowarek Supercharger jest wystarczająca),
    • jako pierwszy poważny produkt od razu zbudowano Model S, który wygląda jak normalny samochód i jest po prostu ładny – sylwetkę ma podobną do wyższych modeli Audi czy Jaguarów, a więc klasy modeli, z którymi cenowo konkuruje – i duży, można w nim przewieźć wygodnie 4 osoby i sporo bagażu (Model X jest jeszcze większy),
    • zbudowano samochód który ma osiągi, jakie wśród aut spalinowych mają supersamochody klasy Porsche czy Lamborgini (mało co jest w stanie wyprzedzić najmocniejszą wersję Modelu S, który 100 km/h osiąga w 3.0 sek) i odpowiednie do tego zawieszenie – co za tym idzie przemawia on do każdego „rasowego” kierowcy,
    • postawiono od razu na auto spięte z Internetem, komputer na kołach, który daje właścicielowi dodatkowe możliwości od obsługi w sposóbu kojarzący się z wysoką technologią (ekran dotykowy) po słynnego już autopilota, firmie zaś daje możliwość rozwijania produktu już po sprzedaży poprzez aktualizacje oprogramowania.

    Efekt jest absolutnie rewelacyjny – prawie każdy kto miał okazję przejechać się Teslą jest zachwycony a już zupełnie każdy ma poczucie, że oto miał okazję zetknąć się z nową jakością. Powstało auto, które ma więcej fanów niż ludzi, których na nie stać. Ale tu Tesla idzie chyba świadomie śladem oryginalnej motoryzacji jak i chyba każdej nowinki technicznej. Bo również spalinowe samochody, radioodbiorniki, telewizory i komputery były początkowo towarem dla najbogatszych, którym jednak fascynowały się miliony. Tak jest teraz z Teslą – jest to produkt dla bogaczy (aczkolwiek niekoniecznie multimilionerów – nawet w Polsce każdego kogo stać na BMW X5 stać byłoby zamiast tego na Teslę S, a wystarczy się rozejrzeć ile nowych X5 jest w Polsce), ale produkt, która rozgrzewa wyobraźnię i pragnienia milionów. I to pokazały dobitnie zapisy na tańszy Model 3, na który stać już zdecydowanie więcej ludzi. Co więcej – i bariera wejścia jest dla nich niższa nie tylko finansowo ale i psychologicznie – technolologia jest już sprawdzona, w większości rozwiniętych krajów można będzie i Modelem 3 wypuścić się w trasę od Superchargera do Superchargera. I stąd te 370 tys. _opłaconych_ rezerwacji. Właśnie dzięki temu wartość marki Tesla właśnie przekroczyła wartość marki… VW.

    Przyjrzyjmy się jeszcze raz „DNA” tego sukcesu – jest on bardzo podobny do sukcesu iPhone firmy Apple jak i oryginalnego Apple II. W każdym z tych przypadków mamy:

    • odrzucenie limitującego przekonania, że się „nie da”,
    • sprytne inżyniersko użycie dostępnej technologii (brak istotnego technologicznego przełomu – wynalazku na miarę tranzystora),
    • stworzenie produktu dla early adopters (Tesla Roadster), dzięki któremu można było doszlifować technologię,
    • stworzenie produktu rzeczywiście atrakcyjnego dla szerokiej, dużej grupy docelowej,
    • dbałość nie tylko o właściwości techniczne ale i estetykę produktu,
    • i dopiero na końcu sprawny, zręczny marketing oraz dużo dużo pieniędzy – i wyjście na naprawdę masowy rynek.

    Trend elektrycznej motoryzacji rozpędzony przez Teslę nabiera pędu. Już dziś dla coraz większej grupy zamożnych klientów spalinowy Mercedes czy Audi to nie jest żadna konkurencja, bo nie są one tak fajne ani tak nowoczesne, nie są już znakiem przyszłości lecz raczej pieśnią przeszłości. Są trochę jak ostatnie, technicznie wysublimowane i piękne żaglowce (klipry) czy parowozy, które choć nadal podziwiane przez miłośników musiały ustąpić pola lepszemu produktowi. Produkujące je koncerny mają dużo ciężkiej pracy przed sobą, jeśli chcą utrzymać konkurencyjność.

    Jaki z tego wszystkiego można wyciągnąć wniosek? Na początek proponuje zastanowić się, co „nie da się” w twojej branży.

  • Agile,  Zarządzanie

    Lokalne optymalizacje

    Na każdą organizację można spojrzeć jako na system, który przetwarza pewne sygnały wejściowe na jakieś produkty wyjściowe. W tym sensie organizacja jest zbiorem procesów, mniej lub bardziej powtarzalnych, w których przepływają pewne zlecenia. W przemyśle mają one charakter materialny, namacalny. W pracy intelektualnej (mylonej czasem z biurową) są najczęściej tylko pojęciami takimi jak pojedyncza sprawa, zlecenie, „ficzer” itp. Umownie możemy je nazwać „jednostkami pracy”.

    Tak patrząc na dowolną firmę o jej sprawności świadczą dwa najważniejsze parametry: przepustowość (liczba jednostek pracy w jednostce czasu, które firma przetwarza) oraz średni czas przetwarzania (czyli średni czas jaki upływa od rozpoczęcia do zakończenia pracy nad jednostką pracy – oczywiście patrząc z perspektywy odbiorcy). Efektywność to funkcja kosztu – innymi słowy ile kosztuje przetworzenie jednostki pracy – ale z pewnością ma ona związek ze średnim czasem przetwarzania, przeciętnie im szybciej coś jest przetwarzane tym to przetwarzanie powinno być tańsze.

    Teoretycznie kierujący organizacją powinni tak działać, by organizacja tak szybko jak to w danej domenie działalności jest możliwe przetwarzała jednostki pracy od wejścia do ukończenia.

    Wyobraźmy sobie teraz organizację jako proces składający się z wyróżnialnych kroków wykonywanych przez konkretnych ludzi i z użyciem konkretnych zasobów. Każdy z tych kroków działa sobie jakoś, w swoim tempie, a średni czas przetwarzania całości wynosi X. Co stanie się, jeśli krok C raptownie przyspieszy, a więc stanie się dużo bardziej wydajny od innych? Czy sumaryczny czas przetwarzania wzrośnie czy spadnie?

    hiper uproszczona organizacja
    Wbrew pozorom średni czas przetwarzania wzrośnie. Dlaczego? Bo wyniki pracy kroku C zaczną się odkładać w coraz bardziej rosnącej kolejce przed krokiem D, który nie przyspieszył. Co się podzieje z przepustowością? Pozostanie taka sama, ograniczona możliwościami kroku D.

    Taki scenariusz to właśnie lokalna optymalizacja – tylko część całego łańcucha albo procesu usprawniła się bez zmiany w pozostałych. Stan całości organizacji nie uległ poprawie, ale przeciwnie, pogorszeniu.

    Jakie to ma przełożenie na nasz świat? Takie mianowicie, że w bardzo wielu miejscach Scrum (czy Kanban) zastosowany w zespołach jest właśnie taką lokalną optymalizacją. Reszta organizacji się nie zmienia, nie zmieniają się zwłaszcza te procesy, które zajmują się wprowadzaniem zmian do użytku. W efekcie co prawda zespoły wytwarzają często wydawalny produkt, działają szybciej, efektywniej – ale korzyści nie widać, bo wydania nadal są tylko trzy razy do roku (i jest na to mnóstwo wspaniałych uzasadnień).
    
    Przy tym lokalna optymalizacja w wytarzaniu oprogramowania jest bardziej zdradliwa niż w fabryce. W przetwarzaniu fizycznych elementów jest ona bowiem widoczna namacalnie. Po pierwsze kolejki wytworzone przez krok, który nagle przyspieszył mają charakter widocznego stosu elementów czy półproduktów, których przechowywanie dodatkowo kosztuje. Po drugie jednak widać wyraźnie, że poprzednie kroki nie nadążają co prowadzi do przestojów na etapie, który przyspieszył, bo zaczyna mu brakować elementów na wejściu (z kroków A i B).

    Tymczasem w naszej dziedzinie ten drugi efekt jest rzadziej widoczny, bo zawsze jest pełno pomysłów na ficzery i zmiany, które można wprowadzić do prodktu. Co więcej, jeśli zmiany naprawdę najbardziej wartościowe zostaną załatwione można na lata utonąć w mało wartościowych pomysłach, co jest niestety odruchem w wielu organizacjach zamiast otwartego przyznania, że to, co najważniejsze jest już zrobione i w sumie nie ma uzasadnienia dla utrzymywania dużych zespołów developerskich. Mogłoby to się stać widoczne, gdyby śledzono wartość dostarczaną w funkcji czasu starając się ją jakoś obiektywnie mierzyć, ale z mojej praktyki wynika, że jest to niezmiernie rzadkie.

    Podsumowując: przyspieszanie i usprawnianie działania samych zespołów – w czym wiele organizacji celuje w ramach tzw. „wdrożeń Scrum” – poprawia wskaźniki w IT, ale nie przynosi spodziewanych korzyści dopóki pozostaje lokalną optymalizacją a reszta organizacji pozostanie bez zmian. Niestety, nie jest to widoczne bo zawsze jest pełno czekających na jakąś zmianę w produkcie i powstaje złudzenie, że to wciąż za mało tempa i pojemności w developmencie.

  • Agile,  Różne,  Zarządzanie

    Jak dobrze budować systemy rządowe?

    Właśnie w ostatni weekend kolejny raz wyszły na jaw istotne niedociągnięcia w ważnym państwowym systemie informatycznym – okazało się, że system ePUAP (platforma przez którą obywatele mogą załatwić elektronicznie sprawy urzędowe) nie posiadał możliwości automatycznego przejęcia obsługi przez serwery zapasowe w razie awarii serwerów podstawowych. Wymagało to ręcznej pracy administratorów i w konsekwencji zajęło cały dzień jak ujawniła Minister Cyfryzacji.

    Więcej o sprawie można przeczytać na blogu Niebezpiecznik.pl. Czytając tą relację warto zwrócić uwagę na dwie rzeczy.

    Po pierwsze audyt tegoż systemu zamówiony przez nową Minister Cyfryzacji (którego fragmenty publikuje Niebezpiecznik.pl) koncentruje się na dokumentacji. Rzecz typowa dla audytorów, którzy najczęściej pochylają się właśnie nad szeroko rozumianymi „kwitami” co nie zawsze pokazuje meritum sprawy. Tak jest i w tym przypadku, bowiem jeśli jakiekolwiek działania naprawcze wymagają wykonania skomplikowanych kroków opisanych w rozlicznych dokumentach to można spokojnie przyjąć, że nawet jeśli owe dokumenty istnieją i opisują te kroki prawidłowo – to i tak będą praktycznie bezużyteczne. Zamiast mnożyć dokumenty należy maksymalnie uprościć wszelkie działania (w czym pomaga jak najdalej idąca ich automatyzacja) a następnie ćwiczyć je w warunkach możliwie zbliżonych do produkcyjnych – lub wręcz na środowisku produkcyjnym (por. Google DiRT). Chodzi o to, by kiedy dzieje się coś złego admini od razu wiedzieli co robić – i umieli to robić niemal z zamkniętymi oczami – a nie przystępowali do wertowania dokumentacji.

    Po drugie na pochwałę zasługuje otwartość z jaką Minister Cyfryzacji Anna Streżyńska poinformowała o sytuacji jak i stanie systemu ePUAP (musi on być opłakany, skoro ponoć gdyby nie konieczność zwrotu środków UE uzyskanych na jego budowę najlepiej byłoby go w/g słów pani minister „zaorać”). Jest to w ogóle jedna z tych postaci w nowym gabinecie, która cieszy się szacunkiem środowiska niezależnie od politycznych przekonań, co może cieszyć.

    Są to jednak dwie uwagi poboczne wobec meritum problemu, nad którym chcę się pochylić a mianowicie czemu właściwie systemy rządowe są najczęściej drogie i marne. Jak wspomniałem nie jest to przecież pierwsza wpadka tego rodzaju – że tylko wspomnę o systemie (dużo przecież prostszym) który miał policzyć głosy w wyborach samorządowych a po prostu nie działał. I nie jest to wyłącznie domena Polski.

    Moim zdaniem głównym źródłem problemu jest sama metoda tworzenia takich systemów. Zły jest bowiem nie tylko sposób ich zamawiania na rynku – zaszyty niestety „na sztywno” w ustawie o zamówieniach publicznych – błędne jest samo założenie, że państwo ważne systemy powinno w ogóle zamawiać od firm jako produkty lub w modelu projektowym.

    Przeanalizujmy najpierw obie te rzeczy po kolei a następnie spójrzmy na to jak powinno to wyglądać.

    Obecny obyczaj jest taki, że jak państwo potrzebuje jakiegoś systemu to zamawia go „pod klucz” na rynku rozpisując w tym celu przetarg. Najważniejszym problemem tych przetargów jest nawet nie to, że głównym kryterium jest najniższa cena (co nieuchronnie prowadzi do zaniżania oszacowań w dół a następnie patologii podczas realizacji, których symbolem w folklorze Agile jest tzw. „wiewiórkoburger”), ale sam fakt, że przetargi te są uosobieniem modelu kaskadowego (i jedną z jego ostatnich ostoi). W modelu tym zakłada się, że całość systemu ma zostać wyspecyfikowana z góry a następnie dostarczona w całości w jednym momencie – lub co najwyżej w kilku dużych etapach. Prowadzi to nieuchronnie nie tylko do budowania funkcji zbędnych ale i pominięcia funkcji potrzebnych, na które albo nie wpadli twórcy specyfikacji albo też potrzeba których ujawniła się dopiero z czasem. Innymi słowy, model taki gwarantuje, że funkcje systemu będą nieadekwatne i niewystarczające.

    A to tylko początek, czubek góry lodowej problemów z tym modelem. Czytelników mojego bloga nie będę zanudzać szerszym wykładem dlaczego model kaskadowy jest nieadekwatny dla budowy skomplikowanych systemów informatycznych – dość się o tym mówi i pisze od lat. Dość podsumować, że mamy tu zły proces, co gorsza mocno umocowany w prawie.

    Jakie powinno być zatem właściwie podejście do budowy takiego systemu? Oczywiście zwinne – a więc powinno się ustalić bieżącą listę najważniejszych wymagań wobec systemu, która nie musi być kompletna ale wystarczyć na 2-3 miesiące pracy. Następnie zespoły (początkowo zapewne jeden) powinny przystąpić do budowy systemu w krótkich, 2-3 tygodniowych iteracjach, wydając po każdej z nich kompletny, technicznie gotowy system na serwery produkcyjne. Po osiągnięciu jakiejś bazowej funkcjonalności efekt każdej takiej iteracji powinien być dostępny dla użytkowników (w przypadku ePUAP i innych systemów tego typu oznacza to także ogół obywateli) a używanie dostępnych funkcji powinno być mierzone i analizowane. Użytkownikom należy nadto udostępnić metodę łatwego zgłaszania pomysłów i potrzeb. Prowadzący rozwój systemu wybierałby na tej podstawie rzeczy najważniejsze do realizacji w kolejnej iteracji – i w ten sposób system non-stop poszerzałby swoje możliwości – ale zawsze o rzeczy w danej chwili najbardziej potrzebne. Zasadniczo zredukowałoby to zarówno marnotrawstwo jak i szanse pominięcia jakiejś istotnej dla dużej grupy użytkowników funkcji.

    Znowuż, dla osób zaznajomionych z nowoczesnymi metodami zarządzania rozwojem oprogramowania są to rzeczy do znudzenia wręcz oczywiste (jeśli dla kogoś stanowią nowość najwyższy już naprawdę czas zaktualizować swoją wiedzę w tym zakresie – na dobry początek proponuję moją książkę – podręcznik metod z rodziny Agile). Niestety, jak już napisałem w administracji państwowej brak nie tylko wiedzy i świadomości (jakże często decyzje o zakupie systemów podejmują ludzie, którzy nie rozumieją zasadniczych różnic pomiędzy prowadzeniem inwestycji w system informatyczny w stosunku do np. w budowy szpitala) – prawo wręcz zasadniczo utrudnia urzędnikom pracę w ten sposób.

    Wszelako jak już zasygnalizowałem powyżej problem tkwi jeszcze głębiej – w samym założeniu, że system tego rodzaju w ogóle musi być zamawiany jako produkt od firmy a nie po prostu organicznie rozwijany przez odpowiedzialną za niego instytucję. Tymczasem to właśnie – rozwijanie go przez ludzi bezpośrednio zatrudnionych przez np. Ministerstwo Cyfryzacji – byłoby absolutnie najlepsze pod każdym względem. Po pierwsze dlatego, że wówczas nic nie stałoby na przeszkodzie by zastosować metody zwinne usuwając wszystkie problemy jakie generuje model kaskadowy. Po drugie dlatego, że wówczas system budowałoby grono informatyków związanych z nim od samego początku – a jak pokazuje doświadczenie dużo łatwiej o zaangażowanie w produkt takiego zespołu niż pracowników firmy będącej dostawcą (albo – najpewniej – poddostawcą dostawcy). Co więcej, nie groziłaby wówczas ani utrata wiedzy o systemie ani możliwości jego stałego rozwoju – a takie ryzyko zawsze wiąże się z ew. upadkiem lub rozwiązaniem się firmy-dostawcy. Po trzecie, tak byłoby taniej gdyż nie trzeba  by było płacić niezbędnej marży dostawcy – co mogłoby się albo przełożyć na oszczędności albo umożliwić pozyskanie do zespołów lepszych specjalistów przez zaoferowanie wyższych zarobków.

    Sztandarowym projektem, który dobitnie pokazuje przewagę opisanego podejścia nad przetargami na realizację w/g specyfikacji jest projekt FBI Sentinel. Był to projekt budowy centralnego systemu informacji o sprawach, osobach itp. dla agentów FBI. W dużym skrócie po upadku wcześniejszego projektu (system nie działał) wartego miliony i 4 latach trwania kolejnego, w czasie którego Lokheed Martin zdążył spalić kolejne miliony nie dostarczając nic działającego system skończono po prostu ekipami programistów pracującymi w krótkich sprintach (chyba nawet w Scrumie)… w budynku FBI w Waszyngrtonie. Więcej o tym można poczytać tu, tu i tu.

    Może się jednak okazać, że brakuje funduszy na zatrudnienie zespołu (przyczynek do szerszej refleksji nad sensownością wydawania pieniędzy przez rząd, który jest w stanie wykładać pieniądze na zupełnie bezsensowne rzeczy ale nie miałby ich na pensje dla grupy fachowców zdolnych zbudować i utrzymać kluczowy dla państwa system? Co najmniej bez sensu). Istnieje wtedy jeszcze jeden sposób na zbudowanie takiego systemu, który byłby skuteczny i zapewniał wysoką jakość rozwiązania: projekt open source. Ministerstwo musiałoby zatrudnić tylko kilku kluczowych developerów, którzy położyliby podwaliny pod system (napisali jego wstępny zrąb) oraz dbaliby o jakość kodu (poprzez głównie akceptowanie lub nie kodu innych ludzi). Następnie należy odwołać się do społeczności informatycznej w Polsce o wsparcie projektu nie finansowo ale wprost kodem. Jestem pewien, że niezależnie od polityki i tego kto aktualnie jest u władzy jest dość zaangażowanych informatyków, by projekt żwawo posuwał się do przodu. Mielibyśmy wówczas społecznie rozwijany system rządowy w modelu open source – coś, co miałoby szansę być ewenementem na skalę światową.

    Pojawić się mogą zarzuty, że taki system nie byłby bezpieczny. Trudno się z nimi zgodzić – to właśnie podejście „security through obscurity” czyli bezpieczne, bo nikt nie wie jak to działa było historycznie źródłem największej liczby dziur w bezpieczeństwie. Dobry system oparty o kryptografię powinien oprzeć się atakom pomimo znajomości jego mechanizmów działania pod warunkiem zadbania o klucze kryptograficzne, które przecież nie stanowią części źródeł systemu. Co więcej, fakt weryfikacji mechanizmów przez wielu uczestników projektu powinien zapewnić wykrycie większej liczby potencjalnie zagrażających bezpieczeństwu błędów.

    Małe szanse, że mój artykuł dotrze do Pani Minister ale gdyby tak się stało: proszę poważnie rozważyć po pierwsze zastosowanie organicznego rozwoju oprogramowania rządowego przez zatrudnionych wprost przez rząd informatyków a w razie gdyby to nie było możliwe odwołanie się do modelu open source i wsparcia społeczności. Wyjdzie na tym i Ministerstwo i my wszyscy dużo lepiej niż na rozpisaniu kolejnego przetargu na kolejny projekt.