কোডিং করতে গিয়ে আটকে গেলে কি করবেন?

এই পোস্টে আমরা আলোচনা করবো যেকোন সময় কোডিং করতে গিয়ে আটকে গেলে কিভাবে সহজেই বের হতে পারবেন সমস্যার বেড়াজাল হতে।

ইনবক্সে এমন সমস্যার কথা অনেকেই বলেন,

‍‍ভাই, Ajax নিয়ে সমস্যায় আছি। গত কয়েকদিন ধরে আটকে আছি। কোনভাবেই সমস্যাটার সমাধান করতে পারতেসি না। ভিডিওতে যেভাবে করেছে, আমিও সেভাবেই করেছি, তাও হচ্ছে না। একটু হেল্প করেন। — জনৈক ভাই

আবার দেখেন নিচের সমস্যা নিয়ে একটা পোস্ট,

একটি জনপ্রিয় ফাউন্ডেশনের ফোরাম হতে নেয়া

এই সমস্যা পড়ার পর আপনার জবাব কি হতে পারে? আপনি নিশ্চয়ই লেগে পড়বেন তার সমস্যা সমাধানের জন্য? কারণ আপনি হয়তো তার মনের কথা পড়ার আশ্চর্য ক্ষমতার অধিকারী? তাইনা? এবং উনিও হয়তো জানেন যে আপনাকে এতটুকু বললেই হবে, আপনি বুঝে নিবেন তার ঠিক কোথায় সমস্যা এবং সেই সমস্যারও জবাব দিয়ে দিবেন। কারন, শত হলেও সে আপনাকে সাহস জুগিয়ে একটা প্রশ্ন জানতে চেয়েছে, তাকে ত এখন আর কিছু বলা যায়না। জানতেই বা চায় কয়জন।

না, আসলে আপনি তাকে পরক্ষণেই একটা প্রশ্ন করবেন সেটা হলো,

ভাই এভাবে ত বলতে পারতেসি না, একটা স্কিনশট কিংবা আপনার কোডটা যদি jsbin বা codepen এ দেন, তাহলে দেখে বলতে পারতাম।

প্রোগ্রামিং হলো অজানার উদ্দেশ্যে ভ্রমন। আপনি Ajax শিখেন বা Parallax শিখেন, বড় কোন এপপ বানান, কিংবা ছোট একটা স্ক্রিপ্ট লেখেন, যেটাই করেন, কোন না কোন জিনিসের ঘাটতি থাকবেই আপনার। এমন কিছু অবশ্যই পাবেন যেটা আপনি জানেন না। আপনি সবসময়ই নতুন কিছু শিখবেন, জানবেন, বুঝবেন।

পরের বার আপনি আটকে গেলে নিচের স্টেপগুলা মানতে পারেন।

  • Read (পড়বেন)
  • Search (খুঁজবেন)
  • Ask (প্রশ্ন করবেন)

এগুলো কিভাবে করলে আপনার সমস্যার সমাধান পাবেন, সেটা নিয়ে এখন আলোচনা করবো।

Read (পড়বেন)

কথা হলো, কি পড়বেন? কেনই বা পড়বেন?

আপনি হয়তো কোন একটা সমস্যার সমাধান জানেন, হয়তো বুঝতে পারতেসেন স্টেপগুলো, কিন্তু বাস্তবে সেটা কিভাবে কোড করবেন সেটা বুঝতে পারতেসেন না, তখন আপনার প্রথম কাজটা হবে ডকুমেন্টেশন ভালোমত পড়া। Ajax নিয়ে আটকে থাকলে MDN এ সেটা নিয়ে গাইডলাইন পাবেন, ইউটিউবে ভিডিও ত পাবেনই। প্যারালাক্স নিয়ে আটকে গেলে সেটা নিয়ে গাইডলাইন পাবেন।

যদি আপনি সমস্যা পেতে থাকেন, যদি আপনার কোড বারবার Error কিংবা Throw দেখায়, পড়ে দেখেন সমস্যাটায় কি বলতেসে। পড়েন, ও তো সমস্যাটা বলেই দিচ্ছে যে এটা সমস্যা। আর যদি না বলে দেয়, তাহলে console.log(), console.debug(), debugger; এইসব ব্যবহার করেন।

পড়তে থাকেন, চেষ্টা করতে থাকেন। কিন্তু এরপরও আটকে গেলে, এবার চলে আসেন গুগলে। গুগল আছে আপনার জন্য।

Search (খুঁজবেন)

