#006

Spec-driven development w SAP: z 19 dni do 5,5

· autor: Marian Kamenistak

Wersja angielska: /blog/spec-driven-development-sap/

Spec-driven development w SAP: z 19 dni do 5,5

Specyfikacja oceniona na 7 na 10 nie trafia do realizacji. W 18-osobowym zespole SAP, z którym pracuję, to właśnie tę zasadę zespół wskazuje jako zmianę, która pomogła najbardziej. W ciągu pięciu tygodni mediana czasu cyklu w fazie implementacji spadła z 19 dni do około 5,5.

Spec-driven development oznacza, że specyfikację piszesz, zanim napiszesz kod z AI, więc to ona staje się źródłem prawdy dla człowieka i dla AI. W SAP dodaję jedno: specyfikacja dostaje ocenę, a ocena decyduje, czy ktokolwiek dotyka ABAP.

Spodziewałbyś się, że zysk z AI siedzi w kodzie. Ten zespół mówi, że przyszedł krok wcześniej.

Wąskim gardłem było zadanie, nie ABAP

Zaczęliśmy od AI w raportowaniu i w ABAP. W Jira tego zespołu mediana czasu cyklu w fazie implementacji spadła o 71% w pięć tygodni. Na zgłoszeniach objętych SLA czas rozwiązania spadł o 49%, z 2,72 dnia do około 1,4.

Pracuję z tym zespołem jako fractional AI lead i nie umiem rozłożyć tych 71% na czynniki: bramka na specyfikacjach, skille (zapisane zestawy instrukcji dla AI), praca w parach i agent od incydentów ruszyły w tych samych tygodniach. Mam za to odpowiedź samego zespołu na pytanie, co pomogło najbardziej: „najbardziej pomógł spec-driven development, czyli to, że zespoły zaczęły tworzyć porządne specyfikacje”.

Kiedy zaczynaliśmy, przeciętna specyfikacja w tym zespole dostawała 3,3 na 10. Powód, dla którego to miało znaczenie, jest prosty. Programista ABAP z mglistym zadaniem wraca do konsultanta, czeka na odpowiedź, a resztę zgaduje. AI tego nie naprawia, tylko zgaduje szybciej.

Oceń każdą specyfikację. Poniżej 8 nie wchodzi do sprintu

Zespół zbudował na specyfikacjach ewaluator. To skill dla AI, który czyta zadanie z Jira i ocenia je w skali 10 punktów. Oto lista kryteriów, napisana pod obiekty SAP:

#Co specyfikacja musi zawieraćPunkty
1Cel biznesowy i kto na tym korzysta1
2Nazwane obiekty SAP, których dotyczy zmiana: tabele, moduły funkcyjne, BAdI, interfejsy2
3Zachowanie obecne i docelowe1
4Kryteria akceptacji, które da się przetestować (given / when / then)2
5Dane testowe i przypadki brzegowe1
6Uprawnienia i dane osobowe1
7Zależności i skutki uboczne: interfejsy, zadania wsadowe, transporty1
8Co jest poza zakresem1
Razem10

Lista kryteriów jest moja; ewaluator zbudowaliśmy na niej razem z zespołem. Kryteria akceptacji i obiekty, których dotyczy zmiana, mają po 2 punkty, bo właśnie te braki bolały najbardziej: specyfikacje nie miały testowalnych kryteriów akceptacji ani przypadków brzegowych, ani kontekstu o API i architekturze technicznej.

Próg stoi na 8, więc specyfikacja może stracić dwa punkty i dalej przejść. Jeśli straci więcej, wraca do autora z listą brakujących elementów. Słowami zespołu:

Jeśli specyfikacja ma ocenę niższą niż 8 na 10, zespół nie może pracować nad tym zadaniem.

Jedno zadanie, przed i po

Tak wygląda odrzucona specyfikacja. To przykład ilustracyjny, który wymyśliłem na potrzeby tego tekstu, a nie zadanie klienta: ta sama prośba, oceniona przed powrotem do autora i po nim.

KryteriumPrzedPo
Cel„Zamówienia z blokadą kredytową nie mogą być dostarczane. Proszę naprawić” (1)To samo, plus kto korzysta: finanse przestają uganiać się za zwróconymi dostawami (1)
Obecne i doceloweTylko docelowe (1)Dziś nocny proces wsadowy dostarcza wszystko; cel: pomijać zablokowane zamówienia (1)
ObiektyŻadnych (0)Status kredytowy CMGST w nagłówku zlecenia sprzedaży VBAK, zadanie wsadowe ZSD_DELIVERY_BATCH, BAPI_OUTB_DELIVERY_CREATE_SLS (2)
Kryteria akceptacjiBrak (0)Zamówienie z blokadą kredytową: gdy uruchamia się nocny proces wsadowy, dostawa nie powstaje, a zamówienie trafia na listę wyjątków (2)
Przypadki brzegoweBrak (0)Blokada zdjęta między selekcją a utworzeniem dostawy; zamówienia zwolnione częściowo (1)
ZależnościBrak (0)Musi działać po nocnym procesie zwalniającym blokady kredytowe (1)
Poza zakresemNie podano (0)Zmiany limitów kredytowych (1)
Ocena2/109/10

