یہ ہماری عالمی جاوا کمیونٹی کی کامیابی کی کہانی کا ترجمہ ہے۔ ایلیکس نے کورس کے روسی زبان کے ورژن پر جاوا سیکھا، جسے آپ CodeGym پر انگریزی میں پڑھتے ہیں۔ یہ آپ کے مزید سیکھنے کے لیے تحریک بن جائے اور شاید ایک دن آپ اپنی کہانی ہمارے ساتھ شیئر کرنا چاہیں گے :)

تعارف

میں پروگرامنگ میں کیسے آیا اس کے بارے میں تھوڑا سا۔ میں تربیت کے لحاظ سے ایک استاد اور ماہر نفسیات ہوں، اور 5 سال سے میں اپنے پیشے پر کامیابی سے عمل کر رہا ہوں۔ لیکن مختلف وجوہات کی بنا پر، میں تیزی سے دوسرے ملک جانے کے بارے میں سوچ رہا ہوں۔ اور چونکہ دوسرے ممالک میں زبان اور ضابطے مختلف ہیں، اس لیے میں دوبارہ سنجیدہ تربیت کے بغیر ایک جیسا پیشہ ور نہیں بن سکتا۔ اس لیے میں نے آگے بڑھنے اور کامیاب ہونے کے لیے آسان، دلچسپ طریقے تلاش کرنا شروع کر دیا۔ یہ کیسا تھا؟  یا میرا پہلا پروجیکٹ - 1میں نے بطور ٹیٹو آرٹسٹ اپنا ہاتھ آزمایا (اس کے لیے بنیادی طور پر زبان کے علم کی ضرورت نہیں ہے)، لیکن یہ ایک اور دن کی کہانی ہے۔ پھر میرے ساتھی دوست نے مجھے CodeGym سے متعارف کرایا۔ مجھے ابتدائی طور پر ایک گیم کھیل کر اور اتنی معمولی قیمت پر مکمل پروگرامر بنانے کے وعدوں پر شک تھا۔ لیکن پھر مجھے سالگرہ کی کچھ رقم ملی ("فیملی ٹیکس" سے مشروط نہیں)، اور مجھے WOW اور CodeGym کے درمیان انتخاب کا سامنا کرنا پڑا... ٹھیک ہے، بروقت رعایت کی بدولت، ترازو صحیح سمت میں نکلا، اور میں حاضر ہوں۔ جیسا کہ ہم سب کو پہلے ہی معلوم ہونا چاہیے، CodeGym 90% خالص مشق ہے۔ آپ کاموں کو حل کرنا سیکھتے ہیں۔ آپ انٹرنیٹ پر اس علم کو تلاش کرنا سیکھتے ہیں جس کی آپ کو کمی ہے۔ یہ سب اچھا ہے، لیکن 15 لیولز کے لیے میں اس احساس کو متزلزل نہیں کر سکتا تھا کہ میں کوئی ایسی چیز کھو رہا ہوں جو میرے لیے تصویر کو مکمل کر دے۔ میں نے GeekBrains میں شامل ہونے کے بارے میں سوچا، لیکن (شاید خوش قسمتی سے) اسی دوست نے مجھے بروقت روکا اور مجھے Udemy سے ملوایا۔ جب میں نے علم کے اس ذخیرے کو کھولا تو میں اپیلوں کے ساتھ چلا گیا: " Psst، دوست، کیا آپ نئے ہیں؟" آپ کے لیے رعایت ہے... صرف 3 دن کے لیے — اس موقع سے محروم نہ ہوں! "بعد میں یہ واضح ہو گیا کہ ہمیشہ چھوٹ ملتی ہے، لیکن یہ بات نہیں ہے۔ میں نے فوری طور پر دو کورسز کے ساتھ ایک پیکیج خریدا: جاوا سے لے کر پرو تک اور کچھ ایسا ہی اینڈرائیڈ کے لیے۔ اور یہیں سے ہماری کہانی شروع ہوتی ہے۔

کامیابی یا ناکامی؟

