প্রোগ্রামিং শেখার ১০ কার্যকর পদ্ধতি। প্রথম পাঁচটা কিভাবে শিখতে হবে আর পরের পাঁচটা কি কি শিখতে হবে।
লেখকঃ ঝংকার মাহবুব- সিনিয়র ওয়েব ডেভেলপার

স্টেপ-০: সিলেক্ট এনি প্রোগ্রামিং ল্যাংগুয়েজ

তোমার যদি প্রোগ্রামিং শিখে ছয় মাসের মধ্যে ইনকাম করার দরকার থাকে তাহলে কোন একটা জব পোর্টাল বা জব পোস্ট করে এমন ফেইসবুক গরূপে গিয়ে দেখো কোন টাইপের প্রোগ্রামিং এর জন্য বেশি সংখ্যক চাকরি (javascript বা java বা php) শিখো। আর তোমার যদি নেক্সট ছয় মাসের মধ্যে চাকরি লাগবে এমন তাড়াহুড়ো না থাকে। তাহলে সিম্পল হিসাব হচ্ছে-- যদি ক্লাস ৯ বা তার নিচে থাকো তাহলে পাইথন শিখ। যদি ইন্টারমেডিয়েট বা ভার্সিটির প্রথম ইয়ারে CSE এর স্টুডেন্ট হও তাহলে C শিখো। আর বাকি সব ক্ষেত্রে পাইথন শিখ।

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

স্টেপ-১: জাস্ট ইউটিউব

প্রথমত হুট্ করে কোন কোর্স বা বই কিনে ফেলবে না। রবং যে প্রোগ্রামিং ল্যাংগুয়েজ শিখবে সেটার নাম লিখে তারপর for beginner লিখে গুগলে সার্চ দাও। অর্থাৎ পাইথন শিখতে চাইলে python for beginner লিখে সার্চ দিবে। আর জাভাস্ক্রিপ্ট শিখতে চাইলে javascript for beginner একইভাবে php শিখতে চাইলে php for beginner লিখে গুগলে সার্চ দিবে। যেই ভিডিওগুলো লাস্ট দুই বা তিন বছরের মধ্যে পাবলিশ হয়েছে সেখান থেকে প্রথম পাঁচটা ভিডিও তোমাকে দেখতে হবে। যদি ইউটিউবে তিন মাস চেষ্টা করার পরেও সুবিধা করতে না পারো। তাহলে তারপর কোন কোর্স কিনার চিন্তা করতে পারো।

স্টেপ-২: ডোন্ট লার্ন জাস্ট ওয়াচ

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

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

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

স্টেপ-৩: প্রাকটিস করার আগে একটু লেখো

প্রোগ্রামিং শিখতে গেলে বিশেষ করে টিউটোরিয়াল দেখে দেখে শিখতে গেলে আমরা বেশিরভাগ সময় সফটওয়্যার ইনস্টল করতে যাই। ৩০-৪০% ক্ষেত্রে সফটওয়্যার ইনস্টল হয় না। আমরা তিন-চার চেষ্টা করে ছেড়ে দেই। সো, নেক্সট তিন দিন তোমার কাজ হবে কোন কিছু ইনস্টল না করা। বা কোন কিছু প্রাকটিস করারও দরকার নাই।

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

এই জিনিসটা এক সপ্তাহ প্রাকটিস করো।

স্টেপ-৪: প্ল্যান বানাইও না, আউটলাইন বানাও

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

স্টেপ-৫: অন্যের রাস্তা জোড়াতালি দিয়ে, নিজের রাস্তা বানাও

বিভিন্ন ভিডিও, বিভিন্ন টিউটোরিয়াল এ অনেক সাজেশন পাবে। এমনকি পথে ঘাটে অনেক সাজেশন পাবে। 'কোরা'তে এই উত্তরের মতো আরো সাজেশন পাবে। তবে কোন কিছুই তোমার জন্য হুবহু কাজে লাগবে না। তুমি বিভিন্ন সাজেশন থেকে দুই-চারটা হিন্টস নিতে পারো। তবে কাজ করতে করতে তোমার একটা রাস্তা তৈরি হবে। সেটা একদম তোমার মতো করে। সো, অন্য কারো গাইডলাইন অনুসারে এগুতে না পারলে হতাশ হওয়ার কিছু নাই।

এক সপ্তাহ পরে যে প্রোগ্রমিং ল্যাঙ্গুয়েজ শিখছো সেটার কোড করার জন্য একটা IDE ইনস্টল করে নিতে হবে। সেটা ইন্স্টল্ না হলে repl . it এর মতো কোন একটা ওয়েবসাইট এ কোড লিখে লিখে প্রাকটিস করো।

এবার আসা যাক কি কি শিখতে হবে।

main-qimg-2ce7f66566c8f5e0d68c3ac9ba065990


স্টেপ-৬: প্রোগ্রামিং এর বেসিক কনসেপ্ট

তুমি যে প্রোগ্রামিং ল্যাঙ্গুয়েজই শিখো না কেন। তোমাকে বেসিক কিছু জিনিস অবশ্যই অবশ্যই শিখতে হবে। তার মধ্যে প্রথমেই আছে সবচেয়ে কমন পাঁচটা জিনিস। যেগুলাকে আমি বলি -- প্রোগ্রামিং এর পঞ্চ রত্ন। এগুলা হচ্ছে-- variable (variable types), conditionals (if-else), array(list), loop (for loop, while loop) এবং function

