Praca w IT

Kiedy programista spotyka się z biznesem

klawiatura

Kiedy słyszę hasło logika biznesowa, to mną wstrząsa. Nadużywając tego słowa sprawiamy, że w zasadzie cała aplikacja jest logiką biznesową, co utrudnia rozmowy z biznesem, którego nie interesują szczegóły, tylko dopasowanie informacji tak, aby zysk był jak największy, a klienci nie pouciekali.


Mariusz Walczak. Tech lead w Softfin. Absolwent Warszawskiej Wyższej Szkoły Informatycznej. Pasjonat inżynierii oprogramowania, swoje aplikacje tworzy w PHP i językach opartych na ES6/7. Prywatnie miłośnik futrzanych czworonogów, oraz winiarstwa i nalewkarstwa.


Zacznijmy od zdefiniowania czym jest logika biznesowa, procedura biznesowa, oraz encja biznesowa i informacja biznesowa. Procedura biznesowa, to nic innego jak zespół czynności jakie muszą być wykonane, aby zarobić. Czyli w skrócie, definicja ta jest niezależna od tego czy to zrobimy ręcznie, czy automatycznie. Informacja biznesowa to szczegółowa zmienna używana w procedurach biznesowych. Na przykład marża, lub cena usługi. Encja biznesowa – procedura biznesowa wraz z informacjami biznesowymi. Logika biznesowa to zbiór wszystkich procedur biznesowych.

Rozmawiając z biznesem o aplikacji, skoncentrujmy się na tych procedurach, tak abyśmy wiedzieli jak ta aplikacja ma zarabiać, bo z tego będziemy rozliczani. Czasami będzie tak, że aplikacja będzie zarabiać w sposób utajniony, czyli wprowadzi procedury automatyczne, które sprawią, że dany proces będzie trwał krócej, a co za tym idzie będzie tańszy. Kiedyś tworzyłem system, dzięki któremu liczba nadgodzin w jednym dziale firmy została ograniczona prawie do zera. Dla biznesu korzyść była taka, że pracownicy nie musieli zostawać po godzinach, a firma nie musiała za to im płacić.

Nie mów o technikaliach

Nie poruszajmy podczas rozmów tematów technicznych z osobami biznesowymi, ponieważ drugiej strony to nie interesuje, czy to będzie baza danych, czy to będzie Linux, czy cokolwiek. Najważniejsze jest to, aby aplikacja była najtańsza w utrzymaniu i powstała jak najszybciej. Nic więcej. Im szybciej sprawimy, że logika biznesowa zostanie zaimplementowana, tym lepiej dla nas. Co więcej aplikacja nawet nie musi działać w pełni dobrze, jedyne co musi działać dobrze to logika biznesowa.

Dodatkowo planując aplikację dla biznesu, musimy wziąć pod uwagę, że informacje biznesowe lubią się często zmieniać. A na zmianę wpływają wszelkie ruchy, czy to marketingowe, czy w cenach usługi, czy w długości danej usługi. Dlatego wszystko to co jest informacją biznesową musi być łatwo edytowalne. Warto nawet napisać specjalny panel, aby odizolować się od rozmów na temat zmian. Gdy damy biznesowi taki panel, który będzie mógł dowolnie ustawiać, my będziemy mieli o wiele mniej zadań. Drugi argument za stworzeniem takiego panelu: bazę kodową uniezależnimy od zmian informacji biznesowych, a biznes będzie zadowolony, że może sam sobie regulować te informacje.

Nie dawaj gwarancji czasu ani liczb

Dla biznesu najważniejszy jest czas. Jeżeli powiecie, że cokolwiek będzie trwało 3 tygodnie, a skończycie w tydzień, to nikt tego nie zauważy. Gdy jednak spóźnicie się jedną godzinę, to wtedy zbiorą się nad Wami czarne chmury. Kiedyś miałem bardzo trudny projekt, który był mocno pod kreską jeśli chodzi o czas. Mówiłem, że na pewno nie zdążę w tym terminie, nie zmieniło to jednak faktu, że gdy wybiła ta godzina, w ciągu 30 minut pojawił się menedżer projektu, kierownik IT, kierownik technologii, oraz właściciel projektu i wszyscy naprzemiennie zadawali pytania „ile jeszcze?”, „dużo zostało?”.

