Ja mam coraz bardziej wrażenie, że sprawdzają się te same dobre praktyki, co przy zwykłym kodowaniu. Całe to nudne SOLID, YAGNI, DRY, TDD(!) i co chyba najważniejsze clean code sprawdzają się jeszcze bardziej niż przy zwykłym białko aj.
Podstawa to dobra dokumentacja wymagań (niespodzianka). Zapisuję w projekcie, w plikach .md cel biznesowy, road mapę, decision log. Czyli oprócz tego, co zwykle dostrawaliśmy od biznesu, potrzeba jeszcze mieć "na papierze" wszystkie zmiany, doprecyzowania, decyzje, opisaną architekturę. Do tego zamordystyczny podział na pojedyncze odpowiedzialności, pilnowanie, żeby pojedynczy plik nie miał więcej niż te 200-300 linii kodu, hermetyzacja.
Do tego, od czasu do czasu lub na koniec zadania warto tę dokumentację odświeżyć, uzupełnić, wywalić do innych plików wartości historyczne.
Wybitnie dobrze sprawdza mi się ~ TDD, czyli najpierw prompt o stworzenie testów, później prompt o stworzenie kodu do nich. Pokrycie testami też warto utrzymywać na bardzo wysokim poziomie, zarówno samego kodu, jak i pokrycie wymagań biznesowych.
Przed zapuszczeniem kodowania, zawsze trzeba zrobić sprawdzenie dokumentacji, zapytać o skutki uboczne, czy implementaion plan pokrywa to co chcemy osiągnąć, czy nie ma żadnych otwartych pytań.
Warto też popracować nad swoim agentem i dać mu dobre narzędzia. To, że Opus poradzi sobie z przemieleniem projektu i sprawdzeniem zależności, nie oznacza, że chcę za to płacić, więc wszelkie narzędzia zwracające strukturę kodu potrafią oszczędzić masę kasy. Jeżeli LLM zamiast przetrzepać cały plik z kodem, może uruchomić narzędzie do zrobienia outline tego kodu, to wyciągnie sobie do analizy jedynie fragment z interesującą go funkcją, a nie zużywa tokeny na przewalanie całości. Hint: https://tree-sitter.github.io/tree-sitter/
To co mi się kompletnie nie sprawdza, to wychwytywanie pojedynczych błędów i ganianie się z AI
Ogólnie, to pracując z jakimś projektem, warto zapytać swojego agenta, jakich narzędzi potrzebuje, żeby zużywać mniej tokenów, kazać mu je zainstalować i skonfigurować.
Kosztowo - dostęþne są albo złożone, wolne, ale "mądre" modele, albo takie tanie, szybkie, ale głupie. Kluczem jest wybranie właściwego, co konkretnego zadania. Czasami pomaga też naprowadzenie takiego modelu na sensowną ścieżkę "rozumowania". Jest dziwaczny błąd z którym nie może sobie poradzić - kazać mu przygotować listę hipotez, następnie zwalidować je, na końcu zrobić implementation plan i implementację.
Dodatkowo, już gdzies pisałem, u mnie sprawdza się połączenie lokalnego LLM z dużym modelem. Należy to uzupełnić tworząc SKILL'e, czyli dla powtarzalnych zadań niech sobie zrobi notatki. Jak zapuścić kompilator, jak zrobić deploy. Oszczędza sporo czasu i tokenów.