পোস্টটি পড়া হয়েছে 22,057 বার
8 barriers to overcome when learning to code

প্রোগ্রামিং শেখার সময় জয় করতে হবে ৮ টি প্রতিবন্ধকতা

Post updated on 7th April, 2017 at 10:05 am

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

তো প্রোগ্রামিং শেখার সময় এই বাধাগুলো কী কী?

১. বিরাট মহৎ কোন উদ্দেশ্য নির্দিষ্ট করে প্রোগ্রামিং শিখো না

প্রোগ্রামিং শেখার প্রতিবন্ধতাগুলো খোঁজার আগে প্রোগ্রামিং শেখার learning process বা motivation নিয়ে কথা বলা দরকার। তুমি কেন প্রোগ্রামিং শিখবে? তুমি অবশ্যই এজন্য প্রোগ্রামিং শিখবে না যে অমুকে বলেছে “programming is cool!” বা প্রোগ্রামিং শিখে বিল গেটস হওয়া যায় অনেক টাকা বেতন পাওয়া যায় ইত্যাদি।

তুমি প্রোগ্রামিং শিখবে তোমার নিজের কোন একটা প্রবলেম সলভ করার জন্য। তোমার দৈনন্দিন জীবনের কোন কাজকে automate করার জন্য বা improve করার জন্য। তুমি প্রোগ্রামিং শিখতে পার স্রেফ তোমার আনন্দের জন্য। চিন্তা করার চেয়ে আনন্দের আর কিছু হতে পারে না। দীর্ঘ সময় একটা প্রবলেমে আটকে থাকার পর চিন্তার একটা পর্যায়ে এটা সলভ হয়ে গেলে যে নির্মল আর অনাবিল আনন্দ পাওয়া যায় সেটা এক্সপেরিয়েন্স করার জন্য। তোমার লক্ষ্য যদি হয় ‘হাগার হাগার ডলার’ কামানো, তাহলে তোমার শেখাটা শুধু এই ডলার কামানোর দিকেই ধাবিত হবে। অর্থের পাশাপাশি জীবনে দরকার কিছুটা প্রশান্তি-সুখ। একটা সময় পর্যন্ত তোমার হাতে টাকা আসলে মনে হতে পারে এটাই আসলে সুখ। অপরপক্ষে তুমি যদি নতুন একটা বিষয় শেখার আনন্দটা নিজের মধ্যে প্রতিষ্ঠা করতে পারো, প্রোগ্রামিং এর চমৎকার জগতটাকে যদি আপন করে নিতে পার জাস্ট একটা খেলার মত করে। তাহলে বিশ্বাস করো, তুমি শেখার আনন্দ যেমন পাবে তোমার হাতে টাকাও আসবে। পুরো ব্যাপারটাই মনস্তাত্বিক। তুমি টাকা কামানোর জন্য প্রোগ্রামিং করলে টাকা কামাতে পারবা, আবার আনন্দের জন্য প্রোগ্রামিং করলেও টাকা কামাতে পারবা। প্রথম ক্ষেত্রে একটা পর্যায়ে লাইফটা বোরিং মনে হবে, দ্বিতীয় ক্ষেত্রে লাইফটাকে এঞ্জয় করতে পারবে। এখন তোমার উপর পুরোটাই নির্ভর করে। তুমি কী করতে চাও, কিভাবে করতে চাও সেটা তোমাকেই বের করতে হবে। আর দশটা মানুষ যে পথে সফল হয়েছে তোমার পথটা সেরকম নাও হতে পারে। তোমার সফল হবার পথ তোমাকেই বের করে নিতে হবে।

যদি তুমি প্রোগ্রামিংটাকে পছন্দ কর কিন্তু এটাতে ক্যারিয়ার গড়তে চাও না তাহলে অনেক সময়ই এটা তোমাকে পথ হারিয়ে ফেলতে বাধ্য করতে পারে। একটা প্রোজেক্ট করতে গিয়ে কঠিন কোন প্রবলেমে আটকে গেলে তোমার কাছে মনে হতে পারে যে ‘প্রোগ্রামিং আমার জন্য না’ বা ‘প্রোগ্রামার হবার জন্য আমার জন্ম হয় নি’ ইত্যাদি।

