কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে শুরু করব?

তোমাদের অনেকেরই এটি প্রশ্ন, ‘প্রোগ্রামিং শিখতে চাই, কোন ল্যাঙ্গুয়েজ দিয়ে শুরু করব’? সেই প্রশ্নের উত্তর দেওয়ার জন্যই এই পোস্ট।

তোমার বয়স যদি ১০-এর নিচে হয়, অর্থাৎ, তুমি যদি প্রাইমারি স্কুলের শিক্ষার্থী হও, তোমার জন্য বেশ কিছু অপশন রয়েছে। তার মধ্যে আমার মতে এমআইটি’র স্ক্রাচ একটা ভালো টুল, তোমার প্রোগ্রামিং শেখা শুরু করার জন্য।

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

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

তুমি যদি কলেজের শিক্ষার্থী হও, তাহলে অবশ্যই সি শেখো। কারণ কলেজের আইসিটি কোর্সে এমনিতেই সি শিখতে হবে। তাই দুইটা ল্যাঙ্গুয়েজ একই সময়ে শেখার কোনো দরকার নাই।

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

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

প্রোগ্রামিং শেখা শুরু করার জন্য বাংলা ভাষায় তৈরি কিছু রিসোর্স –

ইনফরমেটিক্স অলিম্পিয়াড

আন্তর্জাতিক ইনফরমেটিক্স অলিম্পিয়াডের লোগো

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

আন্তর্জাতিক ইনফরমেটিক্স অলিম্পিয়াডে দল গঠনের লক্ষ্যে প্রথমে জাতীয় ইনফরমেটিক্স অলিম্পিয়াড নামে প্রতিযোগিতা অনুষ্ঠিত হয়, তারপর সেখানে যারা ভালো করে, তাদেরকে নিয়ে বেশ কিছু বাছাই প্রতিযোগিতা করার পরে চূড়ান্ত দল গঠন করা হয়। আর জাতীয় প্রতিযোগিতায় আসতে হলে প্রথমে পাড়ি দিতে হবে বিভাগীয় অলিম্পিয়াড। বাংলাদেশ ইনফরমেটিক্স অলিম্পিয়াডের কোনো অফিশিয়াল ওয়েবসাইট নেই। তাই খবরাখবর পাওয়ার জন্য চোখ রাখতে হবে এই ফেসবুক গ্রুপে : https://www.facebook.com/groups/bdoifamily/

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

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

জাতীয় ইনফরমেটিক্স অলিম্পিয়াডে যেহেতু প্রোগ্রামিং করে সমস্যার সমাধান করতে হবে, তাই প্রোগ্রামিং জানতে হবে। প্রোগ্রামিং শেখার জন্য অনলাইনে একটি ফ্রি কোর্স আছে : http://dimikcomputing.com/course/introduction-to-programming-online-course/। একটি জিমেইল একাউন্ট থাকলেই রেজিস্ট্রেশন করা যায়। কোর্সের ভিডিওগুলো নিয়ে ‘প্রোগ্রামিংয়ে হাতে খড়ি’ নামক একটি ডিভিডিও তৈরি করা হয়েছে, যেটি পাওয়া যায় ঢাকার নীলক্ষেতের হক লাইব্রেরিতে। আর ঘরে বসেও কেনা যায়, রকমারি ডট কম থেকে। ভিডিও লেকচারের পাশাপাশি বই পড়তে হবে। প্রোগ্রামিং শেখা শুরুর করার জন্য বাংলায় ‘কম্পিউটার প্রোগ্রামিং ১ম খণ্ড (লেখক: তামিম শাহরিয়ার সুবিন, প্রকাশক: অন্যরকম প্রকাশনী)’ বইটি পড়া যেতে পারে। বইয়ের ওয়েবসাইটে বইটি বিনামূল্যে পড়া যায় : http://cpbook.subeen.com। এছাড়া ওয়েবসাইটে কিছু সমস্যা আছে, যেগুলো সমাধানের চেষ্টা করলে প্রোগ্রামিং স্কিল বাড়বে।

ইনফরমেটিক্স অলিম্পিয়াডের জন্য গাণিতিক জ্ঞান ও দক্ষতা বাড়াতে দ্বিমিক কম্পিউটিং স্কুল আয়োজিত, হাম্মাদ আলী স্যারের ডিসক্রিট ম্যাথ নামক অনলাইন কোর্সটি করা যেতে পারে এখান থেকে : http://dimikcomputing.com/course/discrete-mathematics-online-course/। এটিও সবার জন্য ফ্রি। লেকচার ভিডিওগুলোর ডিভিডি কিনতে পাওয়া যায় ঢাকার নীলক্ষেতের হক লাইব্রেরি ও রকমারি ডট কম-এ।

প্রোগ্রামিং চর্চা করার জন্য আরো কিছু গুরুত্বপূর্ণ ওয়েবসাইটের লিঙ্ক পাওয়া যাবে এখানে : http://cpbook.subeen.com/2011/08/blog-post_854.html

সবার জন্য শুভকামনা।

প্রোগ্রামিং শেখা

মাঝে মাঝে এমন প্রশ্ন পাই,

  • ‘প্রোগ্রামিংয়ের A টু Z শিখতে চাই, কোন বইটা কিনব?’।
  • ‘সি শিখে কী লাভ? ডেস্কটপ অ্যাপ্লিকেশন বানাতে পারছি না।’
  • ‘লুপ শেষ করে অ্যারে শুরু করে দিলাম, কিন্তু গেম কীভাবে বানাবো, এখনও তো গেমের কোনো কথাই পড়লাম না।’

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