ভাই, কি লিখে সার্চ করবো সেটাই ত জানিনা।

আপনি যেন সব কিছু শিখে দুনিয়ায় আসছেন? শুনেন, গুগল হইলো আপনার বেস্ট ফ্রেন্ডের মত, যদি এতদিনে না হয়ে যায়, তাহলে হয়ে যাবে। কখনো কখনো সাহায্য চাইলেই পেয়ে যাবেন, আর কখনো একটা ছোট সাহায্যের জন্য সারাদিন গুতাইতে হবে।

শুরুর দিকে, আপনার প্রচুর সমস্যা হবে। একটা সমস্যার সমাধান আপনি সারাদিন খুজেও পাবেন না। গুগল তন্য তন্য করে ফেলবেন, কিন্তু সমাধান পাবেন না। এখন কথা হলো, এভাবে তন্য তন্য না করে, আপনাকে যা করতে হবে, এতদিন যা শিখসেন, এবং গুগল হতে যা পাচ্ছেন, সেটা একসাথে মেলাতে হবে।

আরো Specific হতে হবে। আসেন একটা উদাহরণ দিই। ধরি আপনি একটা ছোট Weather App বানাচ্ছেন। তো, ওটায় Ajax আছে যা আপনি কোনভাবেই আপনার এপে আনতে পারছেন না। এখন কি করবেন তাহলে? গুগলে সার্চ করবেন অবশ্যই!

Weather App বানাইতে পারিনা, গুগল বন্ধু, সাহায্য করো
Ajax দিয়া weather app বানাবো, গুগল দোস্ত, কই তুমি?

এভাবে সার্চ করলে হবেনা, আরো গভীরে যেতে হবে।

সমস্যার ভিতরে যেতে হবে। গভীরে যেতে হবে। গুগল তবেই সলুশন এনে দিতে পারবে।

আরেকটা উদাহরণ দিই, ধরি আপনি একটা ছোট sentence কে array তে রূপান্তর করতে চাচ্ছেন। গুগল করলেন, “I want to convert sentence to array”.

ফলে কি হলো? আপনাকে গুগল Java, Python, Perl, Javascript সহ সব ব্যাপারেই উত্তর এনে দিলো। কিন্তু আপনি ত করতেসেন শুধু Python কিংবা Javascript. গুগল সেটা কিভাবে বুঝবে?

এইটার একটা সহজ উপায় হলো এভাবে লেখা,

[programming language] [keywords]

কিংবা,

[programming language] [verb] [keywords]

এইভাবে আমরা যদি গুগলে সার্চ করি,

তাহলে দেখেন, আমরা কত কাছাকাছি রেজাল্ট পেলাম। এই অবস্থায় আমি প্রথম কয়েকটা রেজাল্টে ক্লিক করতাম, আর জবাব না পেলে আরো গভীরভাবে সার্চ করতাম।

গুগল সার্চের বেশিরভাগ রেজাল্টেই পাবেন MDN, আর Stackoverflow. ওখানে গেলে দেখবেন প্রশ্ন, উত্তর এবং কমেন্টগুলোতে লেখা পাবেন এইটা করা ভালো, ওইটা করা ভালো না। তখন আপনি নতুন কিছু শিখতে পারলেন এবং একই সাথে কাজে লাগাতে পারলেন।

যেকোন কিছু ভিন্ন ভিন্নভাবে চিন্তা করবেন, একটু আলাদাভাবে চিন্তা করবেন। আপনি একটা সমস্যা তৈরীর সময় যেভাবে ভেবেছেন, সেভাবে সবসময় ভাবলে সমস্যার সমাধান কখনোই হবেনা। এজন্যই থমাস এডিসন বলেছেন,

“ আমি বলবনা আমি ১০০০ বার হেরেছি, আমি বলবো যে আমি হারার ১০০০ টি কারণ বের করেছি॥ ” — টমাস আলভা এডিসন।

Ask (প্রশ্ন করবেন)

ধরি কোথাও নেই আপনার সমস্যার সমাধান, হতেই পারে। হতে পারে আপনি এমন কোন লাইব্রেরী নিয়ে কাজ করতেসেন যেটা নিয়ে তেমন কেউ জানেনা। হতে পারে আপনি কোন উদাহরণই বুঝতেসেন না। হতেই পারে এমনটা। এই অবস্থায় কি করবেন? অবশ্যই প্রশ্ন করবেন। কিন্তু কাকে?

  • ফ্রেন্ডদের (যারা কোড করে)
  • মিটআপ গ্রুপগুলোতে
  • বিভিন্ন গ্রুপ চ্যাটে
  • বিভিন্ন ফোরাম, গ্রুপ, স্টাক ওভারফ্লো তে

