ইদানিং কালে নতুন যারা ডেভেলপমেন্ট বা প্রোগ্রামিং ফিল্ডে নিজেদের জড়াচ্ছে, বেশ কিছু বিষয়ের ওপর জ্ঞান না থাকার কারণে বেশির ভাগের ক্যারিয়ার শুরু হচ্ছে ভুলভাবে। ব্যাপারটা খুবই সেন্সেটিভ তাদের ফিচারের জন্য। আমার ডেভেলপমেন্ট ক্যারিয়ারের কয়েক বছরের অভিজ্ঞতা এবং গত কয়েক মাসের অব্জারভেশন থেকে আপনার সামনে তুলে ধরলাম। আশা করছি নতুনদের জন্য সহায়ক হবে।
ম্যানুয়াল কোডিং-এ ভীতিঃ
ওয়েব ডিজাইনের জন্য আমরা শুরুতেই এইচটিএমএল এবং সিএসএস শিখি বা এটা শিখা বাঞ্ছনীয় সবাই জানি। তবে প্রবলেম অন্যখানে –
অনেকেই স্ট্রাকচারাল বা ম্যানুয়াল কোড না শিখে শর্টকাটে এইচটিএমএল শিখেই নিজেকে এক্সপার্ট ভেবে বসে। ফলাফল কমপ্লেক্স পেজ স্ট্রাকচার ডিজাইন করতে গিয়ে বিভিন্নমুখী প্রবলেম পড়ছে। দেখা যায়, এর-ওর কাছে সিম্পল প্রবলেম সল্ভের জন্য ঘন্টার পর ঘণ্টা ধরে ওয়েট করে সল্যুশন নিতে হচ্ছে। লাভ কি তাতে? আসলেই কি প্রবলেম সল্ভ হচ্ছে এভাবে? কতজন আপনাকে নিজের সময় ব্যয় করে সল্যুশন দিবে?
আমার প্রশ্ন হচ্ছে – কি দরকার কোডিংয়ে শর্টকাট খোঁজার? সত্যি বলতে কি, রিয়াল কোডিং শিখতে না পারলে কোডিং এ আপনি কখনই মজা পাবেন না, উল্টো ছোট ছোট প্রবলেম সল্ভের জন্য আপনাকে অনেক বড় কোড ব্লক লিখতে হতে পারে। এতে শুধু কমপ্লেক্সজিটি বাড়বে। কিন্তু, আপনি স্ট্রাকচারাল বা ম্যানুয়াল কোডিং এ অভিজ্ঞতা অর্জনের পর নিজে থেকেই বুঝবেন অল্প কোড লিখেও কিভাবে বড় কাজ করা সম্ভব। কিন্ত, নতুনদের মধ্যে ৮০% এর বেশি এগুলো কিছুতেই ফলো করেনা বলে এদের ফিউচার আসলেই নড়বড়ে হবার সম্ভাবনা থেকে যাচ্ছে।
এইচটিএমএল কোডিং এর জন্য অনেকেই এমেট বা জেন কোডিং এবং সিএসএসের জন্য বুটস্ট্রাপ, ফাউন্ডেশন বা অন্যকোন ফ্রেমওয়ার্ক ইউজ করেন। আমিও ব্যবহার করি, কারণ আমার স্ট্রাকচারাল বা ম্যানুয়াল কোডিংয়ে এখন সমস্যা হয় না এবং আমি ৩/৪ বছর শুধু ম্যানুয়ালি কোডিং করে কাজ করেছি। অনেকেই হয়তো বিশ্বাস করবেন না, আমি বুটস্ট্রাপ ইউজ করি মাত্র ২ বছর!
শুরুর দিকে ম্যানুয়াল বা স্ট্রাকচারাল কোডিং অনেক সময় নিবে কাজ সম্পন্ন কিংবা কাজ শিখতে করতে। কিন্তু ভেবে দেখুন, স্ট্রাকচারাল কোডিং এর কন্সসেপ্ট ক্লিয়ার থাকলে আপনি যেকোনো অ্যাপ্লিকেশান ইন্টারফেস সহজেই ডিজাইন করে ফেলতে পারবেন।
তাই নতুনদের প্রতি পরামর্শ, আপনারা স্ট্রাকচারাল কোডিং ভালভাবে রপ্ত করুন। শুরুর দিকে সময় বেশি লাগুক সমস্যা নাই, কিন্তু মাঝ পথে প্রবলেমে পড়লে কিন্তু অনেকদিক থেকেই ঝামেলায় পড়বেন।
অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং-এ ভীতিঃ
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং মোটেই সহজ বা ছোট বিষয় নয়। তবে, স্ট্রাকচারাল বা প্রোসিজুরাল বা ম্যানুয়াল কোডিং-এ যিনি এক্সপার্ট হবেন, তার জন্য অবজেক্ট ওরিয়েন্টেড কোডিং মোটামুটি সহজ। কারণ, অবজেক্ট ওরিয়েন্টেড কোডিং প্রোগ্রামিং এর একটি অ্যাডভানস পার্ট। স্ট্রাকচারাল বা প্রোসিজুরাল কোডিং এর চেয়ে অবজেক্ট ওরিয়েন্টেড কোডিং-এ কোডের লেন্থ কম এবং রিইউজ্যাবল কোডের ব্যবহার সম্ভব হয়। এছাড়া ক্লাস এক্সটেন্ড করে সিমিলার অন্যকোনো ক্লাস বা অবজেক্ট তৈরি করার মাধ্যমে সহজেই কাজ সম্পন্ন করা যায়।
যেহেতু অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সহজ বিষয় নয়, এবং ধরে নিয়েছি বিগেনার অনেকেই এই পোস্টটি পড়বেন, তাই উদাহরণ দিলাম না। তবে, একবার অবজেক্ট ওরিয়েন্টেড কোডিংয়ের মজা পেলে এবং এতে প্যাশনেট হয়ে পড়লে স্ট্রাকচারাল বা প্রসিজুরাল কোডিং বোরিং লাগবে। এটাও জেনে রাখা ভাল যে, আপনি চাইলেও প্রোজেক্টর ১০০% কোডিং অবজেক্ট ওরিয়েন্টেড ফ্যাশনে চালিয়ে নিতে পারবেন না। আবার প্রোজেক্টএর ধরণ অনুযায়ী প্রসিজুরাল বা অবজেক্ট ওরিয়েন্টেড ফ্যাশন ইউজ করা উচিৎ। কারণ, ছোট বা মাঝারি সাইজ প্রোজেক্টে অবজেক্ট ওরিয়েন্টেড কোডিং আনন্যাসেসারি কমপ্লেক্সিটি তৈরি করবে আবার বড় প্রোজেক্টে প্রোসিজুরাল কোডিং অনেক সময় এবং প্রোজেক্টের সাইজ বাড়িয়ে দিবে। তাই, প্রোজেক্টের ধরণ বুঝে এগুলো ইমপ্লিমেন্ট করা উচিৎ।
একজন দক্ষ প্রোগ্রামার হতে হলে আপনাকে OOP বা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং জানতে হবে। পরবর্তি সময় যখন কোন ফ্রেমওয়ার্ক নিয়ে কাজ করবেন সেখানে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং আপনাকে সম্পুর্নভাবে হেল্প করবে। কারণ, ফ্রেমওয়ার্কগুলো সময় অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ফ্যাশনে তৈরি। তাই, দক্ষ এবং আডভান্স প্রোগ্রামার হতে হলে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর বিকল্প নেই।
ফ্রেমওয়ার্ক বা সিএমএস-এ আসক্তিঃ
ফ্রেমওয়ার্ক বলতে অনেকগুলো রেডিমেড কোডের সমষ্টিকে বুঝায়। যেগুলো কল করে রেজাল্ট এক্সিকিউট করা যায়। যেমনঃ সিএসএস ফ্রেমওয়ার্ক হিসেবে বুটস্ট্রাপ উদাহরণে আনতে পারি –
ধরুন আপনি একটি প্যারাগ্রাফে ব্যাকগ্রাউন্ড কালার দিতে চাইছেন। প্যারাগ্রাফটি নিম্নরূপ –
The quick brown fox jumps over the lazy dog!
ম্যানুয়াল সিএসএস কোডিং করলে আপনাকে কোড লিখতে হবে নিম্নরূপ –
[css]
p{
background-color: #f2dede
}
[/css]
কিন্তু, আপনি যদি কোন সিএসএস ফ্রেমওয়ার্ক ইউজ করে কাজটি করেন, যেমনঃ বুটস্ট্রাপ। তাহলে কাজটি হবে নিম্নরূপ –
[html]
The quick brown fox jumps over the lazy dog!
[/html]
আউটপুট ইফেক্ট একই, কিন্তু পার্থক্য হচ্ছে – আপনি ফ্রেমওয়ার্ক ইউজ করে শুরু থেকে কাজ শিখে বা করে গেলে কখনও হয়তো বুঝতে পারবেন না কোন কোডের আউটপুট কি আসছে বা আসবে। ফলে ডিবাগিং করতে গিয়ে পড়বেন অনেক সমস্যার মুখে। আমি সহজে বুঝানোর জন্য কমপ্লেক্স কোডে যাচ্ছি না। কিন্তু, ফ্রেমওয়ার্কের একটি ক্লাস বা ফাংশন কল করার মাধ্যমে আপনি অনেক বড় কাজ সম্পন্ন করতে পারবেন।
আপনি হয়তো ভাবছেন, আউটপুট সেম আসছে, তাহলে নিজে থেকে এতো কোড লিখার কি দরকার আছে? জি অবশ্যই আছে। কারণ, যদি আপনি নিজে না জানেন কোন কোড লিখলে কি আউটপুট জেনারেট হয়, তাহলে আপনি নিজেকে কখনই স্বয়ংসম্পুর্ন ডেভেলপার বা প্রোগ্রামার হিসেবে গড়ে তুলতে পারবেন না। কারণ, আপনি যে কোড ইউজ করে ডেভেলপমেন্ট করছেন, সেটাও অন্য কারও তৈরি করা। একবার ভাবুনতো, যদি সেই ফ্রেমওয়ার্কে কখনও আপডেট রিলিজ আসে? পারবেন আপডেট মেইনটেইন করে ডেভেলপমেন্ট স্ট্যাবল রাখতে?
অবশ্যই পারবেন, যখন নিজে এক্সপার্ট হবেণ, আপনার নিজের মধ্যে কোডিং জ্ঞান থাকবে।
এতো গেল, সিএসএস ফ্রেমওয়ার্ক। এভাবে করে অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজেও ফ্রেমওয়ার্ক আছে। যেমন –
পিএইচপি-তেঃ লারাভেল, কেকপিএইচপি, সিম্ফনি, জেন্ড সহ আর অনেকগুলো।
সিএসএস-তেঃ বুটস্ট্রাপ, ফাউন্ডেশন, স্কেলেটন সহ আর অনেকগুলো।
জাভাস্ক্রিপ-তেঃ এ্যাঙ্গুলারজেএস, রিএ্যাক্ট, ব্যাকবোন সহ আর অনেকগুলো।
প্রতিটা প্রোগ্রামিং ল্যাঙ্গুয়েজেই ফ্রেমওয়ার্ক বিদ্যমান। আমাদের জানতে হবে কেন এবং কখন ফ্রেমওয়ার্ক ইউজ করা উচিৎ বা করবেন। ফ্রেমওয়ার্ক আপনার কোডিং স্পিড বাড়াবে ঠিকই, কিন্তু শুরুর দিকে এটি শুধু মুখস্ত বিদ্যার মত লিখে যাওয়ার মত হবে। আপনার কাজ হবে ঠিকই, কিন্তু প্রবলেমে পড়লে এমন অনেক কিছুই আপনি বুঝে উঠতে পারবেন না।
তাই নতুনদের উচিৎ, ক্যারিয়ারের শুরুতে ম্যানুয়াল বা স্ট্রাকচারাল বা প্রোসিজুরাল প্রোগ্রামিং বা কোডিং ভাল মত রপ্ত করা। এগুলো রপ্ত করতে পারলে অনেক বড় এবং কমপ্লেক্স প্রোগ্রামিং কনসেপ্ট, যেমনঃ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং, এমভিসি বা যেকোনো ফ্রেমওয়ার্ক খুব সহজেই বুঝে উঠতে পারবেন।
চিন্তা করার অমানুষিকতাঃ
প্রোগ্রামিংয়ে যতটা লিখতে হয়, তার কয়েকগুন বেশি চিন্তা করে সল্যুশন বের করতে হয়। বলতে পারেন, কোন একটা অ্যাপ্লিকেশান / সফটওয়্যার ডেভেলপমেন্ট সাইকেলে সলিড এবং পারফেক্ট সল্যুশন বের করার উপর প্রোজেক্টের ৫০-৭০ শতাংশ সাফল্য নির্ভর করে। প্রোগ্রামিং যেহেতু ব্যাকএ্যান্ডের কাজ, ফলে খুব সূক্ষ্মভাবে প্রবলেমের সল্যুশন মেক করতে হবে। তাই, আমাদের ধৈর্য্য সহকারে একটা বিষয়ের উপর চিন্তা করতে হবে। কিন্তু সমস্যা হল, ২-৩ ঘণ্টা চেষ্টার পর রেজাল্ট না আসলে, নতুনরা সেই প্রোজেক্ট ছেড়ে অন্য প্রোজেক্টে নিজেকে যুক্ত করে ফেলেন। ফলাফল কি দাঁড়ালো? আপনি সামান্য ২-৩ ঘণ্টা চিন্তা করে সাকসেস না পাওয়ায় প্রোজেক্ট ক্যান্সেল করলেন! একবার ভাবুনতো, নতুন প্রোজেক্টেও সেম প্রবলেম আসতে পারে বা তার চেয়েও বেশি বড়। তখন কি করবেন? ছেড়ে নিবেন আগেরটার মত?
বুদ্ধিমানের কাজ হচ্ছে, প্রবলেমের সাথে লেগে থাকা। পারফেক্ট রেজাল্ট না পাওয়া পর্যন্ত লেগে থাকা। আমি ১০০% গ্যারান্টি দিতে পারি, একটা প্রবলেম সল্ভ করতে গিয়ে আপনি অনেক কিছু শিখে ফেলবেন যা আপনার ফিউচার প্রোজেক্টকে সহজ করে দিবে। মনে রাখতে হবে, প্রোগ্রামিংয়ে হাল ছেড়ে দিলে আপনি সফল হতে পারবেন না কখনই। বরং – নিজের সাথে ওয়াদা করে লেগে থাকুন। সাফল্য আসবেই।
সবাই ভাল থাকুন, সুস্থ থাকুন!
শুভ হোক আপনার ক্যারিয়ার। 🙂
ইমেজ ক্রেডিটঃ wikihow ও অন্যান্য।
Porlam.. Valo laglo.. kisu Tips pelam.. web design Tips related Post Chai..
অনেক অনেক ভালো লাগলো।
আর আমার এমন রেকর্ড ও আছে যে, একটা প্রবলেমে পড়ে দুই-তিন দিন এর পিছনে চলে গেছে।
সমাধান না করতে পেরে কান্না চলে এসেছে।
তবুও সমাধান হইনি।
কিন্তু তবুও আমি হাল ছাড়িনি।
আর এগুলো করতে গিয়ে অনেক কিছু শিখতে পেরেছি…
এবং আমার শিখার প্রক্রিয়া এখনো চলমান…