প্রোগ্রামিং শিক্ষা একটা চলমান কার্যক্রম (continuous process)। একজন প্রোগ্রামারের কতটুকু শেখা উচিত, এই প্রশ্নের কোনো উত্তর নেই। তেমনি সব শিখে তারপরে প্রোগ্রাম বা সফটওয়্যার তৈরি শুরু করবো, এরকম ভাবাটা অযৌক্তিক। প্রোগ্রামিংয়ের A-Z শেখার জন্য কোন বইটা পড়ব? এই প্রশ্নেরও উত্তর নাই একই কারণে। ভাষা শেখার ব্যাপারটাই খেয়াল করো। আমরা যেমন প্রথমে বর্ণ শেখা শুরু করি। তারপরে ওই বর্ণগুলো দিয়ে ছোট ছোট শব্দ। তারপরে আরেকটু বড় শব্দ। বানান ভুল করি, আবার ভুল থেকে শিখি। তারপরে ছোট ছোট বাক্য তৈরি করতে শিখি। সেখানেও ভুল হয়। ভুল করতে করতে একসময় আমরা ঠিকঠাক বাক্য তৈরি করা শিখি। তারপরে প্যারাগ্রাফ লিখতে শিখি। একসময় বড় বড় রচনাও লিখে ফেলি। তারপরে একসময় হয়ত সেই ভাষায় বই লিখে ফেলতেও সমস্যা হয় না।

তেমনি প্রথমে একটা প্রোগ্রামিং ভাষা কিছুদূর শেখার পরে তুমি যদি লিনাক্সের মতো একটা অপারেটিং সিস্টেম, বা ফেসবুকের মতো ওয়েব অ্যাপ্লিকেশন তৈরির কাজ শুরু করতে চাও, তাহলে হবে না। তুমি ভার্সিটিতে যদি কম্পিউটার সায়েন্স পড়, তখন প্রথমে একটু সি শিখলে, সেগুলো দিয়ে বিভিন্ন প্রবলেম সলভ করলে, তারপরে আরেকটু শিখলে, আরো কিছু প্রবলেম সলভ করলে। এভাবে সি ল্যাঙ্গুয়েজের দরকারি জিনিসগুলো শেখার সাথে সাথে প্রোগ্রামিংয়ের লজিক তোমার মাথায় ঢুকে গেলো। এসময় যদি তুমি সি দিয়ে গেম বানাতে চাও, তাহলে হবে না। তারপরে তুমি ডিসক্রিট ম্যাথ শিখলে, ডাটা স্ট্রাকচার শিখলে।  এখন তুমি আগের চেয়ে বড় বড় প্রোগ্রাম লিখতে পারো। প্রোগ্রামগুলোর কোডও আগের চেয়ে ইফিশিয়েন্ট হয়। তারপরে তুমি জাভা (অথবা সি শার্প) শিখলে। সেখানে ল্যাঙ্গুয়েজ শেখার সাথে সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের ধারণাটা পাকাপোক্ত করে নিলে। এবারে হয়ত তুমি সুন্দর একটা ডেস্কটপ অ্যাপ্লিকেশন তৈরি করে ফেললে। যেটা হয়ত তুমি সি শেখার সময়ই তৈরি করতে চাইতে… এভাবে সময়ের সাথে সাথে প্রোগ্রামিং করতে করতেই প্রোগ্রামিং শেখা হয়, সেটা কখনও থামানো যায় না। আমার নিজের কথাই বলি। আমি ২০০১ সালে প্রোগ্রামিং শেখা শুরু করি সি ল্যাঙ্গুয়েজ দিয়ে (স্ট্রাকচার্ড প্রোগ্রামিং)। এখন আমি ফাংশনাল প্রোগ্রামিং শিখছি, স্কালা (scala) ল্যাঙ্গুয়েজ শেখার সাথে সাথে (গত সপ্তাহ থেকে শুরু করেছি)। আবার পাইথন শেখার শুরু ২০০৭ সালের শেষ দিকে। কিন্তু আজকেও পাইথনের একটা বইয়ের একটা চ্যাপ্টার পড়ছিলাম, নতুন কিছু শেখার জন্য। এর মধ্যে গত কয়েক বছরে কিন্তু হাজার হাজার লাইন পাইথন কোড লিখে ফেলেছি। আবার আমি যদি বসে থাকতাম যে পাইথন পুরোপুরি শিখে তারপরে পাইথন দিয়ে কাজ করবো, তাহলে হয়ত কখনওই সেটা করা হতো না। এই পোস্টের মূল বক্তব্য আশা করি তোমরা বুঝতে পেরেছ।

ফ্লিপড ক্লাসরুম

ক্লাসরুমে শিক্ষক বেশিরভাগ সময়ই লেকচার দিবেন, তারপরে দুইটা উদাহরণ দেখিয়ে একগাদা বাড়ীর কাজ দিয়ে দিবেন। ক্লাসরুমে পড়ানোর এটাই চিরাচরিত রীতি। আমিও কালে-ভদ্রে যখন পড়াই, এভাবেই পড়াই। উন্নত দেশে এখন কিছু কিছু জায়গায় শিক্ষকরা ফ্লিপড ক্লাসরুম (flipped classroom) পদ্ধতি ব্যবহার করছেন। যেখানে শিক্ষার্থীরা বাসায় লেকচার দেখে ও পড়ে আসবে। ক্লাসে এসে আলোচনা, তর্ক-বিতর্ক ও প্রবলেম সলভিং করবে। আমরা উন্নত দেশ না, কিন্তু তাতে কী? এরকম এক্সপেরিমেন্ট করানোতে তো কোনো বাঁধা নাই।

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