যদি তোমার মাথায় কোন একটা প্রোজেক্ট আইডিয়া থাকে বা বেশ কঠিন একটা প্রবলেম সলভ করার ব্যাপারে চিন্তা কর তাহলে তুমি মনকে এভাবে প্রস্তুত করতে পার যে “আমি জানি এটা সলভ করা খুব একটা আনন্দের বিষয় না। কিন্তু যেভাবেই হোক আমি এটাকে সলভ করবোই। এর জন্য আমি আমার নিজেকে যতটা সম্ভব খাটাবো। একটা সময় অবশ্যই বাধাগুলো অতিক্রম করা সম্ভব হবেই!”

জানোই তো “ধারে না কাটলে, ভারে কাটে…”।

২. তুমি জানো না কোন টেকনোলজি বা কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখবে

কমন একটা প্রশ্ন হচ্ছে “ভাইয়া, কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে শুরু করবো? সি নাকি সি++? জাভা নাকি এক নম্বর ল্যাঙ্গুয়েজ? তাহলে জাভাই শুরু করি, কী বলেন?” এই টাইপের প্রশ্নগুলোর একমাত্র কারণ হচ্ছে প্রশ্নকর্তা আসলে নিজেই জানে না সে কেন প্রোগ্রামিং শিখতে চাচ্ছে।

যদি তোমার মাথায় কোন নির্দিষ্ট প্রোজেক্টের আইডিয়া থাকে তাহলে তোমার কী শেখা উচিত সেটা বলাটা সহজ। যেমন তোমার যদি Android App ডেভেলপ করার ইচ্ছা থাকে বা এন্ড্রয়েডের জন্য কোন একটা এপের আইডিয়া আছে সেটা তুমি বানাতে চাচ্ছ তাহলে তুমি Java শিখতে পার। আবার আইফোনের জন্য এপ বানানোর ইচ্ছা হলে তুমি Objective C বা Swift শিখতে পার। ওয়েবের কোন কাজ করতে চাইলে HTML, CSS, PHP, JavaScript শেখা যেতে পারে। আবার তোমার যদি উদ্দেশ্য হয় এই মুহুর্তেই সফটওয়্যার বা এপ ডেভেলপ না বরং প্রোগ্রামিং এর লজিক ডেভেলপ করা বা ACM problem solve করা। তাহলে সি/সি++ শিখতে পারো।

এরপরেও যদি তুমি মাইন্ড সেট না করতে পারো তাহলে কোন অভিজ্ঞ প্রোগ্রামারের সাথে কথা বল। তিনি তোমার কাছ থেকে কথা বের করে নিয়ে তোমাকে ভাল পরামর্শ দিতে পারবেন। আসলে তুমি যে কোন একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ ঠিকঠাক মত শিখলে এটা তুমি পরবর্তীতে যে কোন ল্যাঙ্গুয়েজেই কাজে লাগাতে পারবা। কিছু syntax শুধু নতুন করে শিখতে হবে। এই যা…

৩. প্রবলেম বুঝতে পারছি কিন্তু কোড করতে পারছি না

এটা আসলে নতুন প্রোগ্রামারদের একটা জাতীয় সমস্যা। এটা নিয়ে বেশি ভয় পাওয়ার কিছু নাই। আমরা সাধারণত থিওরি পড়ি এরপর সেটাকে implement করার জন্য কোড করি। কিন্তু অনেক সময়েই দেখা যায় algorithm-টার স্টেপগুলো বুঝতে পারছি কিন্তু কোড করতে পারছি না। এর কারণ আর কিছু নয়, জাস্ট skill এর অভাব। অর্থাৎ এই এলগোটা করার মত পর্যাপ্ত দক্ষতা তৈরি হয় নাই।

যেমন ধর সাঁতারের উপর তুমি পড়াশোনা করলে। কিছু ঘাটাঘাটি করে তুমি কিন্তু চাইলে বিরাট বড় সাঁতারের কোচের মত লেকচারও দিতে পারবে। তোমার লেকচার শুনে অনেকে হয়ত প্র্যাক্টিস করে ভাল সাঁতারু হতে পারবে। যদিও তুমি নিজেই সাঁতার জানো না। তোমার শুধু সাঁতারের স্টেপ, থিওরি ইত্যাদি জানলেই হবে না। তোমাকে পুকুরে নেমে কিছু ঘোলা জলও গলধকরণ করতে হবে। 😀

