Momencik, trwa przetwarzanie danych   loading-animation

#87661

przez (PW) ·
| Do ulubionych
Jestem programistą i poza pracą na etacie bardzo często wyszukuję jakieś zlecenia, aby sobie dorobić. Trochę się tego nazbierało, więc postanowiłem opisać wam te najciekawsze.

Firma magazynowa, która niedawno kupiła drugi magazyn ma problem. Ich program nie ma żadnych funkcji sieciowych, więc w pierwszym magazynie nie wiedzieliby co jest w drugim i na odwrót. Szef firmy, zamiast kupować nowy program, postanowił zlecić napisanie programu w 100% pod ich wymagania. I tutaj pojawiam się ja. Spędziłem dwa dni na rozmowie z kierownikiem o tym co ta aplikacja ma robić. Oto założenia jakie sobie spisałem:

Program powinien obsługiwać dwa magazyny z możliwością dodania kolejnych. Do każdego magazynu miały być przypisane miejsca magazynowe. Program powinien umożliwiać dodawanie, edytowanie i usuwanie miejsc magazynowych. Każde takie miejsce powinno być opisane rozmiarem (szerokość, wysokość, głębokość) oraz maksymalną wagą jakie może przyjąć. Poza tym jako, ze program miał mieć mapę miejsc magazynowych to każde miało też mieć swoje położenie. Mapa miała być edytowalna na wypadek zmiany ustawienia regałów w magazynie. Do tego program miał mieć możliwość wprowadzenia listy nowych towarów i miał je automatycznie rozkładać po magazynie tak aby towary z jednej dostawy były ułożone stosunkowo blisko siebie. Aby to działało każdy towar musiał być opisany podobnie jak miejsce magazynowe. Do tego dochodziły informacje dodatkowe jak opis, cena, itp. Dostawy również miały być opisywane przez takie informacje jak opis, pochodzenie, itp. Poza tym program miał mieć możliwość wypluwania wybranych danych do excela, tak aby można było robić różne zestawienia. Do tego system kodów kreskowych, aby móc szybko wyszukiwać dane towary w systemie bez potrzeby ręcznego wpisywania identyfikatora.

Po szybkiej estymacji poinformowałem kierownika, że sama praca nad programem zajmie mi od 45 do 50 dni, natomiast konfiguracja środowiska w obu magazynach jakiś tydzień (nie mieli żadnego serwera, poprzedni system stał na zwykłym komputerze). Za wszystko zażyczyłem sobie 8500 zł* (zawsze podaje minimalnie zawyżoną cenę jakby klient chciał się targować, poniżej 8000 zł bym nie zszedł). Reakcja kierownika?

- No ciebie chyba pop***liło! OSIEM TYSIĘCY, Marian słyszałeś gościa? Facet ja ci za to zapłacę maksymalnie 300 złotych i ani grosza więcej.

Nie zostało mi nic innego jak odrzucić tą jakże intratną propozycję. Oczywiście kierownik próbował oklepanych już tekstów: wpiszesz sobie w CV, doświadczenie jest ważniejsze niż pieniądze. Takie kity to można juniorom bez doświadczenia wciskać. Szkoda tylko dwóch dni na zbieraninie założeń. Musze podpytać radcę prawnego, czy mogę napisać jakąś umowę wstępną, w której byłby podpunkt mówiący o zapłacie za czas zbierania wymagań gdy nie zostanie podpisana główna umowa.

Dalej mała sieć pizzerii. Jej kierownik prosi o napisanie aplikacji która zbierze zamówienia z Pyszne.pl, Glovo i UberEats w jednym miejscu i na podstawie adresu dostawy wybierze jedną z trzech pizzerii do jakich zamówienie ma trafić. Poza tym obsługa takich rzeczy jak przyjęcie zamówienia, ustalenie czasu dostawy, itp. Wszystkie posiadają własne API (interfejs, który z poziomu kodu pozwoliłby mi na łatwe przetwarzanie zamówień), jednak Pyszne.pl nie udostępnia go byle komu, w tym mi. Musiałem sobie poradzić inaczej. Napisałem skrypt, który porusza się po stronie pyszne.pl pobiera wymagane dane i wykonuje odpowiednie akcje.

