مواد پر جائیں
یہ مضمون AI کا استعمال کرتے ہوئے جاپانی سے ترجمہ کیا گیا ہے۔
جاپانی میں پڑھیں
یہ مضمون پبلک ڈومین (CC0) میں ہے۔ اسے آزادانہ طور پر استعمال کرنے کے لیے آزاد محسوس کریں۔ CC0 1.0 Universal

ترقی پر مبنی ترقی اور ری فیکٹرنگ سے چلنے والا ٹیسٹ

ترقی کا مطلب ہے بار بار کوئی نئی اور مفید چیز بنانا۔

جب ہم "ترقی" سنتے ہیں، تو اکثر نئے پروڈکٹ کی ترقی ذہن میں آتی ہے۔ یہ انفرادی پروڈکٹس بنانے سے مختلف ہے؛ اس کا مطلب ہے پروڈکٹ کے بلیو پرنٹس یا سانچے بنانا، گویا۔

لہذا، نئے پروڈکٹ کی ترقی کے ذریعے بنائے گئے ڈیزائن اور سانچے فیکٹریوں میں بار بار استعمال ہوتے ہیں تاکہ یکساں پروڈکٹس کی بڑے پیمانے پر پیداوار کی جا سکے۔

"ترقی" کے دیگر استعمالات بھی ہیں، جیسے انفرادی صلاحیتوں کی ترقی، یا معاشرے اور قوم کی ترقی۔ ان کا مطلب صرف یہ نہیں کہ ملکیت میں اضافہ ہو، بلکہ یہ صلاحیتوں کو بار بار استعمال کرنے اور ان سے فائدہ اٹھانے کی اہلیت کو بھی ظاہر کرتے ہیں۔

جبکہ افراد اور معاشروں کی معاشی طاقت معاشی حالات کے ساتھ کم و بیش ہو سکتی ہے، ترقی یافتہ صلاحیتیں عام طور پر مستقل ہوتی ہیں۔

اگر وہ کم بھی ہوں تو اسے زوال سمجھا جاتا ہے، معاشی خوشحالی کی طرح کی اتار چڑھاؤ نہیں۔

مزید برآں، ٹیکنالوجی اور علم کی ترقی بھی ہے۔ افراد یا مخصوص معاشروں کی صلاحیتوں کے برعکس، ان میں آسانی سے اشتراک کی خصوصیت ہوتی ہے۔

اور ان ترقیوں کے نتائج میں – مصنوعات، صلاحیتیں، علم، اور ٹیکنالوجیز – کچھ ایسی بھی ہیں جو بعد کی ترقی کے لیے مفید ہو سکتی ہیں۔

ایسے مفید نتائج کو ترقی دے کر، ترقی کا دائرہ وسیع ہوتا ہے، اور کارکردگی اور معیار میں بھی بہتری آتی ہے۔

AI پر مبنی سافٹ ویئر کی ترقی

عام طور پر، ترقی کے لیے کافی وقت اور محنت درکار ہوتی تھی۔ خاص طور پر جب معاشرہ ترقی کرتا ہے اور مختلف چیزیں مزید جدید ہوتی جاتی ہیں، تو نئی چیزیں بنانا مزید مشکل ہوتا جاتا ہے۔

تاہم، جنریٹو AI کی آمد کے ساتھ، یہ صورتحال بدل رہی ہے۔ فی الحال، سافٹ ویئر کی ترقی جنریٹو AI کی اعلیٰ پروگرامنگ صلاحیتوں سے مستفید ہوتے ہوئے ایک ڈرامائی تبدیلی سے گزر رہی ہے۔

ایک مستقبل کا وژن جہاں جنریٹو AI پر مبنی خود مختار ایجنٹ سافٹ ویئر انجینئرز کے طور پر سافٹ ویئر کی ترقی کا مرکز بنیں گے، پہلے ہی حقیقت بن رہا ہے۔

ہم فی الحال ایک عبوری دور میں ہیں۔ اگرچہ ہم ترقی کو مکمل طور پر جنریٹو AI کے سپرد نہیں کر سکتے، لیکن جنریٹو AI کا مہارت سے استعمال سافٹ ویئر کی ترقی کو طاقتور طریقے سے آگے بڑھا سکتا ہے۔

اسے AI پر مبنی سافٹ ویئر کی ترقی کہا جاتا ہے۔

ترقی پر مبنی ترقی

جب جنریٹو AI سافٹ ویئر کی ترقی کو ہموار کرتا ہے، تو یہ نہ صرف حتمی ہدف والے سافٹ ویئر کی ترقی کو زیادہ موثر بنا سکتا ہے، بلکہ ترقی میں مدد کرنے والے سافٹ ویئر کی ترقی کو بھی۔

