DEV Community

Ehtisam Haq
Ehtisam Haq

Posted on

What's Next? Explore The Power of Advanced Technologies - Bangla

Hello Developers!

কি অবস্থা সবার? আশা করছি সকলে ভালো আছেন।

আপনারা অনেকেই ইতিমধ্যে Complete Web Development Course With Jhankar Mahbub কোর্সটি শেষ করছেন। কেউ কেউ হয়ত জবের ফিল্ডে আছেন, আবার কেউ জব না করলেও এডভান্স টেকনোলোজি এডাপ্ট করার চেস্টা করছেন, আবার হয়ত কেউ কি করবেন, কি খুজবেন, কিভাবে নিজেকে আপডেট করবেন কিছুই বুঝতে পারছেন না।

এই যুগে টেকনোলজি খুবই দ্রুত বদলাচ্ছে। প্রতিদিন নতুন নতুন টেকনোলজি বাজারে আসছে। এইতো কিছুদিন আগের কথা ChatGPT এসে দুনিয়া কাপিয়ে দিয়েছিলো, এর পরে আসলো Gemini, এখন আবার সুপার পাউয়ার নিয়ে হাজির হচ্ছে Devin. তাই, একজন সফল ডেভেলপার হিসেবে টিকে থাকতে হলে আপনাকে অবশ্যই আপডেট থাকতে হবে।

আপনাদের নেক্সট ক্যারিয়ার পাথ কেমন হতে পারে, তা নিয়েই আলোচনা করবো এই ব্লগে।

আপনারা অলরেডি HTML, CSS, JavaScript, React, MongoDB সহ আরও বেশ কিছু টেকনোলোজির সাথে পরিচিত হয়েছেন। এখন সময় এডভান্স কিছু শেখার!

বি.দ্রঃ আপনারা যেহেতু প্রোগ্রামিং ল্যাংগুয়েজ হিসাবে javascript শিখেছেন তাই আমরা javascript বেজড বা এর সাথে ফিমিলিয়ার এডভান্স টেকনোলোজি সম্পর্কে জানব।

Embrace Type Safety

আপনারা সকলেই জানেন, Javascript একটি dynamically typed প্রোগ্রামিং ল্যাংগুয়েজ। অর্থাৎ, এটি নিজে নিজে কোন ভেরিয়েবলের ডাটা টাইপ নির্ধারণ করে নেয়। এর ফলে আমরা হয়ত এটি ইজিলি ব্যবহার করতে পারছি, কিন্ত আমরা মাঝে মাঝে unwanted error এর সম্মুখীন হই। locally ঠিক ঠাক কাজ করে কিন্তু production এ গিয়ে এপ্লিকেশন টি ব্রেক করে। যেমন, আপনারা হয়ত এই TypeError: Cannot Read Property ‘Map’ of Undefined এররটি ইতি মধ্যে অনেকবার ফেস করে ফেলেছেন। এই প্রবলেম টি যদি আপনি কোড এডিটরেই দেখতে পেতেন, তাহলে আপনাকে unwanted error এর সম্মুখীন হতে হত না। তাহলে কি করবেন?

ভয়ের কিছু নেই, আপনি typescript শিখতে পারেন। TypeScript হলো JavaScript এর একটি superset যা JavaScript এর সাথে টাইপ সিস্টেম যুক্ত করে। টাইপ সিস্টেম কোডের ভুলগুলো খুঁজে বের করতে সাহায্য করে এবং কোডের ডেভেলপমেন্ট ও মেইনটেন্যান্সকে সহজ করে তোলে।

javascript ইকোসিস্টেম এর হউয়ায় আপনি খুব সহজেই typescript শিখে ফেলতে পারবেন। এর সাহায্যে আপনি Object-Oriented Programming ও করতে পারবেন। একই সাথে TypeScript এ দক্ষ ডেভেলপারদের বাজারে অনেক চাহিদা। Upwork এর তথ্য অনুযায়ী, TypeScript দক্ষ ডেভেলপাররা গড়ে $100/ঘন্টা আয় করতে পারেন।