جیسا کہ میں نے Android کورس کے ذریعے کام کیا، مجھے اپنے نئے علم کی بنیاد پر ایک پروجیکٹ بنانے کے لیے ہوم ورک ملا۔ میں اس قسم کا شخص ہوں جو یہ مانتا ہے کہ کچھ سادہ یا عام طریقے سے کرنا ایسا ہی ہے جیسے بالکل نہ کرنا۔ لہذا، میں نے فوری طور پر اپنی زندگی کو پیچیدہ کرنا شروع کر دیا. میں اس شخص کی طرف متوجہ ہوا جسے میں جانتا ہوں کہ کس کے پاس سب سے زیادہ ترقی یافتہ اور واضح تخیل ہے۔ یہ میری پیاری بیوی ہے (ہاں، وہ بھی یہ مضمون پڑھے گی)۔ اس نے جانوروں کی تصاویر کے ساتھ ایک ایپ بنانے کا مشورہ دیا، جس پر کلک کرنے پر جانوروں کی آوازیں آتی ہیں۔ یہ ایک بہت اچھا خیال تھا، لیکن پھر بھی بہت آسان تھا۔ اس تجویز کو بنیاد بنا کر میں نے استدلال شروع کیا:
  • یہ ایپ فلف سے زیادہ ہونی چاہیے (ہنسنے اور بھول جانے والی چیز)۔ میں چاہتا ہوں کہ اس کی قدر ہو۔ مثلاً کچھ سکھا کر۔
  • اسے جانوروں کے ساتھ حروف تہجی ہونے دیں۔ لیکن نہ صرف کوئی حروف تہجی بلکہ انگریزی حروف تہجی!
  • اور صرف جانور ہی نہیں، بلکہ نایاب جانور جنہیں بہت کم لوگ جانتے ہیں، تاکہ اپنے افق کو وسعت دے سکیں!
  • اور حرکت پذیری، حروف کے ناموں کی آڈیو ری پروڈکشن، اور جانوروں کے نام انگریزی اور روسی میں ہونے چاہئیں!