جیسا کہ پہلے ذکر کیا گیا ہے، ترقی میں معاون نتائج ترقی کے دائرہ کار کو وسعت دیتے ہیں اور کارکردگی اور معیار میں اضافے میں معاون ہوتے ہیں۔ مزید یہ کہ، اگر مؤثر طریقے سے تخلیق کیے جائیں، تو انہیں دیگر ترقیاتی منصوبوں میں بھی دوبارہ استعمال کیا جا سکتا ہے۔

لہذا، سافٹ ویئر کی ترقی کے دوران مفید سافٹ ویئر تیار کرنے سے، بالآخر مجموعی کارکردگی میں اضافہ ہو سکتا ہے، اور ان اثاثوں کو مستقبل کی ترقی کے لیے بھی استعمال کیا جا سکتا ہے۔

روایتی طور پر، اس طرح کے ترقی میں معاون سافٹ ویئر کی ترقی میدان میں عام رواج تھا، لیکن اس کے لیے اپنی ترقی کا وقت اور محنت درکار ہوتی تھی، جس کے لیے محتاط تشخیص اور ہدف پر مبنی نفاذ کی ضرورت تھی۔

جنریٹو AI کا استعمال کرتے ہوئے، چھوٹے، فوری کاموں کو خودکار بنانے کے لیے سادہ سافٹ ویئر تیزی سے بنائے جا سکتے ہیں۔ واضح عمل والے کاموں کے لیے، جنریٹو AI تقریباً بغیر کسی غلطی کے درست پروگرام تیار کر سکتا ہے۔

اس سے سافٹ ویئر کی ترقی کے دوران ترقی میں مدد کرنے والے سافٹ ویئر کو تیار کرنا پہلے سے کہیں زیادہ آسان ہو گیا ہے۔

اور گہری سوچ بچار پر، ایک ترقیاتی انداز ابھرتا ہے جہاں ترقی کے عمل کے دوران مفید ٹولز مسلسل تیار کیے جاتے ہیں، اس طرح ترقی کے طریقہ کار کو ہی تبدیل کر دیا جاتا ہے۔

ہم اسے ترقی پر مبنی ترقی کہیں گے۔

ترقی پر مبنی ترقی کی مشق کرنے کے لیے، اپنے سافٹ ویئر کی ترقی کا معروضی طور پر مشاہدہ کرنے کی عادت درکار ہے تاکہ یہ غور کیا جا سکے کہ کون سے حصے سافٹ ویئر کو سونپے جا سکتے ہیں اور کون سے حصے صرف انسان ہی کر سکتے ہیں، ساتھ ہی ساتھ اس طرح کے ترقی میں معاون سافٹ ویئر کو تیار کرنے کی مہارت بھی۔

مزید برآں، جنریٹو AI کو ان سافٹ ویئر ٹولز میں ضم کیا جا سکتا ہے۔ اسے سافٹ ویئر میں شامل کرنے سے، ایک اسٹینڈ الون جنریٹو AI ایجنٹ کے برعکس، پروسیسنگ کا دائرہ تنگ کیا جا سکتا ہے اور کسی حد تک ایک واضح راستہ متعین کیا جا سکتا ہے۔

جبکہ AI ایجنٹ اشاروں کے ذریعے بھی اسی طرح کے نتائج حاصل کر سکتے ہیں، جنریٹو AI کو شامل کرنے والا سافٹ ویئر پروگراموں اور اشاروں دونوں کو ملا کر درستگی کو آسانی سے بڑھا سکتا ہے۔

اگر ترقی پر مبنی ترقی کی مشق کی جا سکے، تو پہلا پروجیکٹ کے مقابلے میں دوسرا پروجیکٹ معیار اور لاگت دونوں میں بہتری دیکھے گا۔ مزید برآں، ہر بعد کے پروجیکٹ — تیسرے، چوتھے، اور اسی طرح — میں بہتری جاری رہے گی۔

یہ صرف جنریٹو AI کا استعمال کرتے ہوئے سافٹ ویئر تیار کرنے سے بالکل مختلف ہے۔ وقت کے ساتھ ساتھ جن ٹیموں نے محض جنریٹو AI ٹولز میں مہارت حاصل کی ہے اور ان ٹیموں کے درمیان جو ترقی پر مبنی ترقی کی مشق کرتی ہیں، ایک نمایاں فرق ابھرے گا۔

ری فیکٹرنگ سے چلنے والا ٹیسٹ

ٹیسٹ پر مبنی ترقی (TDD) کا ایک تصور ہے، جس میں پہلے تفصیلات کی بنیاد پر ٹیسٹ ڈیزائن کیے جاتے ہیں اور پھر ان ٹیسٹوں کو پاس کرنے کے لیے سافٹ ویئر تیار کیا جاتا ہے۔

ابتدا میں، میں نے بھی سوچا تھا کہ جنریٹو AI خودکار جانچ کے لیے ٹیسٹ پروگرام تیار کرنا آسان بنا رہا ہے، اس لیے ٹیسٹ پر مبنی ترقی قابل عمل ہو سکتی ہے۔

