آپ نے دستاویزات پڑھنا چھوڑ دیں، اب آپ سسٹم کو نہیں سمجھتے
میں نے یونیورسٹی میں کمپیوٹر سائنس نہیں پڑھی۔ میں نے جیو فزکس (geophysics) پڑھی۔
میں نے پڑھ کر سافٹ ویئر سیکھا۔ میں نے ڈاکومنٹیشن (documentation)، سورس کوڈ (source code) اور GitHub issues پڑھے۔ میں نے پرانے بلاگ پوسٹس اور RFC تھریڈز پڑھے۔ میں نے کسی بوٹ کیمپ (bootcamp) کا استعمال نہیں کیا۔ میں نے صرف ایک براؤزر اور خام مواد (raw material) کا استعمال کیا۔
جب میں نے Cloudflare Workers سیکھا، تو میرے پاس کوئی کورس نہیں تھا۔ میرے پاس صرف ڈاکومنٹیشن اور چینج لاگ (changelog) تھے۔ رات کے ایک بجے ایک خراب ڈیپلائمنٹ (deployment) کو ٹھیک کرنے کے لیے میں نے بائنڈنگ کنفیگریشن (binding configuration) کو تین بار پڑھا۔ مجھے برسوں پرانے GitHub تھریڈز میں جوابات ملے۔
میں نے مواد کے ساتھ تب تک بیٹھے رہنے سے سیکھا جب تک کہ وہ سمجھ میں نہ آ گیا۔
اب، میں ایک نیا رجحان دیکھ رہا ہوں۔ لوگ یہ نہیں پوچھتے کہ کوئی حصہ الجھن کا باعث کیوں ہے۔ وہ صرف 'X' کا کوڈ مانگتے ہیں۔ وہ رویہ (behavior) سمجھنے کے لیے سورس کوڈ کا سراغ نہیں لگاتے، بلکہ وہ صرف یہ پوچھتے ہیں کہ ایک فنکشن کیا کرتا ہے۔
پہلے مقصد فہم (comprehension) ہوتا تھا۔ اب مقصد آؤٹ پٹ (output) ہے۔ لوگ اسے کارکردگی (efficiency) کہتے ہیں، لیکن حقیقت میں یہ قرض (debt) ہے۔
آپ یہ جانے بغیر کہ 'half-open state' کیا ہے، ایک سرکٹ بریکر (circuit breaker) تیار کر سکتے ہیں۔ یہ آپ کے ٹیسٹ میں کام کرے گا۔ لیکن چھ ہفتے بعد بھاری لوڈ (heavy load) کے دوران یہ پروڈکشن (production) میں ناکام ہو جائے گا۔ آپ اس لیے ناکام ہوتے ہیں کیونکہ آپ کے پاس کوئی ذہنی ماڈل (mental model) نہیں ہوتا۔ آپ کو 'کیا' تو مل گیا لیکن 'کیوں' نہیں ملا۔
'کیوں' ہی وہ واحد حصہ ہے جو اہمیت رکھتا ہے۔
ڈاکومنٹیشن پڑھنا ایک ذہنی ماڈل بناتا ہے۔ آپ فٹ نوٹس (footnotes) میں فائدے اور نقصانات (tradeoffs) اور ایج کیسز (edge cases) کو دیکھ سکتے ہیں۔ پڑھتے وقت آپ کو جو دشواری محسوس ہوتی ہے، اصل میں وہیں سے سیکھنے کا عمل شروع ہوتا ہے۔
جب میں نے Bookmark Brain بنایا، تو مجھے Cloudflare Vectorize کو سمجھنا پڑا۔ میں نے صرف API کا استعمال نہیں کیا۔ میں نے ایمبیڈنگ ڈائمینشنز (embedding dimensions)، انڈیکس رویہ (index behavior) اور کوئری ڈسٹنس میٹرکس (query distance metrics) کا مطالعہ کیا۔ میں نے HNSW پیپر پڑھا۔ میں الجھن کے ساتھ تب تک بیٹھا رہا جب تک وہ علم میں نہ بدل گئی۔
وہی علم میرے سسٹمز کو پروڈکشن میں چلائے رکھتا ہے۔ اگر رات کے 2 بجے کچھ خراب ہو جائے، تو میرے پاس رہنمائی کے لیے ایک ذہنی ماڈل موجود ہوتا ہے۔ اگر میں صرف پرامپٹس (prompts) کا استعمال کرتا، تو میرے پاس صرف ایک ڈیمو (demo) ہوتا، کوئی ایسا سسٹم نہیں جس کے بارے میں میں منطقی طور پر سوچ سکوں۔
یہ انجینئرنگ میں ایک فرق پیدا کرتا ہے۔
- کوڈ ریویوز (code reviews) میں: ایک ڈویلپر فوری طور پر N+1 کا مسئلہ دیکھ لیتا ہے کیونکہ اس نے ORM کی ڈاکومنٹیشن پڑھی ہوتی ہے۔ دوسرا ڈویلپر اسے نظر انداز کر دیتا ہے کیونکہ اس نے صرف کوڈ جنریٹ کیا ہوتا ہے۔
- آرکیٹیکچر (architecture) میں: ایک ڈویلپر Kafka partitions اور offsets کو سمجھتا ہے۔ دوسرا صرف اصطلاحات جانتا ہے لیکن اس کے پاس ڈھانچہ (structure) نہیں ہوتا۔
- ڈیبگنگ (debugging) میں: ڈیبگنگ آپ کے ذہنی ماڈل کا نتیجہ ہوتی ہے۔ اس کے بغیر، آپ صرف چیزیں تبدیل کر رہے ہوتے ہیں اور بہتر ہونے کی امید کر رہے ہوتے ہیں۔
AI پوری آرکیٹیکچر کو نہیں سنبھال سکتا۔ یہ آپ کے کوڈ بیس (codebase) کے وسیع منظر (big picture) کو نہیں دیکھ سکتا۔ میں نے AI سے تیار کردہ کیشنگ لیئرز (caching layers) کو ہر ٹیسٹ پاس کرتے دیکھا ہے اور پھر پروڈکشن میں کریش ہوتے دیکھا ہے کیونکہ کوئی بھی انسان 'race conditions' کو نہیں سمجھ سکا تھا۔
یہ فرق AI کے استعمال کے بارے میں نہیں ہے۔ یہ اس بارے میں ہے کہ آپ اسے کیسے استعمال کرتے ہیں۔
کیا آپ اسے فائدے اور نقصانات (tradeoffs) کو سمجھنے کے لیے استعمال کرتے ہیں؟ یا آپ اسے سمجھنے سے بچنے کے لیے استعمال کرتے ہیں؟
بہترین ڈویلپرز صرف تیزی سے کام نہیں کر رہے ہوتے۔ وہ اب بھی چینج لاگز اور سورس کوڈ پڑھ رہے ہوتے ہیں۔ وہ ایک ایسا ذہنی ماڈل بنا رہے ہوتے ہیں جس کی نقل پرامپٹنگ (prompting) کے ذریعے نہیں کی جا سکتی۔
ڈاکومنٹیشن پڑھنا ایک مشق ہے۔ یہ آپ کی پیداواری صلاحیت (productivity) پر کوئی ٹیکس نہیں ہے۔ یہ وہ چیز ہے جو سسٹم کے ٹوٹنے پر آپ کو ناقابلِ متبادل بناتی ہے۔
اگر آپ پڑھنا چھوڑ دیں گے، تو آپ سوچنا بھی چھوڑ دیں گے۔ آپ کو اس کا احساس تب تک نہیں ہوگا جب تک آپ پروڈکشن میں ہوں گے اور آپ کے پاس سہارا لینے کے لیے کچھ نہیں ہوگا۔
Source: https://dev.to/dannwaneri/you-stopped-reading-the-docs-now-you-dont-understand-the-systems-go1
Optional learning community: https://t.me/GyaanSetuAi
