Niedawno rozpocząłem projekt, który nie wydawał się zbyt trudny do wykonania, koncepcja była dość prostą aplikacją, która musiała od czasu do czasu akceptować dane wejściowe (może 10 razy dziennie) i próbować wykonywać na nich pewne operacje i zbierać wszystkie wyniki na końcu. Ta aplikacja uzyskałaby wówczas front-portal internetowy, z którego klienci mogliby korzystać, aby zobaczyć wyniki, nie do końca rakietowe.
W tym celu początkowo korzystałem mądrze z wbudowanych bibliotek współbieżności Pythona ( ThreadPoolExecutor
) i korzystałem z łatwej w obsłudze biblioteki dla interfejsu (wybrałem Flask, ponieważ jest łatwy dla początkujących oraz stosunkowo łatwy w utrzymaniu i testowaniu).
Gdy byliśmy w połowie projektu, szef rządu stwierdził, że zamiast wątków musieliśmy korzystać z możliwości kolejki wiadomości innych firm i wdrożyć równoważenie obciążenia, co ostatecznie się skończyło, że w końcu zaczęliśmy współpracować z Celery, Redis, RabbitMQ, Nginx, uWSGI oraz szereg innych dużych usług stron trzecich, z którymi nikt nie miał prawdziwego doświadczenia.
Ostatecznie doprowadziło to do powstania spaghetti kodu, nie dających się przetestować zadań (ze względu na złożoność bibliotek stron trzecich, łatanie kodu nawet nie działało) i wielu kłopotów, ponieważ nikt nawet nie wiedział, jaka jest wartość dodana tych usług .
Zanim powiesz „Tak, powinieneś korzystać z tych usług”, pamiętaj, że nikt nie wie, jak z nich korzystać, a nawet nie wie, co robią, oprócz wprowadzenia zaraźliwego kodu dotyczącego warunków rasowych.
Co mam z tym zrobić? W tym momencie powrót do tego, co mieliśmy, byłby po prostu zbyt kosztowny, a premier jest całkowicie uzależniony od korzystania z tych usług, nawet jeśli produkt końcowy jest obecnie gorszy niż na początku. Czy dyskusja z nim jest w ogóle przydatna? Czy proszę o więcej czasu? Lub trudna odpowiedź: czy jestem po prostu zbyt głupia dla mojej pracy?