اب اسی کو میں ہوم ورک کہتا ہوں (میں یہ بتانا بھول گیا کہ CodeGym سے پہلے میں بنیادی طور پر پروگرامنگ سے ناواقف تھا۔ اور اس لمحے سے جب میں نے پراجیکٹ شروع کیا تھا تب تک میں نے ویب سائٹ کو فعال طور پر استعمال کرنے کے 3-4 ماہ سے بھی کم وقت گزرا تھا۔ لہذا، اگر آپ اس علاقے میں ایک تجربہ کار ہیں اور آپ سوچ رہے ہیں، " Pff... کیا اصل ورژن سے کچھ بدلا؟ "، میں آپ کو یقین دلاتا ہوں، ہاں، یہ بدل گیا)! مجھے پہلی مشکل کا سامنا کرنا پڑا ، عجیب طور پر، پروجیکٹ کو شروع کرنا۔ جیسا کہ یہ پتہ چلتا ہے، مصنفین صرف وہی نہیں ہیں جو "رائٹرز بلاک" کا تجربہ کرتے ہیں... لیکن چونکہ میں ایک ماہر نفسیات ہوں، مجھے اپنے مسئلے کا حل معلوم تھا۔ آپ کو صرف کچھ کرنا شروع کرنے کی ضرورت ہے۔ کم از کم ایک چھوٹا سا قدم اٹھائیں، اور پھر رکیں نہیں۔ تو میں نے ایک خلاصہ خط کی کلاس کے ساتھ شروعات کی ۔ اس کلاس میں کچھ فیلڈز تھے اور اس کے بعد مختلف طریقے رکھنے پڑیں گے۔ حقیقت میں، مجھے کوئی اندازہ نہیں تھا کہ میں اس کے ساتھ کیا کروں گا، لیکن مجھے کچھ کرنا تھا۔ پھر، میں نے ہر حرف کے لیے کلاسز بنائے، انہیں تجریدی کلاس کا وارث بنا کر۔ اس میں کافی وقت لگا، اور اس پر میرا پہلا دن کام ختم ہوگیا۔ اگلے دن میں نے پروجیکٹ کو ڈیلیٹ کر دیا اور دوبارہ شروع کر دیا۔ میں نے ابھی یہ یاد رکھنے کے لیے پروجیکٹ کھولا ہے کہ جس لمحے میں نے اوپر بیان کیا ہے تب سے کیا بدلا ہے۔ اور میں یہ کہنا چاہوں گا کہ جب میں نے ختم کیا تو سب کچھ بہتر لگ رہا تھا، لیکن نہیں۔ ہر خط کے لیے واقعی ابھی بھی کلاسز باقی ہیں... یہ خاص طور پر اس حقیقت کی وجہ سے تھا کہ مجھے یہ ہوم ورک تقریباً اینڈرائیڈ کورس کے بالکل شروع میں ہی تفویض کیا گیا تھا، اور مجھے خود ہی ایک خط کے درمیان تعلقات کی پیچیدگیوں کا پتہ لگانا تھا۔ سرگرمی (فعال ونڈو، یا اس طرح کی کوئی چیز) کلاس کے ساتھ۔ اور میں نے کسی مخصوص طبقے کو کسی مخصوص سرگرمی کے ساتھ منسلک کرنے کے اس اناڑی طریقے کے علاوہ کچھ نہیں پایا اور نہ ہی سوچا۔ ویسے بھی پروگرامنگ کے اصولوں میں سے ایک (دوہرانے سے گریز کریں) کی 26 بار خلاف ورزی کی گئی۔ سب سے پہلے، میں نے مکمل طور پر (یہ مجھے لگتا ہے) پہلے دو حروف کو نافذ کیا، دو مینوز پر مشتمل ایک کھردرا UI بنایا (ایک عام مینو جو فعالیت کو بڑھاتے وقت ضروری ہو سکتا ہے، اور مشمولات کا ایک جدول، جس سے آپ کسی بھی جگہ پر جا سکتے ہیں۔ حروف کی) مجھے پروگرامنگ میں واقعی زیادہ دشواری کا سامنا نہیں کرنا پڑا۔ جیسے ہی میں اپنے آزاد پروجیکٹ کو نافذ کر رہا ہوں، بہت سی چیزیں، جیسے کہ کلاسز، طریقوں، وغیرہ کے درمیان تعلقات واضح ہو گئے اور پروجیکٹ خود ان تمام معلومات کو مضبوط کرنے کے لیے بہترین مشق بن گیا جو میں نے نہ صرف اینڈرائیڈ، بلکہ جاوا کے بارے میں بھی حاصل کیا تھا۔ دوسری مشکل تھی۔کہ خط اسی وقت بدل گیا جب اس کا نام سنا گیا۔ ہموار منتقلی (شیڈنگ) نے ایسا محسوس کیا جیسے آواز تصویر سے پہلے ہے۔ لیکن جب میں نے آواز میں تاخیر کی، تو پورا دھاگہ منجمد ہو گیا — منتقلی صرف تاخیر کی مقدار کے باعث ملتوی کر دی گئی، اور بعد میں وہی ناپسندیدہ اثر پیدا ہوا۔ پھر میں نے اپنے پروگرام کو ملٹی تھریڈ بنانے کا جرات مندانہ فیصلہ کیا! میں نے صوتی پلے بیک کو ایک الگ تھریڈ میں منتقل کیا، اس میں تاخیر کے ساتھ جو تصویر کے لوڈ ہونے کے لیے کافی لمبا تھا۔ یہ جہاں تک ملٹی تھریڈنگ چلا گیا تھا، لیکن مجھے یہ کہتے ہوئے فخر تھا کہ میں ایک ملٹی تھریڈ ایپ لکھ رہا ہوں۔ آخری مشکل مناسب مواد کا انتخاب کرنا تھا۔ کیا آپ نے سوچا کہ انگریزی میں حرف X کے لیے کوئی جانور نہیں ہے (یہ پتہ چلتا ہے کہ یہ کرتا ہے)؟ مجھے 26 جانوروں کی شناخت کرنی تھی اور ان کی تصاویر اور آوازیں تلاش کرنی تھیں، اور 26 حروف اور 26 جانوروں کے نام ریکارڈ کرنے تھے۔ اگر میں کسی ٹیم میں کام کر رہا ہوتا تو ظاہر ہے کہ میں اس کام کا حصہ کسی اور کے لیے چھوڑ دیتا۔ ایسے نیرس لمحات کام کرنے کی خواہش کو مار ڈالتے ہیں اور جب خواہش نہ ہو تو بہانے بن جاتے ہیں۔ ویسے بھی، اس مرحلے میں تقریباً 2 ہفتے لگے (میں نے یہ پروجیکٹ اپنے فارغ وقت میں کیا اور جب میرے پاس کوئی بہانہ نہیں تھا)۔ اس منصوبے کو شروع ہونے کے تقریباً 3-4 ہفتوں بعد مکمل قرار دیا گیا۔

