বর্তমান যুগ কম্পিউটারের যুগ। কম্পিউটার এখন সবার ঘরে ঘরে। এমনকি আপনার হাতে যে ফোন টা আছে, সেটাউ একটা কম্পিউটার ই। মোবাইল, ট্যাবলেট, ল্যাপটপ বা ডেস্কটপ সব কিছুই বর্তমানের মানুষের জীবনের অবিচ্ছেদ্য অঙ্গ হয়ে উঠেছে। আর এসকল কিছুর সাথে অনেক গভীর ভাবে যে জিনিসটা জড়িয়ে আছে তা হলো প্রোগ্রামিং।
আজকে আমরা প্রোগ্রামিং কিভাবে শুরু করার জন্য জানা প্রয়োজন এমন ১০টি গুরুত্বপূর্ণ পয়েন্ট সম্পর্কে জানব। প্রথম পাঁচটা কিভাবে শিখতে হবে আর পরের পাঁচটা কি কি শিখতে হবে।
Contents
প্রোগ্রামিং ল্যাগুয়েজ বাছাই করা
আপনার যদি প্রোগ্রামিং শিখে ছয় মাসের মধ্যে ইনকাম করার দরকার থাকে তাহলে কোন একটা জব পোর্টাল বা জব পোস্ট করে এমন ফেইসবুক গরূপে গিয়ে দেখুন কোন টাইপের প্রোগ্রামিং এর জন্য বেশি সংখ্যক চাকরি (javascript বা java বা php) আর সেখান থেকে কোনো একটা শিখেন। আর আপনার যদি নেক্সট ছয় মাসের মধ্যে চাকরি লাগবে এমন তাড়াহুড়ো না থাকে। তাহলে সিম্পল হিসাব হচ্ছে– যদি ক্লাস ৯ বা তার নিচে থাকো তাহলে পাইথন শিখ। যদি ইন্টারমেডিয়েট বা ভার্সিটির প্রথম ইয়ারে CSE এর স্টুডেন্ট হন তাহলে C শিখেন। আর বাকি সব ক্ষেত্রে পাইথন শিখেন।
কোন ল্যাঙ্গুয়েজ শিখবেন সেটা নিয়ে এক দিনের বেশি সময় নষ্ট করা যাবে না। এবং একবার সিদ্ধান্ত নিয়ে গেলে আগামী ছয় মাসের মধ্যে এই বিষয়ে অন্য কারো ওপিনিয়ন নিতে যাবেন না। কেউ এই রিলেটেড জ্ঞান দিতে আসলে দুই কান দুই হাত দিয়ে চেপে ধরে জিহ্বা বের করে ভেংচি কেটে দিবেন।
জাস্ট ইউটিউব
প্রথমত হুট্ করে কোন কোর্স বা বই কিনে ফেলবেন না। বরং যে প্রোগ্রামিং ল্যাংগুয়েজ শিখবে সেটার নাম লিখে তারপর for beginner লিখে গুগলে সার্চ দিন। অর্থাৎ পাইথন শিখতে চাইলে python for beginner লিখে সার্চ দিবেন। আর জাভাস্ক্রিপ্ট শিখতে চাইলে javascript for beginner একইভাবে php শিখতে চাইলে php for beginner লিখে গুগলে সার্চ দিবেন। যেই ভিডিওগুলো লাস্ট দুই বা তিন বছরের মধ্যে পাবলিশ হয়েছে সেখান থেকে প্রথম পাঁচটা ভিডিও আপনাকে দেখতে হবে। যদি ইউটিউবে তিন মাস চেষ্টা করার পরেও সুবিধা করতে না পারেন। তাহলে তারপর কোন কোর্স কিনার চিন্তা করতে পারেন।
Don’t learn, just watch
ধরে নিলাম আপনি সুপার জিনিয়াস, সুপার ট্যালেন্টেড কেউ না। তাই প্রোগ্রামিং শুরু করলে একদিন বা এক সপ্তাহের মধ্যে আপনি বিশাল কিছু হয়ে যাবেন না। বা যা দেখবে সবই বুঝে ফেলতে পারবেন সেটা আশা করার একদমই কোন কারণ নাই। বরং প্রোগ্রামিং শেখার প্রথম চারদিন টার্গেটই হবে। আমি কিছু শিখবো না। আমি কিছু বুঝবো না।
জাস্ট প্রতিদিন মিনিমাম ৪ ঘন্টা করে ভিডিও দেখবেন। কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ বা কোন কিছু কম্পিউটারে ইন্স্টল্ করার দরকার নাই। জাস্ট ভিডিও দেখুন। বুঝেন বা না বুঝেন ভিডিও দেখতে থাকেন। খারাপ লাগলেও দেখবেন। ভালো লাগলেও দেখবেন। ঘুম পাইলে দাঁড়িয়ে দেখবেন। ঘুম না পাইলে দেয়ালে কাত হয়ে দেখবেন। জাস্ট দেখবেন। অর্থাৎ আপনার কাজ হচ্ছে শুধু ভিডিও দেখা। জাস্ট দেখতে পারলেই কাজ হবে। বুঝার দরকার নাই।
টানা চারদিন জাস্ট ভিডিও দেখতে বলার কারণ হচ্ছে– ম্যাক্সিমাম ক্ষেত্রে আমরা একদিন ১০ -১২ঘন্টা কিছু একটা শিখে ফাটিয়ে ফেলি আর পরের দিনে খবর থাকে না। এই রকম ইরেগুলার হলে প্রোগ্রামার হওয়া আপনাকে দিয়ে হবে না।
প্রাকটিস করার আগে একটু লেখো
প্রোগ্রামিং শিখতে গেলে বিশেষ করে টিউটোরিয়াল দেখে দেখে শিখতে গেলে আমরা বেশিরভাগ সময় সফটওয়্যার ইনস্টল করতে যাই। ৩০-৪০% ক্ষেত্রে সফটওয়্যার ইনস্টল হয় না। আমরা তিন-চার চেষ্টা করে ছেড়ে দেই। সো, নেক্সট তিন দিন আপনার কাজ হবে কোন কিছু ইনস্টল না করা। বা কোন কিছু প্রাকটিস করারও দরকার নাই।
জাস্ট ভিডিওগুলো দেখতে দেখতে পাশে একটা খাতা খুলে রাখুন। এবং যে জিনিসগুলো আপনার আগের কোন একটা ভিডিওতে দেখেছেন সেই জিনিসটা হয়তো অন্য আরেকটা ভিডিওতে আরেকজন অন্যভাবে বলেছে। সেটাই আপনি দুইজনের কাছ থেকে শুনে নিজের মতো করে লিখে ফেলবেন। প্রথম প্রথম কোড রান না করে কাগজে লিখে ফেলাটা আপনাকে ভিতরের জিনিসগুলো বুঝতে বা ফিল করতে অনেক বেশি হেল্প করবে। যেটা দুইটা লাইন কোড লিখে রান বাটনে চাপ দিয়ে আপনি ফিল করতে পারবেন না।
এই জিনিসটা এক সপ্তাহ প্রাকটিস করুন।
প্ল্যান না বানিয়ে, আউটলাইন বানান
আজকে এইটা শিখে ফিনিশ করে ফেলবো। আগামীকাল ঐটা ভাজা ভাজা করে ফেলবো। পরশু দুনিয়া উল্টায় ফেলবো এই রকম প্ল্যান বানানোর দরকার নাই। বরং একটা আউটলাইন বানান যে আমার এই এই জিনিস শিখতে হবে। আজকে সারাদিন একটা শেষ হোক বা পাঁচটা শেষ হোক আমি চার ঘন্টা সময় দিচ্ছিই দিচ্ছি। চার ঘন্টা সময় মাস্ট দিতে হবে। এমন একটা সলিড কমিটমেন্ট থাকলে। আপনি একটা জিনিস নিয়ে দুই দিন আটকে থাকলেও হতাশ হবে না।
অন্যের রাস্তা জোড়াতালি দিয়ে, নিজের রাস্তা বানান
বিভিন্ন ভিডিও, বিভিন্ন টিউটোরিয়াল এ অনেক সাজেশন পাবেন। এমনকি পথে ঘাটে অনেক সাজেশন পাবেন। তবে কোন কিছুই আপনার জন্য হুবহু কাজে লাগবে না। আপনি বিভিন্ন সাজেশন থেকে দুই-চারটা হিন্টস নিতে পারেন। তবে কাজ করতে করতে আপনার একটা রাস্তা তৈরি হবে। সেটা একদম আপনার মতো করে। সো, অন্য কারো গাইডলাইন অনুসারে এগুতে না পারলে হতাশ হওয়ার কিছু নাই।
এক সপ্তাহ পরে যে প্রোগ্রমিং ল্যাঙ্গুয়েজ শিখেছেন সেটার কোড করার জন্য একটা IDE ইনস্টল করে নিতে হবে। সেটা ইন্স্টল্ না হলে repl.it এর মতো কোন একটা ওয়েবসাইট এ কোড লিখে লিখে প্রাকটিস করুন।
এবার আসা যাক কি কি শিখতে হবে।
প্রোগ্রামিং এর বেসিক কনসেপ্ট
আপনি যে প্রোগ্রামিং ল্যাঙ্গুয়েজই শিখেন না কেন। আপনাকে বেসিক কিছু জিনিস অবশ্যই অবশ্যই শিখতে হবে। তার মধ্যে প্রথমেই আছে সবচেয়ে কমন পাঁচটা জিনিস। যেগুলাকে আমি বলি — প্রোগ্রামিং এর পঞ্চ রত্ন। এগুলা হচ্ছে– 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 বানাতে হবে। ইন্টারভিউ এর প্রিপারেশন নিতে হবে। আপনার লিংকডইন প্রোফাইল বানাতে হবে।
পরিশেষে
এতো লম্বা লিস্ট দেখে ভয় পাওয়ার কিছু নাই। কাজ খুব বেশি কিছু না। ডেইলি ডেইলি ৪ ঘন্টা ধরে এক বছর সময় দিলে বেশিরভাগ জিনিস আপনার কাছে ফকফকা হয়ে যাবে। আর আপনি দুনিয়ার প্রথম মানুষ না যে এই জিনিসগুলো শিখতে যাচ্ছে। দুনিয়ার কোটি কোটি প্রোগ্রামার এই জিনিসগুলো শিখছে। এদের মধ্যে হাজার হাজার বলদ ও আছে। সো, তারা পারলে আপনি পারবেন না কেন?