অনলাইন কোর্সে আরেকটি সমস্যা হচ্ছে সার্টিফিকেশন। আমাদের হাতে আপাতত যেই টেকনোলজি আছে, সেটি দিয়ে ভেরিফাই করার উপায় নাই যে পরীক্ষা দেওয়ার সময় শিক্ষার্থী অন্য কারো সাহায্য নিচ্ছে কী না। Coursera এবং অন্য মুক (MOOC) প্রোভাইডারগুলো অবশ্য সেই চেষ্টা করছে, দেখা যাক কী হয়। সেই গবেষণায় অংশ নেওয়া বা বিনিয়োগ করার মত অর্থ আমাদের, অর্থাৎ দ্বিমিক কম্পিউটিং স্কুলের (https://www.facebook.com/DimikComputing) নাই।

বাংলাদেশে প্রোগ্রামিং শিক্ষা আরো ভালোভাবে ছড়িয়ে দিতে ফ্লিপড ক্লাসরুম যার বাংলা আমি করেছি অন্যরকম ক্লাসরুম (আরো ভালো শব্দ থাকলে কমেন্ট করুন), সেটি খুব কার্যকরী হবে বলে আমার ধারণা। কারণ আমাদের দেশে প্রোগ্রামিং শিক্ষক খুবই অপ্রতুল। কিন্তু হাজার হাজার ছেলেমেয়ে প্রোগ্রামিং শিখতে চায়। অনেকেই প্রোগ্রামিং শেখার জন্য বিভিন্ন ট্রেনিং সেন্টারে ভর্তি হয় এবং এইচটিএমএল শিখে মনের আনন্দে ফেরত আসে (HTML শেখা দোষের কিছু না, প্রোগ্রামিং শেখার মতো সবারই কমবেশি এইচটিএমএল জানা উচিত, তবে প্রোগ্রামিং শেখানোর নাম করে এইচটিএমএল শেখানো অবশ্যই দোষের)। যাই হোক, আমরা যেসব অনলাইন কোর্স তৈরি করছি (ইতিমধ্যে ৪ টা কমপ্লিট, সামনে আরো ৩টা আসছে), সেগুলোর ডিভিডিও তৈরি করেছি [১]। ডিভিডিতে কেবল ভিডিও লেকচার আছে। এই ডিভিডিগুলো শিক্ষার্থীরা কিনছে, তবে ভিডিও দেখার সময় তাদের মনে নানা প্রশ্নের উদয় হতে পারে, যেসব প্রশ্ন করার জন্য ফেসবুকে গ্রুপ তৈরি করে দিয়েছি। কিন্তু এখনও আমাদের দেশের বেশিরভাগ শিক্ষার্থী অনলাইনে কিভাবে প্রশ্ন করতে হয় বা কোনো কিছু জিজ্ঞেস করতে হয়, সেই ব্যাপারটি জানে না।

তাই আমি যেই উদ্যোগটি নিতে যাচ্ছি, সেটি হচ্ছে অন্যরকম ক্লাসরুম। দেশের বিভিন্ন জায়গায় শিক্ষার্থীরা প্রোগ্রামিং কোর্স করবে এভাবে : বাসায় ভিডিও লেকচার দেখবে, কোনো প্রশ্ন থাকলে সেটি ক্লাসে এসে করবে। ক্লাসে একজন সমন্বয়ক থাকবেন, যিনি সেই প্রশ্নের উত্তর দেওয়ার চেষ্টা করবেন, অন্য শিক্ষার্থীরাও সেই প্রশ্নের উত্তর দেওয়ার চেষ্টা করবে। আর উত্তর দিতে না পারলে সেই প্রশ্ন অনলাইনে আমাদের কাছে চলে আসবে (2nd level support)। এছাড়া আমরা অনেক প্রবলেম দিয়ে দিবো, যেগুলো শিক্ষার্থীরা সমাধানের চেষ্টা করবে এবং একটি অনলাইন প্ল্যাটফর্মে সেই সমাধানগুলো পরীক্ষা করা হবে।

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

প্রথম এক্সপেরিমেন্টটা করার জন্য ঢাকার বাইরে একটি প্রতিষ্ঠান রাজি হয়েছে। তবে তাদের কাজ শুরু করার আগে আমি একটি মিনি এক্সপেরিমেন্ট করবো কয়েকজন শিক্ষার্থী নিয়ে, যেখানে আমি নিজে ক্লাসরুমে উপস্থিত থাকবো, কিন্তু লেকচার দিবো না। কেবল প্রশ্নের উত্তর দিবো আর প্রবলেম সলভিং সেশনে সাহায্য করবো। এটি করা হবে দ্বিমিক ক্লাসরুমে (https://www.facebook.com/DimikClassroom)। বিস্তারিত দ্বিমিক ক্লাসরুমের ফেসবুক পেজে দেওয়া আছে। দেখা যাক কী হয়। নতুন কিছু করাটা সবসময়ই আনন্দদায়ক, আর সেটা যদি হয় অন্যরকম কিছু, তাহলে আনন্দের মাত্রাটা বেড়েই যায়।

[১] দ্বিমিক কম্পিউটিং থেকে প্রকাশিত ডিভিডগুলো পাওয়া যাবে রকমারি ডট কম এবং নীলক্ষেতের হক লাইব্রেরিতে।
রকমারির লিঙ্ক : http://rokomari.com/publisher/2565

সিএস, সিএসই, এসই নাকি আইসিটি?

তোমরা অনেকেই এখন উচ্চমাধ্যমিক পার হয়ে বিশ্ববিদ্যালয়ে ভর্তির প্রস্তুতি নিচ্ছ। আর প্রোগ্রামিংয়ের প্রতি ভালোলাগার কারণেই হোক, কিংবা পাশের বাসার বড় ভাইয়ের প্রভাবেই হোক, তোমাদের কেউ কেউ হয়ত কম্পিউটার সায়েন্স পড়তে চাচ্ছ। এখন বিশ্ববিদ্যালয়গুলোতে কম্পিউটার সায়েন্স নিয়ে বেশ কিছু বিভাগ আছে, যেগুলোর নাম দেখে তুমি দ্বিধাগ্রস্ত। যেমন : সিএস (কম্পিউটার সায়েন্স), সিএসই (কম্পিউটার সায়েন্স ও ইঞ্জিনিয়ারিং), এসই (সফটওয়্যার ইঞ্জিনিয়ারিং), আইসিটি (ইনফরমেশন ও কমিউনিকেশন টেকনোলজি) ইত্যাদি। তোমাদের প্রশ্নটি হচ্ছে কোন বিভাগে ভর্তি হলে ভালো প্রোগ্রামার হওয়া যায়? কিংবা, পাশ করার পরে যদি আমি সফটওয়্যার প্রকৌশলী বা নির্মাতা হিসেবে চাকরি করতে চাই, এসব বিভাগের মধ্যে কোনটি পড়া ভালো হবে?

আমি যেহেতু অনেক বছর আগে বিশ্ববিদ্যালয়ে ভর্তি হয়েছিলাম, তাই আমি ‘প্রোগ্রামিং স্কুল'[১] গ্রুপে একটি পোস্ট দেই এবং সেখান থেকে বিভিন্ন বিশ্ববিদ্যালয়ের সিলেবাস জোগাড় করি। বিভাগের নামগুলো ভিন্ন হলেও সিলেবাস কিন্তু খুব কাছাকাছি। এখন চল, একটু জেনে নিই, আন্ডারগ্রাজুয়েট পর্যায়ে কোন কোন বিষয়গুলো ভালোভাবে পড়লে সেটা একজনকে ভালো সফটওয়্যার প্রকৌশলী হিসেবে বেড়ে উঠতে সহায়তা করে?

প্রথমেই জানতে হবে কম্পিউটার সম্পর্কে মৌলিক ধারণা, আর সেটি পাওয়া যাবে Introduction to Computer নামক কোর্সে। তারপর Structure Programming (স্ট্রাকচার্ড প্রোগ্রামিং)। সাধারণত আমাদের দেশের বিশ্ববিদ্যালয়গুলো এই বিষয়টি পড়ানোর সময় সি ল্যাঙ্গুয়েজ শেখায়। আর সেই সাথে Discrete Mathematics (ডিসক্রিট ম্যাথমেটিক্স)। এটিও দেখবে সিলেবাসে আছে।

তারপরে আমাদের শিখতে হবে Object Oriented Programming (অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং), Data Strucutre (ডাটা স্ট্রাকচার) ও Digital Logic (ডিজিটাল লজিক)। সেগুলোও দেখবে সব বিষয়ের সিলেবাসেই আছে।

এর পরের ধাপ রয়েছে কম্পিউটার নেটওয়ার্কিং (Computer Networking), মাইক্রোপ্রসেসর ও অ্যাসেম্বলি ল্যাঙ্গুয়েজ (Microprocessor and Assembly Language), কম্পিউটার আর্কিটেকচার (Computer Architecture) ও অপারেটিং সিস্টেম (Operating System)। এগুলোও আবশ্যিক বিষয়, মানে জানতেই হবে। তাই তোমরা যদি ভার্সিটির সিলেবাসগুলো খেয়াল করো, দেখবে যে এই বিষয়গুলো আছেই, থাকতেই হবে।

আর বাকি রইল ডাটাবেজ (Database), অ্যালগরিদম (Algorithm), আর্টিফিশিয়াল ইন্টিলিজেন্স (Artifical Intelligence) ও সফটওয়্যার ইঞ্জিনিয়ারিং (Software Engineering)। এই বিষয়গুলোও না জানলেই নয়।

এখন তুমি যদি কোনো বিশ্ববিদ্যালয়ের কম্পিউটার সায়েন্স সংশ্লিষ্ট কোনো বিভাগে ভর্তি হতে চাও, তাহলে সেই বিভাগের (মানে ডিপার্টমেন্টের) সিলেবাসটি দেখে নাও, যদি উপরে যেসব বিষয়ের কথা উল্লেখ করলাম, সেগুলো থাকে, তাহলে নিশ্চিন্তে ভর্তি হয়ে যাও।

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

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

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

[১] https://www.facebook.com/groups/programming.school/

[২] https://www.facebook.com/DimikComputing (কম্পিউটার সায়েন্সের কিছু বিষয় সহজভাবে বোঝানের জন্য তৈরি করা হয়েছে দ্বিমিক কম্পিউটিং স্কুল। সেখানে ইতিমধ্যে প্রোগ্রামিংয়ে হাতেখড়ি, ওয়েব কনসেপ্টস ও ডিসক্রিট ম্যাথের উপর বাংলায় অনলাইন কোর্স আয়োজন করা হয়েছে। সামনে আরো কিছু কোর্স আসছে।)

একজন প্রোগ্রাম প্রহরীর গল্প : ডোনাল্ড নুথ (Donald Knuth)

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

ডোনাল্ড নুথ

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

ডোনাল্ড নুথ এর পুরো নাম হচ্ছে ডোনাল্ড এরভিন নুথ। ১৯৩৮ সালের ১০ই জানুয়ারিতে আমেরিকাতে জন্মগ্রহন করেন তিনি। তিনি কেইস ইন্সটিটিউট হতে ব্যাচেলর ও মাস্টার্স ডিগ্রী লাভ করেন এবং ১৯৬৩ সালে ক্যালিফোর্নিয়া ইন্সটিটিউট থেকে পি.এইচ.ডি ডিগ্রী লাভ করেন এবং সেখানেই শিক্ষকতা শুরু করেন। ১৯৬৮  সালে তিনি স্ট্যানফোর্ড বিশ্ববিদ্যালয়ে যোগদান করেন এবং সেই সনেই তার রচিত বিখ্যাত বই “The Art of Programming” এর প্রথম খন্ড বের হয় । এই বইটি কম্পিউটার জগতের একটি উজ্জ্বল পথ-প্রদর্শক হিসেবে আজও স্মরণীয়। বইটি সংকলনের জন্য তিনি ACM(Association of Computing Machinery) কর্তৃক Turing Award লাভ করেন। নুথ এর আরও একটি  উল্লেখযোগ্য আবিষ্কার হল টেক্স নামক টাইপসেটিং সিস্টেম যা গাণিতিক ফর্মুলা দ্বারা নিয়ন্ত্রিত।

নুথ সম্পর্কে আরো একটি মজার তথ্য আছে – কোন ব্যাক্তি যদি নুথ এর বই-এ কোনো ভুল ধরিয়ে দেন, তাহলে নুথ ওই ব্যাক্তিকে $২.৫৬ পুরষ্কার দিয়ে থাকেন, আর কেউ যদি তাকে তার কাজ-সম্পর্কিত কোনধরনের সদুপদেশ দিয়ে থাকেন তিনি পান $০.৩২ । বাংলাদেশ থেকেও একাধিক ব্যক্তি নুথের বইয়ের ভুল ধরে পুরষ্কার পেয়েছেন।

আর একটি অবাক করা বিষয় হল -ডোনাল্ড নুথ এখন আর ই-মেইল ব্যবহার করেন না । কারো সাথে যোগাযোগের মাধ্যম এখন তাঁর জন্য ডাকচিঠি। কারন তাঁর ধারণা, তিনি তাঁর জীবনের খুব বড় একটি সময় এই ইমেইল ব্যবহারের পিছনে ব্যয় করে ফেলেছেন। উল্লেখ্য, নুথ ১৯৭৯ সালে আমেরিকার জাতীয় বিজ্ঞান এওয়্যার্ড লাভ করেন।

পরিচয়পর্ব আজ এই পর্যন্তই । আশা করি,আগামীতে ডোনাল্ড নুথের আবিষ্কৃত টেক্স ও তার সংকলিত বই “The Art of Programming” নিয়ে আরও বিস্তারিত আলোচনা করতে পারব । সবাই ভাল থাকুন আর প্রোগ্রামিং এর সাথেই থাকুন, প্রোগ্রামিং এর মাঝেই থাকুন। আল্লাহ হাফেজ ।

লেখক : মোহাম্মাদ দিদারুল ইসলাম রাব্বি (Mohammad Didarul Islam Rabbi)

লিনাক্স

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

 লিনাক্স অপারেটিং সিস্টেমটি তৈরি করেন ফিনল্যান্ডের নাগরিক লিনাস টোরভাল্ডস্, আজ থেকে প্রায় ২৩ বছর আগে, ১৯৯১ সালে। তার আগে ইউনিক্স অপারেটিং সিস্টেম চালু থাকলেও সেটির সোর্স কোড উন্মুক্ত ছিল না। লিনাক্সের সবচেয়ে বড় বৈশিষ্ট্য হচ্ছে এটি ওপেন সোর্স, অর্থাৎ এর সোর্স কোড উন্মুক্ত। যে কেউ এই সোর্স কোড ডাউনলোড করতে পারবে, প্রয়োজন অনুসারে এর কোনো অংশ পরিবর্তন করতে পারবে (এর জন্য অবশ্যই প্রোগ্রামিং জানতে হবে), আবার সেই পরিবর্তিত সোর্স কোড বিতরণও করতে পারবে। তাই লিনাসের তৈরি লিনাক্স অপারেটিং সিস্টেমের রয়েছে অসংখ্য ডিস্ট্রিবিউশন – যেমন আর্চ লিনাক্স, ডেবিয়ান, ফেডোরা, উবুন্টু, লিনাক্স মিন্ট, সেন্ট ওএস, ওপেন সুসে ইত্যাদি। এগুলোর একেকটা দেখতে একেক রকম হলেও মূলে রয়েছে লিনাক্সের কার্নেল – মানে লিনাক্স অপারেটিং সিস্টেমের মূল অংশ। লিনাক্স কার্নেলের উপর ভিত্তি করে আরো প্রয়োজনীয় সফটওয়্যার তৈরি করে সেই ডিস্ট্রিবিউশনগুলো সাজানো হয়।

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

বাংলাদেশে নব্বইয়ের দশকের মাঝামাঝি কয়েকটি আইএসপি (ইন্টারনেট সার্ভিস প্রোভাইডার) চালু হয়। সেগুলো প্রত্যেকেই লিনাক্সের উপর নির্ভরশীল ছিল। বিডিকম অনলাইন লিমিটেডের সুমন আহমেদ সাবির বলেন, “সেই সময় আমরা কার্ণেল ১.০ তে কাজ শুরু করি। শেখার জন্য কিছু বই আর ডকুমেন্টেশন ছিল, সেগুলো ঘেঁটে ঘেঁটেই আমাদের শেখা। সার্ভারের কাজের জন্য ইউনিক্সই তখন বিশ্বব্যাপী সমাদৃত ছিলো, কিন্তু ওগুলোর দাম ছিল অনেক বেশি, তাই আমাদের জন্য লিনাক্স ব্যবহারের কোনো বিকল্প ছিলো না।” বর্তমানেও বাংলাদেশের আইএসপিগুলোর প্রথম পছন্দ লিনাক্স। তবে এখন কাজ অনেক সহজে করা যায়, আগে যেই কাজ করতে হয়ত তিন-চার দিন সময় চলে যেত, সেই কাজ এখন তিন-চার ঘণ্টায় করে ফেলা যায়। আর ইন্টারনেটের সহজলভ্যতার জন্য নতুন কিছু শিখে নিতে তেমন বেগ পেতে হয় না।

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

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

বিভিন্ন ওপেন সোর্স সফটওয়্যার :
ব্রাউজার : মজিলা ফায়ারফক্স, ক্রোমিয়াম (গুগল ক্রোমের ওপেন সোর্স ভার্শন)
ডকুমেট প্রসেসর : লিব্রা অফিস রাইটার
স্প্রেডশীট : লিব্রা অফিস ক্যাল্ক
মাল্টিমিডিয়া প্রেজেন্টেশন : লিব্রা অফিস ইমপ্রেস
ইনস্ট্যান্ট মেসেজিং : পিজিন
ইমেজ এডিটিং : গিম্প
ভিডিও প্লেয়ার : ভিএলসি

বাংলাদেশে সাধারণ কম্পিউটার ব্যবহারকারিদের কাছে লিনাক্স এখনও জনপ্রিয় না হলেও সফটওয়্যার ডেভেলাপারদের অনেকেই কিন্তু লিনাক্স ব্যবহার করেন। সি, সিপ্লাসপ্লাস, জাভা, পার্ল, পাইথন, পিএচইচপ, রুবি ইত্যাদি ওপেন সোর্স প্রোগ্রামিং ভাষায় কাজ করার জন্য লিনাক্স হচ্ছে আদর্শ অপারেটিং সিস্টেম। একলিপ্স (eclipse), নেটবিনস্ (netbeans)-এর মত বড় বড় আইডিই (IDE)-গুলো লিনাক্সে চলে ভালোমতোই। এছাড়া ওয়েব ডেভেলাপমেন্টের জন্য প্রয়োজনীয় সফটওয়্যার যেমন এপাচি বা ইঞ্জিনএক্স ওয়েব সার্ভার, ডাটাবেজ সার্ভার, বিভিন্ন টুল, প্যাকেজ এগুলো খুব সহজেই লিনাক্সে ইনস্টল করা যায়। যেহেতু পৃথিবীর বেশিরভাগ সার্ভার লিনাক্সে চলে, তাই ওয়েব ডেভেলাপারদের কাজ করার জন্য প্রথম পছন্দই হচ্ছে লিনাক্সভিত্তিক কোনো একটি অপারেটিং সিস্টেম। এছাড়া কম্পিউটার সায়েন্সের শিক্ষার্থী, যাদের জানতে হয় একটি অপারেটিং সিস্টেম কিভাবে কাজ করে, তাদের জন্যও লিনাক্স আদর্শ।

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

যারা উবুন্টু ব্যবহারে আগ্রহী, তাদের জন্য দ্বিমিকের লিনাক্সের সঙ্গে পরিচয় কোর্সটি উপযোগি। এবং এই অনলাইন কোর্সটি সবার জন্য ফ্রি।

নোট : আমার এই লেখাটি প্রথম আলোতে প্রকাশিত হয় আগষ্ট ২৯, ২০১৪ তারিখে। লিঙ্ক : http://www.prothom-alo.com/technology/article/304102/

ফ্রিল্যান্সিং ও আউটসোর্সিং

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

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

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

ফ্রিল্যান্সিং সম্পর্কে আরো জানতে নিচের ভিডিওটি দেখুন।

আমি লেখাটি যখন শুরু করেছিলাম, কাকতালীয়ভাবে তার কিছুক্ষণ পরে প্রথম অলোর অনলাইন সংস্করণে এই লেখাটি প্রকাশিত হয়: http://www.prothom-alo.com/technology/article/194983/, এখানে অনেক সুবিধার কথা বলা আছে, তাই আমি সুবিধার বিষয়গুলো আর লিখলাম না।

এবার কয়েকটি অসুবিধার কথা বলি।

১) নিজের মেধার পূর্ণ ব্যবহার না করা।
অনেকের মধ্যেই অনেক ভালো কাজ করার মতো মেধা ও যোগ্যতা আছে। দরকার কেবল একটু পরিশ্রম। এখন কেউ ২ মাস ঘাঁটাঘাঁটি করে ফ্রিল্যান্সিংয়ে নেমে পড়ল, তার বয়স হয়ত ১৫। ঘণ্টায় ২ ডলার আয় করেই অনেক খুশি। মাসে ১০০ ঘণ্টা কাজ করলে ২০০ ডলার, মানে ১৫ হাজার টাকা! সে তার বেশিরভাগ সময়ই ব্যায় করতে লাগলো এসব কাজে। নতুন কিছু শেখা হলো না, নিজে উন্নত হলো না, তাহলে উন্নতিও হবে না। ১৫ বছর বয়সে ১৫ হাজার টাকা অনেক বেশি মনে হবে, কিন্তু আরো ১৫ বছর পরে, ৩০ বছর বয়সে ৩০ হাজার টাকা কিন্তু খুব বেশি নয়। তাহলে কী মানুষ ফ্রিল্যান্সিং করবে না? করবে, কিন্তু সেটা প্রয়োজন হলে। খুব দরকার না হলে ওই বয়সে ফ্রিল্যান্সিং না করে বরং বিভিন্ন জিনিস শিখে নিজের ভিতটা শক্ত করা প্রয়োজন, যাতে ২ ডলার রেটের কাজগুলো করতে না হয়, ঘণ্টায় ১০ ডলার রেটে যেন শুরু করতে পারে। তীর অনেক সামনে যেতে চাইলে শুরুতে তাকে বেশ পেছনে টানা লাগে।

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

৩) সামাজিক স্বীকৃতি। এটা একটা গুরুত্বপূর্ণ বিষয়। যারা এখনও বিয়ে করে নি, তারা হয়তো টের পাচ্ছে না বিষয়টা। তবে এক্ষেত্রে বিডিওএসএন ও বেসিসকে ধন্যবাদ দিতে হয়, কারণ তারা এটা নিয়ে হৈচৈ করার কারণে ধীরে ধীরে মানুষ বিষয়টা সম্পর্কে জানতে পারছে।