Uprawnień wciąż brakuje, dlatego to 9, a nie 10.

Najmocniejszy sprzeciw, jaki znalazłem, pochodzi od Birgitty Böckeler. Po przetestowaniu trzech narzędzi do spec-driven development na martinfowler.com napisała, że „wolałaby przeglądać kod niż te wszystkie pliki markdown” i że przy małych problemach cały proces wydał jej się przesadą. Przy poprawce na dwie linijki ma rację.

W SAP ten rachunek wygląda inaczej: skill daje ocenę, a konsultant czyta tylko brakujące punkty. Zapomniane uprawnienie albo zależność od transportu kosztuje więcej niż dziesięć linijek kryteriów.

Potem AI przyspieszyło ABAP

Kiedy specyfikacje były już dobre, część kodowa zaczęła się opłacać. Zespół stworzył skille „zdolne zajrzeć do bazy kodu, żeby znaleźć kontrakty i powiązane błędy”, więc AI pracuje na prawdziwym kodzie Z, a nie na fragmencie, który ktoś wkleił.

Drugim krokiem było jedno środowisko dla wszystkich. W praktyce: „stworzyliśmy zestaw skilli i instrukcję instalacji dla każdej osoby w zespole SAP, co pomaga nam szybciej wprowadzać kolejne osoby w AI”.

Dwa z tych skilli robią większość roboty. Ewaluator specyfikacji ocenia zadanie z Jira według powyższych kryteriów i wypisuje brakujące punkty. Wyszukiwarka kontraktów przeszukuje kod zespołu w poszukiwaniu kontraktów i powiązanych błędów stojących za zadaniem.

Razem działają jako plugin. Swój zestaw skilli dla SAP trzymam w prywatnym repozytorium; jeśli chcesz porównać go ze swoim, poproś mnie o dostęp.

Agent od incydentów powstał w 3 godziny

Ten sam ruch zadziałał po stronie wsparcia: wiedza, która siedziała w jednej głowie, stała się spisanymi regułami. Wąskim gardłem była tam ręczna kategoryzacja incydentów.

„Wcześniej wszystko zależało od wiedzy jednej osoby, a tę wiedzę zamieniliśmy w agenta, który potrafi poprawnie kategoryzować zgłoszenia”. Agent, który zastąpił tę ręczną pracę, powstał w 3 godziny.

Nie jest idealny. Osoba ze wsparcia wciąż kategoryzuje ręcznie 20% zgłoszeń, tych, przy których agent ma niską pewność. „Nie jesteśmy jeszcze na etapie automatycznego naprawiania, ale to nadchodzi”.

Połącz w parę początkującego z kimś, kto żyje AI

Skille rozeszły się dzięki jednej zasadzie.

„Zasada jest taka, że pracujemy w parach. Osoba, która nie czuje się mocno w AI, dostaje buddy’ego, kogoś, kto jest w AI już daleko, i siedzą razem. Razem popychają rzeczy do przodu. Dzięki temu wiedza rozchodzi się bardzo szybko”.

Dwóch liderów inżynierii w rozmowie 1:1 przy stoliku mentoringowym na spotkaniu społeczności, jeden tłumaczy, drugi słucha.
Praca w parach w praktyce: jeden tłumaczy, drugi słucha. Stolik mentoringowy na spotkaniu społeczności ELC, nie zespół SAP.

Praca w parach pokazuje też, kto nie chce ruszyć z miejsca. O tej części napisałem w tekście o tym, jak opór wobec AI dzieli Twój zespół.

Albo zrób to z całym zespołem w jeden dzień

CIO 50-osobowego zespołu IT poprosił mnie, żebym pokazał to wszystkim w jeden dzień: pół SAP, pół infrastruktura IT i helpdesk. Ich IT nie podłączy AI do SAP i to w porządku, bo specyfikacja nie potrzebuje dostępu do SAP, a dane z Jira też nie.

Marian Kamenistak prowadzi dwudniowy warsztat z engineering leadershipu dla małej grupy managerów, prezentuje przy ekranie.
Warsztat dla małej grupy Engineering Managerów. Dzień dla zespołu SAP ma ten sam format: praca na własnym materiale.