তুমি যদি কোড করতে না পেরে নিজেকে গালাগালি করতে থাকো। বা চিন্তা কর যে “এসব কোডিং-ফোডিং আমারে দিয়া হবে না”, “এগুলা অনেক কঠিন”, “আমার আসলে ব্রেইন ভাল না”, “আমি ট্যালেন্ট না, বলদা একটা”… ইত্যাদি। তাহলে এর থেকে বাজে জিনিস কিন্তু আর হয় না। তোমার প্রাপ্তির ঝুলি ভারি হওয়ার ক্ষেত্রে তুমি কতটা disciplined আর তোমার প্রচেষ্টার ধারাটা কেমন এই দুইটা জিনিস কিন্তু বেশি দায়ী। কোন একটা প্রোজেক্ট বা প্রবলেম সলভ করার জন্য তুমি নিচের স্টেপগুলো ফলো করতে পারোঃ

  1. তুমি সত্যিই সলভ করতে চাও বা কোন একটা প্রোজেক্ট করতে চাও এমন কিছু সিলেক্ট কর। মানে কারো চাপিয়ে দেয়া কোন কাজ না। যেই কাজটা তুমি ভালবেসে করতে পারবে সেরকম একটা প্রোজেক্ট চিন্তা কর।
  2. পুরো প্রোজেক্টের কাজগুলোকে ছোট ছোট task এ ভাগ কর। যেমন ধর একটা সাইট বানাতে চাচ্ছ তার একটা টাস্ক হতে পারে “লগিন পেজ বানানো”। সাধারণত টাস্কগুলো হতে হয় প্রোজেক্টের সর্বনিম্ন ইউনিক। ২০-২৫ লাইনের কোডের মধ্যে একেকটা টাস্ক শেষ করা ভাল।
  3. একটা টাস্ক নিয়েই কাজ করো। এক সাথে একাধিক টাস্কের কথা চিন্তা করলে মাথায় গিট্টু লেগে যাবে। যখন কোন একটা টাস্কের ব্যাপারে মোটামুটি নিশ্চিত হবে যে এটা কাজ করবে, কোনরকম বাঘ-ভাল্লুক (bug) এর মধ্যে নাই। তখনই পরের task টা শুরু করবে।
  4. কোন একটা টাস্কের কোড শুরু করার আগে অবশ্যই ঐ টাস্কের থিওরিগুলো জেনে নিবে। যেমন ধর তোমার একটা টাস্ক হচ্ছে কোন ইউজার কোন দেশের কোন শহর থেকে তোমার এপটা ব্যবহার করছে সেটা জানা। তাহলে কোড শুরু করার আগে তোমার জেনে নেয়া উচিত GPS কিভাবে কাজ করে? latitude ও longitude কী? এই দুইটা মান থেকে কিভাবে কোন জেলা বা শহরের নাম পাওয়া যায়? এজন্য কোন কোন API পাওয়া যায় বা কোন টেকনোলজিটা ব্যবহার করা হয়? ইত্যাদি।
  5. সবশেষে তুমি তোমার টাস্কটা শেষ করতে সক্ষম হলে। যখন তুমি এটা সলভ করছিলে তখন আরো কিছু প্রতিবন্ধকতা তোমার সামনে হাজির হবে। সেগুলো হচ্ছেঃ

৪. তোমার করা কোডের ভবিষ্যত নিয়ে তোমার কোন মাথা ব্যথা নাই

“কোডের আবার ভবিষ্যত কী? কোড করেছি, কাজ করছে। ব্যস! পরের প্রোজেক্ট বা পরের টাস্ক শুরু করি!” বেশির ভাগ শিক্ষার্থীই এই কাজটা করে। তুমিও যদি এটা করো তাহলে বেশ কিছু বিষয় শেখার সুযোগ তোমার হাতছাড়া হয়ে যাবে।

একেকটা টাস্ক শেষ করার পর তুমি নিজেকে এই প্রশ্নগুলো করতে পারোঃ

  • এই কোডের ক্ষেত্রে কি কোন edge case আছে যার জন্য কোডটা কাজ করবে না? অথবা কোড কাজ করলেও পুরো এপ্লিকেশনটা যখন রান করবে তখন এই কোডের জন্য কোন ঝামেলা হবার কি কোন চান্স আছে?
  • আমার কোডটা কি clean enough? বছরখানেক পরে এই কোডের চেহারা দেখলে চিনতে পারবো তো? যে কোন ধরণের modification বা edit করার দরকার হলে করা যাবে তো? এই টাস্কের কোন আপডেটের কারণে এপের অন্য কোন টাস্কের কাজ আটকে যাবে না তো?
  • আমার approach-টা কি best approach? নাকি এর থেকেও ভাল কোন উপায়ে এটা করা যায়? অন্য আর কোন্‌ ভাবে এই একই জিনিস করা যায়? সেই সিসটেমের সুবিধা-অসুবিধাগুলো কী কী?
  • আমার এই মডিউলটা অন্য আরেকটা মডিউলের সাথে কিভাবে কাজ করছে? একটা আরেকটার উপর কতখানি dependent? একটার কারণে আরেকটার উপর কোন বাজে প্রভাব পড়বে না তো?