এই পাঁচটা জিনিস শেখার সাথে সাথে এইগুলা দিয়ে কিছু প্রব্লেম সল্ভ করতে হবে। যাতে তুমি বুঝতে পারো প্রোগ্রামিং এর এই পাঁচটা রত্নকে তুমি কিভাবে এপ্লাই করতে পারো। এদের মধ্যে আছে Swap two variables, Convert Celsius to Fahrenheit, Sum of all digits in a number, Check a prime number, Generate a random number, Remove duplicate from a list, Reverse a string (Check palindrome), Calculate GCD, Merge two sorted Array, Number guessing game, Calculate the age, ইত্যাদি।

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

স্টেপ-৭: ডাটা স্ট্রাকচার, এলগরিদম এবং OOP

সফটওয়্যার বা প্রোগ্রামিং করতে গেলে তোমাকে ডাটা নিয়ে খেলতেই হবে। সেজন্য তোমাকে বেসিক কয়েকটা ডাটা স্ট্রাকচার সম্পর্কে জানতেই হবে। তাদের মধ্যে Stack, Queue, Dictionary, Tuples, Tree, Linked List সম্পর্কে জানতেই হবে। এছাড়াও Tree, graph সম্পকে ধারণা থাকতেই হবে। ডাটা স্ট্রাকচার এর পাশাপাশি তোমাকে Algorithm সম্পর্কে জানতে হবে। বিশেষ করে Linear Search, Binary search। এছাড়াও Sorting সম্পর্কে জানতে হবে। যার মধ্যে থাকবে Bubble sort, Selection Sort ইত্যাদি। তার পাশাপাশি Recursive function (factorial, Fibonacci series), Time Complexity (Linear, Quadratic, and Constant) সম্পর্কেও শিখতে হবে।

আর অবজেক্ট ও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সম্পর্কেও জানতে হবে। Object কি জিনিস। Class কিভাবে ডিক্লেয়ার করে। ক্লাসের ভিতরে প্রপার্টি, মেথড, constructor কিভাবে লিখতে হয়। এছাড়াও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সম্পর্কে ধারণা নিতে হবে।

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

স্টেপ-৮: প্রেম/বন্ধু ছাড়া জীবন অচল

প্রোগ্রামিং শেখা একটা লম্বা জার্নি। এই জার্নি চলতে গেলে তুমি অনেক সময় অনেক কিছুতে আটকে যাবে। কোন জিনিস কিভাবে কাজ করবে সেটাও হয়তো বুঝবে না। বা অনেক সময় বোরর্ড হয়ে যাবে। এসব ক্ষেত্রে তোমাকে ঠিক করতে হবে কোথাও আটকে গেলে সেই সিচুয়েশন থেকে তুমি কিভাবে বের হবে। হতে পার তুমি stackoverflow এর হেল্প নিবে। না হয় github issues এ গিয়ে প্রশ্ন করবে। ইদানিং অনেক ফেইসবুক গ্রূপ আছে যারা হেল্প করে। সেখানে গিয়ে হেল্প চাইতে পারো।

এমনকি তোমার কিছু ফ্রেন্ডও থাকতে পারে। যাদের সাথে শেয়ার করে করে শিখবে। এই জিনিসটা খুব ইম্পরট্যান্ট।

স্টেপ-৯: ডাটাবেজ

প্রোগ্রামিং শিখতে গেলে তোমাকে github সম্পর্কে জানতে হবে। ডাটাবেজ সম্পর্কে জানতে হবে। SQL কি জিনিস এইটা দিয়ে কিভাবে query করে। কিভাবে Table বানায়। টেবিল থেকে কিভাবে ডাটা Select করে Update বা delete করে। এছাড়াও SQL এর কিছু ফাংশন আছে যেমন Avg, Max, Count সেগুলা জানতে হবে। Inner Join, Outer Join ইত্যাদি সম্পর্কে শিখতে হবে। এরপর তুমি যে প্রোগ্রমিং ল্যাঙ্গুয়েজ শিখতেছো সেটার সাথে mysql কিভাবে ইউজ করতে হয় সেটা জানতে হবে। হতে পারে SQLite or Pandas বা অন্য কিছু। তবে একটা কিছু হলেও জানতে হবে।

এছাড়াও API কি জিনিস। মাইক্রো সার্ভিস কি জিনিস। JSON, Rest API সম্পর্কে জানতে হবে।

.

স্টেপ-১০: প্রজেক্ট

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

তবে যে টাইপের প্রজেক্টই হোক না কেন। এই প্রজেক্ট নিজে নিজে করতে হবে। কোথাও ভিডিও দেখে দেখে করলে হবে না। ১০০% নিজে নিজে জাস্ট গুগল, stackoverflow বা github issues এর হেল্প নিয়ে বাকিটা নিজে নিজে করতে হবে। এবং প্রজেক্ট শেষ হওয়ার পর প্রজেক্টের কোড গিটহাব এ রেখে প্রজেক্ট heroku বা aws বা digital ocean এ deploy করতে হবে।

শেষ করে চাকরি বা কাজ খোঁজ

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

আর চাকরি পেতে হলে তোমাকে resume বানাতে হবে। ইন্টারভিউ এর প্রিপারেশন নিতে হবে। তোমার লিংকডইন প্রোফাইল বানাতে হবে।

.

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

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