Aplikacja oddana, kasa na koncie. Czyli można zapomnieć o temacie, ale gdyby tak było to nie powstałaby ta historia. Jakiś miesiąc po zakończeniu prac dzwoni kierownik bo program nie działa. Zamiast przypisywać zamówienia do różnych pizzerii wrzuca wszystkie na jedną. Przyczyna okazała się bardzo łatwa do znalezienia, ktoś grzebał w kodzie i zrobił błąd w jednym warunku. Po chwili kierownik przyznał się, że chciał odciążyć jedną z pizzerii i przerzucać zamówienia z pewnego dużego osiedla do lokalu X zamiast Y. Zmiany dokonał jego siostrzeniec, który jest w technikum informatycznym. Usterkę naprawiłem, spisałem raport z naprawy, którą kierownik podpisał i poprosiłem o zapłatę (w umowie mam punkt mówiący, że za darmo naprawiam tylko błędy aplikacji wynikające z nieedytowanego kodu, resztę napraw wyceniam na podstawie roboczogodzin).

No i zaczęło się... On nic nie będzie płacił, jestem partaczem, sprzedałem mu niedziałające g**no, itp. Ostatecznie nie zapłacił a ja poszedłem do sądu. Pieniądze za naprawę odzyskałem z nawiązką.

Fryzjer. Pani chcę ładną, statyczną stronę wizytówkę. Na pierwszej rozmowie ustalamy jak ma wyglądać. Informuję również panią, że każda zmiana mocno odbiegająca od pierwotnego opisu będzie płatna Zwykle nie robię problemów gdy ktoś zmienia położenie jakiegoś panelu itp., ale trafiają się asy, które po zobaczeniu projektu graficznego zmieniają dosłownie wszystko. I tak było tym razem, pani nie podobało się kompletnie nic. Powiadomiłem więc o naliczeniu dodatkowej opłaty za zmianę całego projektu i zacząłem spisywać jej wizję. Drugi projekt wymagał kilku zmian, które wyceniłem na około 50 zł i w końcu udało się. W tym miejscu poinformowałem panią fryzjerkę o tym, że na etapie kodowania strony każda zmiana względem projektu będzie dodatkowo płatna. Jak możecie się domyślić w trakcie pisania strony projekt został zmieniony... 8 razy. No i gdy przyszło do płacenia zaczął się płacz, bo kazało się, że początkowe 350 zł urosło prawie trzykrotnie. Na początku nie chciała zapłacić, ale wystarczyło postraszyć trochę sądem i pieniądze się znalazły. Ale to jeszcze nie koniec bo pani była bardzo zdziwiona, że aby strona była widoczna w internecie musi jeszcze wykupić serwer i domenę (jakieś pozycjonowanie w wynikach googla też by się przydało). Oczywiście informowałem o tym na samym początku.

Dalej firma human resources. Mają swój program w którym zapisują CV, ale trochę im nie pasuje, że muszą robić to ręcznie. Zamarzył im się OCR (optical character recognition - program służący do rozpoznawania znaków w plikach graficznych), który zaczyta dane ze zeskanowanego dokumentu i "wklei" w odpowiednich polach programu. Sam OCR to nie problem, jest masa bibliotek, które pozwalają konwertować obrazek do postaci tekstu. Problemem jest nauczenie programu jak rozpoznawać co jest czym. Komputer jest głupi, zaczyta frazę Jan Kowalski, ale nie wie, że Jan to imię i ma trafić w programie do pola imię. Trzeba go tego nauczyć. Na początku chciałem wykorzystać sztuczną inteligencję, ale nie mam w tej dziedzinie dużego doświadczenia (a szkoda), więc zdecydowałem się na bazę wiedzy i porównywanie wzorców. Działa to tak, że program porównuje zaczytaną frazę z bazą wiedzy i szuka słów kluczowych. Im większa baza wiedzy tym większa trafność. Do budowy bazy dostałem ponad 100 tyś. różnych CV. Na początku było słabo, ale po 10 tyś. CV program miał około 98% skuteczności. Poza tym baza jest budowana na bieżąco podczas używania programu. Opisuje to wam abyście pojęli skalę projektu, który był największym jaki do tej pory udało mi się dorwać. Pracowałem nad nim coś koło 5 miesięcy.