Dzień zaczyna się od 75 minut budowania na żywo i od przypadku opisanego wyżej. Potem programiści ABAP pracują na jednym wspólnym środowisku i na kawałku starego kodu Z, a konsultanci, helpdesk i infrastruktura oceniają sześć miesięcy własnych specyfikacji z Jira i prowadzą jeden incydent od logu do propozycji poprawki. Dzień kończy się 3 uzgodnionymi metrykami: mediana czasu cyklu w fazie implementacji, udział specyfikacji z oceną 8 lub wyżej i realizacja sprintu względem planu.

Zacznij w poniedziałek, nie dotykając SAP

Nic z tego nie wymaga AI podłączonego do Twojego systemu SAP. Wymaga Twoich danych z Jira.

Najpierw zmierz medianę

Wybierz w Jira dwa statusy, między którymi zaczynają się i kończą prace programistyczne, i trzymaj się ich. Weź ostatnie 6 miesięcy i zapisz medianę czasu między nimi.

To jest ten czas cyklu w fazie implementacji z początku tego tekstu. Bez liczby „przed” liczba „po” jest tylko deklaracją. Jeśli chcesz, żeby na Twoje dane o dowożeniu spojrzała druga para oczu, od tego jest audyt produktywności zespołu.

Oceń 20 starych specyfikacji

Przepuść powyższe kryteria przez 20 specyfikacji z zeszłego kwartału. Policz, ile dochodzi do 8. Ten udział to Twoja linia startu i nie przeraź się: zespół z tego tekstu startował ze średniej 3,3.

Zamknij bramkę

Od następnego sprintu specyfikacja poniżej 8 wraca do autora z listą brakujących punktów.

Jedno środowisko dla każdego programisty ABAP

To samo IDE, te same skille, jedna instrukcja instalacji i buddy dla każdego, kto dopiero zaczyna z AI.

Które z Twoich ostatnich 20 specyfikacji przeszłyby 8 na 10? Jeśli chcesz to sprawdzić z własnym zespołem w jeden dzień, od tego jest warsztat AI dla zespołów SAP.

[Czas pisania: 5 h]

Najczęstsze pytania

Czym jest spec-driven development?

+

Spec-driven development oznacza, że specyfikację piszesz, zanim powstanie jakikolwiek kod pisany z AI, więc to ona staje się źródłem prawdy i dla ludzi, i dla AI. W zespole SAP specyfikacja dostaje dodatkowo ocenę: 10-punktowa lista kryteriów sprawdza cel biznesowy, obiekty SAP, których dotyczy zmiana, testowalne kryteria akceptacji, dane testowe, uprawnienia, zależności i zakres. Specyfikacja poniżej 8 na 10 wraca do autora i nie trafia do realizacji.

Jak przekonać zespół SAP ABAP do pracy z AI?

+

Zacznij przed kodem. Zmierz w Jira medianę czasu cyklu w fazie implementacji, oceń specyfikacje z ostatnich 6 miesięcy według 10-punktowej listy kryteriów i zablokuj każdą poniżej 8 na 10. Potem daj każdemu programiście ABAP to samo środowisko: jedno IDE, te same skille i jedną instrukcję instalacji. Każdej osobie, która dopiero zaczyna z AI, przydziel buddy'ego, który używa AI codziennie. W 18-osobowym zespole SAP mediana czasu cyklu w fazie implementacji spadła z 19 dni do około 5,5 w pięć tygodni.

Jak poprawić jakość specyfikacji przed pisaniem kodu z AI?

+

Najpierw spisz kryteria, potem pozwól skillowi AI ocenić według nich każdą specyfikację. Działająca lista kryteriów dla SAP ma 8 pozycji wartych 10 punktów: cel biznesowy, obiekty SAP, których dotyczy zmiana, takie jak tabele, moduły funkcyjne, BAdI i interfejsy, zachowanie obecne i docelowe, testowalne kryteria akceptacji, dane testowe i przypadki brzegowe, uprawnienia i dane osobowe, zależności, takie jak zadania wsadowe i transporty, oraz to, co jest poza zakresem. Wszystko poniżej 8 wraca z listą brakujących elementów.

Co powinien zawierać warsztat AI dla zespołu SAP?

+

Pracę na własnym materiale zespołu, a nie ogólne ćwiczenia z promptowania. Jednodniowy format, który działa: 75 minut budowania na żywo i studium przypadku dla wszystkich, potem dwie ścieżki. Programiści ABAP dostają jedno wspólne środowisko i modernizują prawdziwy kawałek starego kodu Z i piszą do niego testy ABAP Unit. Konsultanci, helpdesk i infrastruktura pracują na 6-miesięcznym eksporcie z Jira: oceny specyfikacji, ocena sprintu, poranny brief sprintu i analiza incydentów, a na koniec 3 uzgodnione metryki.

Nowe artykuły prosto na Twoją skrzynkę.