W tym czasie 3/4 czasu zajmowało mi raportowanie statusów, a 1/4 poświęcałem na rzeczywistą pracę. Ile zostało do skończenia projektu? Około 40 h, choć warto wspomnieć, że dostałem projekt wyliczony na 120 h. Nikogo jednak nie interesowało to, w jaki sposób udało mi się nadgonić pracę do 80 godzin.

Moim zdaniem, nie warto w rozmowach z biznesem odpowiadać na pytania typu: ile będzie wyświetleń, lub o ile dane rozwiązanie zwiększy ruch na stronie. Unikajmy odpowiedzi statystycznych, które przekładają się bezpośrednio na logikę biznesową. Uwierz, że jeżeli podasz jakąkolwiek tego typu daną, biznes ustawi ją jako cel minimum — jeśli go nie uzyskacie, będziecie obwiniani za to. Nieistotny będzie słaby marketing, czy to, że copywriterzy piszą słabe artykuły. Biznes weźmie Wasze słowa jako cel i koniec. Dlatego daję gwarancję tylko na tematy techniczne, które mówią o zaoszczędzeniu czasu, lub podaję suche dane, o ile to przyspieszy jakiś proces. Tylko w takich pojęciach biznesowych się wypowiadam, bo wiem, z doświadczenia, że tak będzie.

Pokazuj proces

Zawsze staram się rozrysowywać procesy biznesowe, co jest bardzo pomocne. Pamiętam do dziś dzień, jak miałem napisać aplikację analizującą odwrócony lejek sprzedażowy. Dopiero po wszystkim zapytałem kolegów czym jest ten odwrócony lejek sprzedażowy, a tak siedziałem jak na tureckim kazaniu.

Dlatego teraz zawsze proszę o rysunek, na którym jest lejek, podający dane do czegoś. Te dane mają tam przechodzić, przez algorytm A itd. Wtedy okazuje się, że niezależnie co znaczy odwrócony lejek sprzedażowy, ja mam wszystko czarno na białym, co ma robić. Nie muszę rozumieć tego pojęcia, co więcej, mam też bardzo czytelne zadanie do wykonania, które jest zrozumiałe dla wszystkich, a wszelkie niedopowiedzenia, lub źle zrozumienie z mojej strony, będzie winą osoby zlecającej, a nie mojej. Biorąc takie zadanie też jestem spokojniejszy.

Przepis na sukces

Przy zadaniach od biznesu, bardzo rzadko dostajemy gotowy algorytm, jest on zazwyczaj jakoś dziwnie opisany. Dlatego swego czasu zacząłem stosować technikę „przepisu na sukces”. Polega ona na tym, że piszemy coś na wzór przepisu kulinarnego

Tytuł : Bardzo ważna procedura biznesowa
Informacje biznesowe:

$wyróżnieniaPremium=koszt za dzień * ilość dni

$wyróżnieniaKolor=koszt za dzień * ilość dni

Przebieg procedury:

1. Klient się loguje

2. Klient przechodzi do panelu dodawania ogłoszenia

3. Klient dodaje ogłoszenie

4. Proponujemy klientowi wyróżnienia ogłoszenia

  • klient kupuje wyróżnienie na pierwszej stronie za cenę $wyróżnieniaPremium
  • klient kupuje podkreślenie na różowy kolor za cenę $wyróżnienieKolor
  • klient nic nie kupuje – wtedy przekazujemy jego ogłoszenie do BOK-u, aby go przekonali do zakupu pakietu.
Uwagi:

Jakieś uwagi jeżeli jest coś potrzebne

Mając takie zadanie wiem już doskonale, że do panelu administracyjnego będę potrzebował wrzucić cztery zmienne w dwóch kategoriach. Mam pewność jak działa algorytm i nie muszę się zastanawiać nad sensem tego zadania, bo jest ono czytelne. Co więcej możemy to zadanie zamienić na testy akceptacyjne. Wiem też, że biznes zapomniał powiedzieć, że klient może chcieć zarządzać czasem kupowanego pakietu wyróżniającego, więc zawczasu mogę dodać taką opcję. To niewielki koszt pracy, a jak się okaże, że biznes o tym zapomniał to ja już to będę miał gotowe do wdrożenia.

