সফটওয়্যার ডেভেলপমেন্ট এর ক, খ, গ ,ঘ

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

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

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

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

ফ্রন্টএন্ডঃ  সহজ ভাবে বললে ফ্রন্টএন্ড হচ্ছে একটা সফটওয়্যারে আপনি যা দেখতে পান, যার মাধ্যমে আপনি সেটার সাথে কাজ করতে পারেন। এটাকে টেকনিক্যালি আমরা User Interface (UI) বলতে পারি। এবার আসি এই User Interface এ কি কি থাকে 

ধরুন, একটা বাড়ির ফাউন্ডেশন থাকে, পিলার থাকে যা অবকাঠামো দেয়। আবার মানব শরীরে কংকাল থাকে। একটা ওয়েব এপ্লিকেশনে এই অবকাঠামো দেয় HTML

এই HTML হচ্ছে একটা মার্কআপ ল্যাংগুয়েজ যা আপনাকে শিখতে হবে। জীবনে সবক্ষেত্রে এটা এখন আপনার অন্যতম সঙ্গী এবং সবচাইতে সহজে শেখা যায় এটা। 

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

এই CSS দিয়ে আপনি একটা ওয়েব এপ্লিকেশন এর সমস্ত ডিজাইন করে ফেলতে পারেন, আকার আকৃতি, রঙ সবই করতে পারবেন এই CSS দিয়ে।
তো HTML এর পর আপনাকে শিখতে হবে CSS
এবার এই বাড়িতে আবার লিফট আছে। বাটন চাপলে সেই ফ্লোরে নামিয়ে দেয়। কত সুন্দর না ? একটা ওয়েব এপ্লিকেশন এর User Interface এ যদি আপনি এ ধরনের Interaction দেখেন তবে বুঝবেন সেখানে অবশ্যই কোন না কোন Client Side Programming/Scripting Language ব্যবহার করা হয়েছে। 

এখানে ক্লাইয়েন্ট মানে একজন ইউজার এর ডিভাইস বুঝানো হয়েছে। মূলত ব্রাউজার ওয়েব এপ্লিকেশন এর ক্ষেত্রে। অর্থাৎ যে ল্যাংগুয়েজ মূলত একজন ইউজার এর ব্রাউজার বা ডিভাইসে কাজ করে।
ওয়েব এপ্লিকেশন এর ক্ষেত্রে আপনাকে শিখতে হবে Javascript (পরে Typescript)।
অনেক ওয়েবসাইটেই দেখেন নিচের দিকে নামলে উপরে ওঠার একটা বাটন দেয়। আপনাকে ওপরে নিয়ে যায় এক ক্লিকেই। এই কাজটা করে থাকে এই Javascript !

তো ফ্রন্টএন্ডে কি আর কিছু নেই? অবশ্যই আছে তবে বেসিক লেভেলে এগুলো নিয়ে এগোতে হবে। 

নিচের লিস্ট ধরে শিখতে পারেনঃ 

১) HTML (HyperText Markup Language)

২) CSS (Cascading Style Sheet)

৩) Javascript 

এরপর আরো কিছু টার্ম পরিচয় করিয়ে দেই।

Framework কি ? সহজে বলি বাজারে রেডি মিক্স বিড়িয়ানির মশলা সম্পর্কে যদি অবগত থাকেন তবে এটা তেমনই একটা কিছু। ধরেন আপনি নিজে সব কোড করে একটা সফটওয়্যার বানালেন। এতে আপনার প্রচুর কোড করা লাগল। এখন ধরুন সফটওয়্যার টি ভাইরাল হয়ে গেল। আপনি যেভাবে কোড করেছেন সেটা হয়তো একান্ত আপনার স্টাইল। অন্য কেউ সেটা বুঝল না এদিকে আপনি একা আর কাজ করতে পারছেন না আবার নতুন অনেক কিছু করতে গেলেও অনেক কোড লিখা লাগে। এমন সময় যদি জানেন যে বিরিয়ানি মিক্সের মতো কিছু ফ্রেমওয়ার্ক আছে যা আপনাকে অনেক কিছু আগে থেকেই করে দিবে শুধু আপনি নির্দিষ্ট যায়গায় বসিয়ে কাজ করবেন তাহলে কেমন হয়?
এই জন্যই ফ্রেমওয়ার্ক এর জন্ম। অনেক কাজ অলরেডি ফ্রেমওয়ার্ক করে রাখে। ওপেন সোর্স হওয়ায় সবাই এটা সম্পর্কে জানতে পারে। তাই আপনি যদি আপনার সফটওয়্যার ফ্রেমওয়ার্ক দিয়ে করেন তাহলে অনেক সময় বেঁচে যাবে।
এখন আসি শুধু CSS দিয়ে কি করা যাবেনা? অবশ্যই যাবে। তবে একটা নতুন টার্ম এখন আপনি পরিচিত হবেন সেটা হলো Responsive Web Design। 

