Showing posts with label thoughts. Show all posts
Showing posts with label thoughts. Show all posts

Monday, February 6, 2017

Types of Learners - the dabblers, the hacker, and the master

জর্জ লেনার্ডের একটা বই আছে, নাম মাস্টারি (MASTERY The Keys to Success and Long-Term Fulfillment)। বইয়ে তিনি তিন ধরণের শিক্ষার্থী(learners) এর কথা বলেছেন - 

The dabblers, the hacker, and the master. 

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

এর পরের গোষ্ঠী হলো হ্যাকার। এরা একটা নির্দিষ্ট পরিমাণ পর্যন্ত শিখে। They get to reasonably good at things. এরা এই বিষয় নিয়ে কাজ করে যেতে পারে। যখন learning plateau চলে আসে অর্থাৎ একটা জিনিস শিখতে শরু করতে আস্তে আস্তে ইমপ্রুভ হয়, কিন্তু একটা সময় ইমপ্রুভ হওয়া বন্ধ হয়ে যায়, তখন তারা থামিয়ে দেয় এবং অন্য কিছু তে মনোযোগ দেয়। 

অন্যদিকে মাস্টার হলো যারা কোনো কিছুতে মাস্টারি অর্জন করে ফেলেছে তারা নয়, বরং যারা কোনো একটা বিষয়ে প্রতিজ্ঞাবদ্ধ (he is somebody that's commited to continual improvement)। learning plateau চলে আসলেও থামিয়ে দেওয়া যাবে না। তিনি বলেন, এই সময়ে সবচেয়ে বেশি শেখা যায়। যদিও এটা একটা কঠিন সময় কিন্তু এর পরেই আসলে বড় জাম্প দেওয়া যায়। 

প্রোগ্রামিং বেশ কমপ্লেক্স একটা স্কিল। এখানে dabblers হলে আসলে কোনো লাভ নেই। হ্যাকার হলেও চলে। তবে মাস্টার হতে হলে এই কমিটমেন্টটা থাকতে হবে।

Tuesday, November 1, 2016

কীভাবে ভাল প্রোগ্রামার হওয়া যায়

এই প্রশ্নটি অনেকেই করে থাকে। এর একটি নির্দিষ্ট উত্তর নেই। তবে আমার মনে হয় প্রোগ্রামিং মূলত দুটি বিষয়ের সংমিশ্রণ। 

এক, চিন্তা করার ক্ষমতা ।
দুই, অনুশীলণ। 


এই দুটিই লাগে প্রোগ্রামিং করার জন্যে। এই দুটির একটি বাদ পরলে ভাল প্রোগ্রামার হওয়ার কোন উপায় নেই।

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

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

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

ম্যালকম গ্ল্যাডওয়েলের একটি বই- Outliers-এ তিনি উল্লেখ করেছেন যে, যে কোন বিষয়ে মাস্টার হতে হলে রাফলি ১০ হাজার ঘণ্টা অণুশীলন করতে হয়। সে অনুযায়ী আপনি যদি সপ্তাহে ৫ দিন ৪ ঘণ্টা করে অনুশীলন করেন, আপানর লাগবে প্রায় ১০ বছর।

নিচে একটি লিংক দিয়ে দিলাম। এটি ব্যবহার করে আপনি নিজেই ঠিক করে নিন প্রতিদিন কত ঘণ্টা এবং সপ্তাহে কতদিন অণুশীলন করবেন-http://ryac.ca/10000-hours-how-long-is-that/



Sunday, October 23, 2016

5 Mistakes Java developer makes that prevent them from growing their careers

ব্রুনো সোজা (Bruno Souza) জাভা ডেভেলপারদের ক্যারিয়ার উন্নতির লক্ষ্যে একটি নতুন সাইট তৈরি করেছে। গতকাল তার একটি ওয়েবইনার ছিল। এর টপিকটি হলো- একজন জাভা প্রোগ্রামার তার ক্যারিয়ার উন্নতির ক্ষেত্রে যে ৫ টি ভুল করে থাকে তার উপর। 

ওয়েবইনারটির লিংক: https://www.youtube.com/watch?v=pFbMYZUUT8Q


তবে এটিকে আমি বাংলাতে সংক্ষেপে বলার চেষ্টা করবো। তিনি শেষ থেকে শুরু করেছেন । এখানেও সেভাবেই লিখছি - 

পঞ্চমত, শুধুমাত্র টেকনোলজি জানলেই চলবে। 

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

চতুর্থত, অনেক বেশি অনুশীলন বা চর্চা না করা 

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

তৃতীয়ত, আপনি যা জানেন তা অন্যদের সাথে শেয়ার না করা 

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

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

দ্বিতীয়ত, ফোকাস 


আপনি নিজে দুনিয়ার সব মানুষকে অ্যাকসসে করতে পারবেন না বা সবার সঙ্গে সবকিছু শেয়ার করতে পারবেন না। আপনাকে একটি নির্দিষ্ট বিষয়ে ফোকাস করতে হবে। 

এক্ষেত্রে একটি স্পেসিফিক একটি লাইন ফলো করা যেতে পারে- 

I help (a person) to do (something) so he/she can have (something) 

Example - 

I help my coworker to learn Java so he/she can program in Java 

I help professional java developers do solve hard Java problems so they can have a secure and satisfying job or project


প্রথমত, সব কিছু নিজে করা

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


অনেকভাবেই টিমআপ করতে পারেন। একটি চমৎকার আইডিয়া হতে পারে জাভা ইউজার গ্রুপে জয়েন করা। অন্যের কোন ওপেন-সোর্স প্রজেক্টের সাথে জয়েন করতে পারেন।

Friday, August 19, 2016

একটি MVP ও একজন সফটওয়্যার প্রকৌশলী



জিনিসটা হচ্ছে এমন- 

আপনাকে বলা হলো একটা MVP বানাতে। MVP মানে হচ্ছে - minimum viable product. (যা আসলে কোন কাজ করে না, শুধুমাত্র দেখানো যায়, যে এইটা এইরকম করে কাজ করবে) 

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

পরেরদিন শুনতে পেলেন যে, আপনার বানানো MVP কে নাকি প্রোডাকশনে দিতে হবে। এই কথা শুনে, আপনার মাথায় সাথে সাথে কুফুর পিড়ামিড ভেঙে পরল, এমন অবস্থা। 

আপনি অনেক চিন্তা ভাবনা করে বললেন যে, এই প্রডাক্ট প্রডাকশন রেডি করতে হলে ৪ মাস ২৩ দিন লাগবে (আসলে কতদিন লাগবে সেটা শুধুমাত্র আ্ল্লাহ জানে)। আপনার দেওয়া এস্টিমেট দেখে আপনার product owner হেসে উড়িয়ে দিলেন। এতো সময় লাগার কোন কারণ নেই। আপনি যা বানিয়েছে তা খুব সুন্দর মতো কাজ করে। আমি চালিয়ে দেখেছি। দু-একটা বাগ থাকতে পারে। ওতে কোন সমস্যা নেই। নতুন প্রডাক্ট সেটা সবাই বুঝবে। কিছু টুয়িক করতে হবে, এর জন্যে আপনি ২ সপ্তাহ নিন। 

আপনি সাথে সাথেই সিউর হয়ে গেলেন নেক্সট ছয় মাস আপনার ঘুম হওয়ার কোন কারণ নেই। কারণ দু-এক হাজার বাগ আসলেও আপানার অবাক হবার কারণ নেই। 

তারপর, যখন বছর খানিক খাটা খাটি করে প্রডাক্টটি মোটামুটি দাড়া করালেন। তখনি শুরু হবে স্কেলিং সমস্যা। ঘন ঘন OutOfMemoryError: GC overhead limit exceeded টাইপ জিনিস পাওয়া শুরু করবেন। মাঝরাতে আপনার ঘুম ফেলে দিয়ে OutOfMemoryError ধরণের সমস্যা ফিক্স করতে হবে। 

এই টাইপ সমস্যা গুলো যখন উতরে যাবেন নেক্সট ২/৩ সপ্তাহ না ঘুমিয়ে, তখন দেখবেন আপনার বিজনেজ টিম নতুন একটা আইডিয়া নিয়ে এসেছে, যেটা ১ সপ্তাহের মধ্যে বানিয়ে দিতে হবে। 

তারা ঘটনা এমনভাবে হয়তো ব্যাখ্যা করবে যে, এই জিনিস না বানালে দুনিয়ার অর্ধেক মানুষ দঃখে কষ্টে আত্মহত্যা করে মরে যাবে।

Tuesday, July 26, 2016

We need to learn how to be an accountable person

There is a saying which goes "we have three hands – ডান হাত, বা হাত এবং অজুহাত- left hand, right hand and the excuse which is the “অজুহাত” in Bangla".

Cognitive dissonance (CD) helps the most people to elude accountability. CD is a self-protection mechanism by which we human justify our actions, it doesn't matter what is. Our brains work to line up our beliefs, attitude towards our actions and our expectation. When there is a disconnect or dissonance, we become uncomfortable and make things up or change our thinking process to align according to your feelings and that's when we do snap judgment and start blaming others or denying mistake and make excuses.

However, excuses are the antithesis of accountability. Accountability is the acknowledgment and assumption of responsibility for the actions and outcomes. It is normal to make a mistake because we are only human. We need to learn how to own mistake and move forward in a positive manner. An accountable person does that. 

An accountable person, that's what we need to be. 

Well, being a human, its is not possible to do everything that is out there. However, there is a fine line between what needs to be done and what are the available things to be done. We just need to do what needs to be done and avoid excuses! That's the root of all success.

We are all going to make mistakes at some point. Though both making mistakes and making excuses are human phenomena, however, making excuses doesn't change the mistake that is made. We should rather, acknowledge the mistake and step forward and do something.

In a world of talkers, we need to be a thinker and a doer. That's all. 

We need to learn how to be an accountable person.

Saturday, March 31, 2012

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

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

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

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

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

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

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

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

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

Bruno Ferreira de Souza
twitter: @brjavaman