Coraz więcej decyzji w naszym świecie podejmują komputery. Potrafią one jednak robić tylko to, czego nauczył ich człowiek i gdy dostaną błędne instrukcje, błędny będzie także wynik ich działania. Czasem skutki mogą być groźne dla społeczeństwa.
Błędy w oprogramowaniu powodowały już katastrofy rakiet i sond kosmicznych, poparzenia czy awarie zasilania. Dzisiaj gubernator Waszyngtonu ogłosił, że do listy należy dopisać przedwczesne zwolnienie z więzienia ok. 3200 przestępców w latach 2002 – 2015. Co gorsza władze więziennictwa wiedziały o problemie od trzech lat, jednak odpowiednia poprawka do systemu naliczającego wymiar kary latami czekała na opracowanie i wdrożenie.
Błąd, a nawet wielbłąd
Jay Inslee, gubernator Waszyngtonu, przyznał dzisiaj na konferencji prasowej, że przyczyną błędnego naliczania czasu jaki więźniowie mieli spędzać za kratami był błąd programistyczny. W dość skomplikowanym systemie penitencjarnym USA więźniowie otrzymują dodatkowe dni redukcji wyroku (aż do jednej trzeciej jego długości) za dobre sprawowanie oraz udział w zajęciach terapeutycznych. Redukcja wyroku dotyczy jednak jedynie jego części podstawowej, nie zaś „lat dodatkowych”, które można dostać za popełnienie przestępstwa z wykorzystaniem broni palnej (ekstra 5 lat do każdego zarzutu) lub innego niebezpiecznego narzędzia (ekstra 2 lata). Gdy wyrok Sądu Najwyższego w roku 2002 zmienił zasady przyznawania redukcji wyroku, rozszerzając je z więzień stanowych również na okręgowe, do systemu naliczania dni redukcji wprowadzono odpowiednią poprawkę. Zamiast jednak objąć naliczaniem jedynie dni wyroku podstawowego, objęto nim także „lata dodatkowe”, powodując błędy w obliczeniach.
Według dostępnych szacunków problem dotyczył ok. 3% więźniów zwalnianych w okresie od 2002 do 2015, czyli 3200 osób. Przeciętny błąd w naliczeniu wynosił 55 dni na korzyść skazanego. Największy błąd wynosił aż 600 dni, jednak wyrok tego więźnia był tak długi, że mimo błędu nadal pozostaje on za murami.
Błąd jak błąd, ale tempo poprawek…
Problem został odkryty w roku 2012 przez… rodzinę jednej z ofiar, która dowiedziawszy się o planowanym wypuszczeniu sprawcy na wolność zgłosiła, że według jej obliczeń sprawca powinien jeszcze pewien czas spędzić w więzieniu. Dokonano ręcznej kalkulacji jego wyroku i potwierdzono błąd w systemie. Zaplanowano oczywiście wprowadzenie odpowiedniej poprawki – i na tym prace na długo utknęły.
Od 27 grudnia 2012, kiedy to zgłoszono poprawkę, do grudnia 2015 dział IT nie poradził sobie z jej wdrożeniem mimo iż została ona w systemie oznaczona jako krytyczna a jej termin określono jako legendarne ASAP (tak szybko jak tylko możliwe). Z do tej pory niewyjaśnionych powodów wdrożenie regularnie, wielokrotnie przekładano. Gdy w październiku 2015 do pracy przyszedł nowy szef IT dowiedział się o problemie w trakcie spotkania z pracownikiem zgłaszającym 3 lata wcześniej poprawkę. Dział wdrożeń poproszony o wyjaśnienie poinformował, że poprawka jest przewidziana na 7 stycznia 2016, ponieważ osoba za nią odpowiedzialna była od lutego do września na zwolnieniu.
Informacja szybko trafiła do szefostwa, które poinformowało gubernatora i zarządziło ręczne obliczania czasu zwolnienia do momentu wdrożenia poprawki systemowej. Część zwolnionych przedwcześnie więźniów już nie wróci za kraty (przynajmniej nie w ramach tej kary), ponieważ zabraniają tego przepisy jeśli spędzili odpowiednio dużo czasu na wolności i nie popełnili kolejnych wykroczeń. Jak do tej pory za mury udało się ściągnąć 5 z przedwcześnie zwolnionych osób.
Podsumowanie
Można by powiedzieć „niech pierwszy rzuci kamieniem kto wdrożył wszystkie projekty bez opóźnień”, jednak trudno nie załamać rąk zarówno nad czasem potrzebnym na wykrycie problemu jak i reakcją władz więziennictwa, które dopiero w obliczu katastrofy podjęły decyzję o ręcznym naliczaniu wymiaru kary. Błąd dopisujemy do długiej listy spektakularnych wpadek.
Komentarze
Nie jestem bardzo obeznany w kwestii programowania, ale biorąc pod uwagę że nad tym oprogramowanie działa prawdopodobnie dość duża grupa programistów, naprawa błędu takiej wagi nie powinna przypadkiem zająć maksymalnie miesiąc?
Na zasadzie, że jeśli nie ma innych błędów takiego poziomu, jak największy sztab ludzi jest przypisany do naprawy i analizy tego błędu?
„ponieważ osoba za nią odpowiedzialna była od lutego do września na zwolnieniu” – skąd przekonanie, że to dość duża grupa programistów ?
Bardziej założyłem że chodzi o projekt menadżera :)
Takie optymistyczne założenie, że ważnymi systemami odpowiadającymi za regulację długości kar więźniów, jednak zajmuje się więcej niż jedna osoba, z oczywistych względów ;)
Po za tym, była chora przez trzy lata?
Mowa o tworze stanowego (nie państwowego) systemu penitencjarnego. Domyślnie: „aplikacja” domowej roboty przez local IT staff. Mowa o „błędzie programistycznym”. Domyślnie: błąd w funkcji wyliczającej.
Konkluzja: Koleś co napisał tą formułkę w excellu dla pisarza z drugiego piętra odszedł kilka lat temu. Po dwóch e-mailach pisarz sobie odpuścił, a w „dziale IT” liczącym 8 osób zawsze były ważniejsze sprawy niż reverse-engineering jakiś formułek.
A wy tu o programistach, testerach, project managerze… To by osiem zuchów z „działu IT” więzienia stanowego miały polewkę, gdyby przeczytali wyobrażenia o ich software engineering governance model.
Aha… jedyny koleś co znał „tajniki znaku równości” excela miał wypadek i był na zwolnieniu przez 7 miesięcy.
Projekt rządowy.Nie.Nie jestem zwolennikiem libertariańskiej gadki o „państwowe znaczy niczyje”.Ale rzecz w tym,że Amerykanie po trochu chyba są.Poza tym to więziennictwo,typowa biurokracja państwowa,czyli coś na czego usprawnianie z natury nie idą wielkie pieniądze,a te które idą nie są wydawane rozsądnie na tyle,by dawać porządne efekty. Biurokracja to zresztą wszędzie jest królestwo nieróbstwa, niemożności,totalnej nieracjonalności i lenistwa podana w sosie pięknych i skomplikowanych uzasadnień dlaczego „tak być musi” i dlaczego „nic się nie da zrobić”.
A przypadkiem błąd nie nastąpił gdzie indziej? Wdrożenie systemu bez odpowiednich testów?
Mr. Robot jak nic.
Problem mógł też pośrednio wynikać z błędnego objaśnienia/zinterpretowania algorytmu wynikającego ze zmiany prawa. Samo „zakodzenie” mogło być ok. Mimo wszystko – wprowadzanie takiej poprawki przez 3 lata brzmi niepoważnie…
Pewnie tyle czasu zjadła biurokracja. A taki z pozoru prosty błąd może okazać się trudny do rozwiązania. Tak jak poprosić studenta żeby po dwóch latach rozwiązał calke ;-) trzeba sobie przypomnieć wszystko od nowa.
Natomiast w polandii nasze zuchy od sędziowania zawsze feruja słuszne wyroki i nigdy sie nie mylą …prawda
„Potrafią one jednak robić tylko to, czego nauczył ich człowiek i gdy dostaną błędne instrukcje, błędny będzie także wynik ich działania. Czasem skutki mogą być groźne dla społeczeństwa.” – brzmi świetnie,ale jeśli chodzi o opisany przypadek to przesada.Średnio 2 miesiące różnicy.Rok różnicy czy 2 nie znaczy za wiele,skoro tzw. „resocjalizacja” nie jest zależna od czasu a od postawy skazanego.Bardziej obawiałbym się Amerykańskich kar więzienia z latami wyrażanymi zmienną typu unsigned char (w końcu tam wyrok czasem przekracza te 255 lat).Ewentualnie bałbym się trochę unsigned long int (tj.int 32-bitowej) w sekundowym odmierzaniu wyroku – również w przypadku wyroków Amerykańskich,albo gdyby długość życia wzrosła dwukrotnie.
Pewnie mają już legendarnego SCRUMa i im tak im się w backlogu ustawiło ;-)
To teraz pomyślcie ile błędów jest zaszytych w polskich softłerach np. w ZUS i wszelakich ministerstwach. Biorąc pod uwagę częstotliwość zmian prawa oraz denną jakość ustaw, które produkują politycy i urzędnicy można jedynie być pod wrażeniem, że nasze wirtualne państwo jeszcze działa. Może nie powinniśmy rezygnować z papieru i maszyn do pisania w urzędach… ?