অনেক সময় দেখবেন অনেক ওয়েবসাইট ভেঙ্গে যায় মোবাইল ডিভাইসে বা ট্যাবলেটে। এখন কথা হচ্ছে কেন হয় এমন? কি করতে হয়? CSS Media Query নামে একটা ফিচার আছে যা দিয়ে সিস্টেম কে ইন্সট্রাকশন দেয়া যায় কোন সাইজের ডিভাইসে কেমন আকার, আকৃতি, কালার ইত্যাদী থাকবে। তবে এটা করা টাফ এবং সময় লাগে অনেক। তাই আমরা CSS এর কোন ফ্রেমওয়ার্ক ব্যবহার করব। যেমনঃ Bootstrap, Foundation ফ্রেমওয়ার্ক। এগুলাতে অনেক কিছু করাই থাকে। সিএসএস শেখার পর আপনাকে এ ধরনের একটা ফ্রেমওয়ার্ক শিখতে হবে যাতে আপনি সুন্দর ইউজার ইন্টারফেস তৈরী করতে পারেন। 

এখন আপনি UI করে ফেললেন HTML, CSS with Bootstrap , হাল্কা Javascript দিয়ে। 

এখন পর্যন্ত যা করলে সেটা হচ্ছে Static UI 

এবার পরিচিত হবেন Static আর Dynamic application এর সাথে। ধরুন আপনি কলম দিয়ে একটা কাগজে একটা আম আকলেন। এখন আপনাকে বলা হলো যে আম না আপনি পেপে আঁকেন। তো আপনি কি সেটা মুছতে পারবেন? যদি পেন্সিল দিয়ে আঁকতেন তবে কি এই ঝামেলা হতো ? 

তেমনি যদি কোন application সময়ের সাথে এর ভেতরের তথ্য পরিবর্তন না হয় তবে সেটাকে আমরা বলব Static application.  আর যদি সময়ের সাথে তথ্য বা ডাটা পরিবর্তন হয় তবে সেটা হবে Dynamic Application. 

তো এই ডায়নামিক সফটওয়্যার/ এপ্লিকেশন তৈরী করতে হলে কি করতে হয়?
এটার জন্য আলাদা বিভাগ আছে যেটাকে আমরা বলব ব্যাকএন্ড

ব্যাকএন্ডঃ স্বাভাবিকভাবে প্রশ্ন আসবে এই ব্যাকএন্ডে কি থাকে ?
ধরুন ফেসবুকে আপনি স্ট্যাটাস দিলেন , এতো বছরে অনেক জমেছে নিশ্চই? আর চ্যাটের মেসেজগুলো? কিংবা আপনার আপলোড করা ছবিগুলা??  কিভাবে রাখা হয় কোটি কোটি মানুষের এতো ডাটা ? চাইলেই হাজির হয়ে যায় নিমিষেই ? অবশ্যই এটা ম্যাজিক না। এখানে মেইনলি কাজ করে এপ্লিকেশনের Database, File Storage System, Backend or Server Side Programming Languages. 

সার্ভার সাইড বলার কারণ এই টেকনলোজিগুলো কাজ করে সার্ভারে, ইউজার এর ডিভাইসে না।
তাই আপনাকে সার্ভার সাইড প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখতে হবে যেমনঃ Php, Python, GO, Javascript (Can be used in frontend and backend) ইত্যাদী। 

এই ল্যাঙ্গুয়েজ দিয়ে আপনি একটা এপ্লিকেশন এর সকল ফাংশনালিটি বা বিজনেস লজিক বানাতে পারবেন।
ধরেন লগিন, রেজিস্ট্রেশন, ছবি আপলোড করা ইত্যাদী। এখন ডাটাবেজের জন্য শিখতে পারেন MySQL, Postgresql ইত্যাদী। অনেক ডাটাবেজ আছে তবে এগুলা পপুলার আর নতুনদের জন্য সহজ।
তারমানে আপনার এখনকার স্টেপ গুলো হলোঃ 

১) যেকোন একটা ব্যাকএন্ড ল্যাংগুয়েজ শেখা যেমনঃ পিএইচপি, পাইথন ইত্যাদী 

