Uhandisi wa mzunguko (loop engineering) unapata umaarufu mkubwa sasa hivi. Ukipitia jukwaa lolote la kiufundi, utapata sauti zinazobishana kwamba tunapaswa kuacha kuwatendea wakala wa AI kama chatbots za kufundishwa kwa maelekezo (prompts) ya kijanja. Badala yake, wanasema tunapaswa kubuni mizunguko: mizunguko inayojitegemea inayomruhusu wakala kupanga, kutekeleza, kukagua kazi yake mwenyewe, na kurudia mchakato wakati sisi tumelala. Pendekezo hili linavutia sana. Ikiwa mzunguko huo umeundwa vizuri, wakala ataendelea na kazi bila usimamizi wa mara kwa mara wa binadamu, akigeuza nia ya awali kuwa matokeo kamili usiku kucha.

Ahadi hiyo inafanya kazi vizuri katika nadharia. Katika vitendo, wakala wengi tayari wanatumia mizunguko. Wanatengeneza kodi, kukagua makosa ya kirekebishaji (compiler errors) au kushindwa kwa majaribio, kurekebisha kodi, na kuendesha mchakato huo tena. Mzunguko huo wa msingi wa mrejesho si mpya. Kile wanachohitaji watetezi wa mbinu hii sasa ni kitu chenye malengo makubwa zaidi: mzunguko wa nje unaosimamia kazi nzima, si makosa ya sintaksi pekee. Kujenga mzunguko huo wa nje ndiko kunakofanya mambo kuwa magumu, kwa sababu uhandisi wa programu mara chache huwa mfumo uliofungwa wenye sheria zisizobadilika.

Changamoto ya Ubunifu wa Mzunguko

Malengo ya bidhaa mara nyingi hayako wazi. Ni nadra kuanza na tafsiri kamili ya nini kinamaanisha kazi imekamilika. Mara nyingi zaidi, unagundua lengo halisi wakati tayari upo katikati ya ujenzi. Hitaji ambalo lilionekana kuwa rahisi kwenye ubao wa maandishi linaweza kugundulika kuwa na matukio ya pembeni (edge cases) yanayobadilisha sura ya suluhisho nzima. Unapomzungusha wakala ndani ya mzunguko mgumu, ugumu huo unakuwa mzigo. Mzunguko huo unaendelea kufanya kazi kwa lengo ambalo linaweza kuwa si lengo sahihi. Mbaya zaidi, mzunguko unaobadilika unaweza wakati mwingine kutatua mkwamo kwa kubadilisha lengo kimyakimya ili lilingane na matokeo yoyote yaliyopatikana. Hakuna matokeo yoyote kati ya hayo yanayofaa. Moja inapoteza nguvu ya kompyuta (compute); nyingine inatoa bidhaa mbovu kwa ujasiri.

Tatizo la ndani zaidi ni gharama ya maelezo ya kiufundi (specification cost). Ikiwa unataka mzunguko uendeshwe bila usimamizi, lazima uandike maelezo yanayotabiri karibu kila kitu. Ni nini hasa wakala anapaswa kubadilisha? Ni tabia gani iliyopo ni muhimu na lazima ihifadhiwe? Chini ya hali gani sahihi wakala anapaswa kuacha kurudia mchakato? Ni hatari zipi zinazokubalika, na ni madhara gani yanapaswa kusababisha kusimama mara moja? Kuandika hati hiyo kunaweza kuchukua muda mrefu kuliko kuketi tu na wakala na kumwongoza katika kazi hiyo kwa wakati halisi. Unatoa gharama kubwa ya awali ili kupata otomatiki ambayo itanufaisha tu ikiwa uhakiki utakuwa rahisi zaidi kuliko utendaji wenyewe.

Mahali Ambapo Mizunguko Inaleta Faida Halisi

Hii haimaanishi kwamba uhandisi wa mzunguko hauna faida. Inamaanisha ni chombo maalum, si mkakati wa jumla. Mizunguko inafanya kazi vizuri pale gharama za uhakiki zinapoongezeka na vigezo vya mafanikio vinapokuwa vya wazi kabisa. Kuna sehemu tatu ambapo hali hii huwa kweli.

