এমন প্রশ্নের সম্মুখীন হয়ে কিছুক্ষণ মার্কামারা পজিশনে বসে ছিলাম। কি করলাম এই জীবনে CSE তে B.Sc. করে! What is life?
যাই হোক, “What is life?” এর দুশ্চিন্তা থেকে বেরুতে একটু সময় লাগল। তবে কিছুক্ষণ ভাবার পরে যা বুঝলাম, তাতে মনে হল প্রশ্নটা একেবারে অবান্তর না।
আমি যে কোম্পানিতে কাজ করি, সেখানে কিছু Software Developer আছে যাদের Computer Science এ অ্যাকাডেমিক ডিগ্রি নাই। কিন্তু তারাও খুব ভাল coding করতে পারে, ভাল system বানাতে পারে। কিভাবে পারে ?
কৌতূহল থেকে তাদের background নিয়ে খোজ নিয়েছি আগে। সেটা বললেই ব্যাপারটা ক্লিয়ার হয়ে যাবে। কারও কারও ব্যাকগ্রাউন্ড EEE, Physics, Statistics। কেউ কেউ আবার ডিপ্লোমা, কিছু আছে কোন ডিগ্রিই নাই। হাইস্কুলে যে ম্যাথ করে আছে সেটা দিয়েই দিব্যি কাজ করে যাইতেছে।
একটা মজার ব্যাপার হইতেছে যাদের সরাসরি Engineering ব্যাকগ্রাউন্ড, তাদের সাথে technical কথাবার্তা করা সহজ, কারণ তারা টার্মগুলো/কনসেপ্টগুলো অলরেডি জানে। কিন্তু বাকিদের যাদের সরাসরি Engineering ব্যাকগ্রাউন্ড না, তাদের সাথেও technical কথাবার্তা চালানো যায়। একটু সময় লাগে। তবে তাদের Analytical Knowledge ভাল হবার কারণে, একবার তারা কনসেপ্ট বুঝে ফেললে আর সমস্যা হয়না।
তখন বুঝলাম যে, যাদের ক্যারিয়ারের শুরু অন্য জায়গা থেকে, তারা বছরের পর বছর ধরে কয়েকটা বিশেষ টপিকে কাজ করতে করতে সেটাতে Specialized Skill grow করেছে। আমাদের ডিপার্টমেন্টের ৪ বছরের কোর্সে Computer Science এর ব্যাপারে আমরা ঠিক একইভাবে এরকম কিছু knowledge অর্জন করি। এর সবগুলোই যে একটা কোম্পানিতে ব্যবহার করা যাবে এমন না। তবে যেহেতু এগুলো Fundamental Knowledge, তাই দেখা যায় এগুলোকে খুব সহজে বিভিন্ন ক্ষেত্রে কাজে লাগানো যায়।
আমাদের CSE কোর্সের কারিকুলাম এমনভাবে ডিজাইন করা, যেটাতে Computer Science এর অনেক শাখা-প্রশাখা কাভার করে। এবং এই জিনিসটাই আমাকে কাজের মধ্যে একটা অতিরিক্ত সুবিধা দেয়। Software Requirement থেকে শুরু করে, কখন কোন ধরনের Computer System যুতসই হবে সেগুলা খুঁজে বের করা, কোন একটা problem এর efficient সমাধান খুজে পাওয়া, এগুলাতে আমি দেখি Departmental কনসেপ্টগুলো অনেক কাজে লাগে।
তাই, আমার মনে হয়, ভাল Software Engineer হবার জন্য Computer Science এর জ্ঞান এর দরকার আছে। খুব বেশী জেনারেল জ্ঞান এর দরকার আছে কিনা, সেটা বলা একটু কঠিন। কারণ “Engineering” অলরেডি একটা specialized skill. তার উপর “Computer Science & Engineering” আর একটা specialization । এরপর “Software enginerring” সেটার গভীরে আরেক ধাপ বিশেষ পড়াশুনা। কেউ যদি শুরুতেই এত ডিটেইল লেভেলের specialized skill গ্রো করতে চায়, তাতেও যে সমস্যা আছে এমন না। ফাইনালি শিখলেই হইল