رانا
محفلین
میں اپنے سوال کی ذرا تفصیلی وضاحت کردوں کیونکہ عنوان سے غلط فہمی ہوسکتی ہے۔
ایک پروگرامر دوران ملازمت جب کوئی پروگرامز بناتا ہے تو وہ دو طرح کے ہوسکتے ہیں۔ ایک تو وہ پروگرامز جن کے لئے اسے ملازمت پر رکھا گیا ہے۔ یا ایسے پروگرامز جن کے لئے وقتا فوقتا کمپنی کی طرف سے ڈیمانڈ آتی رہتی ہے چاہے وہ کسی بھی حوالے سے ہوں۔ ایسے پروگرامز اور ان کے کوڈ تو بہرحال کمپنی کی ملکیت ہوتے ہیں۔ اس میں تو مجھے کوئی کنفیوژن نہیں۔
دوسرے ایسے پروگرامز جن کا آئیڈیا پروگرامر کو خود سے آتا ہے اور وہ اسے اپنے کام میں آسانی پیدا کرنے کے لئے خود سے بناتا ہے۔ کمپنی کی طرف سے کوئی ڈیمانڈ نہیں ہوتی بلکہ کمپنی کے خیال میں بھی ایسا کوئی آئیڈیا نہیں ہوتا۔ میرا سوال اسطرح کے پروگرامز کے حوالے سے ہے کہ کیا پروگرامر ایسے پروگرامز اور ان کے کوڈ کو عام پبلک کے استفادے کے لئے بھی شئیر کرسکتا ہے۔
میرا سوال تو پورا ہوچکا ہے اب ذرا اس سوال کا بیک گراؤنڈ بھی بتادوں کہ مجھے اس سوال کے پوچھنے کی ضرورت کیوں محسوس ہوئی۔ میں جس کمپنی میں ملازمت کررہا ہوں یہاں میں نے چھ ماہ قبل جونئیر ڈاٹ نیٹ ڈیویلپر کے طور پر جوائن کیا تھا۔ یہاں بھی عمومی طور پر Business Logic Layer اور Data Access Layer کی اپروچ ہی استعمال ہوتی ہے۔ جس میں ہر ٹیبل کے لئے ایک اسٹور پروسیجر لکھا جاتا ہے، ایک BLL Class بنائی جاتی ہے اور ایک DAL کلاس بنائی جاتی ہے۔ اس کے لئے ٹیبل میں جتنی زیادہ فیلڈز ہوں اتنا ہی زیادہ ٹائم لگتا ہے۔ مجھے ایک ہفتے کے بعد خیال آیا کہ ہر کلاس کا آرکیٹیکچر تو ایک جیسا ہی ہے تو کیوں نہ ایک یوٹیلیٹی بنادی جائے جو خود سے یہ تینوں چیزیں جنریٹ کردے اسطرح غلطیوں کا امکان بھی ختم ہوجائے گا اور ایک دو گھنٹے کا کام چند سیکنڈز میں ہوجائے گا۔ سو اس خیال پر میں نے کام کیا اور کچھ وقت لگا کر ایک پروگرام بنالیا جس کو صرف ٹیبل کا نام بتانا ہوتا ہے اسکے بعد وہ خود ہی اس ٹیبل کی فیلڈز کے مطابق SP، BLL، اور DAL بنا دیتا تھا۔ اس کے بعد جو مجھے پہلا جینوئن ٹاسک دیا گیا تو وہ میں نے بہت جلدی مکمل کرلیا۔ میرے سینئر کافی حیران ہوئے کہ اس نئے پنچھی نے ستر اسی فیلڈز والے ٹیبل پر اتنی جلدی فارم کیسے کھڑا کردیا کہیں کلاسز میں ڈنڈی تو نہیں ماردی۔ ان کی حیرت دور کرنے کے لئے میں نے انہیں اس یوٹیلیٹی کے بارے میں بتایا۔ بس پھر کیا تھا ایک عدد خالی خولی تعریف سے نوازا گیا اور اب پورے آفس میں اسی یوٹیلیٹی سے کام کیا جاتا ہے۔ اب میرے ایک دوست کو ایک پروجیکٹ بنانا تھا تو اسے کیونکہ علم تھا کہ میں نے ایسی ایک یوٹیلٹی بنائی ہوئی ہے اس نے مانگی ہے۔ تو اب میں کنفیوز ہوں کہ آیا یہ یوٹیلیٹی میں دوسروں سے شئیر کرنے کا مجاز ہوں یا نہیں کیونکہ میں نے یہ آفس ٹائم میں بنائی ہے۔ اس دوست سے تو میں نے یہ کہہ دیا کہ یار تمہیں میں دوبارہ بنادوں گا کیونکہ پہلے اگر ڈیڑھ دن میں بنائی تھی تو اب ایک دن میں بنا سکتا ہوں۔ لیکن پھر خیال آتا ہے کہ اگر میری کنفیوژن دور ہوجائے تو نئے سرے سے محنت کرنے سے بچ جاؤں گا۔
ایک پروگرامر دوران ملازمت جب کوئی پروگرامز بناتا ہے تو وہ دو طرح کے ہوسکتے ہیں۔ ایک تو وہ پروگرامز جن کے لئے اسے ملازمت پر رکھا گیا ہے۔ یا ایسے پروگرامز جن کے لئے وقتا فوقتا کمپنی کی طرف سے ڈیمانڈ آتی رہتی ہے چاہے وہ کسی بھی حوالے سے ہوں۔ ایسے پروگرامز اور ان کے کوڈ تو بہرحال کمپنی کی ملکیت ہوتے ہیں۔ اس میں تو مجھے کوئی کنفیوژن نہیں۔
دوسرے ایسے پروگرامز جن کا آئیڈیا پروگرامر کو خود سے آتا ہے اور وہ اسے اپنے کام میں آسانی پیدا کرنے کے لئے خود سے بناتا ہے۔ کمپنی کی طرف سے کوئی ڈیمانڈ نہیں ہوتی بلکہ کمپنی کے خیال میں بھی ایسا کوئی آئیڈیا نہیں ہوتا۔ میرا سوال اسطرح کے پروگرامز کے حوالے سے ہے کہ کیا پروگرامر ایسے پروگرامز اور ان کے کوڈ کو عام پبلک کے استفادے کے لئے بھی شئیر کرسکتا ہے۔
میرا سوال تو پورا ہوچکا ہے اب ذرا اس سوال کا بیک گراؤنڈ بھی بتادوں کہ مجھے اس سوال کے پوچھنے کی ضرورت کیوں محسوس ہوئی۔ میں جس کمپنی میں ملازمت کررہا ہوں یہاں میں نے چھ ماہ قبل جونئیر ڈاٹ نیٹ ڈیویلپر کے طور پر جوائن کیا تھا۔ یہاں بھی عمومی طور پر Business Logic Layer اور Data Access Layer کی اپروچ ہی استعمال ہوتی ہے۔ جس میں ہر ٹیبل کے لئے ایک اسٹور پروسیجر لکھا جاتا ہے، ایک BLL Class بنائی جاتی ہے اور ایک DAL کلاس بنائی جاتی ہے۔ اس کے لئے ٹیبل میں جتنی زیادہ فیلڈز ہوں اتنا ہی زیادہ ٹائم لگتا ہے۔ مجھے ایک ہفتے کے بعد خیال آیا کہ ہر کلاس کا آرکیٹیکچر تو ایک جیسا ہی ہے تو کیوں نہ ایک یوٹیلیٹی بنادی جائے جو خود سے یہ تینوں چیزیں جنریٹ کردے اسطرح غلطیوں کا امکان بھی ختم ہوجائے گا اور ایک دو گھنٹے کا کام چند سیکنڈز میں ہوجائے گا۔ سو اس خیال پر میں نے کام کیا اور کچھ وقت لگا کر ایک پروگرام بنالیا جس کو صرف ٹیبل کا نام بتانا ہوتا ہے اسکے بعد وہ خود ہی اس ٹیبل کی فیلڈز کے مطابق SP، BLL، اور DAL بنا دیتا تھا۔ اس کے بعد جو مجھے پہلا جینوئن ٹاسک دیا گیا تو وہ میں نے بہت جلدی مکمل کرلیا۔ میرے سینئر کافی حیران ہوئے کہ اس نئے پنچھی نے ستر اسی فیلڈز والے ٹیبل پر اتنی جلدی فارم کیسے کھڑا کردیا کہیں کلاسز میں ڈنڈی تو نہیں ماردی۔ ان کی حیرت دور کرنے کے لئے میں نے انہیں اس یوٹیلیٹی کے بارے میں بتایا۔ بس پھر کیا تھا ایک عدد خالی خولی تعریف سے نوازا گیا اور اب پورے آفس میں اسی یوٹیلیٹی سے کام کیا جاتا ہے۔ اب میرے ایک دوست کو ایک پروجیکٹ بنانا تھا تو اسے کیونکہ علم تھا کہ میں نے ایسی ایک یوٹیلٹی بنائی ہوئی ہے اس نے مانگی ہے۔ تو اب میں کنفیوز ہوں کہ آیا یہ یوٹیلیٹی میں دوسروں سے شئیر کرنے کا مجاز ہوں یا نہیں کیونکہ میں نے یہ آفس ٹائم میں بنائی ہے۔ اس دوست سے تو میں نے یہ کہہ دیا کہ یار تمہیں میں دوبارہ بنادوں گا کیونکہ پہلے اگر ڈیڑھ دن میں بنائی تھی تو اب ایک دن میں بنا سکتا ہوں۔ لیکن پھر خیال آتا ہے کہ اگر میری کنفیوژن دور ہوجائے تو نئے سرے سے محنت کرنے سے بچ جاؤں گا۔