২) একটা ডাটাবেজ ভালো মতো শেখা যেমন MySQL, Postgresql ইত্যাদী। মূলত ডাটাবেজে আপনি Structured Query Language শিখবেন।
৩) ব্যাকএন্ড ল্যাঙ্গুয়েজ এর সাথে ডাটাবেজ কানেক্ট করা। 

৪) একটা CRUD (Create, Read, Delete, Update) ছোট্ট এপ্লিকেশন তৈরি করা। যেখানে ফ্রন্টএন্ড আর ব্যাকএন্ড এর মধ্যে যোগাযোগ স্থাপন হয়
৫) এরপর আপনি আগের তৈরি CRUD যেমনঃ হতে পারে ফোনবুক এপ্লিকেশনে লগিন রেজিস্ট্রেশন ফিচার এড করলেন। এখন আপনি নতুন একটা জিনিস শিখবেন সেটা হচ্ছে Session ! 

এই সেশন হলো অনেকটা আপনি যখন কাউক কল দেন কথা বলেন, ওই সময়টা একান্ত আপনাকে ওপর পাশের ব্যক্তি দিয়ে থাকেন। তেমনি আপনি লগিন করলে সার্ভারে আপনার তথ্য নির্দিষ্ট সময় পর্যন্ত ধরে রাখবে যে আপনি লগিন আছে

ফ্রন্টএন্ডে যেমন ফ্রেমওয়ার্ক ছিল, ব্যাকএন্ডেও কিন্তু ফ্রেমওয়ার্ক আছে। যেমনঃ 

পিএইচপি এর ক্ষেত্রে লারাভেল, কেক পিএইচপি , কোডইগনাইটার 

পাইথনের ক্ষেত্রে জ্যাঙ্গো, ফ্লাস্ক ইত্যাদী।

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

এরপর ধরুন এপ্স বানায় ফেললেন। এটা তো ইন্টারনেটে কোথাও রান করতে হবে ? আবার মানুষ কীভাবে পাবে?
এখন আপনাকে জানতে হবে সার্ভার (হোস্টিং), ডোমেইন নিয়ে।  

সহজে বলি সার্ভার হচ্ছে যেখানে আপনার এপ্লিকেশন রাখবেন, যেখানে এটা রান করবে। সার্ভারে আপনাকে মূলত দুইটা অপারেটিং সিস্টেম শিখতে হতে পারে। তবে লিনাক্সটাই বেশি ব্যবহৃত। আর ডোমেইন কি? ওয়েবসাইট এর এড্রেসটাই হচ্ছে ডোমেইন। যেমনঃ Facebook.com, Skill.jobs ইত্যাদী।
তো এই সার্ভার এর সাথে ডোমেইন কীভাবে কানেক্ট হয়? মূলত প্রতিটা সার্ভারে একটা আইপি এড্রেস থাকে। যেমন আমাদের মোবাইল নম্বর থাকে আমাদের সাথে যোগাযোগ করতে। তো এই ডোমেইন আর সার্ভার এর আইপি এড্রেস কার সাথ কে জড়িত সেটার জন্য একটা ডিকশনারি আছে যেটাকে বলে DNS(Domain Name Server)  তো এই ডিএনএস এর কাজ হলো ব্রাউজারে যখন আপনি কোন ওয়েব ইউআরএল  টাইপ করেন যেমনঃ skill.jobs  তখন এই ডিএনএস সার্ভার আপনার কম্পিউটারকে বলে দেয় যে অমুক আইপিতে যেতে আর অমুক আইপি এই সার্ভারে অবস্থিত। কেননা আইপি মনে রাখা কষ্টকর আর ডোমেইন তো ইংরেজি বা সাধারণ ল্যাংগুয়েজে আছে।  

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

এই আর্টিকেলের পরের ভার্শনে আমরা ফ্রন্টএন্ড ফ্রেমওয়ার্ক, এপিআই , সার্ভার (এপাচি, এনজিনিক্স ইত্যাদী নিয়ে আলোচনা করব)

রমজান উপলক্ষে স্কিল জবস দিচ্ছে ৭০% ডিসকাউন্ট আপনি পাইথন দিয়ে ফুল স্ট্যাক সফটওয়্যার ডেভেলপমেন্ট বেসিক থেকে এডভ্যান্স শিখতে পারবেন।

Full Stack Web Development with Python Django & React JS

Written By:
Md Mahmudul Huq Topu 
Software Engineer, Skill Jobs 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.