Thecoder
JF-Expert Member
- Aug 10, 2015
- 2,472
- 6,413
Kadri mabadiliko ya teknolojia yanavyozidi kushika kasi, ndivyo yanavyozidi kuleta athari chanya au hasi katika nyanja mbalimbali za maisha ya binadamu.
Katika uwanja wa software development, mabadiliko haya yamejidhihirisha wazi wazi, hasa kupitia ujio wa Artificial Intelligence (AI) na ndio maana leo hii, tunaona mgawanyiko ulio wazi miongoni mwa watengenezaji wa mifumo mbalimbali.
Kuna kundi jipya la developers waliokua sambamba na AI wanaojulikana kama vibe coders na upande mwingine kuna wale wakongwe waliokulia katika enzi za majukwaa kama Stack Overflow, ambapo maarifa yalitafutwa kwa juhudi na uzoefu uliotokana na mijadala ya moja kwa moja ndani ya majukwaa hayo.
Na hivi sasa ukifuatilia majukwaa mengi ya teknolojia, utakutana na mjadala mkali unaoendelea, kwamba, Je, AI itachukua nafasi ya developers? Hili ni swali lenye mvutano ulio na mitazamo miwili tofauti iliyojegwa juu ya pande mbili za aina ya developers tulionao hivi sasa.
Kundi la kwanza linaamini kuwa AI tayari imeanza kuchukua nafasi ya developer na hoja yao kuu ni kwamba AI ina uwezo mkubwa wa kuandika code na si tu mistari michache, bali hata mamia ya mistari ndani ya muda mfupi sana.
Kwamba, kwa kumpa AI maelekezo ya project yaani (prompt), inaweza kuzalisha mfumo mzima ambao ukiurun unatoa matokeo yanayotarajiwa ndani ya dakika chache. Kwa mantiki hiyo, kazi ambayo hapo awali ilihitaji kufanyika mwezi mzima sasa hivi inaweza kukamilika ndani ya siku chache tu.
Hata hivyo, kundi la pili linalopinga mtazamo huo. Wanasema, AI si mbadala wa developer bali ni kifafa tu yaani tool ya kurahisisha kazi, wanaendelea kusisitiza kuwa AI haiwezi kutoa majibu sahihi bila kupewa muongozo sahihi kwahiyo ubora wa matokeo ya AI hutegemea ubora wa maelekezo (prompt engineering), kitu ambacho kinahitaji uelewa wa kina kutoka kwa developer mwenyewe.
Sasa, kwa mtazamo wangu binafsi, nikiwa kama developer mwenye uzoefu wa kati, hoja ya pili ina uzito zaidi ya ile ya kwanza.
Na kinachonifanya niungane na hoja hiyo ya pili ni kwasababu nimeshawahi kupokea projects kadhaa kutoka kwa vibe coders ambao wanajua yule bro haya ndio mambo yake na zote zilikua zinahitaji marekebisho fulani fulani ambayo wao waliyaona na AI ikashindwa kuwarekebishia, na si kwa sababu AI haiwezi, bali kwa sababu haikupewa mwelekeo sahihi wa kwenda kurekebisha hizo errors.
Kitu cha ajabu kabisa ni kwamba wakati naendelea kuchambua projects hizo, niligundua matatizo hayakuwepo tu kwenye maeneo yale waliyoyapoint wao ya kwamba hayafanyi kazi, bali hata katika sehemu zilizokuwa zinaonekana kufanya kazi vizuri.
Na hapa ndipo tunapokutana na aina mbili ya makosa ambayo yanaweza kuwepo kwenye codes zinazounda mfumo fulani, ambazo ni…
Errors, makosa yanayoonekana moja kwa moja kwa application kushindwa ku-run kabisa au button kushindwa kusubmit hiyo form ambayo tayari imejazwa ili mtu aweze kusign in na kadhalika.
Bugs, makosa yasiyoonekana mara moja, bali hujitokeza kadri mfumo unavyotumika kwamfano logical bugs (makosa ya mantiki), AI inaweza kuandika function inayofanya kazi, lakini si kwa usahihi unaotarajiwa, kwamfano, mfumo wa discount unaweza kufanya kazi lakini ukatoa matokeo yasiyo sahihi kwa baadhi ya edge cases.
Security vulnerabilities, AI inaweza kuandika code bila kuzingatia usalama.
Kwa mfano, kutokusanitize user input, jambo linaloweza kusababisha SQL Injection au XSS attacks na kwanini AI huwa inafanya hivi? AI hufanya hivi kwasababu huwa inafocus na kile ambacho kipo kwenye prompt aliyopewa kwahiyo anafocus kwenye kutengeneza kile alichoambiwa bila kuanza kudeal na maeneo mengine ambayo hakuambiwa.
Lakini pia kuna poor scalability, kwamba code inaweza kufanya kazi vizuri kwa watumiaji wachache, lakini ikashindwa kabisa mfumo unapokuwa na watumiaji wengi. Mfano, kutumia queries zisizo optimized au kukosa caching (na hili ndio kosa ambalo nimeliona maeneo mengi sana kwa projects zilizotengenezwa na AI), ila ukiachana na hii pia kuna hii ya…
Code redundancy na inefficiency, AI inaweza kurudia logic ile ile sehemu tofauti tofauti badala ya kutumia reusable components, hii inaweza kusababisha mfumo kuwa mzito kwa kadri unavyotumika.
Kuna issue ya Integration, ya kwamba AI mara nyingi huwa inashindwa kuoanisha vizuri modules zilizopo kwenye project husika kwamfano, backend na frontend zinaweza kuwa na mismatch ya data formats, ndio hapa sasa unakuta mtu ametengeneza mfumo wa accounting ila dto (data transfer object) ya backend inahitaji string while kwenye frontend logic za calculation zimeandikwa juu ya number (hii nimeiona kwa kijana mmoja amevibe akatengeneza mfumo wa kuuzia simu za mikopo).
Hidden performance bottlenecks, mfumo unaweza kuonekana uko sawa mwanzoni, lakini ukawa na sehemu zinazotumia resources nyingi kupita kiasi, na kusababisha system kupungua kasi au ku-crash baadae (hii nimeiona kwenye POS).
Sasa, kutokana na hali hii, ni ngumu sana AI kumreplace developer kwa mtu ambae sio developer then anavibe kwasababu ni wazi kuwa changamoto nyingi za AI hazionekani mara moja. Mara nyingi hujitokeza taratibu kadri mfumo unavyotumika zaidi kwasababu vibe coders huwa wanafocus kwenye errors na wala sio bugs ambazo hazionekani na hii ndio kitu inayoweza kupelekea mfumo mzima kucrash bila yeye kujua chanzo chake ni nini.
Kwa msingi huu, inaonekana wazi kuwa AI haijaja kuchukua nafasi ya developer, bali imebadilisha majukumu yake. Badala ya kutumia muda mwingi kuandika code kutoka mwanzo, developer sasa anapaswa kuwa mchambuzi (analyst) na mkaguzi (reviewer) wa code zinazozalishwa na AI.
Kwa maana nyingine ni kwamba, hapa tulipofikia hivi sasa, developer bora si yule anayeandika code nyingi zaidi bali ni yule anayeelewa code kwa undani wake, kwa maana hakuna mtu atakuajiri kwasababu unajua kuandika codes coz codes ata AI inaandika ila mtu atakuajiri kwasababu unaelewa Kila block ya code iliyoandikwa inafanya kazi gani na ubora wa Kila logic ndani ya algorithm fulani na stability yake kuanzia sasa na hapo mbeleni ambapo mfumo utaanza kutumiwa na watu wengi zaidi.
Katika uwanja wa software development, mabadiliko haya yamejidhihirisha wazi wazi, hasa kupitia ujio wa Artificial Intelligence (AI) na ndio maana leo hii, tunaona mgawanyiko ulio wazi miongoni mwa watengenezaji wa mifumo mbalimbali.
Kuna kundi jipya la developers waliokua sambamba na AI wanaojulikana kama vibe coders na upande mwingine kuna wale wakongwe waliokulia katika enzi za majukwaa kama Stack Overflow, ambapo maarifa yalitafutwa kwa juhudi na uzoefu uliotokana na mijadala ya moja kwa moja ndani ya majukwaa hayo.
Na hivi sasa ukifuatilia majukwaa mengi ya teknolojia, utakutana na mjadala mkali unaoendelea, kwamba, Je, AI itachukua nafasi ya developers? Hili ni swali lenye mvutano ulio na mitazamo miwili tofauti iliyojegwa juu ya pande mbili za aina ya developers tulionao hivi sasa.
Kundi la kwanza linaamini kuwa AI tayari imeanza kuchukua nafasi ya developer na hoja yao kuu ni kwamba AI ina uwezo mkubwa wa kuandika code na si tu mistari michache, bali hata mamia ya mistari ndani ya muda mfupi sana.
Kwamba, kwa kumpa AI maelekezo ya project yaani (prompt), inaweza kuzalisha mfumo mzima ambao ukiurun unatoa matokeo yanayotarajiwa ndani ya dakika chache. Kwa mantiki hiyo, kazi ambayo hapo awali ilihitaji kufanyika mwezi mzima sasa hivi inaweza kukamilika ndani ya siku chache tu.
Hata hivyo, kundi la pili linalopinga mtazamo huo. Wanasema, AI si mbadala wa developer bali ni kifafa tu yaani tool ya kurahisisha kazi, wanaendelea kusisitiza kuwa AI haiwezi kutoa majibu sahihi bila kupewa muongozo sahihi kwahiyo ubora wa matokeo ya AI hutegemea ubora wa maelekezo (prompt engineering), kitu ambacho kinahitaji uelewa wa kina kutoka kwa developer mwenyewe.
Sasa, kwa mtazamo wangu binafsi, nikiwa kama developer mwenye uzoefu wa kati, hoja ya pili ina uzito zaidi ya ile ya kwanza.
Na kinachonifanya niungane na hoja hiyo ya pili ni kwasababu nimeshawahi kupokea projects kadhaa kutoka kwa vibe coders ambao wanajua yule bro haya ndio mambo yake na zote zilikua zinahitaji marekebisho fulani fulani ambayo wao waliyaona na AI ikashindwa kuwarekebishia, na si kwa sababu AI haiwezi, bali kwa sababu haikupewa mwelekeo sahihi wa kwenda kurekebisha hizo errors.
Kitu cha ajabu kabisa ni kwamba wakati naendelea kuchambua projects hizo, niligundua matatizo hayakuwepo tu kwenye maeneo yale waliyoyapoint wao ya kwamba hayafanyi kazi, bali hata katika sehemu zilizokuwa zinaonekana kufanya kazi vizuri.
Na hapa ndipo tunapokutana na aina mbili ya makosa ambayo yanaweza kuwepo kwenye codes zinazounda mfumo fulani, ambazo ni…
Errors, makosa yanayoonekana moja kwa moja kwa application kushindwa ku-run kabisa au button kushindwa kusubmit hiyo form ambayo tayari imejazwa ili mtu aweze kusign in na kadhalika.
Bugs, makosa yasiyoonekana mara moja, bali hujitokeza kadri mfumo unavyotumika kwamfano logical bugs (makosa ya mantiki), AI inaweza kuandika function inayofanya kazi, lakini si kwa usahihi unaotarajiwa, kwamfano, mfumo wa discount unaweza kufanya kazi lakini ukatoa matokeo yasiyo sahihi kwa baadhi ya edge cases.
Security vulnerabilities, AI inaweza kuandika code bila kuzingatia usalama.
Kwa mfano, kutokusanitize user input, jambo linaloweza kusababisha SQL Injection au XSS attacks na kwanini AI huwa inafanya hivi? AI hufanya hivi kwasababu huwa inafocus na kile ambacho kipo kwenye prompt aliyopewa kwahiyo anafocus kwenye kutengeneza kile alichoambiwa bila kuanza kudeal na maeneo mengine ambayo hakuambiwa.
Lakini pia kuna poor scalability, kwamba code inaweza kufanya kazi vizuri kwa watumiaji wachache, lakini ikashindwa kabisa mfumo unapokuwa na watumiaji wengi. Mfano, kutumia queries zisizo optimized au kukosa caching (na hili ndio kosa ambalo nimeliona maeneo mengi sana kwa projects zilizotengenezwa na AI), ila ukiachana na hii pia kuna hii ya…
Code redundancy na inefficiency, AI inaweza kurudia logic ile ile sehemu tofauti tofauti badala ya kutumia reusable components, hii inaweza kusababisha mfumo kuwa mzito kwa kadri unavyotumika.
Kuna issue ya Integration, ya kwamba AI mara nyingi huwa inashindwa kuoanisha vizuri modules zilizopo kwenye project husika kwamfano, backend na frontend zinaweza kuwa na mismatch ya data formats, ndio hapa sasa unakuta mtu ametengeneza mfumo wa accounting ila dto (data transfer object) ya backend inahitaji string while kwenye frontend logic za calculation zimeandikwa juu ya number (hii nimeiona kwa kijana mmoja amevibe akatengeneza mfumo wa kuuzia simu za mikopo).
Hidden performance bottlenecks, mfumo unaweza kuonekana uko sawa mwanzoni, lakini ukawa na sehemu zinazotumia resources nyingi kupita kiasi, na kusababisha system kupungua kasi au ku-crash baadae (hii nimeiona kwenye POS).
Sasa, kutokana na hali hii, ni ngumu sana AI kumreplace developer kwa mtu ambae sio developer then anavibe kwasababu ni wazi kuwa changamoto nyingi za AI hazionekani mara moja. Mara nyingi hujitokeza taratibu kadri mfumo unavyotumika zaidi kwasababu vibe coders huwa wanafocus kwenye errors na wala sio bugs ambazo hazionekani na hii ndio kitu inayoweza kupelekea mfumo mzima kucrash bila yeye kujua chanzo chake ni nini.
Kwa msingi huu, inaonekana wazi kuwa AI haijaja kuchukua nafasi ya developer, bali imebadilisha majukumu yake. Badala ya kutumia muda mwingi kuandika code kutoka mwanzo, developer sasa anapaswa kuwa mchambuzi (analyst) na mkaguzi (reviewer) wa code zinazozalishwa na AI.
Kwa maana nyingine ni kwamba, hapa tulipofikia hivi sasa, developer bora si yule anayeandika code nyingi zaidi bali ni yule anayeelewa code kwa undani wake, kwa maana hakuna mtu atakuajiri kwasababu unajua kuandika codes coz codes ata AI inaandika ila mtu atakuajiri kwasababu unaelewa Kila block ya code iliyoandikwa inafanya kazi gani na ubora wa Kila logic ndani ya algorithm fulani na stability yake kuanzia sasa na hapo mbeleni ambapo mfumo utaanza kutumiwa na watu wengi zaidi.