প্রশ্ন করার আগে অবশ্যই খেয়াল রাখবেন যে আপনি Read আর Search করেছেন কিনা। মানে না পড়ে, না করে, প্রশ্ন করলে কোন লাভই হবেনা। না পারবেন কিছু শিখতে, না পারবেন কিছু বুঝতে।

আবার প্রশ্নের ধরনের দিকেও খেয়াল রাখতে হবে।

  • ভাই, একটা সমস্যা
  • আপু, এই এপপটা কাজ করতেসে না, কি করবো?
  • আপু, এইটায় খালি এরর দেখায়, কি করবো?

এইসব প্রশ্ন করলে লাভ হবেনা। প্রশ্ন করতে হবে আরো ভালোভাবে। আগে সমস্যা ভালোভাবে বুঝতে হবে, এবং বলতে হবে কি সমস্যায় পড়েছেন, এ পর্যন্ত সমস্যা সমাধানে কি কি করেছেন, কার ভিডিও বা লেখা দেখেছেন, কি করতে গিয়ে কি এরর পাচ্ছেন, কোন কোডের কোন লাইনে সমস্যা হচ্ছে, কোন লিংকে ঢুকেছেন। আপনি যদি সব বিস্তারিত লেখতে পারেন, তাহলে বেশিরভাগ সময়ই কেউ না কেউ আপনাকে সাহায্য করবে।

এখন সমস্যা হলো, আপনি শুরুর দিকে হয়তো দুইটা কারণে কাউকে প্রশ্ন করছেন না,

  • আপনি প্রশ্ন করতে ভয় পাচ্ছেন। হয়তো ভাবতেসেন কেউ জবাব দিবেনা, কিংবা তারা বুঝালে হয়তো বুঝবেন না, হয়তো তারা ব্যস্ত, আপনাকে সময় দিতে গিয়ে তাদের সময় নষ্ট হবে কিনা।
  • আপনার আত্নমর্যাদা অনেক বেশি। আপনি হয়তো ভাবতেসেন যে সমস্যাটা একা একাই সমাধান করার ক্ষমতা আপনার আছে। আপনি কাউকে সমস্যাটা বলে শুধু শুধু নিজেকে কেনই বা ছোট করবেন।

এইসব অজুহাত দেখিয়ে নিজেরই ক্ষতি করতেসেন। কমিউনিটি গুলোতে যারা উত্তর দেয়, তারা সাধারনত খুবই ফ্রেন্ডলি হয়, এবং ধৈর্য প্রচুর থাকে বলেই তারা উত্তর দিতে পারে।

যদি আপনার প্রশ্ন খুব বেসিক হয়, এবং আপনি ভালোভাবে সেটা না বোঝাতে পারেন, তখন সবাই বলবে, “গুগল করেন, গুগল করেন।”, চেষ্টার কোন কমতি রাখা যাবেনা।

এই যদি হয় আপনার প্রশ্ন,

তাহলে হবেনা, আরো বিস্তারিত লেখতে হবে।

একটু বিস্তারিত লেখলে সেটা পড়তেও সুবিধা হয়, আর দেখলেই বলা যায় সমস্যাটা ঠিক কোথায়।

একদা আমি ধৈর্য সহকারে একজনকে let আর var এর পার্থক্য বুঝিয়েছিলাম, ২ ঘন্টা সময় নিয়ে। আমার সমস্যাগুলোতেও দেখা যায় এমনভাবেই কেউ আমাকে সময় দিয়েছিলো। একটা ব্যাপার হলো, যদি কেউ সময় দেয়, তাহলে তারা সময় দিতেই ওখানে সময় কাটাচ্ছে। তারা চায় সাহায্য করার জন্য। এখন সুযোগ পেয়েও হাতছাড়া করলে আপনারই সমস্যা।

সারমর্ম

Read Search Ask হলো এমন একটা সিস্টেম যেখানে আপনারও সময় বাঁচবে, আপনাকে যারা সাহয্য করতে চাচ্ছে, তাদেরও সময় বাঁচবে। এবং আপনি অনেক কিছুই শিখতে পারবেন অনেক কম সময়ে।

সমাধান করার ফাংশন, সমস্যা দিলেই সমাধান বের হয়ে আসবে

আরো কিছু লিংকঃ