Kazi za kawaida za kiufundi. Fikiria kazi zinazowafanya wahandisi wakuu watamani kustaafu: kuanzisha programu katika mfuatano maalum, kubofya kwenye kiolesura cha uwekaji (deployment UI) ili kuthibitisha kila hatua, kutafuta (grepping) logi kwa ajili ya maandishi ya makosa yanayojulikana baada ya toleo, au kuhakikisha kuwa faili ya usanidi imeandikwa kwenye nodi zote sahihi. Hatua hizi ni kuchosha kwa binadamu lakini ni rahisi kuhakiki. Mzunguko unaweza kusimamia mchakato huo, ukikagua vituo vya afya (health endpoints) baada ya kila kuanza upya na kurudisha nyuma (roll back) kwa ishara ya kwanza ya tatizo. Binadamu bado anafafanua mpango wa utekelezaji. Mzunguko unatekeleza tu kwa uvumilivu wa mashine saa mbili za usiku.

Malengo ya uboreshaji yanayopimika. Wakati mafanikio ni namba, mizunguko inakuwa na ufanisi mkubwa sana. Punguza latency ya p99 chini ya milisekunde 150. Punguza matumizi ya kumbukumbu (memory footprint) kwa asilimia ishirini. Hamisha njia kuu (hot path) kutoka Python kwenda Rust na uhakikishe majaribio yote ya kitengo (unit tests) yanayopatikana bado yanapita. Mzunguko unaweza kutengeneza mabadiliko, kuupima (benchmark), kuhifadhi toleo lililoboresha matokeo, na kutupa mengine. Kwa sababu uhakiki ni wa otomatiki na nafasi ya kutafuta ni kubwa, gharama zinazoongezeka za ukaguzi wa kibinadamu zingefanya kazi hii isiwezekane bila mzunguko. Lengo ni thabiti. Njia haijulikani. Hapo ndipo mzunguko unapotumika vizuri zaidi.

Mwongozo wa utendaji (Operational playbooks). Itikio la matukio na tiketi za usaidizi mara nyingi hufuata mifumo ambayo binadamu tayari wameshaigundua. Aina fulani ya kosa la uzalishaji (production error) kila wakati inahitaji kubadilisha siri (credential) na kusafisha cache. Aina fulani ya ombi la usaidizi inaweza kutatuliwa kwa kurejesha pesa (refund) wakati masharti matatu maalum yanapotimia. Mzunguko unaweza kuangalia vichocheo hivyo na kutekeleza mwongozo, ukipandisha ngazi (escalating) pale tu mfumo unapovunjika. Hauamui kama mwongozo huo ni sahihi; unadhibiti tu uthabiti kwa kiwango na kasi ambayo wahandisi wa zamu (on-call engineers) hawawezi kufikia.

Wasimamizi, Sio Wanaoweka Marejeleo

Kuna tofauti muhimu inayokosekana katika mazungumzo mengi ya sasa. Mizunguko (Loops) ni wasimamizi. Huweka mfumo ukiendana na lengo lililopangwa mapema, kama vile thermostat inavyodhibiti chumba kiwe nyuzi sabini na mbili. Lakini thermostat haichagui nyuzi sabini na mbili. Lazima mtu awe ameshaamua kuwa hiyo ndiyo joto sahihi kwanza.

Inapotumika kwenye programu (software), hii inamaanisha kuwa wakala (agent) aliye ndani ya mzunguko anaweza kurekebisha hitilafu (bugs), kuboresha utendaji wa kazi (refactor functions), au kurekebisha vigezo (tune parameters) mchana kutwa. Hata hivyo, hawezi kuamua ni kipengele (feature) gani kinamsaidia mteja hasa au kama hitilafu fulani inastahili kurekebishwa kabla ya toleo linalofuata. Maamuzi hayo yanahitaji uamuzi kuhusu muktadha wa biashara, changamoto za watumiaji, na kipaumbele cha kimkakati. Wakala hutekeleza. Binadamu huamua. Kuchanganya mambo haya mawili ndivyo kunavyofanya timu kuishia na mifumo iliyoboreshwa vizuri lakini inayotatua tatizo lisilo sahihi.

Uhandisi wa mizunguko (Loop engineering) ni muhimu, lakini una mipaka. Inakusaidia kuendesha mashine kwa nidhamu na kasi. Haiamui ni mashine gani ya kujenga, ni ya nani, au mafanikio yanaonekanaje kwa mtazamo wa kibinadamu. Uamuzi kuhusu ni kipengele gani muhimu, ni hatari gani inayokubalika, na ni lini lengo lenyewe linahitaji kubadilika, ni jukumu lako. Jenga mizunguko kwa kazi ambazo tayari unazielewa vizuri vya kutosha ili kuzihakiki kiotomatiki. Jishughulishe na kila kitu kingine.


Makala haya yanatokana na mawazo yaliyojadiliwa awali na Isaac Hagoel katika “Loop Engineering Minus The Hype.” Kwa majadiliano zaidi ya uhandisi, jiunge na jumuiya yetu ya kujifunza kwenye Telegram.