For Frontend Focused

কথায় আছে “আগে দর্শন ধারী, পরে গুন বিচারী!” অর্থাৎ আপনার কোন প্রোডাক্ট ফিচারে ভরপুর কিন্তু দেখতে সুন্দর না হলে, ব্যবহারকারীরা সেটা ব্যবহার করতে আগ্রহী হবে না।

তাই একজন Frontend Focused Developer-এর জন্য User Interface (UI) এবং User Experience (UX) সম্পর্কে ভালো জ্ঞান থাকাটা অত্যন্ত জরুরি।

Mastering State Management

React এর এপ্লিকেশনে কাজ করার সময়ে আপনি কোন প্রবলেম টা বেশি ফেস করেছেন? নিশ্চয়ই আপনার উত্তর “state management” নিয়ে।

state management” এর এই সমস্যা দূর করতে হয়ত আপনি ইতিমধ্যে “context api” ইউজ করেছেন। কিন্তু এখানেও একটা প্রবলেম আছে, আপনার এপ্লিকেশন টা যত বড় হতে থাকবে স্টেট ম্যানেজ করা আপনার জন্য তত কঠিন হয়ে যাবে। সে ক্ষেত্রে আপনি কি করতে পারেন?

এর সমাধান হিসাবে ইতিমধ্যে বেশ কিছু জনপ্রিয় state management লাইব্রেরী আছে, এর মধ্যেঃ