৪) শেষ অসুবিধাটা হচ্ছে রাত জাগা। যেহেতু বেশিরভাগ ক্ষেত্রেই আমেরিকার লোকজনের সাথে কাজ করতে হয়, আর সেটা পৃথিবীর মানচিত্রে আমাদের ঠিক উল্টো দিকে, তাই রাত না জেগে উপায় নেই। এটা দীর্ঘমেয়াদে স্বাস্থ্যের জন্য ক্ষতিকর। তবে এ থেকে পরিত্রাণের সহজ উপায় আমার জানা নেই।

মূল লেখাটি ফেসবুকে নোট আকারে লিখেছিলাম এপ্রিল ১৮, ২০১৪ তারিখে।

কোন ভার্সিটিতে সিএসই পড়ব ?

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

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

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

এবার আসি যারা সফটওয়্যার তৈরির কাজ করতে চাও। ভালো সফটওয়্যার ইঞ্জিনিয়ারদের চাকরির সুযোগ অনেক (দেশে এবং বিদেশে) আর বেতনও ভালো। আমি যদ্দূর জানি, এই কারণেই পোলাপান সিএসই পড়তে চায়।

ধরা যাক, বাংলাদেশে ৮০টা প্রাইভেট ইউনিভার্সিটি আছে, এবং সেগুলোর একটা ranking করা হলো। এখন সমান মেধার দুই বন্ধুর একজন ১ নম্বর ভার্সিটিতে পড়ল, আরেকজন পড়ল ৮০ নম্বর ভার্সিটিতে। ৮০ নম্বরেরটায় যে পড়বে, সে যদি ঠিকমতো প্রোগ্রামিং শেখে, চর্চা করে, সফটওয়্যার তৈরির কলাকৌশল সম্পর্কে খোঁজখবর রাখে, আর ১ নম্বর ভার্সিটিতে পড়ুয়া বন্ধু যদি কেবল গায়ে হাওয়া লাগিয়ে ঘুরে বেড়ায়, তাহলে ক্যারিয়ারের শুরুতে প্রথম জন, যে ৮০ নম্বর বিশ্ববিদ্যালয়ে পড়ছে, সে অনেক সুবিধাজনক অবস্থানে থাকবে। কারণ সফটওয়্যার প্রকৌশলবিদ্যায় ভালো করতে হলে কাজ জানা প্রয়োজন এবং পরিশ্রমীরাই এখানে ভালো করে।

