“ভাইয়া আমি অমুক সেমিস্টারে পড়ি, আমার কি শেখা উচিত?”
এরকম কিছু প্রশ্ন আমি পাই মাঝে মাঝে। তাছাড়া AIUB রিলেটেড বেশ কিছু ফেসবুক গ্রুপের পোস্টের কমেন্ট পড়ে মনে হলো এই পোষ্ট টা লিখি।
ফার্স্ট সেমেস্টার থেকে ৯-১০ সেমেস্টার পর্যন্ত CS/CSE/CSSE/SE তে পড়া এবং সফটওয়্যার ইঞ্জিনিয়ারিং এ আসার ইচ্ছা এমন AIUBian দের জন্য এই পোস্টটা লেখা, কিন্তু প্রায় সব কম্পিউটার সায়েন্স ব্যাকগ্রাউন্ডের ছাত্রদের ক্ষেত্রেই এটা প্রযোজ্য। আমার তথ্যে এবং মতামতে ভুল থাকতে পারে, সবই ব্যাক্তিগতভাবে যতটুকু বুঝা শেখা তা থেকে লেখা।
আমি ধরে নিচ্ছি যে চার বছর Bsc শেষ করে আপনার ইচ্ছা ফিল্ডে ঢোকার, সেক্ষেত্রে কিছু জিনিষ যা আমি নিজে অবসার্ভ করে মনে হয়েছে তা বলিঃ
দেশে হোক দেশের বাইরে হোক সফটওয়্যার ইঞ্জিনিয়ারিং এ সবচাইতে গুরুত্বপূর্ন স্কিল হল প্রবলেম সলভিং।
আমি নিজে প্রবলেম সলভিং খুবি কম করসিলাম ভার্সিটি লাইফে, শুরু করে ভালো শুরু পেয়েও কনটিনিউ করি নাই, সেটার জন্য এখনও আমি রিগ্রেট ফিল করি।
ফার্স্ট ইয়ার, সেকেন্ড ইয়ার এবংকি থার্ড ইয়ার পর্যন্ত আমার মনে হয় আর কিছু না দেখে জাস্ট চোখ বুঝে ACM কমিউনিটি/গ্রুপ এর লোকজনের সাথে মিলে মিশে প্রবলেম সল্ভিং শেখা এবং প্র্যাকটিস করা উচিত।
ডেভেলপমেন্টের লোভে যত কম পড়া যায় তত ভাল। বেসিক ক্লিয়ার থাকলে একজন মানুষ ছয় মাসেই ডেভেলপমেন্ট বেশ ভাল মত আয়ত্বে নিয়ে আসতে পারে, যেখানে কয়েক বছর লেগে থাকা ছাড়া প্রব্লেম সলভিং এ ভালো হবার উপায় নাই। তাই প্রথম টার্গেট হওয়া উচিত এটা, কমিউনিটি ভাল লাগেন? একা একা হ্যাকার র্যাংক আছে UVA আছে, যেখানে ভাল লাগে প্র্যাকটিস করুন।
ভাল প্রবলেম সলভাররা বের হবার আগেই অনেকে দেশের বাইরে চাকরি পান নামকরা সব সফটওয়্যার কোম্পানি তে। যেমন গুগল, আমাজন, গ্রাব, উবার ইত্যাদি। মোটামুটি মানের রা ডাক পান দেশের ভালো ভালো কোম্পানিগুলোতে। আর একদম বিগিনার লেভেলের প্রবলেম সলভারদেরও হালকা ডেভেলপমেন্ট শিখে নিলেই কাজ হয়ে যায়।
অন্তত দুই বছর চেষ্টা করার পরেও যদি আপনার মনে হয় আপনার এই প্রবলেম সল্ভিং ব্যাপারটা ভালো লাগেনা, তাইলে এবার আপনি ডেভেলপমেন্ট এ আসতে পারেন। কিন্তু অবশ্যই বেসিক ক্লিয়ার করে, বেসিক এলগরিদম আর ডাটা স্ট্রাকচার যাতে আপনার জানা থাকে। বর্তমানে আমার দেখায় পাঁচটা প্রাইমারি ডেভ স্ট্রিম আছে দেশেঃ
- NodeJS - Express - React/Angular
- Php - Laravel - React/Vue
- Python - Django - Angular/React
- ASP.NET - MVC - Angular
- App Development - Android(Java/ Kotlin) / IOS (ObjC / Swift)
এইগুলার যেকোন একটা পিক করুন, নিজেকে সেটার সাথে যতটুক সম্ভব পরিচিত করে তুলুন, কয়েকটা প্রজেক্ট করুন, অমুক তমুক ম্যানেজমেন্ট না বানিয়ে কোন একটা সিম্পল কিন্তু প্রচলিত আইডিয়া কে কপি করে বা নিজের ফ্রেশ আইডিয়া থেকে প্রজেক্ট বানান। যতটুকুই করবেন যাতে ফিনিশিং টাচ তাতে থাকে, বিরাট বড় সিস্টেম কিন্তু গভীরতা নাই, এর চেয়ে ছোট একটা সিস্টেম কিন্ত গভীরতা আছে, ফাইনাল টাচ দিবেন, এতে শিখবেন অনেক বেশী। কাজে যতটা সম্ভব প্রফেশনালিজম এর ছাপ রাখেন, একটা কিছু বানানর সময় মাথায় রাকবেন এইটা কি “খ্যাত” দেখাচ্ছে নাকি প্রফেশনাল? আমি নিজে কি এইরকম একটা সার্ভিস ইউজ করতাম নাকি নাক শিটকানি দিতাম?
নিজের ক্রিটিসিজম নিজে করলেই দেখবেন ইম্প্রুভ হচ্ছে। প্রোগ্রামিং বেসিক ক্লিয়ার করার পর এই রকম যেকোন একটা স্ট্রিম নিয়ে অন্তত ছয় মাস যদি সত্যি সত্যি ইফর্ট দেন, আপনার পাশ করার পর চাকরি ইন্টার্ভিউতে গেলেই দেখতে পাবেন আপনি কতটা এগিয়ে আছেন। কিন্তু ফ্রেশারদের ইন্টার্ভিউতে খুব বেসিক হলেও প্রবলেম সলভিং এবিলিটি পরীক্ষা করা হয়। এটা মাথায় রাখবেন। ভাল কোম্পানি ডেভেলপার এর চাইতে প্রবলেম সলভার চায় বেশী, ডেভেলপমেন্ট শিখিয়ে নেয়া যায়, প্রব্লেম সলভিং না। বাংলাদেশের Software Engineer/Developer হায়ার করে এমন কোম্পানির ধরন নিয়ে যতটুকু বুঝেছি সেটা আরেকদিন লিখবো। আজ হটাত মনে হলো যে এই ব্যাপারগুলা জানা থাকলে ছোটভাই কারো হেল্প হতে পারে তাই এই পোস্ট লিখলাম। কোন ভুল / প্রশ্ন থাকলে কমেন্ট সেকশন খোলা আছে।