৫. তুমি জানো না কিভাবে একটা task-কে এগিয়ে নিয়ে যাওয়া যায়

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

যদি তোমার কাজটা সত্যিই ঠিকঠাক ভাবে শেষ করতে চাও তাহলে তোমাকে খুঁজে বের করতে হবে কেন তুমি এখানে আটকে আছো? এই stuck হয়ে থাকার কয়েকটা সম্ভাব্য কারণ হতে পারে এরকমঃ

১. তুমি থিওরিগুলো ঠিকঠাক মত জানো নাঃ

  • Language Syntax জানো না
  • কোন একটা API কিভাবে কাজ করে বা কোন library/method কিভাবে ব্যবহার করতে হয় জানো না
  • programming paradigms (for example: asynchronous programming)
  • how the system works (for example: HTTP requests are a crucial thing to understand in Web development)
    এসব ক্ষেত্রে তোমার কাজ হচ্ছে থিওরিগুলোকে আবারো ভাল ভাবে স্টাডি করা।

২. তোমার টাস্কগুলো অনেক বড় বড় হয়ে গেছে। এগুলোকে ভেঙ্গে আরো ছোট করতে হবে।

৩. তুমি আসলে টাস্কগুলো বুঝতেই পারো নাই। হয়ত দ্রুত পড়ে গেছ বা তোমার কাছে মনে হয়েছে “আরে এটা তো বুঝছিই!” কিন্তু আসলে হয়ত সেই টাস্কটা ঠিক তুমি যেভাবে চিন্তা করছো সেরকম না।

৬. তুমি কোড করেছ। তা কাজ করার কথা কিন্তু কাজ করছে না

এটা কম্পিউটার প্রোগ্রামিং এর ক্ষেত্রে প্রাচীনতম সমস্যা। এমন কি অনেক বছর ধরে প্রোগ্রামার হিসেবে যিনি কাজ করছেন তার ক্ষেত্রেও এমনটা ঘটতেই পারে। এজন্য তোমাকে শিখতে হবে debug করা। Debugging নামের একটা সম্পূর্ণ বইই আছে! তোমাকে শেখা উচিত কিভাবে ডিবাগ করতে হয়। এর চেয়ে বেশি শেখা উচিত কিভাবে ডিবাগিং বিষয়টাকে ভালবাসা যায়। ইউনিভার্সিটি বা অনলাইন কোর্সগুলোর খুব কম কোর্সেই ডিবাগ করার ব্যাপারে কিছু বলা থাকে। প্রথম প্রথম এই বিষয়টা খুব painful হতে পারে। কিন্তু এটা কাজ করার জন্য সারা জীবনই লাগবে।

কোন একটা bug ধরার পর fix করলে। উচিত হবে এই বাগের ব্যাপারে একটা নোট রাখো। আস্তে আস্তে এই নোটের তালিকাটা বাড়তে থাকবে। তুমি একটা প্যাটার্ন ধরতে পারবে যে কী টাইপের ভুলগুলো তুমি বেশি করো। সে অনুযায়ী পরে কোড করার সময় সতর্ক হতে পারবে।

৭. তুমি জানো না কিভাবে সাহায্য নিতে হয়

যখন কোন একটা প্রবলেমে আটকে গেলে তখন সার্চ করলে বা কাউকে জিজ্ঞেস করলে। সে তোমাকে সলিউশনটা দিয়ে দিল। তুমি তা ব্যবহার করে প্রবলেমটা সলভ করে ফেললে। এরপর আরেকটা প্রবলেম নিয়ে বসলে। এটা কক্ষনো করো না!

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

এটাই StackOverFlow এর একটা খারাপ দিক। সব জায়গায় কোড বা সলিউশন পেয়ে যাবা। কিন্তু সলিউশনটা কিভাবে পাওয়া গেছে সেটা কখনোই জানতে পারবা না। তাই কোন একটা সলিউশন পাওয়ার পর নিজে নিজেই চেষ্টা করো শুরু থেকে ভেবে সলিউশন পর্যন্ত আসতে।