کیا پروگرامنگ کا مطالعہ جاری رکھنا اس کے قابل ہے؟

اس کے بعد مایوسی پھیل گئی۔ سب سے پہلے، مجھے کورس پر اپنا ہوم ورک شائع کرنے کی اجازت نہیں تھی۔ میں نے کام کیا اور دکھاوے کے لیے ایک ٹن کوشش کی، لیکن مجھے اجازت نہیں دی گئی۔ دوسرا، میری ایپ نے ایمولیٹر اور میرے فون پر بالکل ٹھیک کام کیا۔ میں نے جو کچھ کرنے کا منصوبہ بنایا تھا، میں نے اینیمیشن کو نافذ نہیں کیا، کیونکہ میں نے تھوک دیا اور فیصلہ کیا کہ جب میں کورس کے متعلقہ اسباق سے گزر چکا ہوں تو میں اسے ختم کروں گا۔ لیکن جب میں نے درخواست کی تقسیم کے بارے میں سوچنا شروع کیا تو مجھے ایک دلچسپ مسئلہ درپیش آیا۔ یہ چیک کرنے کے لیے کہ آیا میری ایپ مختلف اسکرینوں اور اینڈرائیڈ کے مختلف ورژنز کے لیے آپٹمائزیشن تھی یا نہیں، دوسرا فون اور ٹیبلیٹ استعمال کرنے کے بعد، میں ایک نامعلوم غلطی کا شکار ہو گیا۔ ایک خط پر سوئچ کرتے وقت پروگرام صرف بند ہوجاتا ہے۔ میں نے مسئلے کی جڑ تلاش کرنے کی کوشش کی، نوشتہ جات کا جائزہ لیا، جو جاوا کے مختصر استثناء کے مقابلے میں، اور بھی زیادہ hocus-pocus کی طرح لگتا تھا۔ انٹرنیٹ نے میری مدد نہیں کی۔ ایک طرف، میں نے ایک کام کرنے والی ایپ بنائی جسے میرے بچے کھیلنا پسند کرتے ہیں۔ دوسری طرف، یہ صرف میرے فون پر کام کرتا ہے۔ اس سے مجھے ہنسی آتی ہے۔ بے شک، میں پریشان تھا، لیکن اس پر غور کرتے ہوئے، میں نے نتیجہ اخذ کیا کہ میں نے کھوئے سے زیادہ حاصل کیا ہے:
  • میں اپنے کام کی تنقید سے نمٹنے میں بہتر ہو گیا ہوں۔
  • مجھے سافٹ ویئر ڈیزائن میں علم اور تجربے کی قدر کا احساس ہوا۔
  • میں نے اپنے پروگرامنگ کی خود اعتمادی کو بڑھایا۔
  • میں نے ڈیزائن کے نمونوں اور ری فیکٹرنگ کی بنیادی باتوں کا مطالعہ کرنے کی ضرورت کو محسوس کیا۔
  • اور جیسا کہ میں نے کہا، اب میرے پاس اپنی ایپ ہے، جو کسی اور کے پاس نہیں ہے اور شاید کبھی نہیں ہوگی۔ =)
"میں جانتا ہوں کہ میں کچھ نہیں جانتا"۔ اس طرح کے تعلیمی منصوبوں کو لاگو کرنے سے، آپ کے پاس اس بات کا تجزیہ کرنے کا ایک بہترین موقع ہے کہ آپ کیا جانتے ہیں کہ آپ کے علم میں کہاں خلا ہے، اور آگے بڑھنے کے طریقوں کی نشاندہی کریں۔ اگر آپ سمجھتے ہیں کہ آپ کی زندگی کے ایک طویل مرحلے میں آپ کی تمام کوششوں نے آپ کو 0 سے +0.001 پر منتقل کر دیا ہے تو کیا پروگرامنگ کا مطالعہ جاری رکھنا مناسب ہے؟ میرے لیے، جواب ہاں میں تھا۔ آپ کے بارے میں کیا خیال ہے؟