একটি বিশ্ববিদ্যালয়ের ব্যাপারে খোঁজ নিতে গেলে প্রথমেই জানতে হবে, শিক্ষকরা কেমন। কথা হচ্ছে, কম্পিউটার সায়েন্স কিন্তু অন্য বিষয়ের মতো নয়, যে অমুক ভার্সিটিতে ভালো পড়ায়, তাই সেখানের শিক্ষার্থীরা ভালো। বেশিরভাগই নিজে নিজে শিখতে হয়, শিক্ষক কেবল অনুপ্রেরণা দেন। এখানে একজন তরুণ শিক্ষকও অনেক অনুপ্রেরণা দিতে পারেন, আবার পিএচইডি করা শিক্ষকও শিক্ষার্থীদের কাছে বিষয়বস্তু বোরিং করে তুলতে পারেন। তাই ডিগ্রীর দিকে না তাকিয়ে খোঁজ নিতে হবে, কোন ভার্সিটিতে এমন শিক্ষক বেশি যারা মনমানসিকতায় তরুন, শিক্ষার্থীদের সাথে বন্ধুর মতো ব্যবহার করেন – অনেকটা Dead Poets Soceity-এর মিস্টার কিটিংসের মতো। শিক্ষকরাই পারেন অন্যরকম একটি কালচার তৈরি করতে।

