ব্যাক এন্ড ডেভলপার রোড ম্যাপ
Mustafa Rahman. Full stack developer at C360softai,india
Table of contents
No headings in the article.
একজন দক্ষ ব্যাকেন্ড ডেভেলপার কে? কি কি টেকনিক্যাল নলেজ থাকলে তাকে আমরা একজন দক্ষ ব্যাকেন্ড ডেভেলপার বলতে পারি? একটা হাই লেভেল অভারভিউ দেওয়ার চেষ্টা করছি।
১। ব্যাকেন্ড টেকনলজি সম্পর্কে ভালো একটা ধারণা। এই ধারণা যে কোনো একটা ব্যাকেন্ড টেকনলজিতেই থাকতে পারে। ব্যাকেন্ড টেকনলজি বলতে এখানে বোঝানো হচ্ছে একটা প্রোগ্রামিং ল্যাংগুয়েজ, ব্যাকেন্ড অ্যাপ্লিকেশন তৈরি করার জন্য সেই ল্যাংগুয়েজের যে কোন একটা ভালো ফ্রেমওয়ার্ক এবং ফ্রেমওয়ার্কের আর্কিটেকচার। প্রোগ্রামিং ল্যাংগুয়েজ এবং ফ্রেমওয়ার্ক ব্যবহার করে যে কোনো সমস্যার সাধারণ সমাধান করার মতো সক্ষমতা থাকতে হবে। বর্তমানে জনপ্রিয় ব্যাকেন্ড টেকনলজি যেগুলো বিশ্বের বড় বড় কোম্পানি ব্যবহার করছে তার মধ্যে উল্লেখযোগ্য হচ্ছে নোডজেএস, পিএইচপি, পাইথন, জাভা স্প্রিং, সিশার্প ডটনেট এবং রুবি অন রেইলস।
২। ব্যাকেন্ড অ্যাপ্লিকেশন ডেভেলপ করার বিভিন্ন আর্কিটেকচার যেমন ক্লাইন্ট-সার্ভার আর্কিটেকচার, মাল্টি অর এন টিয়ার আর্কিটেকচার, ব্রোকার আর্কিটেকচার, সার্ভিস অরিয়েন্টেড আর্কিটেকচার, মাইক্রোসার্ভিস আর্কিটেকচার, ইভেন্ট ড্রাইভেন আর্কিটেকচার, ক্লাউড ন্যাটিভ আর্কিটেকচার এবং সার্ভারলেস আর্কিটেকচার সম্পর্কে ভালো একটা জ্ঞান থাকতে হবে। সব আর্কিটেকচার সম্পর্কে খুব বিস্তর জ্ঞান থাকলেই যে সে খুব ভালো ডেভেলপার এমন না। তবে চেষ্টা করতে হবে সময়ের সাথে যত বেশি আর্কিটেকচার সম্পর্কে জ্ঞান অর্জন করা যায়। সব অ্যাপ্লিকেশন একই আর্কিটেকচার দিয়ে ডেভেলপ করা ঠিক না, রোগ বুঝে ওষুধ দিতে হয়।
৩। বিভিন্ন আর্কিটেকচার এবং টেকনিক ফলো করে কিভাবে একটা কমপ্লিট সিস্টেম ডিজাইন করা যায় সেই বিষয়ে ভালো একটা জ্ঞান থাকতে হবে। একজন দক্ষ ডেভেলপার হিসেবে আপনাকে জানতে হবে যে কিভাবে একটা ফল্টটলারেন্ট সার্ভিস তৈরি করা যায়। কিভাবে একটা সার্ভিস স্কেলেবল এবং রিয়ালেবল করে তৈরি করা যায়। কিভাবে একটা মেইনটেইনেবল অ্যাপ্লিকেশন তৈরি করা যায় যেটা সময়ের সাথে, বিজনেস রিকয়ারমেন্ট পরিবর্তনের সাথে খাপ খাইয়ে নিতে পারে।
৪। এপিআই ডিজাইন এবং ডেভেলপমেন্ট সম্পর্কে ভালো একটা ধারণা থাকতে হবে। একজন দক্ষ ডেভেলপার ভিন্ন ভিন্ন উপায়ে এপিআই ডিজাইন করতে পারেন যেমন REST, GraphQL, gRPC বা এখন তো নতুন করে tRPC ও এসেছে। ভিন্ন ভিন্ন কমিউনিকেশন টেকনিক বাজারে এসেছে ভিন্ন ভিন্ন সমস্যার সমাধান তৈরি করার জন্য। কোন সমাধান কি সুবিধা দেবে, কি অসুবিধা দেবে, কোন ইউসকেসে কোন সমাধানটা ব্যবহার করা বুদ্ধিদীপ্ত হবে এই সব জ্ঞান একজন দক্ষ ব্যাকেন্ড ডেভেলপারের থাকে।
৫। একজন দক্ষ ব্যাকেন্ড ডেভেলপার জানেন কিভাবে তার অ্যাপ্লিকেশনের পার্ফরমেন্স অপ্টিমাইজ করা যায়। বিভিন্ন টেকনিক যেমন ক্যাশিং, লোড ব্যালেন্সিং, কুয়েরি অপ্টিমাইজেশন বা ডেটাবেজ টিউনিং করার মাধ্যমে কিভাবে পার্ফরমেন্স বৃদ্ধি করা যায়। একটা যেমন তেমন করে লেখা কোডকে কিভাবে স্ট্রাকচার করলে বা কোন অ্যাল্গোরিদম ব্যবহার করলে এটা ফাস্ট কাজ করবে, অথবা একটা লুপের মধ্যে লেখা কুয়েরিকে কিভাবে ব্যাচ করা যায় সেগুলো একজন দক্ষ ব্যাকেন্ড ডেভেলপারের বা হাতের খেল।
৬। ডেটা মডেলিং, ডেটাবেজ ডিজাইনিং এবং ইঞ্জিনিয়ারিংকে ব্যাকেন্ডের জান প্রাণ সব কিছুই বলা চলে। একজন দক্ষ ব্যাকেন্ড ডেভেলপার জানেন কিভাবে এফিশিয়েন্ট ওয়েতে স্কিমা ডিজাইন করা যায়। কিভাবে ডেটাবেজ নরমালাইজেশন করা যায়, কিভাবে কখন আর কোথায় ইন্ডেক্সিং করতে হয় যেন অপ্টিমাইজ কুয়েরি লেখা যায়। ডেটাবেজ ডিজাইনের শুরু থেকেই একজন দক্ষ ডেভেলপার জানেন যে কিভাবে ডেটাবেজ ডিজাইন করলে সে নিখুঁত এক্সেস প্যাটার্ন তৈরি করতে পারবেন।
৭। একজন দক্ষ ব্যাকেন্ড ডেভেলপারকে জানতে হয় যে একটা মেশিন কিভাবে চলছে। একটা মেশিনের ওপরে অপারেটিং সিস্টেম কিভাবে কাজ করছে। অপারেটিং সিস্টেমের শিডিউলার কিভাবে একটার পর একটা প্রসেস শিডিউল করে যাচ্ছে। কিভাবে মাল্টিপল থ্রেড এক সাথে নিজেদের মধ্যে কমিউনিকেশন করে কাজ করে যাচ্ছে। কোন প্রসেস কতটা র্যাম কন্সিউম করছে, তার কোনো এক জুনিয়ারের লেখা কোন কোডটা মেমরি লিক করছে। এই সব জ্ঞান একজন ব্যাকেন্ড ডেভেলপারকে দক্ষ করে তোলে।
৮। একজন দক্ষ ডেভেলপারকে নেটওয়ার্কিং সম্পর্কেও কিছুটা জ্ঞান রাখতে হয়। কিভাবে ইন্টারনেট কাজ করে, কিভাবে হাজার হাজার মাইল দূরে থাকা ভার্চুলায় ক্লাউড সার্ভারে কোনো ভিপিএন টানেলের মধ্য দিয়ে অথবা SSH এর মাধ্যমে ফায়ারওয়াল টপকে কানেকশন এস্ট্যাবলিশ করা যায়। আইপি, সাবনেট, মাস্কিং, প্রক্সি, ডিএনএস এগুলো দক্ষ ডেভেলপারের জন্য খুবই কমন টার্ম।
৯। একজন দক্ষ ডেভেলপারের মাল্টিপল ক্লাউড প্রোভাইডার এবং ক্লাউড সার্ভিস গুলো সম্পর্কে ভালো একটা জ্ঞান থাকতে হয়। কারণ দিন শেষে ওয়েব অ্যাপ্লিকেশনের শেষ স্থান কোনো না কোনো ক্লাউড।
১০। একজন দক্ষ ব্যাকেন্ড ডেভেলপারকে ডেভঅপ্স কালচার সম্পর্কে জানতে হয়। ডেভঅপ্সের প্রিন্সিপাল বা প্রাক্টিস গুলো সম্পর্কে ধারণা থাকতে হয়। নূন্যতম হলেও কন্টেইনারাইজেশন এবং সিআই/সিডি পাইপলাইন, ইনফ্রাস্ট্রাকচার এবং ইনফ্রাস্ট্রাকচার এস এ কোড সম্পর্কে ধারণা থাকতে হয় যেন তারা অন্য টিমের সাথে স্মুথলি কলাবোরেশন করতে পারে।
১১। দক্ষ মানে সব দিকেই দক্ষতা থাকতে হবে। তাই সিকিউরিটি কিভাবে বাদ যায়। একজন ডেভেলপার যদি নাই জানে যে তার কোন কোন ভুলের কারণে সিকিউরিটি ইস্যু হতে পারে তাহলে সে এখনও দক্ষ হয়ে ওঠে নি। একজন দক্ষ ব্যাকেন্ড ডেভেলপারের একটা সিকিউর সিস্টেম ডিজাইন করার দক্ষতা থাকতে। সিকিউরিটি বেস্ট প্রাক্টিসেস যেমন ডেটা ইনক্রিপশন, এক্সেস কন্ট্রোল এবং ভালনারেবিলিটি ম্যানেজমেন্ট সম্পর্কে জানতে হয়।
১২। প্রব্লেম সল্ভিং এবং ক্রিটিক্যাল থিংকিং - এটা স্পেশিয়াল পয়েন্ট। এটা যে কোনো দক্ষ ডেভেলপারের জন্যই প্রযোজ্য। ডেভেলপমেন্টের যে কোনো সময় যে কোনো সমস্যা আসতে পারে। তার সুষ্ট, সুন্দর, অপ্টিমাইজড, ম্যানেজেবল সমাধান তৈরি করা একজন দক্ষ ব্যাকেন্ড ডেভেলপারের অন্যতম কাজ। এছাড়াও কমপ্লেক্স বিজনেস লজিককে প্রোগ্রামে রূপান্তর করার কাজটা মোটেও সহজ কিছু নয়। তার জন্য বিভিন্ন ডিজাইন প্যাটার্ন বা প্রিন্সিপল সম্পর্কে জ্ঞান থাকার প্রয়োজন হয়।
স্বর্বোপরি একজন ব্যাকেন্ড ডেভেলপারের ওয়াইড রেঞ্জ অফ টেকনিক্যাল নলেজের প্রয়োজন হয়। একজন মানুষ সব কিছুতেই বস হবে ব্যাপারটা এরকম নয়। কিন্তু সব গুলো বিষয় সম্পর্কে জ্ঞান থাকলে তার পক্ষে কমপ্লেক্স প্রব্লেমের একটা সিম্পল সল্যুশন ডিজাইন করা অনেক সহজ হয়। আর প্রয়োজন বোধে যখন যেইটা দরকার সেই অনুযায়ী নিজের স্কিলও গ্রো করতে পারে।
ধন্যবাদ