Mając takie zadanie zarówno biznes jak i my wiemy co jest do zrobienia. Dzięki temu unikniemy kilku najważniejszych pułapek jakie na nas czekają. Podsumowując, przy pracy z biznesem jest ważne kilka prostych zasad:

1. Nie obiecujmy, że nasze rozwiązanie przyniesie jakikolwiek zysk, to nie nasza praca.

2. Przy podawaniu terminu podawajmy takie daty, jakie są na pewno realne, bo nikt nas nie pochwali za to, że skończymy wcześniej, tylko stwierdzi, że zadanie zostało przeszacowane. Z drugiej strony, jak nie wyrobimy się w terminie — spadną na nas gromy.

3. Aplikacja dla biznesu musi mieć perfekcyjnie działającą logikę biznesową, cała reszta to tylko dodatek. Na przykładzie mojego zadania, jeżeli okaże się, że tagi ogłoszeniach nie działają, lub coś się źle wyświetla w ogłoszeniach, to sprawa drugorzędna. Najważniejsze, aby ta procedura biznesowa działała bez szwanku.

4. Unikajmy wchodzenia w techniczne szczegóły, biznesu to nie interesuje, nie ma znaczenia, starajmy się zrozumieć całą logikę biznesową i zaimplementujmy ją perfekcyjne.

5. Twórzmy „przepisy na sukces”, a do nich testy akceptacyjne, bo jak przyjdzie do nas biznes ze skargą, że nasze rozwiązanie nie zarabia tyle, ile powinno, to pokażemy im, że sami tego chcieli, a testy akceptacyjne błyskawicznie pokażą im, że wszystko działa jak chcieli.

6. Wrzucajmy wszystkie informacje biznesowe, czyli zmienne sterujące zarobkiem firmy do panelu administracyjnego, bo biznes lubi zmiany, lub eksperymentować, a my nie lubimy 30 razy robić tego samego zadania.

7. Podczas spotkania z biznesem rysujmy wszystkie przypadki, język biznesowy ma swój slang i często nie do końca zrozumiemy o co chodzi. Rysunki pozwolą nam wrzucić wszystkie obce nam pojęcia do kubełka „coś tam ważnego”, a my będziemy mogli skoncentrować się na algorytmice i logice biznesowej.

Dla potwierdzenia tych słów, opowiem o jednej aplikacji. Miałem za zadanie stworzyć stronę internetową dla dużej stacji radiowej.

Zadań miliony, strona ma więcej błędów niż wszystkim mogło się wydawać. Któregoś pięknego dnia, okazało się, że padła komunikacja strumieniowa z jedną z mniej znanych podstacji tego radia. Ogólnie jak się weszło na naszą stronę i kliknęło że chce się posłuchać właśnie tej stacji, to rzucało w konsoli czerwienią i głucho. Tego samego dnia kolega się pochorował i wpadły dwa zadania od reklamodawców.

Zgadnijcie jak brzmiały słowa mojego szefa? Jeżeli nie zrobisz tych dwóch zadań, to dziś nie wychodzisz, a jak skończysz je wcześniej to napraw ten strumień, bo ludzie się wkurzają. Ja to zrozumiałem jednoznacznie: nieważne, że główny cel istnienia strony szwankuje, ważne jest to, żeby pieniądze z tych reklam znalazły się na koncie firmy.

Podsumowanie

Praca z biznesem jest wyzwaniem, ale to dzięki niej my dostajemy pensje, to ona definiuje to czy jesteśmy opłacalni dla firmy, czy nie. Dlatego musimy nauczyć się słuchać biznesu, tak aby móc go rozumieć. Dzięki temu, nasz wkład w firmę będzie opłacalny dla niej, nawet jeśli aplikacja nie do końca będzie działała jakbyśmy tego chcieli.


najwięcej ofert html

Zdjęcie główne artykułu pochodzi z picjumbo.com.

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://justjoin.it/blog/programista-spotyka-sie-biznesem" order_type="social" width="100%" count_of_comments="8" ]