تاہم، جب میں نے ترقی پر مبنی ترقی کی مشق شروع کی، تو مجھے یقین ہو گیا کہ نفاذ سے پہلے ٹیسٹ ڈیزائن کرنے کا طریقہ ہمیشہ مناسب نہیں ہوتا۔

خاص طور پر ویب ایپلیکیشنز جیسے سافٹ ویئر کے لیے، جن میں استعمال کی آسانی اور بصری ڈیزائن جیسے موضوعی پہلو شامل ہوتے ہیں جن کا ایک شخص تعامل کے ذریعے تجربہ کر سکتا ہے، مجھے احساس ہوا کہ سافٹ ویئر کو اصل میں چلانا اور اس کے ساتھ تعامل کرنا تفصیلی جانچ سے زیادہ اہمیت رکھتا ہے۔

اس کی وجہ یہ ہے کہ اگر تعامل کے دوران UI/UX سطح پر نمایاں عدم اطمینان ہو، تو اس بات کا امکان ہے کہ فریم ورک، بنیادی فن تعمیر، ڈیٹا ماڈل، یا استعمال کے معاملات جیسے بنیادی حصوں کو تبدیل کرنے کی ضرورت پڑ سکتی ہے۔

اپنے موجودہ ذاتی سافٹ ویئر ڈویلپمنٹ پروجیکٹ میں، میں نے فنکشنل لچک اور کارکردگی کے مسائل بھی محسوس کیے، جس کے نتیجے میں میں نے دو فریم ورکس کو مختلف فریم ورکس سے بدل دیا۔

ایک حصہ میموری کے استعمال کی خراب کارکردگی کا بھی تھا، جس کے لیے پروسیسنگ کی مکمل اوور ہال کی ضرورت پڑی۔

یہ ان ری فیکٹرنگ کے موقع پر ہے کہ ٹیسٹنگ پہلی بار ایک شعوری غور و فکر بنتی ہے۔

اگر یہ ترقی کے ابتدائی مراحل میں ہو، یا اگر خصوصیات اور تفصیلات ویسے بھی نمایاں طور پر تبدیل ہونے والی ہوں، تو ٹیسٹ کی ضرورت نہیں ہو سکتی۔

تاہم، اگر ترقی کافی حد تک جاری ہے اور جانچنے کے لیے بہت سے آئٹمز ہیں، تو فنکشنل خامیوں یا کمیوں کو یقینی بنانے کے لیے ری فیکٹرنگ کے دوران ٹیسٹ کی ضرورت ہوگی۔

لہذا، اس نقطہ پر ٹیسٹ پروگرام بنانے کا خیال برا نہیں ہے جب ترقی ایک خاص حد تک آگے بڑھ چکی ہو اور ری فیکٹرنگ ضروری ہو جائے۔

اس موقع پر، کلید یہ نہیں کہ تمام کوڈ کے لیے ٹیسٹ بنائے جائیں، بلکہ یہ کہ ٹیسٹ کو ان پختہ حصوں پر مرکوز کیا جائے جن میں مستقبل میں زیادہ تبدیلی کا امکان نہیں ہے، اور اب بھی غیر مستحکم حصوں کو خودکار ٹیسٹ کے بغیر چھوڑ دیا جائے۔

اسے ری فیکٹرنگ پر مبنی ٹیسٹ کہا جا سکتا ہے۔

نتیجہ

جنریٹو AI سافٹ ویئر کی ترقی کو ڈرامائی طور پر تبدیل کر رہا ہے۔

پچھلے مضامین میں، میں نے ایک ہمہ جہت انجینئر بننے کی اہمیت کے بارے میں لکھا تھا، جو روایتی فل سٹیک انجینئر کے کردار سے آگے بڑھ کر مختلف ڈومینز، انفراسٹرکچر، اور عملدرآمد کے ماحول کو یکجا کرنے والے ہمہ جہت سسٹمز تیار کر سکے۔

میں نے ایک مضمون بھی لکھا تھا جس میں یہ تجویز کیا گیا تھا کہ ہم تجربہ اور رویہ پر مبنی ترقی کے دور میں داخل ہو رہے ہیں، جو نفاذ کے ساتھ تفصیلات کو ہم آہنگ کرنے کے روایتی سافٹ ویئر کی ترقی کے نقطہ نظر کے بجائے، سافٹ ویئر کے رویے کے ذریعے صارف کے تجربے کو بہتر بنانے پر توجہ مرکوز کرتا ہے۔

ترقی پر مبنی ترقی اور ری فیکٹرنگ پر مبنی ٹیسٹ بالکل وہی طریقے ہیں جو ہمیں سافٹ ویئر کی ترقی میں ان نئے افق کی طرف لے جائیں گے۔