Razvoj novega CMS-a. Moje izkušnje z Roo Code, Gemini in Cursor
Za začetek bom govoril o ChatGPT-ju. Ko sem začel pisati ta prispevek, sem mu dal delovni naslov: „Kako dobri so AI za razvoj programske opreme“.
Pričakoval sem, da bo postavil vprašanja o tem, o čem želim pisati, vendar je namesto tega ustvaril esej s 500 besedami s popolnoma izmišleno vsebino. Predstavil je moje domnevne misli o treh orodjih AI, ki naj bi jih preizkusil: Roo, Gemini in Cursor. Vendar pa ustvarjene informacije niso bile v skladu z mojimi resničnimi izkušnjami.
Tako je ChatGPT opredelil vsako orodje:
Ker imam obsežne izkušnje s pisanjem CMS sistemov, sem se odločil uporabiti AI za razvoj novega CMS-a, ki temelji na letih dela — od preprostih strani do poslovnih rešitev.
Začnimo z RooCode. Zelo mi je bilo všeč orodje in sem preživel približno pet ur, da sem zgradil kodo bazo v čistem JavaScriptu, kar bi mi sicer vzelo teden dni. Imel sem demo različico CMS-a, ki je lahko upodabljala več maketnih strani. Vendar pa je nadgradnja spodletela, ko sem zahteval, da pretvori kodo bazo v TypeScript. Če bi začel neposredno v TypeScriptu, verjetno ne bi bilo težav.
Nato sem prešel na Gemini, ki je uspel migrirati projekt v TypeScript in po petih do šestih urah je večina kode delovala. Kljub temu pa je padel v cikle nalog — verjetno zaradi tehničnih izzivov.
V tem času sem si vzel odmor in opravil raziskavo. Naletel sem na video o Cursor. Že sem slišal dobre stvari od drugih razvijalcev in želel sem ga preizkusiti.
Ko sem se vrnil k Gemini, sem ga prosil, naj napiše specifikacijo projekta, ki bi jo lahko dal drugemu AI-ju. To specifikacijo sem dal Cursorju in zgradil novo različico CMS-a.
V tistem trenutku sem zgradil isto kodo z različnimi orodji AI. Toplo jih priporočam — bili so izjemno učinkoviti. Agenti so lahko urejali datoteke, jih premikali in na splošno izvajali večino potrebnih sprememb. Po mojem mnenju zagotavljajo približno desetkratno povečanje produktivnosti. In dosledno delo z enim orodjem pomaga pri natančnem oblikovanju želenih sprememb.
Ker sem preživel največ časa s Cursorjem, so bile tudi nadležne stvari: ko sem zahteval, naj ustvari podatkovno bazo za shranjevanje nekaterih podatkov, je primarni ključ nastavil kot VARCHAR(36) namesto UNSIGNED BIGINT. Zanimivo je, da je, ko sem vprašal za najboljši način shranjevanja primarnega ključa, želel preiti na BINARY in napisal dve funkciji za pretvorbo želenega GUID v numerično vrednost. Cursor ima datoteko .cursorrc, kjer lahko določite pravila, ki jih mora upoštevati pri ustvarjanju rešitev; na koncu sem jo našel, potem ko so se iste napake ponavljale.
Ko sem zahteval dokumentacijo projekta, je napisal veliko, vendar je bilo veliko stvari narobe — omenjal je imenike, ki niso obstajali.
Naše digitalno obdobje se spreminja — čas je, da skočite na vlak. Pred enim letom bi ta orodja opisal kot pijane študente. Zdaj so to mlajši razvijalci, ki jih je treba nadzorovati — in postajali bodo le boljši.