react-redux, [zustand](https://npm-compare.com/zustand), [xstate](https://npm-compare.com/xstate), mobx ইত্যাদি অত্যন্ত জনপ্রিয়। এখন এত এত লাইব্রেরির ভীরে যদি আপনি কনফিউজড হয়ে যান এবং ভাবতে থাকেন, কোনটা রেখে কোনটা শিখবেন?

তাহলে আমি রিকমেন্ড করবো redux দিয়ে শুরু করেন। কারণ redux এই মুহূর্তে সবচেয়ে বেশি ব্যবহৃত হচ্ছে, এর কমিউনিটি খুবই স্ট্রং। সেই সাথে ইতি মধ্যে অনেক কোম্পানি আছে যারা তাঁদের এক্সিস্তিং প্রজেক্টে redux ইউজ করছে।

Building Scalable Websites

React এপ্লিকেশন অনেক ফাস্ট হলেও বড় বড় এপ্লিকেশনের ক্ষেত্রে ম্যানেজ করা অনেক কষ্ট সাধ্য হয়ে পরে। তাই আমাদের React এর কোন ফ্রেমওয়ার্ক শিখার প্রয়োজন হয়ে পারে। আমি রিকমেন্ড করবো NextJS শিখতে।

আপনি যদি আমাকে প্রশ্ন করেন, “আমি তো React দিয়েই সুন্দর সুন্দর ওয়েবসাইট বিল্ড করতে পারি, তাহলে NextJS শিখার কি দরকার?”

তাহলে আমি বলব, React যে সকল ফিচার না থাকার কারনে কিছুটা অসম্পূর্ণ ছিল, NextJS আপনাকে সে সকল ফিচার ই প্রদান করছে। NextJS এ কি নেই?

  • ইনবিল্ড রাউটিং সিস্টেম আছে, তাই থার্ড পার্টি কোন লাইব্রেরীর উপর নির্ভর করতে হবে না।
  • আপনার প্রজেক্টের নিড অনুযায়ী বিভিন্ন ধরনের Rendaring ফিচার, জেমনঃ SSG, SSR, CSR ইত্যাদি ব্যবহার করতে পারবেন।
  • এডভান্স ডাটা ফেচিং এবং ক্যাশিং এর সুবিধা।
  • বিল্ট ইন অপটিমাইজেশন।
  • এমনকি মনোলিথ আর্কিটেকচারে প্রজেক্ট বিল্ড করার সুবিধা, অর্থাৎ NextJS এর মাদ্ধমে আপনি একটি ফুলস্ট্যাক এপ্লিকেশন তৈরি করে ফেলতে পারবেন। ইত্যাদি ইত্যাদি …

NextJS এর কিছু অল্টারনেটিভ বাজারে অলরেডি আছে, জেমনঃ Gatsby, Nuxt.js, SvelteKit, Astro ইত্যাদি। NextJS ছাড়া অন্য যেকোনো টা শিখতে গেলে, হয়ত সকল ফিচার NextJS এর মত একত্রে পাবেন না। আবার পেলেও নতুন টেক শিখার দরকার হতে পারে, যেমনঃ Nuxt.js এর জন্য vue, SveletKit এর জন্য svelt জানা থাকা লাগবে।

আবার জনপ্রিয়তার দিক থেকেও NextJS অনেক এগিয়ে। অনেক কোম্পানি এটি ইতিমধ্যে ইউজ করছে। তাই আমি আপনাকে NextJS দিয়ে শুরু করতে রিকমেন্ড করব।

For Backend Focused

এতক্ষন Frontend নিয়ে অনেক প্যাঁচাল পেরেছি, তবে এখন সময় হয়েছে মুদ্রার ওপিঠ সম্পর্কে জানার, তাই চলুন Backend টেকনোলোজি সম্পর্কে জানার চেস্টা করি।

Unveiling the Power of Backend

আপনারা ইতিমধ্যেই node - express দিয়ে সিম্পল ব্যাকেন্ড এপ্লিকেশন তৈরি করা শিখেছেন। কিন্তু আপনার সপ্ন যদি হয় backend ডেভেলপার হওয়ার তাহলে কি সিম্পল ব্যাকেন্ড দিয়ে কাজ হবে? তাই আপনাকে ব্যাকেন্ড এর এডভান্স টপিক গুলো শিখতে হবে। কিভাবে স্কেলেবল সার্ভার ডেভেলপ করা যায়? ইন্ডাস্ট্রি তে বড় বড় এপ্লিকেশন কিভাবে তৈরি করা হয়, কিভাবে ইফিশিয়েন্ট ওয়েতে প্রয়োজনীয় ডাটা ইউজার এন্ডে পাঠাতে হয় ইত্যাদি সম্পর্কে জানতে হবে।

তাই Node.js এর যেকোনো একটি ফ্রেমওয়ার্ক দিয়ে আপনি আপনার প্রফেশনাল লেভেলের Backend যাত্রা শুরু করতে পারেন। এখানে আপনি Express ছাড়াও Fastify, NestJS ইত্যাদি ফ্রেমওয়ার্ক পাবেন। তবে আপনার ক্ষেত্রে Express দিয়ে শুরু করা উচিত হবে বলে আমি মনে করি, কারন Fastify, NestJSexpress এর উপর ভিত্তি করে কাজ করে, আর express শেখা অন্য গুলোর তুলনায় ইজি।

Unleashing the Power of MongoDB

ব্যাকেন্ডের একটি গুরুত্বপূর্ণ অংশ হচ্ছে ডাটাবেজ। আপনারা mongodb তে বেসিক crud অপারেশন সম্পর্কে জেনেছেন। এখন mongodb এর এডভান্স টপিক গুলো আপনাকে জানতে হবে। সেই সাথে mongodb এর এই কাজ গুলো আরো অরগানাইজ এবং স্ট্রাকচারাল ওয়েতে করতে আপনাকে mongodb এর ODM mongoose সম্পর্কে জানতে হবে।

ইন্ডাস্ট্রি তে mongodb ডাটাবেজ নিয়ে কাজ করতে হলে আপনাকে mongoose মাস্ট জানা থাকা লাগবে।

Relational Powerhouse

Mongodb এর মতো NoSQL ডাটাবেজ এর পাশাপাশি আপনার যদি একটি sql ডাটাবেজ জানা থাকে, তাহলে জব সেক্টরে আপনার চাহিদা অনেকগুণ বৃদ্ধি পাবে। কারন এরকম অনেক কাজ আছে যা বহুলাংশে sql ডাটাবেজ এর উপর নির্ভর করে।

আপনি যদি রিসেন্ট টাইমে ডাটাবেজের উপর জরীপ গুলোর দিকে লক্ষ রাখেন, তাহলে দেখতে পাবেন MySQL, PostgreSQL, Oracle, Microsoft SQL Server ইত্যাদির মতো sql ডাটাবেজ গুলো সাবার উপরে অবস্থান করছে।

তাহলে কি এখন এই সব গুলো ডাটাবেজই কি আপনার শেখা লাগবে?

উত্তর হচ্ছে না। আপনি যদি যেকোনো একটা ভালো ভাবে আয়ত্ত করে ফেলেন তাহলে, অন্য গুলো শিখতে আপনার বেশি সময় লাগবে না। তো শুরু করবেন কোনটা দিয়ে?

আপনি mysql বা postgresql যেকোনো একটা দিয়ে শুরু করতে পারেন। তবে রিকমেন্ডেড হচ্ছে postgresql দিয়ে শুরু করা। postgresql মুলত mysql এর উপরে বেজ করে তৈরি করা তবে এতে আপনি এক্সট্রা কিছু এডভান্স ফিচার পাবেন, যা mysql এ পাবেন না। এবং প্রতিনিয়ত postgresql এর জনপ্রিয়তা এবং ব্যবহার বাড়ছে।

Bridging the Gap Between Object and Relational Data

শুরুতেই Prisma এর পরিচয় দিয়ে ফেলি। Prisma হচ্ছে একটি ডাটাবেজ orm. ORM এর পূর্ণ রুপ হচ্ছে Object Relational Mapper. আপনার নিশ্চয়ই জানতে ইচ্ছা করছে এই orm এর কাজ টা কি?

ORM কি?

ORM হচ্ছে এমন একটি সফটওয়্যার টুল যা object-oriented programming language (OOPL) এবং relational database management system (RDBMS) এর মধ্যে একটা সেতুবন্ধন তৈরি করে। ORM এর সাহায্যে আপনি SQL query না লিখেই OOPL ব্যবহার করে ডাটাবেজের সাথে কাজ করতে পারবেন।

Prisma কিভাবে কাজ করে?

Prisma আপনার ডাটাবেজের schema কে একটি object model এ রূপান্তর করে। এর ফলে আপনি OOPL ব্যবহার করে সহজেই ডাটাবেজের সাথে কাজ করতে পারবেন। Prisma SQL query গুলোকে auto-generate করে, যার ফলে আপনাকে SQL query লিখতে হবে না।

Prisma এর সুবিধা হচ্ছে, code maintainibility এবং Productivity বাড়বে। সাথে আপনি খুব অল্প সময়েই যেকোনো প্রজেক্ট তৈরি করতে পাবেন।

এখন প্রশ্ন হচ্ছে orm হিসাবে কি শুধু মাত্র prisma ই আছে। এটা কেন রিকমেন্ড করছি?

না, আরো আছে জেমনঃ **Sequelize, TypeORM, Objection.js** ইত্যাদি। কিন্তু প্রিজমা শিখতে বলার মেইন কারন হচ্ছে আপনি এটি অত্যন্ত সহজে শিখতে পারবেন। এর কমিউনিটি অত্যন্ত দ্রুত বড় হচ্ছে। একই সাথে আপনি Prisma এর মাদ্ধমে SQL এবং NoSQL উভই ডাটাবেজেই কাজ করতে পারবেন without any hassle.

Dockerization & Deployment

এতক্ষন অনেক প্যাঁচা পেঁচি করলাম Frontend এবং Backend টেকনোলোজি নিয়ে। তবে কথা হচ্ছে সুন্দর সুন্দর Frontend এবং Backend টেকনোলোজি দিয়ে অনেক ভালো ওয়েবসাইট বিল্ড করলেন। কিন্তু সেটা ডিপ্লয় না করলে কি কোন মূল্য থাকবে? না থাকবে না।

তাই Fullstack ডেভেলপার হতে হলে আপনাকে অবশ্যই Deployment সম্পর্কে জানতে হবে। একই সাথে হালের ক্রেজ Docker সম্পর্কেও জানতে হবে।

Dockerize Your Applications

Docker হলো একটি open-source platform যা আপনাকে software applications কে containers-এ package করতে সাহায্য করে। Containers হলো lightweight, standalone, executable packages যা software applications কে run করার জন্য প্রয়োজনীয় সকল dependencies (code, runtime, system tools, system libraries, settings) ধারণ করে।

Docker এর সাহায্যে আপনি আপনার application কে যেকোনো environment-এ deploy করতে পারবেন, সেটা local machine, development environment, staging environment, অথবা production environment যেটাই হোক না কেন।

Docker ব্যবহারের সুবিধা:

  • Portability: Containers কে যেকোনো environment-এ সহজেই deploy করা যায়।
  • Consistency: Containers সব environment-এ একইভাবে run করে।
  • Efficiency: Containers resources কে efficiently ব্যবহার করে।
  • Isolation: Containers একে অপরের থেকে isolated থাকে।
  • Scalability: Containers কে সহজেই scale করা যায়।
  • Important: কোড আপনার পিসি তে কাজ করে কিন্তু আপনার বসের পিসি তে কাজ করে না, তা হবে না, তা হবে না!

Docker এর Podman, Containerd, LXD এর মতো কিছু অল্টারনেটিভ আছে। আপনি আপনার প্রয়োজন অনুসারে শিখতে পারেন।

The Art of Seamless Deployment

Deployment হলো software application কে production environment-এ install এবং configure করার প্রক্রিয়া। Deployment এর বিভিন্ন ধরন আছে, যেমন:

  • Manual deployment: This is the most basic method of deployment. In this method, you manually install and configure the application on the production server.
  • Automated deployment: This method uses tools to automate the deployment process. There are many different automated deployment tools available.
  • Continuous deployment: This is a type of automated deployment where changes to the application are automatically deployed to production as soon as they are made.

Deployment এর বিভিন্ন tools:

  • Jenkins: Jenkins is a popular continuous integration and continuous delivery (CI/CD) tool.
  • GitHub Actions: GitHub Actions is a cloud-based CI/CD tool that integrates with GitHub.
  • Heroku: Heroku is a cloud platform as a service (PaaS) that allows you to deploy applications easily.
  • AWS: AWS is a cloud computing platform that offers a variety of services for deploying applications. etc…

ডিপ্লয়মেন্ট এর ক্ষেত্রে এরকম আর অনেক টুল পাবেন। তবে মার্কেট ডিমান্ডের উপর ভিত্তি করে আপনি GitHub Action, AWS, Digital Ocean এর উপর দক্ষতা অরজন করতে পারেন।

— এখানে আমি আপনার ক্যারিয়ারের নেক্সট স্টেজে যেতে অর্থাৎ ফুলস্ট্যাক ডেভেলপার হতে যে টেক গুলো শিখাই লাগবে সেগুলো নিয়ে আলোচনা করেছি। আপনি আপনার ইন্টারেস্ট অনুযায়ী ফ্রন্টএন্ড বা ব্যাকেন্ড যেকোনো একটা দিয়ে শুরু করে ফেলতে পারেন। তাই দেরি না করে আজকেই কোপা কোপি শুরু করে দেন , নিজেকে জীবন যুদ্ধে আরেক ধাপ এগিয়ে নিয়ে।

বোনাস টিপসঃ আপনি যদি গুছানো ওয়ে তে ইন্ডাস্ট্রির বেস্ট প্রাকটিস সহ টেকনোলোজি গুলো শিখতে চান তবে আপনি Programming Hero X Level 2 এর আউটলাইন্টা এক্সপ্লোর করে দেখতে পারেন।

আমি আশা করি এই ব্লগ পোস্টটি আপনাকে আপনার ক্যারিয়ারের লক্ষ্য অর্জনে সাহায্য করবে।

শুভকামনা!

Allah Hafez | Keep Learning …

Top comments (0)