এছাড়া যেসব বিষয় মাথায় রাখতে হবে :
খরচ : শুধু টিউশন ফি ছাড়াও ভার্সিটিতে আরো অনেক খরচ থাকে। তাই খুব ভালো করে খোঁজ নিতে হবে।
যাতায়াত : বাসা থেকে দূরত্বের ব্যাপারটিও হিসাবে আনতে হবে। ভার্সিটিতে যাতায়াত করতে প্রতিদিন রাস্তার তিনঘণ্টা সময় ব্যায় করা কোনো সৃজনশীল ছাত্রের কাজ হতে পারে না। ব্যপারটি অস্বাস্থ্যকরও বটে।
বন্ধু : তোমার ভালো বন্ধুরা কোথায় পড়বে, সেটাও একটা বিবেচ্য বিষয় হতে পারে।

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

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

আর ক্যারিয়ার বিষয়ক এই লেখাটাও দেখতে পারো :  http://blog.subeen.com/?p=175

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

প্রোগ্রামিং ক্যারিয়ার গড়তে ৫টি টিপস্

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

কিভাবে নিজের দক্ষতা প্রকাশ করবে?

১) প্রোগ্রামিং প্রতিযোগিতায় অংশগ্রহন : তুমি যদি বিশ্ববিদ্যালয় পড়ুয়া শিক্ষার্থী হও, তাহলে প্রোগ্রামিং প্রতিযোগিতাগুলোতে নিয়মিত অংশগ্রহন করতে পারো। এসিএম আইসিপিসি’র ঢাকা রিজিওনাল প্রতিযোগিতায় শীর্ষ দুই বা তিনটি দলের মধ্যে থাকলে তোমার গুগল বা ফেসবুকে ইন্টারভিউ দেওয়ার জোরালো সম্ভাবনা তৈরি হয়। তুমি কম্পিউটার সায়েন্সে পড় নাকি ফিজিক্সে পড়, এটি নিয়ে তাদের মাথাব্যাথা থাকবে না। আরেকটি সুবিধা হবে, দেশের শীর্ষ প্রোগ্রামারদের সাথে তোমার জানাশোনা হবে।

