ChatGPT, GitHub Copilot, Cursor, na washirika wao sasa wanaweza kutoa React component kabla hata hujamaliza kuandika prompt yako. Kuunganisha Next.js route na Supabase? Imekamilika kwa sekunde chache. Kurekebisha hiyo TypeScript utility iliyojipinda? Hapa kuna chaguzi tatu, zikiwa zimejumuisha type guards. Kwa yeyote anayefanya kazi katika mifumo ya kisasa ya wavuti (modern web stacks), uzoefifu huu unaweza kuhisiwa kama uchawi.
Ninatumia zana hizi kila siku. Stack yangu ni Next.js, TypeScript, na Supabase, na AI imekaa hapo hapo kwenye editor yangu, ikiwa tayari kuunda custom hooks, kutengeneza database queries, au kusafisha mantiki ya masharti (conditional logic) iliyochafuka. Katika mambo madogo, inafanya kazi kama mwanagenzi (junior developer) mwenye kasi sana. Inajua syntax vizuri sana. Inakumbuka maeneo ya API ambayo ningelazimika kutafuta kwenye Google. Haichoki kuandika boilerplate.
Lakini programu (software) zinaendelea kuharibika. Programu (apps) zinaonekana kuwa nzito zaidi. Dashibodi za wateja zinachelewa (lag). Matukio ya kipekee (edge cases) yanasababisha fomu kuzama (crash). Ikiwa AI imefanya uandishi wa kodi kuwa rahisi kiasi hiki, kwa nini matumizi ya programu yanahisi kuwa mabaya zaidi kuliko yalivyokuwa miaka michache iliyopita?
Jibu ni kwamba kutengeneza syntax na kujenga programu si kazi moja.
Syntax Si Usanifu (Architecture)
AI inashughulikia tokens vizuri sana. Iombe iandike useEffect hook inayofuatilia Supabase real-time channel, na utapata kitu kinachoweza kuunganishwa (compiles). Inaweza kubadilisha faili ya JavaScript isiyo na aina (untyped) kuwa TypeScript kali, au kuunda component ya fomu yenye Zod validation kabla hata hujapata kahawa yako.
Kile ambacho haiwezi kufanya ni kuelewa sura ya programu yako mahususi. Programu nzuri inahitaji usimamizi wa hali (state management) wa makusudi, ushughulikiaji makini wa mashindano ya muda (race conditions), na ramani ya wazi ya mahali data ilipo dhidi ya mahali inapoonyeshwa tu. AI inaona faili ya sasa, si mfumo mzima. Inachukulia codebase yako kama korido ya maandishi bapa badala ya muundo hai wenye kuta zinazobeba mzigo.
Ifikirie kama msanifu majengo ambaye hajawahi kuishi kwenye nyumba. Anaweza kuchora ramani nzuri za sakafu. Anajua ni madirisha mangapi chumba cha kulala kinapaswa kuwa nayo. Lakini hajui ni wapi mabomba huwa yanavuja mwezi Februari, au ni korido gani inayokuwa haifai kutumika wakati wa joto la kiangazi. Maarifa hayo ya uzoefu ndiyo yanayofanya jengo lisimame. Kadi inafanya kazi kwa njia hiyo hiyo.
Maeneo Mawili ya Msuguano
Ninapoiacha AI iandike sehemu kubwa za kodi bila mipaka madhubuti (guardrails), naona matatizo mawili yale yale yakijitokeza mara kwa mara.
Kwanza, inapuuza mifumo ya usanifu (design patterns) ambayo tayari umeianzisha. Labda timu yako inatoa ufuataji wote wa data (data fetching) katika tabaka maalum la custom hooks. Labda una utaratibu mkali wa jinsi sera za Supabase RLS zinavyounganishwa na wasaidizi wa mbele (frontend helpers). AI haijali. Itatupa supabase.from().select() ya kawaida moja kwa moja kwenye onClick ya kitufe ikiwa hiyo itatatua prompt ya sasa. Kadi inafanya kazi. Hata inaonekana safi. Lakini ni kitu kisicho cha kawaida (outlier) katika codebase yako, na kila outlier ni kodi ya ziada ya marekebisho (refactoring tax) ya baadaye. Miezi sita baadaye, mtu atalazimika kutafuta sindano hiyo, kuelewa kwa nini ipo, na kuirudisha kwenye mstari kwa upole.
Pili, inatafuta utata (complexity) pale ambapo urahisi ungetosha. Zana hii imefundishwa kwenye mifumo (repositories) mikubwa inayohitaji abstract factories, mifumo tata ya reducer, na higher-order components za tabaka nyingi. Unapoiomba ijenge fomu rahisi ya mawasiliano, inaweza kukupa state machine, context provider, na custom hook abstraction inayochukua faili tatu. Suluhisho si kosa kiufundi. Ni zito tu. Kila tabaka lisilo la lazima huongeza deni la kiakili (cognitive debt). Hukuruka kazi; uliichelewesha, pamoja na riba.
Mtego wa Kasi (Velocity Trap)
Kuna mzunguko wa maoni (feedback loop) hatari hapa. AI inakuwezesha kujenga vipengele (features) mara mbili kwa kasi zaidi, lakini umakini wa binadamu haukui kwa njia hiyo hiyo. Ikiwa unatoa bidhaa (shipping) kwa nusu ya muda, je, unatumia muda mara mbili zaidi kwenye ukaguzi wa kodi (code review)? Je, unaandika majaribio (tests) mengi zaidi, au machache?
Kiutendaji, ni rahisi sana kuamini kodi iliyotengenezwa kwa sababu inaonekana ya kuaminika. Inatumia syntax ya kisasa. Maoni (comments) yamepangwa mahali sahihi kabisa. Majina ya vigezo (variables) yanaonekana ya kitaalamu. Hitilafu ndogo (subtle bugs) hujificha katika ule urembo. Dependency array kwenye hook inayouacha setter. TypeScript type ambayo ni sahihi kiufundi lakini inaruhusu hali ya null ambayo ulisahau kuishughulikia. Supabase query inayosahau kuzingatia mistari iliyofutwa kwa upole (soft-deleted rows) katika schema yako mahususi. Unasoma kwa haraka badala ya kusoma kila mstari, kwa sababu kasi ya utoaji inalazimisha hivyo. Kasi inahisiwa vizuri Jumatatu. Kipindi cha kutafuta hitilafu (debugging) Ijumaa huchukua hadi usiku wa manane.
Gharama Halisi
Watu wanaolipa gharama hii si watengenezaji (developers). Ni watumiaji wa mwisho (end users).
Programu inahisi kuwa nzito zaidi kwa sababu utata unakua kwa kasi zaidi kuliko timu zinavyoweza kuusimamia. Tunatengeneza programu kubwa zaidi kwa vikosi vidogo, tukijihami na zana zinazotufanya tujihisi kuwa hatushindiki. Wakati mwanatengenezaji mmoja anapoweza kuunda muundo wa dashboard nzima kwa mchana mmoja, shirika linatarajia dashboard tatu kufikia Jumatano. Kupanua mfumo bila uangalifu huleta mifumo dhaifu. State inavimba. Ukubwa wa bundle unaongezeka polepole. Race conditions zinaongezeka. Kiolesle kinaweza kuonekana cha kisasa, lakini hujirudisha mwanzo mtumiaji anapobonyeza kitufe cha kurudi nyuma, au huchukua sekunde nne ili kuimarika (hydrate) kwa sababu hakuna aliyepata muda wa kuchunguza mfululizo wa upatikanaji wa data uliotengenezwa na AI.
Fanya Kazi Pamoja na Mashine, Sio kwa Ajili Yake
Hii haimaanishi kwamba unapaswa kutoa AI kwenye edita yako. Inamaanisha unahitaji mipaka.
Itumie kwa mambo ambayo ni mazuri kwake. Iache iandike mambo ya kuchosha: TypeScript interfaces zinazojirudia, Supabase queries za boilerplate, na mipangilio ya Jest.