৮. তুমি যেই থিওরিগুলো জানো সেগুলো এপ্লাই করতে পারো না

“আবারো এটা হল?” আমি তোমাকে মনে করিয়ে দিতে চাই এই আর্টিকেলটাও একটা theory টাইপ জিনিস। এটা ততক্ষণ তোমার কোন উপকারে আসবে না যতক্ষণ না তুমি এটাকে apply করো। একবার না, বারবার এপ্লাই করতে হবে, যতক্ষণ না পর্যন্ত এটা তোমার রুটিনে পরিণত হয়।

 

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

 

পুনশ্চঃ 

আর্টিকেলটি আমার কোন মৌলিক লেখা নয়। TNW-এ প্রকাশিত Andrei Soare এর 8 barriers to overcome when learning to code এর ভাবানুবাদ মাত্র। যেহেতু ভাবানুবাদ তাই অনেক ক্ষেত্রেই শব্দগুলোকে এমন ভাবে সাজানোর চেষ্টা করা হয়েছে যেভাবে বর্তমান সময়ের এই লেখার টার্গেট অডিয়েন্স ভাল বুঝতে পারবে। বেশ কিছু কথাবার্তা নিজ থেকে যুক্ত করা হয়েছে যেগুলো মূল লেখায় ছিল না। যেমনঃ ACM এর ব্যাপারে যেই কথাগুলো ছিল। বা ১ নাম্বার পয়েন্টে যা উল্লেখ করা হয়েছে তার অনেকাংশই আমার মতামত। লেখায় কোন ভুল-ভ্রান্তি চোখে পড়লে জানানোর অনুরোধ রইলো। 

