Jednym z czynników korupcji architektury jest kompromis wobec kosztów programowania
Categories:
Cechy skorumpowanej architektury to: wiele specjalnych obsług, obsług zgodności, silne sprzężenie, trudności z odwróceniem sytuacji. Architektury powoli ulegają korupcji. Skorumpowana architektura utrudnia tworzenie nowych funkcji, naprawę błędów, wszystko jest ze sobą powiązane, co utrudnia również testowanie i QA. Widziałem kiedyś post entuzjasty programowania z innej branży, który mówił, by ograniczyć zachowanie abstrakcji modelu podczas pisania kodu, aby kod był łatwiejszy do zrozumienia. Kod, który łatwiej zrozumieć dla człowieka, również łatwiej zrozumie LLM, co pozwala na szybkie tworzenie i zmniejszenie liczby błędów. Myślę, że programiści z innej branży mają prawdopodobnie mniejsze projekty i przyzwyczajeni są do logicznego przepływu typu liniowego; jeśli istnieje oczekiwanie na zwiększenie skali, sposób myślenia nie może ograniczać się do linii produkcyjnej, lecz należy przyjąć mentalność robotnika budowlanego. Planując 30-piętrowy budynek, trzeba wylać 10-metrowe fundamenty; planując doprowadzenie wody i prądu, trzeba zarezerwować szyby wodne i elektryczne. To jest projektowanie o jasno określonym celu; istnieje też projektowanie o niejasnym celu, na przykład w pewnym miejscu w domu w przyszłości ma stać urządzenie elektryczne, ale nie wiadomo jakie — wystarczy zostawić gniazdko. Inżynieria oprogramowania ma już zasady SOLID do prowadzenia projektowania. Często z zewnątrz wydaje się, że stosowanie zasad SOLID do realizacji tej samej funkcji wymaga przejścia przez więcej plików i napisania więcej kodu; z krótkoterminowego punktu widzenia projekt i brak projektu są prawie nieodróżnialne dla szefa / testera / użytkownika, a korzyści z projektowania ujawniają się dopiero długofalowo. Dobra architektura ułatwia dodawanie funkcji, zmianę funkcji, naprawę błędów i rzadziej wprowadza problemy. Myślenie wymagane do projektowania często przewyższa bezpośrednie tworzenie funkcji; projektowanie wymaga rozważenia ziarnistości — obklejenie całego domu panelami gniazdek jak kafelkami to inny absurdalny sposób. Kiedyś podczas tworzenia brałem pod uwagę cykl programowania i robiłem kompromisy: gdy brakowało czasu, w ogóle nie projektowałem, dodawałem kilka funkcji i koniec, a o przyszłości mówiłem: zobaczymy później. Teraz dzięki AI możemy zmniejszyć ziarnistość projektowania, a generowany kod będzie trudniejszy do zrozumienia dla człowieka, ale inżynieria będzie łatwiejsza w utrzymaniu. Po zwiększeniu abstrakcji gorsze modele rzeczywiście mogą sobie nie poradzić — najlepiej używać obecnie najlepszego modelu. Jeśli tylko piszesz skrypty, różnice w możliwościach między modelami mogą nie być zbyt widoczne. Czy AI obniżył próg wejścia dla programistów? Mam co do tego wątpliwości, w końcu ścieżka nauki nowych programistów drastycznie różni się od przeszłości, więc dyskusja o wysokości progu może być bezcelowa, bo nie wiemy, dokąd ten próg został przeniesiony.
