Saturday, March 31, 2012

ভবিষ্যৎ জাভা ডেভলপারদের স্বাধীনতা

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

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

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

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

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

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

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

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

Bruno Ferreira de Souza
twitter: @brjavaman

Sunday, January 29, 2012

অবজেক্ট ওরিয়েন্টেড কনসেপ্ট এবং আমার আলসেমি

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

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

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

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