नयाँ शताब्दीको सुरुतिर, जब मैले सफ्टवेयर इन्जिनियरिङ पढ्न थालेँ, मेरा एक प्रोफेसरले भन्नुभएको थियो कि भविष्यमा हरेक काम प्रोग्रामिङको हुनेछ । यो सन् २००१ तिरको कुरा हो । उहाँले भन्नुभएको थियो कि हाम्रो हातमा 'सुरक्षित रोजगारी गोल्डेन टिकट' छ । तर, गत महिना मात्रै, गिटहबका सीईओले भन्नुभयो कि प्रोग्रामिङको भविष्य 'प्राकृतिक भाषा' हो । यसबाट लाग्छ कि २१ औँ शताब्दीको सुरुमा मेरा प्रोफेसरले गरेको भविष्यवाणी सही साबित हुँदैछ, तर उहाँले परिकल्पना गरेजस्तो तरिकाले भने होइन ।
आर्टिफिसियल इन्टेलिजेन्स (एआई) ले प्रोग्रामिङलाई कसरी परिवर्तन गर्दैछ ?
एआई आज प्राकृतिक भाषाका निर्देशनहरू (नेचुरल ल्याङ्ग्वेज प्रम्ट) मार्फत कोड लेख्न सक्षम भइसकेको छ । गिटहब कोपाइलटले कोड पूरा गर्न र बगहरू सच्याउन सक्छ र च्याटजीपीटीले सेकेन्ड भित्रै एउटा पूर्ण प्रोजेक्ट तयार पार्न सक्छ । यी सबै उपकरणहरू जोसुकैका लागि पनि उपलब्ध छन् । यसले गर्दा 'रोजगार सुरक्षाको सुनौलो टिकट' हराएको हो कि भन्ने प्रश्न उठ्छ । एक सीएसटी (कम्प्युटर विज्ञान र प्रविधि) प्रोफेसर र कम्प्युटर विज्ञान पढ्ने छोरीका पिताको रूपमा, मेरा लागि अझ ठुलो प्रश्न छ । यदि एआईले प्रोग्रामिङ गर्ने हो भने के अझै पनि सफ्टवेयर इन्जिनियरिङ पढ्न जरुरी छ त ?
एआईका क्षमता र सीमा
प्रोग्रामिङको क्षेत्रमा एआई धेरै कुरामा राम्रो छ । यसले हजारौँ लाइन कोड तयार गर्न सक्छ । विभिन्न प्रोग्रामिङ ल्याङ्ग्वेजहरू बीच एक अर्कामा अनुवाद गर्न सक्छ । युजर इन्टरफेस (यूआई) तयार पार्न सक्छ र बगहरू सच्याउन सक्छ । यो दोहोरिने कार्य र ढाँचा पहिचान (प्याटर्न रिकग्निसन) मा उत्कृष्ट छ । एक पटक मैले च्याटजीपीटीलाई पाइथनमा टिन्डरजस्तै डेटिङ एप बनाउन भन्दा यसले सेकेन्डमै युजर प्रोफाइल, स्वाइपिङ लजिक र नमुना डेटाबेस सहितको पूर्ण एप बनाइ दिएको थियो ।
तर, एआईका धेरै सीमाहरू पनि छन् । हामीले यो स्वीकार गर्नु पनि पर्छ । एआईले हामीले अह्राएका कार्यहरूको पछाडिको 'किन ?' बुझ्दैन । यसलाई वास्तविक संसारको सन्दर्भ र परिदृश्यहरू बुझ्नका लागि मानिसको इनपुट चाहिन्छ । यसले दीर्घकालीन व्यापार लक्ष्यहरूलाई प्राथमिकता दिन र तुलनात्मक रूपमा मूल्याङ्कन गर्ने कार्य राम्रोसँग नगर्न सक्छ । यसले 'भ्रामक' जानकारी दिन सक्छ र कहिलेकाहीँ गलत उत्तर दिन्छ ।
एआईको वर्तमान प्रयोग
हालको तथ्याङ्क अनुसार आज ५५ प्रतिशत डेभलपरहरूले कोपाइलट प्रयोग गर्न थालेका छन् । तर ती मध्ये केवल ३० प्रतिशतले मात्र कुनै परिवर्तन नगरी एआईले दिने नतिजा जस्ताको तस्तै स्वीकार गर्छन् । यदि तपाईँ डेभलपर हो र एआई प्रयोग गर्नुहुन्न भने तपाईँ समस्यामा पर्न सक्नुहुन्छ। तर, यदि तपाईँ त्यो ३० प्रतिशत भित्र हुनुहुन्छ र एआई आँखा चिम्लेर धेरै विश्वास गर्नुहुन्छ भने, तपाईँ झन् ठुलो समस्यामा पर्न सक्नुहुन्छ ।
आजका सबै प्रमुख एआईहरू लार्ज ल्याङ्ग्वेज मोडेलहरू (Large Language Models - LLMs) मा आधारित छन् र मानव ज्ञानको टेक्स्टमा प्रशिक्षित छन् । यदि तपाईँले स्पष्ट आदेश दिनुभयो भने यसले धेरै राम्रो परिणाम दिन्छ । तर, सबै रणनीतिक सोच अझै पनि मानिसमा निहित छ । तपाईँ एआईलाई आफ्नो टोलीमा काम गर्ने एक प्रतिभाशाली जुनियर डेभलपरको रूपमा सोच्न सक्नु हुन्छ, जसले धेरै कामहरू छिटो र कुशलतापूर्वक गर्न सक्छ । तर, दृष्टिकोण परिभाषित गर्ने, परिणामहरू प्रमाणित गर्ने र हामीले निर्माण गरिरहेको कुरा समाजका लागि राम्रो छ भनी सुनिश्चित गर्ने काम हामी मानवमा निर्भर छ ।
एआईलाई मानिससँग सञ्चार र सहकार्य गर्न पनि गाह्रो भइरहेको छ । एआईलाई जुन काममा राम्रो छ, त्यो काम गर्न दिनुपर्छ । हामी मानवले अफिसको राजनीति जस्ता 'बोरिङ' कामहरूको ख्याल गर्न सक्छौँ ।
सफ्टवेयर इन्जिनियरिङको भूमिका
सफ्टवेयर इन्जिनियरिङको भूमिका केवल कोड लेख्ने मात्र होइन । यसमा प्रयोगकर्ताको आवश्यकता बुझ्ने, विभिन्न भूमिकाहरूमा रहेर सहकार्य गर्ने र समानुभूति तथा जिम्मेवारीका साथ कठिन निर्णयहरू लिने जस्ता कामहरू पर्छन् । हामी केवल 'टास्क एक्जिक्युटर' मात्र होइनौँ । उत्कृष्ट इन्जिनियरहरू ती होइनन्, जसले सबैभन्दा छिटो कोड गर्छन् । तर ती हुन्, जसले सबैभन्दा गहन तरिकाले सोच्ने गर्छन् । एक असल इन्जिनियरले अव्यवस्थित र अस्पष्ट समस्याहरूलाई लिएर मसिनहरूलाई व्यवस्थित र अर्थपूर्ण परिणामतर्फ डोर्याउँछ ।
सिस्टम आर्किटेक्टहरूले उत्कृष्ट समाधानहरू डिजाइन गर्छन् र उनीहरू एआई कोल्याबरेटर हुनुपर्छ, जसले एआईको प्रयोग गरेर ती समाधानहरू लागु गर्छन् । उनीहरू नैतिकवान् प्राविधिक पनि हुनुपर्छ, जसले हामीले बनाइरहेका समाधानहरूले साँच्चै मानवजातिलाई फाइदा पुर्याउँछ भन्ने सुनिश्चित गर्छन् ।
किन अझै पनि आवश्यक छन् सफ्टवेयर इन्जिनियर ?
एआईले धेरै जटिल प्राविधिक कार्यहरूलाई प्रजातान्त्रिक बनाउँदैछ । आज एक डिजाइनरले एउटा निर्देशन वा प्रोम्ट दिएरै एउटा एपको नमुना बनाउन सक्छ र मार्केटरहरूलाई कोड नलेखी डेटा विश्लेषण गर्न डेटा इन्जिनियरहरूको आवश्यकता पर्दैन । के यसको मतलब सफ्टवेयर इन्जिनियरहरूले आफ्नो औचित्य गुमाउँदैछन् ? उत्तर हो, 'होइन' । सफ्टवेयर इन्जिनियरहरू अझै पनि आवश्यक छन् । किन भने सफ्टवेयर इन्जिनियरहरूले एआईलाई राम्रोसँग बुझ्न सक्छन् । उनीहरूलाई एआईलाई कसरी आदेश दिने भनेर मात्र हैन, यसको भित्री संरचना, मोडेल, डेटा पाइपलाइन, सीमा र जोखिम पनि थाहा छ । एआई हामीले प्रयोग गर्ने र भविष्यमा निर्माण गर्ने हरेक उत्पादनमा एकीकृत हुने भएकाले यी कुराहरू धेरै महत्त्वपूर्ण छन् ।
सफ्टवेयर इन्जिनियरले सफ्टवेयर निर्माण गर्दा एआईको राम्रो उपयोग गर्न सक्छन् । आज जो कोहीले पनि एक डेमो प्रोटोटाइप गर्न वा सरल एपका फिचर तयार गर्न सक्छ । तर, सफ्टवेयर इन्जिनियरहरूले 'ठुलो तस्विर'मा सोच्छन् । उनीहरूले वास्तवमा एआई प्रयोग गरेर उत्पादनका लागि तयार सफ्टवेयर निर्माण गर्दछन्, जुन विस्तार योग्य (scalable), भरपर्दो (reliable) र दीर्घकालीन मर्मतयोग्य (long-term maintainable) हुन्छ ।
सफ्टवेयर इन्जिनियरले एआईलाई अझ राम्रो बनाउँछन् । मोडेलहरूलाई फाइन-ट्युन गर्छन्, पर्फर्मेन्सलाई कस्टमाइज गर्छन् र उपयोगितामा सुधार ल्याउँछन् । सफ्टवेयर इन्जिनयरले नै एआईलाई सबैका लागि उपलब्ध र उपयोगी बनाउँछन् । एआईको अर्को पुस्ता अझै पनि सफ्टवेयर इन्जिनियरहरूकै संलग्नतामा निर्माण भइरहेको छ ।
यसले देखाउँछ कि सफ्टवेयर इन्जिनियरहरूले 'सुरक्षित रोजगारीको गोल्डेन टिकट' गुमाइरहेका छैनन् । वास्तवमा उनीहरू अझ धेरै 'गोल्डेन टिकट' बटुलिरहेका छन् । किनभने उनीहरू अब केवल सफ्टवेयर मात्र निर्माण गरिरहेका छैनन्; भविष्यको इन्टेलिजेन्स नै निर्माण गरिरहेका छन् । हामीले आज एआईलाई कसरी प्रशिक्षण दिन्छौँ, निर्देशन दिन्छौँ र पर्यवेक्षण गर्छौँ, त्यसले भोलि हामीले निर्माण गर्ने प्रणाली, प्रविधि र समाजको प्रकार परिभाषित गर्नेछ । एआईले जग उठाउँदैछ, तर सफ्टवेयर इन्जिनियरहरूले त्यसको छत उठाउँदैछन् ।
सफ्टवेयर इन्जिनियरिङ शिक्षाको भविष्य
पहिले कोडिङ सफ्टवेयर इन्जिनियरिङ शिक्षाको एक धेरै महत्त्वपूर्ण अंश थियो । तर, सफ्टवेयर इन्जिनियरिङ शिक्षा केवल कोड लेख्ने कुरा मात्र होइन । यसमा जटिल समस्याहरूलाई विभिन्न चरणहरूमा कसरी विभाजन गर्ने, तार्किक र आलोचनात्मक रूपमा कसरी सोच्ने र वास्तविक रूपमा महत्त्वपूर्ण समाधानहरू निर्माण गर्न डिजिटल टुलहरू कसरी प्रयोग गर्ने भन्ने कुरा पनि समावेश छ ।
जब एआई सबैको सहायक बन्दैछ, इन्जिनियरहरू 'अर्क्रेस्ट्रेटर' (orchestrators) बनिरहेका छन् । जसले अवरोध हटाउँछन् र अवसरका ढोका खोल्छन् । सफल सफ्टवेयर इन्जिनियर बन्नका लागि विद्यार्थीहरूले सकेसम्म छिटो कोड सिक्नु बाहेक अन्य कुराहरूमा पनि ध्यान दिनुपर्छ ।
१. जग (Foundations) मा महारत हासिल गर्ने
डेटा संरचना (data structures), एल्गोरिदम (algorithms), प्रोग्रामिङ अवधारणाहरू (programming concepts) अझै पनि धेरै महत्त्वपूर्ण छन् । यी विषयहरूमा पर्याप्त समय दिएर एक्सपर्ट बन्नुपर्ने हुन्छ । किनभने तिनीहरू धेरै महत्त्वपूर्ण आधारभूत कुराहरू हुन् ।
२. सिस्टम आर्किटेक्टको रूपमा सोच्ने
सकेसम्म चाँडो एक सिनियर इन्जिनियरको अपेक्षा पूरा गर्ने लक्ष्य राख्नुहोस् । भरपर्दो र विस्तार गर्नसक्ने सिस्टमहरू डिजाइन गर्ने बारे सोच्नुहोस् ।
३. फुल स्ट्याक (Full Stack) बन्ने
एक सफ्टवेयर इन्जिनियरले फ्रन्ट-एन्ड वा ब्याक-एन्ड वा डेटाबेसमा मात्र ध्यान केन्द्रित गर्न सक्ने दिनहरू गए । भविष्यका सफ्टवेयर इन्जिनियरहरू सबै फुल स्ट्याक इन्जिनियरहरू हुनेछन् ।
४. विभिन्न विषयहरूमा ज्ञान हासिल गर्ने
तपाईँले डिजाइन (design), उत्पादन (product), डेटा (data), परियोजना व्यवस्थापन (project management) जस्ता अन्य विषयहरूमा पनि प्रवेश गर्नुपर्छ र धेरै भूमिकाहरू निभाउन तयार हुनुपर्छ ।
५. सञ्चार र सहकार्यको अभ्यास गर्ने
टिम प्रोजेक्टहरू मार्फत मानिसहरूसँग समूहमा काम गर्न सिक्नुहोस् । भविष्यमा यदि तपाईँले कुराहरू राम्ररी व्याख्या गर्न र जोड्न सक्नु भयो भने, यो बढी महत्त्वपूर्ण हुनेछ र तपाईँ अरूबाट फरक बन्न सक्नु हुनेछ ।
६. एआईलाई एक रचनात्मक पार्टनरको रूपमा प्रयोग गर्ने
एआईलाई अँगाल्नुहोस्, यसलाई घृणा नगर्नुहोस् । एलएलएम, जेनरेटिभ एआई, मोडेल फाइन-ट्युनिङ आदि सिक्नुहोस् । आफ्नो प्रोजेक्टको बारेमा एआईसँग छलफलका साथै आफ्नो टिमको एक सदस्यको रूपमा काम एआईलाई हस्तान्तरण गर्नुहोस् ।
७. आत्मसाथ गर्न तयार रहनुहोस्
टुलहरू परिवर्तन हुन्छन्, तर सिद्धान्तहरू लामो समय टिकिरहन्छन् । त्यसैले, तपाईँले सधैँ 'कसरी सिक्ने' भन्ने कुरामा ध्यान केन्द्रित गर्नुपर्छ । भविष्यमा जब सबैले अलिकति कोडिङ गर्न सक्ने अवस्था आउनेछ । त्यसपछि जसले शिल्पमा महारत हासिल गर्छ, उसले सबैको लागि बाटो तयार पार्नेछ र लिडर बन्नेछ ।
८. एआईको युगमा सफ्टवेयर इन्जिनियर
एआईको युगमा सफ्टवेयर इन्जिनियरिङ नेतृत्वको आधार बनिरहेको छ । मैले प्रोग्रामिङबारे धेरै कुरा गरेँ, तर सायद 'प्रोग्रामर' अब सफ्टवेयर इन्जिनियरहरूलाई जनाउन गर्न प्रयोग गरिने सही शब्द होइन । एआई युगका सफ्टवेयर इन्जिनियरहरू 'भिजनरी' हुनुपर्छ, जसले अर्थपूर्ण समस्याहरू परिभाषित गर्न सक्छन् । उनीहरू 'ब्रिज-बिल्डर' हुनुपर्छ, जसले उपकरणहरू, टोलीहरू र विषयहरूलाई जोड्न सक्छन् । र, उनीहरू 'लिडर' हुनुपर्छ, जसले मानव मात्र होइन, एआईलाई पनि नेतृत्व दिन सक्छन् ।
भविष्य ती व्यक्तिहरूको होइनः जसले सबैभन्दा छिटो कोड गर्छन्, तर ती व्यक्तिहरूको हो, जसले गहिरो ढङ्गले सोच्छन्, छिटो आत्मसाथ गर्छन् र कुशलतापूर्वक सहकार्य गर्छन् । उनीहरू ती व्यक्ति हुन्, जसले भविष्यको भविष्यवाणी मात्र गर्दैनन्, भविष्य निर्माण पनि गर्छन् ।
(क्यालिफोर्निया साइन्स एण्ड टेक्नोलोजी युनिभर्सिटीमा आयोजित टेडेक्स सीएसटीयूमा अनुभवी प्रविधिज्ञ, उद्यमी तथा कम्प्युटर विज्ञानका प्राध्यापक रेमन्ड फुले दिएको प्रस्तुतिको भावानुवाद ।)
पछिल्लो अध्यावधिक: साउन १९, २०८२ १९:२६