২) প্রোগ্রামিং ব্লগ : তুমি প্রোগ্রামিং বিষয়ক ব্লগ লেখতে পারো। প্রতিদিন প্রোগ্রামিং করতে গিয়ে তুমি যা শেখো, সেগুলো লিখে রাখতে পারো নিজের ভাষায়। কোনো সমস্যায় পড়লে কিভাবে সেই সমস্যার সমাধান করলে, সেটিও লিখে রাখতে পারো। এতে অন্যরা যেমন উপকৃত হবে, তেমনি তোমার একটি পরিচিতি তৈরি হবে এবং সিভিতে তুমি তোমার ব্লগের লিঙ্ক দিয়ে দিবে। এতে যিনি তোমার ইন্টারভিউ নিবেন, তিনি সেটি দেখে তোমার দক্ষতা সম্পর্কে খানিকটা ধারণা পাবেন। কিন্তু খবরদার, নিজের ব্লগে অন্যের লেখা চুরি করবে না।

৩) ওয়েব অ্যাপ্লিকেশন তৈরি : তুমি নিজে বিভিন্ন ওয়েব অ্যাপ্লিকেশন তৈরি করে সেগুলো ইন্টারনেটে হোস্ট করে রাখতে পারো। আর নিজের একটি ওয়েবসাইট তৈরি করে সেখানে সবকিছু সাজিয়ে রাখো, এটাকে পোর্টফোলিও (Portfolio) বলে। তুমি কোন লেভেলের ওয়েব ডেভেলাপার, সেটা তোমার পোর্টফোলিওই বলে দেবে।

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

৫) বিভিন্ন ফোরামে অংশগ্রহন : বিভিন্ন ফোরামে কিংবা গ্রুপে মাঝে-মধ্যে সময় দাও। সেখানে অন্যরা যেসব সমস্যা দিয়ে সাহায্য চেয়েছে, সেগুলো সমাধান করে দাও (ক্লাশের এসাইনমেন্ট করে দিবে না কিন্তু!)। এতে তোমার দক্ষতা যেমন বাড়তে, তেমনি অন্য প্রোগ্রামারদের নজরেও তুমি পড়ে যাবে!

তোমার জন্য শুভকামনা রইল।

বি.দ্র. আরো কোনো টিপস্ জানা থাকলে দয়া করে মন্তব্যে লিখুন। ধন্যবাদ।