Jestem w zespole ze starszym programistą, który pracuje w firmie przez długi czas (może 15 lat) i pracuje wyłącznie nad architekturą backendu naszego 25-letniego produktu. Niedawno w ramach modernizacji nasz zespół otrzymał zadanie zaktualizowania produktu, aby aplikacje internetowe mogły komunikować się z produktem za pomocą JSON. Aby rozwiązać ten problem, ten programista napisał niestandardową warstwę tłumaczenia, która przekształciła wiadomości od klientów internetowych za pośrednictwem protokołu HTTP (JSON) na wiadomości, które produkt może wypowiadać, i odwrotnie.
Na początku ta warstwa była dość prosta - po prostu tłumaczył komunikaty między klientami sieciowymi a produktem. Jednak z biegiem czasu ta warstwa stawała się coraz bardziej złożona; ta warstwa może teraz przekształcać wiadomości, przeprowadzać sprawdzanie poprawności wiadomości, wykonywać zapytania do bazy danych, wysyłać żądania sieciowe do systemów innych firm, pętlę danych, wykonywać złożone warunki i nie tylko. Rozrosło się do tego stopnia, że myślę, że słuszne jest nazywanie go pełnoprawnym językiem programowania.
Jesteśmy punktem, w którym cała nowa logika biznesowa jest zapisana w tej warstwie tłumaczenia . Uważam, że jest to zły pomysł ™ z kilku powodów:
- Jest bardzo mało dokumentacji na temat pisania kodu w tej warstwie tłumaczenia
- W wyniku # 1, każdy dołączający do zespołu ma teraz bardzo stromą krzywą uczenia się.
- Opracowanie nowej logiki biznesowej prawie zawsze wymaga pomocy ze strony tego programisty.
- W rzeczywistości każdy sprint, który mu dajemy „wsparcie API” zadania na naszej tablicy scrum, które są poświęcone pomaganiu innym członkom zespołu w rozwiązywaniu problemów podczas tworzenia w warstwie tłumaczeniowej.
- Doświadczenie programistyczne jest słabe, ponieważ wszystkie nasze narzędzia programistyczne muszą być napisane przez tego programistę
Być może najbardziej irytujące jest to, że mamy również serwer Node przed tą warstwą tłumaczenia. Jednak pisanie logiki biznesowej w tej warstwie jest odradzane przez tego programistę (i naszego architekta, który jest trochę oderwany od naszego zespołu) przede wszystkim ze względu na spójność - nie podoba mu się pomysł posiadania logiki biznesowej w dwóch miejscach.
Jak mogę przekonać tego programistę (i resztę mojego zespołu, którzy są dość bierni w tego typu sprawach), że to zły pomysł? Jak mam walczyć z nieuniknionym argumentem, że pisanie logiki biznesowej w Node byłoby niezgodne z wzorcami, które już ustaliliśmy?
A może jestem arogancki, zakładając, że podejście tego programisty jest źle? Ma za sobą więcej lat doświadczenia w programowaniu i dużo wiedzy instytucjonalnej.
Niektóre informacje: mam około 5 lat doświadczenia, z czego 2 pracowałem firma. Jeśli mam wybór, skłaniam się bardziej w kierunku rozwoju front-end. Wspomniana powyżej warstwa tłumaczeniowa była rozwijana przez około 2 lata, ale nie została jeszcze wdrożona do produkcji. Zobacz komentarze, aby uzyskać dodatkowe szczegóły techniczne dotyczące tej warstwy tłumaczenia.