Jakoś dwa tygodnie przed końcem projektu dzwoni do mnie pani z firmy HR. Byłem w tym momencie na etapie ostatnich testów i pisania dokumentacji. Okazało się, że na samym finiszu ktoś wpadł na genialny pomysł aby sprawdzić umowę kupna programu, którego używają i okazało się, że nie mają prawa sami modyfikować kodu programu, więc bardzo dziękują mi za współpracę. Zapytałem się więc kiedy mam przyjechać się rozliczyć i zdać kod, który udało mi się napisać. Pani bardzo się zdziwiła bo to chyba oczywiste, że skoro nie użyją tego programu to nic mi nie zapłacą. Nie ze mną takie numery. Kazałem pani spojrzeć na podpisaną przez nich umowę i sprawdzić punkt, który dokładnie opisuje kwestię rozliczenia w przypadku zerwania umowy (punkt w umowie jest zgodny z bodajże 644 artykułem kodeksu cywilnego, mogłoby go tam nie być, ale po pewnej przygodzie z pewnym panem z firmy ubezpieczeniowej, który twierdził, że artykuł 644 nie istnieje wolałem go jednak dopisać). Pani obiecała, że sprawdzi umowę, porozmawia z dyrektorek i odezwie się jutro. Jak można się domyślić pani się nie odezwała. Więc odezwałem się ja telefonicznie, listownie i ostatecznie złożyłem pozew. Wtedy nagle firma się obudziła i próbowali mnie ubłagać bym wycofał pozew a oni mi zapłacą 50%. Haha takiego, projekt był w 99% skończony a ja mam dostać ledwie połowę kasy. Sprawę wygrałem, dostałem 100% wynagrodzenia. Poza tym firma w trakcie procesu zrzekła się praw do programu (zasługa mojego prawnika). Gotowy OCR postanowiłem obudować pozostałymi funkcjami potrzebnymi w aplikacji dla firmy HR i sprzedać. Niedługo kończę pracę i mam już kupca. Konkurencyjną firmę HR z tego samego miasta.

Ps. Z tego co udało mi się dowiedzieć w umowie kupna ich programu był też punkt, który mówił, że dostęp do kodu mają tylko osoby upoważnione. Jak można się domyślić ja nie byłem taką osobą :) Nie wiem czy zostały wyciągnięte jakieś konsekwencję czy sprawa została zamieciona pod dywan.

Jako freelancer robię już dobre 10 lat. Moja umowa rozrosła się w tym czasie z dwóch stron A4 do prawie pięciu. Poza tym wszystko co ustalam z klientem następnie spisuję i daję do podpisu. Nawet gdy klient prosi o przeniesienie jakiegoś elementu o 2 mm w lewo i nie pobieram za to żadnej opłaty. Ludzie są nadzwyczaj kreatywni gdy przychodzi do płacenia. Zarzucą ci kłamstwo, zmieszają z błotem, utną kontakt. Przez te 10 lat 5 razy byłem w sądzie i zawsze wygrywałem, nawet z dużymi firmami. Chociaż wiem, że umowa, którą mam jeszcze będzie ewoluować. Ludzie nigdy nie przestaną mnie zaskakiwać. Na przykładzie firmy magazynowej, jeszcze nie miałem sytuacji, ze ktoś po tak długim zbieraniu wymagań ostatecznie nie podpisał umowy. I na to muszę się zabezpieczyć aby odzyskać pieniądze za stracony czas.

*Cena może wydawać się duża, ale gdy biorę zlecenie to praktycznie pracuję na dwa etaty plus muszę zapłacić podatki. A 8500 zł brutto za około 50 dni pracy to dość niska stawka dla programisty. Istnieją tańsze programy specjalistyczne mieszczące się w okolicach 300-400 zł, ale albo nie mają opcji na rozbudowę/zmianę (np. poprzedni program w firmie magazynowej), albo każda pierdoła jaka ma się zmienić w programie jest zlecana do jego twórcy a ten kasuje za to niezłą sumkę. Sprzedaż aplikacji a kodu aplikacji to dwa różne światy.

Skomentuj (47) Pobierz ten tekst w formie obrazka
Ocena: 176 (188)

Komentarze

Momencik, trwa ładowanie komentarzy   ładowanie…