# ফ্রন্টএন্ড না ব্যাকএন্ড কোনটা শিখব?

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

এবার আসি প্রোগ্রামিং ল্যাঙ্গুয়েজ এর ক্ষেত্রে, প্রথম দুই বছর শুধু একটা ল্যাঙ্গুয়েজ-এ ফোকাস থাকার পরামর্শ দিব। একটা ল্যাঙ্গুয়েজ খুব ভালোভাবে শিখলে, অন্যগুলা শেখা খুব সময়ের ব্যাপার মাত্র। ২০২৩ সালে এসে কাউকে C/C++ শেখার পরামর্শ দিব না, এই ল্যাংগুয়েজ গুলা নতুনদের জন্য একদম ফ্রেন্ডলি না। C/C++ একেবারেই শিখতে মানা করতেছি না, প্রোগ্রামিংয়ে হাতে খড়ি হওয়ার পরে ভবিষ্যতে প্রয়োজনমাফিক শিখে নেওয়া যাবে। কিন্তু এটা দিয়ে শুরু করলে বিগেনারদের জন্য অনেক কঠিন হয়ে যায়। শুরুটা যত সহজ হবে এক্সসাইটমেন্ট তত বেশি কাজ করবে। বাংলাদেশের জব মার্কেটে C/C++ এর ব্যবহার প্রায় নেই বললেই চলে।

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

*Learn one thing at a time and learn it well.*

একটা জিনিস মনে রাখতে হবে টুলস টেকনোলজি কোন মেটার না, মেটার হচ্ছে প্রবলেম সলভ করতে শিখা। একটা সমস্যাকে ছোট ছোট ভাগে সমাধান করে জোড়া লাগাতে শিখা। প্রয়োজন অনুযায়ী যেকোনো সময় টুলস টেকনোলজি চেঞ্জ করা লাগতে পারে, কিন্তু প্রবলেম সলভিং স্কিল সব সময় লাগবে। এইজন্য সব সময় লার্নিং অ্যাটিটিউড রাখাটাই ভালো।

### ওয়েব ডেভেলপমেন্ট এর জন্য কতটুকু অ্যালগরিদম জানা লাগবে?

গুগল, অ্যামাজন, মাইক্রোসফট, মেটার মত হাতে গোনা বড় কিছু কোম্পানি বাদে সফটওয়্যার ডেভেলপমেন্ট করার জন্য হার্ডকোর অ্যালগরিদম প্রায় লাগেনা বলতে গেলেই চলে। ওয়েব ডেভলপমেন্টে খুব বেশি হার্ডকোর প্রবলেম সলভিং বা অ্যালগরিদম দরকার হয় না, কিন্তু বেসিক ডেটা স্ট্রাকচার এবং অ্যালগরিদম সব সময় লাগে। যেমন array, stack, queue, hashmap, basic sorting, searching. নতুন কোন অ্যালগরিদম দরকার হলে প্রয়োজন মাফিক শিখে নেয়া যেতে পারে। বড় সফটওয়্যার কোড বেজে এ কাজ করতে গেলে প্রবলেম সলভিং এর পাশাপাশি সফটওয়্যার ইঞ্জিনিয়ারিং এর কিছু নিয়ম শৃঙ্খলা ও শিখতে হবে। একটা বিসনেস রিকোয়ারমেন্টকে ভেঙ্গে কিভাবে টেকনিক্যাল টাস্কে রূপান্তর করতে হয় এবং এই কাজটুকুন করতে কত সময় লাগতে পারে সেটা ইস্টিমেট করতে শিখা। কোম্পানিগুলো তাদের সফটওয়্যার রিডেবল এবং সহজভাবে মেইনটেনবল রাখার জন্য বিভিন্ন ধরনের সফটওয়্যার ডিজাইন প্যাটার্ন, কোডিং স্ট্যান্ডার্ড অনুসরণ করে। এইসব কোডবেজে কনট্রিবিউট করতে গেলে ভার্সন কন্ট্রোল সিস্টেম(যেমনঃ গিট) জানা অত্যাবশ্যক। কোডিং জানার পাশাপাশি প্রডাক্টের ডোমেইন নলেজ সম্বন্ধে ভালভাবে জানা। ভালো ডিবাগিং করতে জানা এবং অন্যদের কাজ/কোড রিভিউ করতে শিখা।

### ওয়েব ডেভেলপমেন্ট এর বাইরে কি শিখা যেতে পারে?

আইটি সেক্টরে হাজার হাজার ধরনের রোল আছে কাজ করার জন্য। যেমনঃ

*Infrastructure and Networking, Database Administration, Cloud Computing, Business Intelligence and Data Analysis, Quality Assurance and Testing*

এই রোল গুলার যেখানেই কাজ করতে যান, কম্পিউটার প্রোগ্রামিং লাগবেই। এইসব জিনিসগুলোর আন্ডারলাইন টেকনোলজি কিভাবে কাজ করতেছে, এগুলো বোঝার জন্যে ও অ্যালগরিদম জানা লাগবে।