38 thoughts on “প্রোগ্রামিং শেখার সময় জয় করতে হবে ৮ টি প্রতিবন্ধকতা

  1. আচ্ছা ভাইয়্যা আমি একটা বিষয় সিদ্ধান্ত হীনতার মাঝে আছি । আমি সি হাল্কা পারি(নিটনের বই থেকে কাস্টম ডেটা টাইপ পয়ন্ত দেখেছি আর কি ) । ক্যান জানি আমার শুধু মনে হয় আমি এ ন্ড্রএড শিখব তাতেই কাজ করব এর জন্য জাভা ধরলাম । অবজেক্ট অরিয়েন্ডেড শিখতে গিয়ে বিভিন্ন টিউটেরিয়ারে যা যা কোড দেয়া আছে আমি শুধু ঐ গুলাই করেছি আর কিছু না । এরপর এন্ড্রএড এর টিটেরিয়ার দেখা শুরু করি । সেখান থেকে কাজ করি । প্রবলেম সল্ভিং এর জ্ঞান না থাকায় আমি কাস্টমাইজ করতে পারিনা নিজে থেকে । তাই ডেটা স্ট্র্যাকচার ও এলগোরিদম থিয়োরি পড়ছি এখন এবং সি দিয়ে সে গুলার কোড করার চেষ্টা করছি । কিন্তু মন বসাতে পারছি না । শুধু মনে হচ্ছে আমার হাতের মোবাইল টা আমার কথা মত চলবে । আমি আমার যাবতীয় রুটিন তার মাঝে রাখব । আমাকে মনে করিয়ে দিবে কখন কোন ক্লাশ কোথায় কিছু কাজ আছে কি না যাবতীয় হিসাব নিকাশ এককথায় আমার সাথে একাত্ততা প্রকাশ করে কাজ করবে আমার ফোন ।তাহলে আমি কি যাবতীয় প্রবলেম সলভ জাভা দিয়ে করব । কিন্তু সব ক্ষেত্রেই ত শুনি প্রবলেম সল্ভিং সি/সি++ দিয়ে করতে …… । এখন আমি কিভাবে এগুলে আমি এই জায়গায় পোচ্ছাতে পারি ভাইয়্যা ……???

    1. প্রবলেম সলভিং এর জন্য সি/সি++ আবশ্যিক নয়। জাভা দিয়েও আপনি প্রবলেম সলভ করতে পারেন। যেই ডেটা স্ট্রাকচার বা এলগো-টা শিখছেন সেটা জাভা দিয়েই ইমপ্লিমেন্ট করেন। আপনার হাতের ফোনটিকে আপনার কথা শোনাতে চাইলে ভাল প্রবলেম সলভার হবার বিকল্প নাই। নইলে সর্বোচ্চ “১০১ টি রান্নার রেসিপি” বা “৪০ টি হাদীসের অপূর্ব সংকলন” টাইপের এপই বানাতে সক্ষম হবেন।

  2. তোমার লক্ষ্য যদি হয় ‘হাগার হাগার ডলার’ কামানো,

  3. ভাল লাগলো দাদা । একটা প্রশ্ন ছিল । আমার ইচ্ছা আছে Android devoloper হওয়ার । সেই জন্য সি এর বেসিক শেষ করে ডাটা স্ট্রাকচার , এলগ্যরিদম আর hackerearth ,hackerrank এ প্রব্লেম সল্ভিং করছি । ডাটা স্ট্রাকচার বই এর আর ২-৩ টা চ্যাপ্টা আছে । তো এটা শেষ হয়ে গেলে আমি কি এর পর জাভা শেখা শুরু করতে পারি ? একটু গাইড করলে ভাল হয় ।

    1. ২০০-৩০০ প্রবলেম সলভ করলে বলা যায় আপনার বেশ ভালই প্রবলেম সলভিং স্কিল আছে। এরপর চাইলে জাভা শুরু করতে পারেন। সাথে প্রবলেম সল্ভিংও চালিয়ে যেতে পারলে তো খুবই ভাল!

  4. ১ । ভাই আমি এখন PHP W3schools এর Advance যা দেয়া আছে ঐ গুলা শিখতেছি । Basic মোটামুটি শেষ কিন্তু আমি যা শিখছি ঐ গুলা পরে দেখি ভুলে যাই আবার একটু দেখলে মনে পরে যায় । এখন আমি বুজতেছি না । এটা কি আমার প্রাক্টিস এর কমতি নাকি অন্য কিছু ।

    ২। PHP জন্য কি আমার এলগ্যরিদম এবং ডাটা স্ট্রাকচার শিখতে হবে ।

    ৩। কি ভাবে PHP ভালো করে শিখতে পারি এবং PHP এর উপর ভালো মটিবেট রাখতে পারি । সেটা যদি বলতেন তাহলে আমার জন্য ভালো হত । মাঝে মাঝে মনে হয় PHP দিয়ে কিছুই হবে না । শুধু শুধু এর পিছনে খাটতেছি । আবার নিজেকে অনেক কোষ্ঠ করে বুজিয়ে কাজ করতে বসি। আমি গ্রামে থাকি তাই সহজে কার কাছে হেল্প পাই না । আর আমার এলাকায় এই বিষয় নিয়ে আলোচনা করবো ঐ লোক ও নাই । আমার মনে হয় । আমার এলাকা + তার আসেপাশে দুই তিন গ্রামে কোন লোক প্রোগ্রামিং করে না ।
    ৪ । PHP Debugging জন্য ভালো কোন বাংলা বই আছে । নাকি যে কোন Debugging এর বই পরলেই হবে । আমি জানি না তাই প্রশ্ন করলাম ।

    1. ১। এরকম ভুলে যাওয়াটা স্বাভাবিক। প্রায় সবাই আমরা ভুলে যাই। এক্সাক্ট সিনট্যাক্সটা হয়ত ভুলে যাই। কিন্তু এটা মনে থাকে যে “এই টাইপের কাজ করা যায় এই ভাবে”। তখন নেটে সার্চ করে সিনট্যাক্সটা দেখে নিয়ে প্রোজেক্টে কোড করি। রিয়েল লাইফ প্রোজেক্ট করার ট্রাই করেন কিছু। তাহলে বারবার করতে করতে জিনিসগুলো মাথায় গেঁথে যাবে। আলাদা আলাদা ভাবে ছোট ছোট ফিচার ইমপ্লিমেন্ট বা টুলস ইউজের চেয়ে এটা মে বি বেশি কাছে দিবে।

      ২। জ্বি। ভাল মাপের প্রোগ্রামার হিসেবে কাজ করতে হলে ব্যাসিক ডেটা স্ট্রাকচার-এলগরিদম জানা থাকা জরুরি। হয়ত আপনি যা শিখবেন সেগুলো বাংলাদেশের প্রেক্ষাপটে কোথাও আপনার কাজে লাগবে না। কিন্তু ভাল জব পাওয়ার ক্ষেত্রে এটা আপনার বাড়তি যোগ্যতা হিসেবে বিবেচনা করা হবে।

      ৩। ওয়েবের অলমোস্ট ৮০% back end এর কাজ হয় PHP তে। তাই বুঝতেই পারছেন এর চাহিদা কেমন। চাহিদা যেমন আছে, কাজ করার লোকও আছে। তাই আপনাকে একটু বেশি পরিশ্রম করে এভারেজ লেভেলের থেকে একটু বেশি জানতে হবে। তাহলে আর পিছনে ফিরে তাকাতে হবে না। আমি নিজে পিএইচপি জানি না। তাই খুব ভাল পরামর্শ দিতে পারব না। নিয়মিত প্রোজেক্ট করেন। সিম্পল থেকে শুরু করে আস্তে আস্তে কঠিনের দিকে।

      ৪। এ বিষয়ে আমার জানা নাই।

  5. প্রোগ্রামিং কনটেস্ট ডেটা স্ট্রাকচার ও এলগরিদম বইতে কি PHP এর জন্য যে রকম ডেটা স্ট্রাকচার ও এলগরিদম প্রয়োজন ঐ গুলা আছে । ভাই আমি জানি তাই প্রশ্ন করলাম ।

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

  6. ভাইয়া আমি ওয়েব ডেভেলপিং শিখতেছি।
    HTML & CSS মোটামটি শেষ ।এখন PHP শিখতেছি।ডেভেলপিং শেখার জন্য কি কি শিখতে হবে আর?? 🙂

  7. I am very interested to learn java because of android developing .. Can i start my Java programming without learning c .. However , my next semester have got c programming

  8. পড়ে খুব ভাল লাগলো। অাপনাকে অনেক ধন্যবাদ ভাই।

  9. ভাইয়া আমি ভাল প্রগ্রামিং কিভাবে শিখবো।

  10. ভাইয়া আমি হিসাববিজ্ঞান এর ছাত্র । তবে কম্পিউটার বা তথ্য প্রযুক্তি সম্পর্কে আমার খুব আগ্রহ । আমি গত এক মাস আগে সরকারী একটি প্রতিষ্ঠান থেকে বেসিক ওয়েব ডিজাইন এর উপর তিন মাসের একটি কোর্স করেছি… এই তিন মাসে আমি যে খুব বেশি কিছু শিখতে পেরছি তা বলবো না তবে যতটুকু শিখতে পেরেছি তার সাথে আর পরিশ্রম যোগ করলে সামনের দিকে অল্প অল্প করে এগিয়ে যাওয়া সম্ভব ইনশাআল্লাহ্‌ ।

    *** আমি HTML মোটামুটি পারি তবে অনেক কিছুই জানি না , CSS বেসিকটা পারবো মনে হয় । আর JAVA SCRIPT, PHP এইগুলা পারিনা বললেই চলে ।

    *** এখন আমি কিভাবে শুরু করলে আমার কাজ সঠিক ভাবে পরিচালিত হবে আপনাদের কাছে পরামর্শ চাইছি ।

    *** ওয়েব ডিজাইন টা ভাল লাগে তার একটাই কারন তা হল আমি নিজের চেষ্টায় নিজের বুদ্ধি দিয়ে কিছু তৈরি করা যায় এর জন্য অনেক ভাল লাগে । তবে এটা পেশা হিসেবে নিতে ভয় লাগে কারন এর ফিডব্যাক আসতে বছর খানেক সময় লাগতে পারে বা তার বেশি মানে আমার যোগ্যতার উপর তা নির্ভর করবে । আমি ভাল পারলে আগে আর যদি কম পারি তবে দেরিতে আসবে।

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

  11. অনেক ভাল লাগল ভাই।একটা প্রশ্ন ছিল আপনার কাছে।আমি urionline judge এ প্রোগ্রাম সলভ করি কিন্তু সেগুলো করি youtube থেকে দেখে দেখে।কারন প্রোগ্রাম গুলো দেখেই বুঝতেই পারিনা কিভাবে শুরু করব।এমনকি অনেকক্ষন ভাবার পরও ধরতে পারি না ভাই। আমি যদি Youtube এর সাহায্য না নেই,তাহলে অনলাইন এ সলভ করতে মনই চাইনা তখন। এখন আমাকে বলুন আমি কি রঙ পথে আছি? নাকি আমাকে অন্য কোন পথ অবলম্বন করতে হবে।প্লিজ জানবেন ভাই।

    1. যদি সব প্রবলেমের সলিউশনই হেল্প নিয়ে করা হয় তাহলে বলব আপনার “প্রবলেম সলভিং” হচ্ছে না। হচ্ছে “কোডিং”। ৩-৪ দিন একটা প্রবলেম নিয়ে চিন্তা করে না পারলে প্রোগ্রামিংয়ের কোনো ফোরাম বা ফেসবুক গ্রুপে ২-১ লাইনে হিন্টস চাইতে পারেন। সেখান থেকে নিজে নিজে প্রবলেমটা সলভ করার প্র্যাক্টিস হবে। একটা প্রবলেম নিয়ে যখন দিনের পর দিন চেষ্টা করতে থাকবেন, শত শত উপায় চিন্তা করে ব্যর্থ হবেন। এই ব্যর্থতাগুলো পরের প্রবলেম সলভ করতে গিয়ে কাজে আসবে। তাই “কোডিং” করার চেয়ে “প্রবলেম সলভিং”য়ে গুরুত্ব দিন।

  12. ভাই আমি ভার্সিটি ফাইনাল ইয়ারে। আমি প্রথম ইয়ার থেকেই কোডিং করেছিলাম পড়ে বাদ দিয়েছিলাম।ইংলিশ এ প্রব্লেম পড়লে বুঝতাম না আর তখন হেল্পও পাইনি । এখন আমি তো মনে হয় এসিওম করতেও পাবনা, আমি আসোলে ভাইয়া সিদ্ধান্ত নিতে পাচ্ছি না কিন্তু এখন কি আবার শুরু করা যাবে বা উচিত হবে? নাকি ডেভেলপিং শিখব? ভাইয়া আপনার সাহায্য চাচ্ছি আসলে কি করা উচিৎ আমার এখন

  13. ভাই আমি ভার্সিটি ফাইনাল ইয়ারে। আমি প্রথম ইয়ার থেকেই কোডিং করেছিলাম পড়ে বাদ দিয়েছিলাম।ইংলিশ এ প্রব্লেম পড়লে বুঝতাম না আর তখন হেল্পও পাইনি । এখন আমি তো মনে হয় এসিওম করতেও পাবনা, আমি আসোলে ভাইয়া সিদ্ধান্ত নিতে পাচ্ছি না কিন্তু এখন কি আবার শুরু করা যাবে বা উচিত হবে? নাকি ডেভেলপিং শিখব? ভাইয়া আপনার সাহায্য চাচ্ছি আসলে কি করা উচিৎ আমার এখন

    1. আমার মনে হয় ডেভেলপমেন্ট শেখা উচিত। সাথে জবের প্রস্তুতি হিসাবে ডেটা স্ট্রাকচার, অ্যালগরিদম, ওওপি এবং ডেটাবেজও প্র্যাকটিস করতে হবে। কারণ ফ্রেশার হিসাবে রিক্রুটের ক্ষেত্রে ডেভেলপমেন্টের নলেজের চেয়ে এগুলোর উপর প্রশ্ন বেশি করা হতে পারে। অনলাইন জাজে প্রবলেম সলভ করা ম্যান্ডেটরি না। জাস্ট ধারণা নেয়ার জন্য ১০-২০ টা প্রবলেম সলভ করতে পারেন। কিন্তু উপরের টপিকগুলো অবশ্যই ভাল ভাবে প্র্যাকটিস করতে হবে।

  14. programming contest korte chaile basic math er kon jinish gula jana lagbe? 9-10 kinba inter er ki kichu jana lagbe ? jodi jana lage tahole ki ki ? ar ekjon valo programmer howar jonno math er kon site gula valo kore jana thaka lagbe?

  15. মাশাআল্লাহ, অনেক সুন্দর উপাস্থাপনা ভাইয়া। ইনশাআল্লাহ কাজ করার সময় ব্যাপারগুলো খেয়াল রাখবো। ধন্যবাদ ভাইয়া।

  16. ভাইয়া,আমি ওয়েব ডেভেলপার হতে চাই।আমি কোড বুঝতে পারি কিন্তু নিজে নিজে কোড করতে পারিনা।
    আমি কি করবো?

    1. দেখে দেখে কোড করা শুরু করতে পারেন। একই কাজ বারবার করতে থাকলে কোড আত্মস্থ হয়ে যাবে আশা করি।

Leave a Reply

Your email address will not be published. Required fields are marked *