আপনি যেহেতু এই বইটি পড়ছেন আমি ধরে নিয়েছি আপনি প্রোগ্রামিং শিখতে চান।
আপনি আপনার লক্ষ্যে পৌঁছানোর জন্য অনেক কিছু জানতে হবে ও শিখতে হবে, তাই আপনার
প্রথম লক্ষ্য হল আপনার লক্ষ্য সম্পর্কে জানা।
আপনি প্রোগ্রামিং শিখার আগে প্রোগ্রামিং এর খুটিনাটি বিষয় গুলো জানা প্রয়োজন, কারণ
কোন কিছু শিখার আগে বিষয়টি সম্পর্কে ভালো ভাবে জানা প্রয়োজন। প্রোগ্রামিং এর সকল
বিষয় সম্পর্কে ভালো ভাবে জেনে, নিজেকে প্রোগ্রামিং শিখার জন্য প্রস্তুত করুন। তারপর কি কি শিখবেন ও কোথা
থেকে শিখবেন তা পরিকল্পনা করে প্রোগ্রামিং শিখা শুরু করুন। কোন কিছুতে
সফল হতে হলে সুপরিকল্পনা অত্যন্ত প্রয়োজন।
বর্তমান যুগ টেকনোলজির যুগ, বর্তমান যুগের সাথে তাল মিলিয়ে চলতে হলে টেকনোলজির উপর
সাধারণ জ্ঞান থাকা অত্যন্ত প্রয়োজন, বর্তমানে পৃথিবীতে প্রোগ্রামিং এর গুরুত্ব অপরিসীম, প্রোগ্রামিং
কম্পিউটার টেকনোলজির একটি বড় অংশ, আপনি যদি প্রোগ্রামিং শিখার সিদ্ধান্ত নিয়ে থাকেন তবে আপনি একটি উত্তম সিদ্ধান্ত নিয়েছেন।
কারণ প্রোগ্রামিং এর মাধ্যমে আপনি আর্থিক সচ্ছলতা ও সম্মান পেতে পারেন।
আপনি কম্পিউটার টেকনোলজিতে নতুন হলে কম্পিউটার টেকনোলজি আপনার কাছে অন্ধকার একটি রাস্তার মত মনে হবে।
একটু চিন্তা করে দেখুন আজকে যারা প্রোগ্রামার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার ও কম্পিউটার বিজ্ঞানী
তাদেরও প্রথম প্রথম কম্পিউটার টেকনোলজিকে আপনার মত অন্ধকার একটি রাস্তার মত মনে হতো। কিন্তু তারাও এই অন্ধকার
রাস্তা অতিক্রম করে তাদের লক্ষ্যে পৌঁছে গেছে। আপনিও চেষ্টা করলে এই অন্ধকার রাস্তা অতিক্রম করতে পারবেন।
কম্পিউটার টেকনোলজি হার্ডওয়্যার ও সফটওয়্যার দুই শাখায় বিভক্ত । হার্ডওয়্যার ও সফটওয়্যার এই দুই শাখাকে বিভিন্ন উপশাখায় ভাগ করে ও
এই দুই শাখাকে একত্রিত করে বিভিন্ন উপশাখা তৈরী করে কম্পিউটার টেকনোলজির উন্নয়ন করা হচ্ছে। কম্পিউটার
টেকনোলজির সফটওয়্যার শাখায় ক্যারিয়ার তৈরী করার জন্য আমার অভিজ্ঞতা থেকে পরামর্শ দেওয়া
চেষ্টা করব। আপনি যদি সফটওয়্যার শাখায় ক্যারিয়ার তৈরী করতে চান তবে প্রথম প্রথম আপনার মনে অনেক
প্রশ্ন আসবে, সেই সব প্রশ্ন ও তার উত্তর দিয়ে এই বইটি সাজানো হয়েছে। তাই এই বইয়ের প্রত্যেকটি বিষয় আপনার জন্য
খুবই গুরুত্বপূর্ণ, সুতরাং এই বইয়ের প্রত্যেকটি বিষয় মনযোগ দিয়ে পড়ুন ও বুঝার চেষ্টা করুন, না বুঝলে বার বার পড়ুন।
প্রোগ্রামিং ল্যাংগুয়েজের গুরুত্ব বুঝার জন্য একটি উদাহরণ দেই,
আপনি আপনার বন্ধুর কম্পিউটার বা মোবাইল অন করার পর দেখলেন কোন ধরনের সফটওয়্যার (ভিডিও প্লেয়ার, অডিও প্লেয়ার, ইন্টারনেট ব্রাউজার,গেইমিং সফটওয়্যার) ইনস্টল করা নেই, তাহলে আপনার কাছে কি মনে হবে ?
মনে হবে আপনার বন্ধুর কম্পিউটার বা মোবাইল ব্যবহারের অযোগ্য।
কম্পিউটার ও মোবাইলে ইনস্টল করা প্রত্যেকটি সফটওয়্যার প্রোগ্রামিং ল্যাংগুয়েজ
দিয়ে তৈরী করা, তাহলে নিশ্চয় বুঝতে পারছেন প্রোগ্রামিং ল্যাংগুয়েজ আমাদের জন্য কতটুকু গুরুত্বপূর্ণ।
পৃথিবীর প্রায় সকল টেকনোলজিতে প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করা হয়, আমি মনে করি বর্তমানে প্রোগ্রামিং ল্যাংগুয়েজ ব্যতীত
কোন টেকনোলজি স্বয়ংসম্পূর্ণ হতে পারেনা।
হ্যাঁ আপনি প্রোগ্রামিং ল্যাংগুয়েজ শিখে প্রোগ্রামার, ওয়েব ডেভেলপার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার হতে পারবেন।
অনেকে মনে করে "প্রোগ্রামার, ওয়েব ডেভেলপার, সফটওয়্যার ডেভেলপার,
সফটওয়্যার ইঞ্জিনিয়ার হতে হলে টেকনোলজি নিয়ে লেখা পড়া করতে হবে।"
কয়েকটি উদাহরণ দিয়ে বুঝিয়ে বলি, ব্যবসা, বেসরকারী চাকরি ও সরকারী চাকরি এক একটি পেশা ঠিক তেমন ভাবে
ওয়েব ডেভেলপমেন্ট, সফটওয়্যার ডেভেলপমেন্ট ও সফটওয়্যার ইঞ্জিনিয়ারিং এক একটি পেশা।
যে ব্যবসা করে তাকে ব্যবসায়ী বলে ঠিক তেমন ভাবে যে সফটওয়্যার তৈরী করে তাকে সফটওয়্যার ডেভেলপার বলে।
একজন ব্যবসায়ী ব্যবসা করে অর্থ উপার্জন করে, ঠিক তেমন ভাবে একজন সফটওয়্যার ডেভেলপার সফটওয়্যার তৈরী করে অর্থ উপার্জন করে।
যে ব্যবসা করে সে ব্যবসায়ী হিসেবে পরিচয় দিয়ে থাকে, ঠিক তেমন ভাবে যে সফটওয়্যার তৈরী
করতে পারে সে সফটওয়্যার ডেভেলপার হিসেবে পরিচয় দিতে পারে।
একজন শিক্ষার্থী শিক্ষা প্রতিষ্ঠান থেকে কম্পিউটার টেকনোলজি নিয়ে লেখা পড়া শেষ করা মানে ডিগ্রী, অনার্স, মাস্টার্স পাস করা।
শিক্ষা প্রতিষ্ঠান একজন শিক্ষার্থীকে কম্পিউটার টেকনোলজি সম্পর্কে বেসিক ধারনা দিয়ে থাকে,
যেমন
কম্পিউটার কিভাবে চলে,
কিভাবে কোডিং করতে হয়,
একটি সফটওয়্যার কিভাবে তৈরী করতে হয়,
একজন সফটওয়্যার ডেভেলপারের দায়িত্ব,
একজন সফটওয়্যার ইঞ্জিনিয়ারের দায়িত্ব,
একজন কম্পিউটার বিজ্ঞানীর দায়িত্ব,
ইত্যাদি।
সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ার হতে হলে শিক্ষা প্রতিষ্ঠানের শিক্ষাকে কাজে লাগিয়ে
আরো স্টাডি করে সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা অর্জন করতে হয়।
এক কথায় সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ার হওয়া নিজের উপর নির্ভর করে শিক্ষা প্রতিষ্ঠানের উপর নয়।
আর যে কেউ প্রোগ্রামিং ল্যাংগুয়েজ শিখে সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা অর্জন করতে পারে।
বৃহৎ কোম্পানিতে সফটওয়্যার ডেভেলপমেন্ট ও সফটওয়্যার ইঞ্জিনিয়ারিং এর উপর দক্ষ ব্যক্তির প্রয়োজন হয়।
কোম্পানি গুলো সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ার নিয়োগের ক্ষেত্রে সনদপত্রের প্রতি গুরুত্ব না দিয়ে দক্ষতার উপর গুরুত্ব দিয়ে থাকে। তাই
দক্ষতা থাকলে সনদপত্র না থাকলেও চাকরি দিয়ে দেয়।
আপনিও ভালো ভাবে প্রোগ্রামিং শিখতে পারলে প্রোগ্রামার, ওয়েব ডেভেলপার, সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ার হতে পারবেন।
আপনার কম্পিউটার টেকনোলজির উপর যদি কোন প্রতিষ্ঠানিক শিক্ষা থেকে থাকে তবে আপনি সহজে ওয়েব ডেভেলপার,
সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা অর্জন করতে পারবেন।
আমি যখন প্রোগ্রামিং ল্যাংগুয়েজ নিয়ে স্টাডি শুরু করি তখন আমার লক্ষ্যে পৌঁছানোর জন্য অনেক কিছু শিখার প্রয়োজন অনুভব করি।
আমার শিক্ষা গ্রহনকে দ্রুত ও নিখুঁত করার জন্য কম্পিউটার টেকনোলজির দক্ষতাকে ৬টি ধাপে ভাগ করি।
প্রথম ধাপ: আপনি যখন কম্পিউটার অন অফ, সফটওয়্যার ইন্সটল আনইন্সটল, ফাইল কপি পেষ্ট,
কম্পিউটারের অপারেটিং সিস্টেম ইন্সটল, সাধারণ হার্ডওয়্যার সমস্যা সমাধান,
এপ্লিকেশন সফটওয়্যার ব্যবহার করতে পারবেন, তখন মনে করবেন প্রথম ধাপ অতিক্রম করছেন।
আমি মনে করি প্রথম ধাপ অতিক্রম করতে পারলে আপনি একজন কম্পিউটার অপারেটর।
দ্বিতীয় ধাপ: আপনি যখন ইন্টারনেট ব্রাউজ করে
ইন্টারনেট থেকে কোন কিছু শিখতে পারবেন তখন আপনি দ্বিতীয় ধাপ অতিক্রম করবেন।
আমি মনে করি দ্বিতীয় ধাপ অতিক্রম করতে পারলে আপনি দক্ষ কম্পিউটার ইউজারের দক্ষতা অর্জন করবেন।
তৃতীয় ধাপ: আপনি যখন প্রোগ্রামিং ল্যাংগুয়েজ শিখে আপনার বা অন্য কারো সফটওয়্যারের একটি প্রোগ্রাম লিখতে পারবেন তখন আপনি
তৃতীয় ধাপ অতিক্রম করবেন। আমি মনে করি তৃতীয় ধাপ অতিক্রম করতে পারলে আপনি প্রোগ্রামারের দক্ষতা অর্জন করবেন।
চতুর্থ ধাপ: আপনি যখন সফটওয়্যার ডেভেলপমেন্টের পদ্ধতি ব্যবহার করে একটি ডাইনামিক ওয়েবসাইট বা সফটওয়্যার তৈরী করে
মানুষের সমস্যা সমাধান করতে পারবেন তখন আপনি চতুর্থ ধাপ অতিক্রম করবেন।
আমি মনে করি চতুর্থ ধাপ অতিক্রম করতে পারলে আপনি সফটওয়্যার ডেভেলপারের দক্ষতা অর্জন করবেন।
পঞ্চম ধাপ: আপনি যখন আপনার বাস্তব জীবনের সমস্যা বা অন্য কারো বাস্তব জীবনের সমস্যা অতি সহজ ভাবে, কম খরচে, কম সময়ে, কম জনশক্তি দিয়ে
একটি সফটওয়্যার তৈরী করে, সফটওয়্যারটি দিয়ে সমস্যাটি সমাধান করতে পারেন ও সফটওয়্যারটি যদি সবার কাছে গ্রহনযোগ্য হয়
তখন আপনি পঞ্চম ধাপ অতিক্রম করবেন।
আমি মনে করি পঞ্চম ধাপ অতিক্রম করতে পারলে আপনি সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা অর্জন করবেন।
ষষ্ঠ ধাপ: আপনি যখন কম্পিউটার টেকনোলজির উন্নয়নের জন্য কম্পিউটারের কোন হার্ডওয়্যার তৈরী করবেন বা কোন
হার্ডওয়্যারের মান উন্নয়ন করবেন
অথবা কম্পিউটার টেকনোলজি উন্নয়ন করার জন্য বা কম্পিউটার টেকনোলজির কোন সমস্যা সমাধান করার জন্য
একটি সফটওয়্যার তৈরী করে সফটওয়্যার ডেভেলপারদের ও প্রোগ্রামারদের সহজে সফটওয়্যার তৈরী করতে সাহায্য করবেন
তখন আপনি ষষ্ঠ ধাপ অতিক্রম করবেন।
আমি মনে করি ষষ্ঠ ধাপ অতিক্রম করতে পারলে আপনি কম্পিউটার বিজ্ঞানীর দক্ষতা অর্জন করবেন।
পৃথিবীর বৃহৎ কোম্পানী নতুন সফটওয়্যার ও ওয়েবসাইট তৈরী, পরিচালনা ও গুনগত মান বৃদ্ধি করার জন্য প্রোগ্রামার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার নিয়োগ করে।
আপনি ভালো
ভাবে প্রোগ্রামিং শিখে প্রোগ্রামার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার হতে পারলে ঐ সব বৃহৎ কোম্পানীতে চাকরি পেতে পারেন।
নিজের সফটওয়্যার বা ওয়েবসাইট তৈরী করে অর্থ উপার্জন করতে পারবেন।
নিজের সফটওয়্যার কোম্পানী খুলে অর্থ উপার্জন করতে পারবেন।
ফ্রিল্যান্সিং মার্কেটপ্লেসে কাজ করে অর্থ উপার্জন করতে পারবেন।
YouTube এ প্রোগ্রামিং শিখিয়ে অর্থ উপার্জন করতে পারবেন।
প্রোগ্রামিং জানলে নিজের যে কোন একটি আইডিয়া কাজে লাগিয়ে অর্থ উপার্জন করা সম্ভব।
এক কম্পিউটারের সাথে অন্য কম্পিউটারের সংযোগ বা সম্পর্ককে এক কথায় ইন্টারনেট বলা হয়। আরো স্পষ্ট ভাবে বলি,
আমি যখন ফেসবুকে আমার প্রোফাইল ফটো আপলোড করি তখন আমার ফটো ফেসবুকের ডাটা সেন্টারে জমা হয়।
আপনি যখন আমার প্রোফাইল ভিজিট করেন তখন ফেসবুকের ডাটা সেন্টারে জমা করা আমার ফটো দেখতে পান।
আমার প্রোফাইল ফটো দেখার জন্য ফেসবুকের ডাটা সেন্টারের সাথে আপনার কম্পিউটারের যে সম্পর্ক বা সংযোগ
তৈরী হয় ঐ সম্পর্ক বা সংযোগ কে ইন্টারনেট বলা হয়।
সব সময় একটি কথা মনে রাখবেন, আমরা ইন্টারনেটে যা দেখি বা পড়ি তা কোননা কোন কম্পিউটারে জমা রাখা তথ্য বা ডাটা,
আর যে কম্পিউটারে ইন্টারনেটের ডাটা বা তথ্য জমা থাকে ঐ কম্পিউটারকে ডাটা সেন্টার বলা হয়।
এক বা একাধিক হাই কনফিগারেশন কম্পিউটারের সাথে হাজার হাজার হার্ডডিস্ক যোগ করে একটি ডাটা সেন্টার তৈরী করা হয়।
এই ধরনের কম্পিউটার সব সময় চলতে থাকে, এই ধরনের কম্পিউটার বন্ধ হলে ইন্টারনেটে অনেক ডাটা পাওয়া যাবে না।
এখন আপনার মনে প্রশ্ন জাগতে পারে, কিভাবে আমার কম্পিউটারের সাথে ফেসবুকের ডাটা সেন্টারের সংযোগ তৈরী হল ?
আপনি নিশ্চই শুনে থাকবেন সাবমেরিন ও সাবমেরিন ক্যাবলের কথা, পৃথিবীর সকল কম্পিউটার সংযুক্ত করার জন্য
সুমদ্র তলদেশে সাবমেরিন ক্যাবল দিয়ে এক দেশের সাথে অন্য দেশের সংযোগ স্থাপন করা হয়েছে। এই সাবমেরিন ক্যাবল
সকল ডাটা সেন্টারের সাথে সংযুক্ত আছে, তাই আপনি আপনার কম্পিউটার দিয়ে সকল ওয়েব সাইট ভিজিট করতে পারেন।
এখন আপনার মনে প্রশ্ন জাগতে পারে, আমার কম্পিউটারের সাথে কোন সাবমেরিন ক্যাবল লাগানো নেই তাহলে আমার
কম্পিউটারের সাথে ফেসবুকের ডাটা সেন্টারে সংযোগ কিভাবে তৈরী হল ?
আপনি ইন্টারনেট ব্যবহার করার জন্য যে কোন কোম্পানীর ইন্টারনেট সার্ভিস ব্যবহার করে থাকেন, যে কোম্পানী
আপনাকে ইন্টারনেট সেবা দেয় সেই কোম্পানী গুলোকে ISP (Internet Service Provider) বলা হয়।
যেমন বাংলাদেশে গ্রামীনফোন, বাংলালিংক, ইন্ডিয়াতে Jio ইত্যাদি ।
এই সকল ISP আপনার মোবাইলে বা আপনার লেপটপে ইন্টারনেট কানেকশন দেওয়ার জন্য ক্যাবল নিয়ে আপনার
সাথে সাথে ঘোরা সম্ভব না। তাই দেশের বিভিন্ন স্থানে নেটওয়ার্ক টাওয়ার বসিয়ে আপনাকে ইন্টারনেট সেবা দিয়ে থাকে।
মনে করুন আপনার কম্পিউটারে একটি মুভি আছে মুভিটি দেখার জন্য আপনার কম্পিউটারে
অপারেটিং সিস্টেম (যেমন Windows 8, Windows 10) ইন্সটল করার
পরে ভিডিও প্লেয়ার ইন্সটল করে মুভিটি দেখতে হবে।
ঠিক তেমন ভাবে ডাটা সেন্টারের ডাটা ইন্টারনেটের মাধ্যমে দেখতে হলে ডাটা সেন্টারের
কম্পিউটারে একটি অপারেটিং সিস্টেম ইন্সটল করতে হয় সেই অপারেটিং সিস্টেমকে সার্ভার অপারেটিং সিস্টেম বলা হয়।
সার্ভার অপারেটিং সিস্টেম বিভিন্ন কোম্পানী তৈরী করে Microsoft এর তৈরী সার্ভার অপারেটিং সিস্টেম ব্যবহার
করলে ঐ কম্পিউটারকে Windows Server বলে, linux এর তৈরী সার্ভার অপারেটিং সিস্টেম ব্যবহার
করলে ঐ কম্পিউটারকে linux Server বলে।
সার্ভার অপারেটিং সিস্টেম একটি কম্পিউটারে ইন্সটল করলে ঐ কম্পিউটারকে সার্ভার বলা হয়।
আর যে কম্পিউটার থেকে সার্ভারের ডাটা দেখা বা পড়া হয় সেই কম্পিউটারকে ক্লাইন্ট কম্পিউটার বলা হয়।
আপনি আপনার ব্রাউজারে একটি URL (Uniform Resource Locator) লিখে এন্টার করার সাথে সাথে
আপনার কম্পিউটার থেকে সার্ভারে একটি অনুরোধ যায় এবং সার্ভার এই অনুরোধ অনুসারে ডাটা গুলোকে প্যাকেজ
আকারে আপনার কম্পিউটারের কাছে পাঠায় তখন আপনি ব্রাউজারে মাধ্যমে ঐ সার্ভারে থাকা তথ্য দেখতে পান।
আমরা একজন অন্য জনকে চেনার জন্য নাম ব্যবহার করি ঠিক তেমন ভাবে ইন্টারনেটে এক কম্পিউটার
অন্য কম্পিউটারকে চেনার জন্য বা অনুরোধ ও ডাটা আদান প্রদান করার জন্য IP Address কে নামের মত ব্যবহার করে।
আপনি যখন WDguideline.com লিখে এন্টার করেন তখন WDguideline.com এর ডাটা দেখতে পান।
প্রক্রিয়া সহজ মনে হলেও আসলে সহজ নয়, কারণ আপনার ব্রাউজার জানেনা WDguideline.com
এর ডাটা কোন সার্ভারে জমা আছে কারণ পৃথিবীতে শত শত সার্ভার আছে ।
DNS Server (Domain Name System Server)নামে
এক ধরনের সার্ভার আছে, সেই DNS Server জানে কোন ওয়েব সাইটের ডাটা কোন সার্ভারে জমা আছে ।
আপনার ব্রাউজারে WDguideline.com লিখে এন্টার করার সাথে সাথে আপনার
কম্পিউটার থেকে একটি অনুরোধ DNS Server
এ পাঠানো হয়, এক কথায় আপনার কম্পিউটার DNS Server কে প্রশ্ন করে
WDguideline.com এর তথ্য কোন সার্ভারে জমা আছে এবং আমি WDguideline.com
এর সার্ভারের তথ্য দেখতে চাই।
তারপর DNS Server WDguideline.com এর সার্ভারের IP Address জানিয়ে দেয়, তারপরে আপনার
কম্পিউটার WDguideline.com এর
সার্ভারের সাথে কানেক্ট হয়, তাই আপনি আমার সার্ভারে রাখা তথ্য দেখতে পান।
Domain মানে DNS Server এর সাথে ওয়েব সার্ভারের সংযোগ হওয়ার একটি IP Address, এই IP Address
মনে রাখা কষ্টকর তাই এই IP Address কে একটি নাম দেওয়া হয়।
Domain ক্রয় করা মানে DNS Server এ আপনার ডাটা ভান্ডারে একটি নাম
ও নাম্বার রেজিষ্টার করা, এক কথায় আপনার ফোন বুকে একজনের নাম ও নাম্বার সেভ করার মত।
DNS Server প্রত্যেক ওয়েবসাইটের
Domain Name এর সাথে ওয়েবসাইটির সার্ভারের IP Address
সেভ করে রাখে। তাই আপনি ব্রাউজারে WDguideline.com লিখে
এন্টার করলেই WDguideline.com এর সার্ভারে রাখা তথ্য দেখতে পারছেন।
এখন আপনার মনে প্রশ্ন জাগতে পারে, Domain কে বিক্রয় করে ? ডোমেইন বিক্রয় করে এক মাত্র
ICANN (Internet Corporation for Assigned Names and Numbers)
ICANN তাদের ডোমেইন বিক্রি করার জন্য বিভিন্ন দেশে এজেন্ট নিয়োগ করা আছে এই এজেন্ট গুলো হোস্টিং প্রোভাইডার।
সাধারন অর্থে ওয়েব হোস্টিং হল একটি ওয়েবসাইটের ডাটা রাখার জন্য ডাটা সেন্টারের নির্দিষ্ট কিছু জায়গা কে বুঝানো হয়।
এখন জেনে নেই ডোনমেইন কত প্রকার,
ডোমেইন এক্সটেনশন এর উপর ভিত্তি করে ডোমেইন এর শ্রেণী ভাগ করা হয়।
এই ওয়েবসাইটের ডোমেইন নেইম হল WDguideline.com এখানে .com হল ডোমেইন এক্সটেনশন।
ডোমেইন তিন প্রকার,
১. Top Level Domains (TLD)
২. Second level Domains
৩. Third level Domains
১. Top Level Domains (TLD)
Top Level Domains (TLD) তিন প্রকার
i. country code Top Level Domains(ccTLD)
এই ডোমেইন গুলো নিদির্ষ্ট কোন দেশের জন্য রেজিষ্টেশন করা হয়।
যেমন example.in example.us, example.jp
ii. generic Top Level Domain (gTLD)
ডোমেইন হল সবচেয়ে ব্যবহৃত ডোমেইন, gTLD ডোমেইন এক্সটেনশন হয়
com, org, net, edu, gov, mil ।
iii. internationalised country code top-level domains (IDN ccTLD)
এই ডোমেইন গুলো ইংলিশ বর্ণ ব্যতীত অন্য যে কোন ভাষার বর্ণ বা special character এর হতে পারে।
যেমন ভারত.in भारत.in
২. Second level Domains
এই ডোমেইন গুলো একটি ডোমেইন এর সাথে country code যোগ করা হয়, যেমন
example.com.bd, example.com.in ইত্যাদি।
৩. Third level Domains
সাব ডোমেইন গুলো Third level Domains বলা হয় ক্ষেত্র বিশেষ অন্য ডোমেইনও হতে পারে।
সাব ডোমেইন এর উদাহরন info.wdguideline.com ।
এখন জেনে নেয় ডোমেইন এর এক্সটেনশন দিয়ে কি বুঝানো হয়।
.com কোন ব্যবসার জন্য ব্যবহার করা হয়।
.net গবেষণা জন্য ব্যবহার করা হয়।
.info তথ্য প্রকাশ করার জন্য ব্যবহার করা হয়।
.edu শিক্ষার ক্ষেত্রে ব্যবহার করা হয়।
.gov সরকারী কাজে ব্যবহার করা হয়।
ওয়েবসাইট হল ডোমেইন এর মাধ্যমে দর্শন যোগ্য ওয়েব সার্ভারে জমা রাখা
ওয়েব পৃষ্ঠা, ছবি, অডিও, ভিডিও ও অন্যান্য ডিজিটাল তথ্যের সমষ্টিকে একসাথে ওয়েবসাইট বা সাইট বলা হয়।
ওয়েবসাইট দুই প্রকার
১. Static website
২. Dynamic website
Static website: যে ওয়েবসাইট সবার কাছে একি ধরনের তথ্য প্রদর্শন করে এবং ব্যবহারকারী বা ভিজিটর ওয়েবসাইটের তথ্য
পরিবর্তন করতে পারেনা সেই ওয়েবসাইটকে Static website বলা হয়। যেমন, এই পেইজটি একটি Static পেইজ, এই পেইজের
তথ্য সবার কাছে সমান তথ্য দেখাবে এবং এই তথ্য ভিজিটর পরিবর্তন করতে পারেনা।
Dynamic website: যে ওয়েবসাইট সবার কাছে একি ধরনের তথ্য প্রদর্শন করে না এবং ব্যবহারকারী বা ভিজিটর ওয়েবসাইটের তথ্য
পরিবর্তন করতে পারে সেই ওয়েবসাইটকে Dynamic website বলা হয়।
যেমন, সোশ্যাল মিডিয়া সাইট গুলো সবার কাছে সমান তথ্য দেখাবে না এবং এই তথ্য ভিজিটর পরিবর্তন করতে পারে।
একটু খেয়াল করুন একটি ওয়েবসাইট ভিজিট করতে আপনার কম্পিউটার ও সার্ভার সমূহ অনেক গুলো প্রক্রিয়া সম্পন্ন করতে হয়।
এই প্রক্রিয়া ও এই প্রক্রিয়ার মাধ্যমে দর্শন যোগ্য সকল ডাটাকে একসাথে World Wide Web বলা হয়।
সংক্ষেপে The Web, WWW বা W3 বলা হয়।
ডাটা সেন্টার থেকে আপনার কম্পিউটারে ডাটা ট্রান্সফার হওয়ার পদ্ধতিকে Hypertext Transfer Protocol বলা হয়।
সংক্ষেপে http বলা হয়।
অনেকেই মনে করে ইন্টারনেট ও www একই বিষয় কিন্তু ইন্টারনেট ও www এক বিষয় নয়। ইন্টারনেট হল একটি কম্পিউটারের সাথে
অন্য কম্পিউটারের সংযোগ বা সম্পর্ক, আর www হল ইন্টারনেটের মাধ্যমে কম্পিউটারে সংরক্ষিত ডাটা দেখার বা স্থানান্তর করার জন্য সহজ পদ্ধতি প্রদানকারী প্রতিষ্ঠান।
প্রত্যেকটি Dynamic ওয়েবসাইটকে সফটওয়্যার বলা হয়, সহজে বুঝার জন্য একটি উদাহরণ দেই
android মোবাইলে যত ধরনের সফটওয়্যার ব্যবহার করা হয় প্রায় সকল সফটওয়্যার play store এ
আপলোড করতে হয়, এই সফটওয়্যার গুলো android মোবাইল
ব্যতীত অন্য মোবাইল বা কম্পিউটারে ব্যবহার করা যায় না।
তাই play store এর সকল সফটওয়্যারকে android application
বলা হয়।
ঠিক একই ভাবে world wide web বা ওয়েব সার্ভারে আপলোড করা প্রত্যেক সফটওয়্যার কে
web application বলা হয়।
একটু খেয়াল করুন, অপারেটিং সিস্টেম ভিত্তিক application গুলো নির্দিষ্ট অপারেটিং সিস্টেম ব্যতীত অন্য
অপারেটিং সিস্টেমে ব্যবহার করা যায় না ।
যেমন,
android application সমূহ android অপারেটিং সিস্টেম ব্যতীত অন্য অপারেটিং সিস্টেমে ব্যবহার করা যায় না,
Windows application সমূহ Windows অপারেটিং সিস্টেম ব্যতীত অন্য অপারেটিং সিস্টেমে ব্যবহার করা যায় না।
কিন্তু world wide web বা ওয়েব সার্ভার ভিত্তিক application
গুলো যে কোন অপারেটিং সিস্টেম দিয়ে ব্যবহার করা যায়,
তাই web application দিয়ে বৃহৎ কোম্পানি তৈরী হয়েছে।
যেমন, alibaba.com, amazon.com, google.com, facebook.com ।
Web Application ও অন্যান্য Application এর মধ্যে পার্থক্য হল,
Web Application ব্যতীত অন্যান্য Application গুলো ব্যবহার করতে হলে সোর্স কোড নিজের কম্পিউটারে
ডাউনলোড করে ব্যবহার করতে হয় কিন্তু Web Application এর সোর্স কোড সার্ভার কম্পিউটারে থাকে তাই
ইন্টারনেট কানেকশন দিয়ে Web Application ব্যবহার করতে হয়, এই জন্য Web Application
ব্যবহার করতে Web Application ডাউনলোড করার প্রয়োজন হয় না।
Software ও Application সম্পর্কে বিস্তারিত জানতে " সফটওয়্যার কত প্রকার ? " লিখাটি পড়ুন।
ওয়েব ডেভেলপমেন্ট সম্পর্কে অনেকের সঠিক ধারনা নাও থাকতে পারে। তাই ওয়েব ডেভেলপমেন্ট শিখার আগে ওয়েব ডেভেলপমেন্ট সম্পর্কে সঠিক তথ্য দেওয়া আমাদের দায়িত্ব।
ওয়েব ডেভেলপমেন্ট শিখতে ইচ্ছুক প্রত্যেক ব্যক্তির ওয়েব ডেভেলপমেন্ট সম্পর্কে স্পষ্ট ধারণা থাকা অত্যাবশ্যক।
একটি ওয়েবসাইটকে তৈরী করা থেকে শুরু করে ইন্টারনেটে লাইভ করা পর্যন্ত যে সকল কাজ করতে হয় সেই সকল কাজ গুলোকে
একসাথে ওয়েব ডেভেলপমেন্ট বলা হয়।
ওয়েব ডেভেলপমেন্টের গুরুত্ব জানার জন্য আমাদের ওয়েবসাইট WDguideline.com দিয়ে একটি উদাহরন দেই।
আপনি এখন আমাদের ওয়েবসাইট থেকে ওয়েব ডেভেলপমেন্ট সম্পর্কে জানার জন্য ভিজিট করছেন,
একটু চিন্তা করে দেখুন WDguideline.com যদি না থাকত তাহলে আপনাকে সাহায্য করার জন্য
আপনার কাছে আসতে হতো বা আপনি কষ্ট করে আমার কাছে আসতে হতো। এই সমস্যা সমাধান করার জন্য
আমরা WDguideline.com তৈরী করেছি। এখন খুব সহজে যেকেউ WDguideline.com
এর মাধ্যমে নিজের দক্ষতা পরীক্ষা ও নিজের ভুল ধরতে পারছেন। আরো একটু চিন্তা করুন, যদি
Google, YouTube, Facebook, Gmail না থাকত তবে কি হত ?
আশা করি এইসব ওয়েবসাইট না থাকলে কি হতো আপনি তা বুঝতে পারছেন।
Google, YouTube, Facebook, Gmail এইসব হল এক একটি ওয়েবসাইট। পৃথিবীর সকল ওয়েবসাইট
তৈরী করা হয়েছে মানুষের চাহিদা পূরণ করার জন্য। আর আপনার আমার মত কেউ এই সব ওয়েবসাইট তৈরী করেছে। তারা
ওয়েব প্রোগ্রামিং শিখেছে তাই এই সব ওয়েবসাইট তৈরী করতে পেরেছে, আর এই ওয়েবসাইট তৈরী করে আমাদের জীবনকে
সহজ করে তুলেছে। তাই পৃথিবীতে একজন ওয়েব ডেভেলপারের গুরুত্ব বলে শেষ করা যাবে না। আপনিও ওয়েব ডেভেলপমেন্ট শিখে
আপনার ওয়েবসাইটের মাধ্যমে মানুষকে সাহায্য করতে পারেন।
বি: দ্র: সহজে বুঝার জন্য Google বলতে সকল সার্চ ইঞ্জিন, YouTube বলতে সকল ভিডিও শেয়ারিং ওয়েবসাইট,
Facebook বলতে সকল সোশ্যাল মিডিয়া ওয়েবসাইট, Gmail বলতে সকল ইমেইল সার্ভিস প্রোভাইডারকে বুঝানো হয়েছে।
আমরা সবাই জানি , যে কাজের গুরুত্ব বেশি সেই কাজের মাধ্যমে অর্থ উপার্জন করার সুযোগও বেশি।
পৃথিবীর বৃহৎ কোম্পানী গুলো নতুন ওয়েবসাইট তৈরী, পরিচালনা
বা গুনগত মান বৃদ্ধি করার জন্য ওয়েব ডেভেলপার নিয়োগ করে। আপনি ভালো
ভাবে ওয়েব ডেভেলপমেন্ট শিখতে পারলে ঐ সব বৃহৎ কোম্পানীতে চাকরি পেতে পারেন।
নিজের ওয়েবসাইট তৈরী করে অর্থ উপার্জন করতে পারবেন।
নিজের ওয়েব ডেভেলপমেন্ট কোম্পানী মাধ্যমে অর্থ উপার্জন করতে পারবেন।
ফ্রিল্যান্সিং মার্কেটপ্লেসে (fiverr.com, freelancer.com, upwork.com etc) কাজ করে অর্থ উপার্জন করতে পারবেন।
YouTube এ ওয়েব ডেভেলপমেন্ট শিখিয়ে অর্থ উপার্জন করতে পারবেন।
ওয়েব ডেভেলপমেন্ট জানা থাকলে নিজের যে কোন একটি আইডিয়া কাজে লাগিয়ে ইন্টারনেট থেকে অর্থ উপার্জন করা সম্ভব।
সাধারন ভাবে ওয়েব ডেভেলপার বলতে যে ওয়েবসাইট তৈরী করে তাকে ওয়েব ডেভেলপার বলা হয়। কিন্তু ওয়েব টেকনোলজিতে ওয়েব ডেভেলপার শব্দটি স্পষ্ট কোন অর্থ বহন করে না। কারণ একটি ওয়েবসাইট তৈরী করতে বিভিন্ন ধরনের কাজ করতে হয়। ওয়েব ডেভেলপার শব্দটির দ্বারা একজন ব্যক্তি ওয়েবসাইট তৈরীর কোন কাজটির উপর দক্ষ তা বুঝা যায় না। এক কথায়, ওয়েব ডেভেলপার শব্দটির দ্বারা কোন ব্যক্তির দক্ষতা পরিমাপ করা যায় না। ওয়েব ডেভেলপমেন্ট ও ওয়েব ডেভেলপারের প্রকার ভেদ জানতে "ওয়েব ডেভেলপারের প্রকার ভেদ " লিখাটি পড়ুন।
একটি ওয়েবসাইট ডেভেলপের জন্য তিন ধাপে কাজ করতে হয়, ধাপ গুলো হল-
১. Front-End Development,
২. Back-End Development,
৩. Webmastering
এই ধাপ গুলোর উপর ভিত্তি করে ওয়েব ডেভেলপারদের তিন ভাগে ভাগ করা হয়।
১. Front-End Developer,
২. Back-End Developer,
৩. Full Stack Developer
Front-End Developer:
ওয়েব ডিজাইনারের কাছ থেকে পাওয়া চিত্রকে Client Side Language (HTML, CSS, JavaScript)
দিয়ে Static ওয়েব পেইজ তৈরী করা কে Front-End Development বলা হয়।
যে Front-End Development এর কাজ করে তাকে Front-End Developer বলা হয়।
Back-End Developer:
Static ওয়েব পেইজ বা ওয়েবসাইটকে Server Side Language (PHP, ASP.NET, Python ইত্যাদি) ব্যবহার করে
ডাইনামিক ওয়েবসাইটে পরিণত করাকে Back-End Development বলা হয়।
যে Back-End Development এর কাজ করে তাকে Back-End Developer বলা হয়।
Full Stack Developer:
একটি ওয়েবসাইটকে ইন্টারনেটে লাইভ করা এবং ওয়েবসাইটের বিভিন্ন সমস্যা সমাধান করাকে Webmastering বলা হয়।
যে ওয়েবসাইটকে ইন্টারনেটে লাইভ করতে পারে এবং ওয়েবসাইটের বিভিন্ন সমস্যা সমাধান করতে পারে তাকে Webmaster বলা হয়।
যে Front-End Development, Back-End Development ও Webmastering করে তাকে Full Stack Developer বলা হয়।
সকল জনপ্রিয় প্রোগ্রামিং ল্যাংগুয়েজ লিখার নিয়ম প্রায় সমান, শুধু বাক্য (syntax) গঠনে কিছু পার্থক্য রয়েছে, তাই একটি প্রোগ্রামিং ল্যাংগুয়েজ ভালো ভাবে শিখতে পারলে অন্যান্য ল্যাংগুয়েজ গুলো সহজে শিখা যায়।
এই পোষ্টটি পড়ার আগে "ওয়েবসাইট কি ?" লিখাটি পড়ে নিন।
Front-end:
ওয়েব ব্রাউজারে দৃশ্যমান ওয়েবসাইটের গঠনকে Front-end বলা হয়।
ওয়েব ব্রাউজারে দৃশ্যমান প্রত্যেক তথ্য Front-end Language দিয়ে সুন্দর ভাবে সাজিয়ে উপস্থাপন করা হয়।
Back-end:
ওয়েবসাইটকে ডাইনামিক করার জন্য Back-end Language দিয়ে ওয়েবসাইটের যে গঠন তৈরী করা হয় তাকে
Back-end বলে।
উদাহরণ স্বরূপ, WDguideline.com এর প্রত্যেক Skill Tester এর প্রত্যেকটি প্রশ্ন Front-end Language
ব্যবহার করে আপনার সামনে উপস্থাপন করা হয়েছে। Skill Tester এই দৃশ্যমান গঠনকে Front-end বলা হয়।
আর আপনি প্রশ্নের উত্তর দিয়ে Submit বাটনে ক্লিক করার সাথে সাথে আপনার ভুল উত্তর, কি জানা প্রয়োজন ও আপনার ফলাফল দেখতে
পান। আপনাকে এই ফলাফল ও দিকনির্দেশনা দেওয়ার জন্য Back-end Language দিয়ে অনেক গুলো প্রোগ্রাম রচনা করা হয়েছে,
এই প্রোগ্রামগুলোকে একসাথে Back-end বলা হয়।
ওয়েব ডিজাইন সম্পর্কে অনেকের সঠিক ধারনা নাও থাকতে পারে, তাই ওয়েব ডেভেলপমেন্ট শিখার আগে ওয়েব ডিজাইন সম্পর্কে সঠিক তথ্য দেওয়া আমাদের দায়িত্ব।
অনেকেই ওয়েব ডিজাইন ও ওয়েব ডেভেলপমেন্ট একই দক্ষতা বা কাজ মনে করে, কিন্তু ওয়েব ডিজাইন ও ওয়েব ডেভেলপমেন্ট ভিন্ন ভিন্ন কাজ বা দক্ষতা।
সাধারনত একজন ওয়েব ডিজাইনার একটি ওয়েবসাইটের ডিজাইন করে, ওয়েবসাইটের কোন স্থানে কি থাকবে, কোন পেইজে কি থাকবে, কোথায় কি
কালার থাকবে, একটি ওয়েবসাইটের Front-end ও Back-end এর পূর্ণাঙ্গ গঠন ডিজাইন করে থাকে।
এই ডিজাইন অনুসরণ করে ওয়েব ডেভেলপার ওয়েবসাইট ডেভেলপ করে।
। এক কথায় একজন ওয়েব ডিজাইনার তার কল্পনা শক্তি ব্যবহার করে ওয়েবসাইটের চিত্র অঙ্কন করে।
প্রত্যেক ওয়েব ডিজাইনার চায় তার কল্পনার ওয়েবসাইটকে বাস্তব রূপ দিতে,
তাই তিনি Client Side Language (HTML, CSS, JavaScript) ব্যবহার করে
তার কল্পনার ওয়েবসাইটকে বাস্তব রূপ দিয়ে থাকে। তাই অনেকেই ঐ ব্যক্তির দক্ষতা এক কথায় প্রকাশ করার জন্য তাকে ওয়েব ডিজাইনার বলে থাকে।
ঐ ব্যক্তিকে ওয়েব ডিজাইনার বলা হলে ঐ ব্যক্তির দক্ষতার সঠিক মূল্যায়ন করা হয় না।
প্রকৃত অর্থে তিনি একজন ওয়েব ডিজাইনার ও Front-End Developer ।
শিক্ষানবিশ ওয়েব ডেভেলপারদের উদ্দেশ্যে বলছি শুধু মাত্র HTML, CSS, JavaScript শিখে নিজেকে ওয়েব ডিজাইনার হিসেবে পরিচয় দেওয়ার আগে ১০০ বার চিন্তা করবেন
কারণ ওয়েব ডিজাইনিং অনেক বড় একটি দক্ষতা। শুধু মাত্র HTML, CSS, JavaScript শিখে নিজেকে ওয়েব ডিজাইনার হিসেবে পরিচয় দেওয়া মানে ওয়েব টেকনোলজি সম্পর্কে
অজ্ঞতার পরিচয় দেওয়া। যাদের ওয়েব টেকনোলজির উপর জ্ঞান কম তারা Front-End Development বোঝেনা তাই Front-End Development কে সহজে বুঝানোর
জন্য Front-End Development কে ওয়েব ডিজাইন বলে বুঝানো হয়।
ওয়েব ডিজাইন সম্পর্কে অরো জানতে
Wikipedia এই পেইজটি ভিজিট করুন।
আপনি বিভিন্ন ভাবে ওয়েব ডেভেলপমেন্ট শিখতে পারনে
১. ইন্টারনেটের বিভিন্ন ওয়েবসাইট থেকে ওয়েব ডেভেলপমেন্ট শিখতে পারেন।
২. YouTube ভিডিও দেখে ওয়েব ডেভেলপমেন্ট শিখতে পারেন।
৩. বিভিন্ন ইনস্টিটিউট বা একাডেমি থেকে শিখতে পারেন।
৪. পেইড ভিডিও টিউটরিয়াল থেকে শিখতে পারেন।
ফ্রী তে ওয়েব ডেভেলপমেন্ট শিখতে সাহায্য করার জন্য WDguideline.com ভালো ভালো ওয়েবসাইট
ও ভিডিও টিউটরিয়াল সংগ্রহ করে রাখে। আপনি সেখান থেকে খুব সহজে শিখতে পারেন।
WDguideline.com থেকে ভালো টিউটরিয়াল পেতে Skill test করুন
তাহলে আপনি ভালো টিউটরিয়াল থেকে শিখার জন্য Skill Tester আপনাকে পরামর্শ দেবে।
আপনি ওয়েব ডেভেলপমেন্ট নিয়ে স্টাডি শুরু করার আগে WDguideline.com এর IT Skill Tester দিয়ে আপনার দক্ষতা পরীক্ষা করে নিন। কারণ প্রত্যেক শিক্ষানবিশ ওয়েব ডেভেলপারের Basic computer ও Internet সম্পর্কে জ্ঞান থাকা অত্যাবশ্যক। তাই ওয়েব ডেভেলপমেন্ট নিয়ে স্টাডি শুরু করার আগে আপনার দক্ষতা IT Skill Tester দিয়ে পরীক্ষা করে নিন।
আপনি কত দিনে ওয়েব ডেভেলপমেন্ট শিখতে পারবেন তা অনেক বিষয়ের উপর নির্ভর করে
১. আপনার পরিকল্পনার উপর।
২. কোথা থেকে ওয়েব ডেভেলপমেন্ট শিখছেন তার উপর।
৩. সমস্যা সমাধানের জন্য কোথা থেকে সাহায্য নিচ্ছেন তার উপর।
আমি মনে করি, মন দিয়ে শিখলে ১ বছরের মধ্যে ফ্রিল্যান্সিং মার্কেটপ্লেসে কাজ করার মত
দক্ষতা অর্জন করতে পারবেন।
আমি আগেই বলেছি Client Side Language ব্যবহার করে একটি ওয়েবসাইটের Front-End Develop করা হয়।
তাই Front-End Development শিখতে হলে Client Side Language গুলো শিখতে হবে,
Client Side Language হলো HTML, CSS, JavaScript।
প্রথমে HTML শিখুন তারপর CSS শিখে আপনার পছন্দের পাঁচটি ওয়েবসাইট নির্বাচন করুন। আপনার নির্বাচিত পাঁচটি ওয়েবসাইটের মতো
পাঁচটি টেমপ্লেট তৈরী করুন। তার পর JavaScript শিখুন।
HTML, CSS, JavaScript সহজে কোড লেখার জন্য Twitter Bootstrap Framework এর ব্যবহার শিখুন।
HTML, CSS, JavaScript ও Twitter Bootstrap শিখা শেষ হলে নেট থেকে ১০টি PSD web template
ডাউনলোড করে PSD to HTML করুন। তাহলে নিজেকে Front-End Developer পরিচয় দিতে পারবেন ও Front-End Developer হিসেবে
কাজ করতে পারবেন।
Front-End Developer হতে হলে static ওয়েব পেইজের code maintaining, bug fixing ও error fixing
জানতে হবে।
আপনি যদি Back-End Development শিখতে চান তবে
HTML ও CSS শিখার পরে SQL শিখতে হবে। তারপর যেকোন একটি DBMS এর কাজ শিখতে হবে, তারপর
একটি Server Side Language নির্বাচন করে তা শিখতে হবে।
জনপ্রিয় Server Side Language গুলো হল PHP, ASP.NET, Python।
Server Side Language নির্বাচন করতে আমার পরামর্শ :
শিক্ষানবিশ ওয়েব ডেভেলপারগণ তাদের টার্গেট ক্যারিয়ার গড়ার জন্য উপযুক্ত Server Side Language
নির্বাচন করতে না পারলে তাদের টার্গেট ক্যারিয়ার গড়া কষ্টসাধ্য হয়ে পরে, তাই টার্গেট ক্যারিয়ারের জন্য উপযুক্ত
Server Side Language নির্বাচন করা খুবই জরুরী।
Software Engineer ক্যারিয়ারের জন্য:
Software Engineer হতে হলে বিভিন্ন প্লাটফর্মের Software তৈরী করার দক্ষতা অর্জন করতে হয়,
তার মধ্যে ওয়েব ডেভেলপমেন্ট অন্যতম। Software Engineer হতে হলে Server Side Language
হিসেবে Python নির্বাচন করা বর্তমান সময়ের জন্য খুবই প্রয়োজন, কারণ Python অন্যান্য প্লাটফর্মের Software তৈরী কারতে বেশি ব্যবহার করা হয়।
ফ্রিল্যান্সিং ক্যারিয়ার ও Web Application Development ক্যারিয়ারের জন্য:
ফ্রিল্যান্সিং ক্যারিয়ার ও Web Application Development এর জন্য উপযুক্ত Server Side Language হল
PHP। কারণ PHP দিয়ে প্রায় সব জনপ্রিয় CMS ও Framework গুলো তৈরী করা। তাই ফ্রিল্যান্সিং মার্কেটপ্লেস গুলোতে PHP এর কাজ বেশি পাওয়া যায়।
এখন জেনে নিন কিভাবে Back-End Development শিখবেন।
আপনি যদি ফ্রিল্যান্সিং ক্যারিয়ার তৈরী করতে চান তবে WordPress Theme Development
শিখে খুব সহজে WordPress দিয়ে একটি ওয়েবসাইট
তৈরী করতে পারবেন। Wordpress Theme Development শিখতে হলে আগে Basic PHP শিখতে হবে।
Back-End Developer হতে হলে Dynamic ওয়েব পেইজের code maintaining, bug fixing ও error fixing
জানতে হবে।
আপনি যখন প্রোগ্রামিং শিখবেন তখন অনেক কোড Error হবে এবং তার সমাধান আপনি খুজে বের করতে পারবেন না।
তখন একজন দক্ষ ডেভেলপার আপনাকে সাহায্য করলে আপনি খুব তাড়াতাড়ি শিখতে পারবেন।
এই সমস্যা সমাধানের জন্য ইন্টারনেটে অনেক ওয়েবসাইট আছে তার মধ্যে অন্যতম stackoverflow.com।
এই ওয়েবসাইটে আপনার সমস্যা লিখে পোষ্ট করলে তার সমস্যাটির সমাধান বলে দেবে।
এখন আপনার মনে প্রশ্ন stackoverflow.com আমাকে সাহায্য করলে তাদের কি লাভ ?
stackoverflow.com এ অনেক দক্ষ ডেভেলপার রেজিস্টার
করে রাখে এবং তার প্রোগ্রামিং সম্পর্কিত বিভিন্ন ধরনের সমস্যার সমাধান বলে দেয়। বিনিময়ে তাদের প্রোফাইলে পয়েন্ট যোগ হয় এবং এই পয়েন্টের উপর ভিত্তি করে তাদের দক্ষতার
পরিমাপ করা হয়। যার যত বেশি পয়েন্ট থাকে সে বৃহৎ কোম্পানীতে চাকরী পাওয়ার সম্ভাবনা বেশি থাকে।
আপনি কোন সমস্যায় পড়লে প্রথমে সমস্যাটির গুগলে সার্চ করে সমাধান খুঁজুন, সমাধান না পেলে
stackoverflow.com তে আপনার সমস্যা লিখে পোষ্ট করুন।
মনে করুন আপনি HTML এর কোন div এর ব্যাকগ্রাউন্ড কালার সেট করতে চান কিন্তু কি ভাবে
কোড লিখবেন বুঝতে পারছেন না। ঠিক তখন "how to set background color in div"
লিখে গুগলে সার্চ করুন
দেখবেন অনেক রেজাল্ট আপনার সামনে চলে আসবে। রেজাল্ট গুলো থেকে সমাধান না পেলে stackoverflow.com
তে how to set background color in div টাইটেল দিয়ে বিস্তারিত লিখে একটি পোষ্ট করুন
সমাধান পেয়ে যাবেন।
Full Stack Developer হতে হলে প্রথমে Front-End Development শিখুন তারপর Back-End Development শিখুন তারপর Webmastering শিখুন।
Webmastering হল একটি ওয়েবসাইটকে ইন্টারনেটে লাইভ করা ও ওয়েবসাইটের সমস্যা খুজে বের করে তা সমাধান করা।
আর যে Webmastering করতে পারে তাকে Webmaster বলা হয়। যে ব্যক্তি Front-End ও Back-End
Developer সেই সঠিক ভাবে Webmastering করতে পারে।
কারন সেই ব্যক্তি ওয়েবসাইটের Front-End ও Back-End এর সমস্যা গুলো সহজে খুজে বের করতে পারে
ও দ্রুত সমাধান করতে পারে। তাই Front-End Development ও Back-End Development
শিখার পর Webmastering শিখুন।
এখন জেনে নিন কিভাবে Webmastering শিখবেন।
Webmastering শিখার জন্য নিম্ন বর্ণিত কাজ গুলো জানা/শিখা অত্যাবশ্যক।
১. ডোমেইন হোস্টিং ক্রয় করা।
২. cpanel এর সকল ফাংশনের সাথে পরিচয় ও ফাংশন গুলোর কাজ সম্পর্কে জানা।
৩. ডোমেইন এর সাথে হোস্টিং সংযুক্ত করা।
৪. ওয়েবসাইট লাইভ করার জন্য বিভিন্ন সফটওয়্যার ইন্সটল করা।
৫. ওয়েবসাইটের সকল পেইজ ও ফাংশন গুলোর সক্ষমতা পরীক্ষা করা, সমস্যা থাকলে সমাধান করা।
৭. ওয়েবসাইটের বেসিক সিকিউরিটি নিশ্চিত করা।
সহজে Webmastering শিখতে নিজে ডোনমেইন ও হোস্টিং ক্রয় করে Webmastering শিখুন ।
আপনি যে ১০টি PSD ফাইলকে PSD to HTML করেছেন সেই পেইজ গুলোকে ডাইনামিক করে সাবডোমেইন তৈরী করে পোর্টফোলিও সাইট তৈরী করুন।
আপনি যখন ওয়েব ডেভেলপমেন্ট শিখবেন তখন অনেক বেসিক বিষয় জানার প্রয়োজন হয় এবং কোন বিষয় আপনার জানা প্রয়োজন
আপনি অজানা। আপনি যদি WDguideline.com এর সহায়তা নেন তবে WDguideline.com আপনাকে
সাহায্য করবে।
আপনি যখন ওয়েব ডেভেলপমেন্ট শিখবেন তখন নিচের সমস্যা গুলোর সম্মুখীন হবেন
১. আমার শিখার মধ্যে কোন ভুল আছে কি ?
২. দক্ষতা বৃদ্ধি করার জন্য কি কি করা উচিৎ ?
৩. পরবর্তী ল্যাঙ্গুয়েজ শিখার মত দক্ষ হতে পেরেছি কি ?
৪. কোন ল্যাঙ্গুয়েজ শিখার পরে কোন ল্যাঙ্গুয়েজ শিখতে হবে ?
৫. যে ল্যাঙ্গুয়েজ শিখছি সেই ল্যাঙ্গুয়েজের উপর কতটুকু দক্ষ হলাম ?
WDguideline.com এর সহায়তা নিলে আপনি এই সব সমস্যার সমাধান খুব সহজে পেয়ে যাবেন।
আপনি যদি প্রতিদিন বা দুই একদিন অন্তর অন্তর HTML Skill Tester দিয়ে আপনার দক্ষতা পরীক্ষা করেন, তবে
HTML Skill Tester আপনার দক্ষতা পরিমাপ করে আপনি কি ভুল শিখেছেন তা জানাবে, এখন আপনার কোন ট্যাগ কোথা থেকে শিখা
প্রয়োজন তা জানাবে । ফলে আপনি খুব দ্রুত Web Development
শিখতে পারবেন।
মনে করুন, আপনি এখন Back-End Development শিখছেন আপনার মন এখন Back-End ল্যাংগুয়েজ গুলোর দিকে,
Client Side Language গুলোর অনেক বিষয় ভুলে যেতে পারেন। তাই Back-End Development শিখার সময়
মাঝে মধ্যে Client Side Language গুলোর দক্ষতা পরীক্ষা করলে Client Side Language গুলোর উপর
আপনার দক্ষতা অটুট থাকে।
এক কথায় আপনি যত বেশি WDguideline.com এ আপনার দক্ষতা পরীক্ষা করবেন ততোই Web Language গুলোর বিষয় বা কোড
সম্পর্কে আপনার ধারণা সুস্পষ্ট হবে।
চাকরি যেমন একটি পেশা, ঠিক তেমনি ফ্রিল্যান্সিং একটি পেশা। চাকরি করতে হলে প্রতিষ্ঠানের সকল নিয়ম মেনে চলতে হয়। কিন্তু ফ্রিল্যান্সিং করলে কোন প্রতিষ্ঠানের নিয়ম মেনে চলতে হয়না। ইচ্ছা হলে কাজ করবেন, না হলে করবেন না। ফ্রিল্যান্সিং সাধারনত দুইভাবে করা যায়। অনলাইন এবং অফলাইন। আর যে ফ্রিল্যান্সিং করে তাকে ফ্রিল্যান্সার বলা হয়।
আউট অর্থ বাহির, সোর্স অর্থ উৎস। তাহলে আউটসোর্সিং এর অর্থ বাহিরের উৎস। নিজের কাজ অন্য কাউকে দিয়ে করিয়ে নেওয়াকে আউটসোর্সিং বলা হয়।
যার কাজ করানোর প্রয়োজন ও যে কাজ করতে ইচ্ছুক এই দুই ব্যক্তি বা কোম্পানীকে যে প্রতিষ্ঠান মিলিয়ে দেয় সেই প্রতিষ্ঠানকে ফ্রিল্যান্সিং মার্কেটপ্লেসের বলা হয়।
ফ্রিল্যান্সিং মার্কেটপ্লেসে যে কাজ করায় তাকে Client বা Buyer বলা হয়।
যে কাজ করে তাকে freelancer বলা হয়।
ফ্রিল্যান্সার কাজ করে যে পারিশ্রমিক পায় তার একটি নির্দিষ্ট পরিমান অর্থ ফ্রিল্যান্সিং মার্কেটপ্লেস কেটে নেয় ও Client বা Buyer এর কাছ থেকেও নির্দিষ্ট পরিমান অর্থ নিয়ে থাকে।
Client বা Buyer তার কাজের ধরণ বিস্তারিত ভাবে লিখে ফ্রিল্যান্সিং মার্কেটপ্লেসে পোষ্ট করে। freelancer কাজটি করার জন্য আবেদন করে। Client বা Buyer যাকে ভালো মনে করে তাকে দিয়ে কাজটি করিয়ে নেয়।
ফ্রিল্যান্সিং মার্কেটপ্লেসের ডলার ব্যাংক একাউন্টের মাধ্যমে উত্তোলন করা যায়।
ফ্রিল্যান্সার হচ্ছে মুক্ত বা স্বাধীনচেতা একজন ব্যক্তি। যিনি বিভিন্ন প্রতিষ্ঠানের হয়ে নিজ দক্ষতা অনুযায়ী বিভিন্ন ধরনের কাজ করে থাকেন।
ফ্রিল্যান্সার হচ্ছে এমন একজন ব্যক্তি যিনি কোনো প্রতিষ্ঠানের সাথে কোন প্রকার চুক্তিবদ্ধ না হয়ে স্বাধীন ভাবে কাজ করে থাকে।
কাজ জানা থাকলেই ফ্রিল্যান্সার হওয়া যায় না। ফ্রিল্যান্সার হতে হলে কমিউনিকেশন দক্ষতা থাকতে হয়।
কমিউনিকেশন দক্ষতা বলতে শুধু মাত্র কথোপকথনের দক্ষতা বুঝানো হয় নি, কমিউনিকেশন দক্ষতা বলতে আপনার Client বা
Buyer কি করতে বলছে বা কি বলতে চায় বা কি
বলার চেষ্টা করছে তা বুঝার দক্ষতা ও বুঝিয়ে বলার দক্ষতাকে কমিউনিকেশন বলা হয়েছে।
আরো একটু বুঝিয়ে বলি, আপনার Client বা
Buyer আপনাকে একটি ওয়েবসাইট তৈরী করার জন্য বলছে কিন্তু আপনার Client বা
Buyer এর ওয়েব টেকনোলজি সম্পর্কে পরিপূর্ন জ্ঞান নাও থাকতে পারে। তাই তাকে ওয়েব টেকনোলজির বিষয় গুলো বুঝিয়ে বলে
তার ওয়েবসাইটি কিভাবে তৈরী করা হবে তা বুঝিয়ে বলাই হল কমিউনিকেশন ।
আপনি বিভিন্ন কোম্পানির সাথে বড় ধরনের প্রজেক্ট নিয়ে কাজ করবেন তাই আপনার কাজ নির্ভুল ও মান সম্মত হতে হবে।
আপনার কাজ জমা বা ডেলিভারি দেয়ার আগে আপনার কাজের মধ্যে কোনো ভুল আছে কিনা তা ভালো ভাবে পর্যবেক্ষন করতে হবে।
কারণ আপনার সামান্য ভুলের জন্য কোম্পানি বড় ধরনের ক্ষতির সম্মুখীন হতে পারে, যার জন্য আপনি খারাপ ফিডব্যাক পেতে পারেন।
তাই কাজ জমা দেওয়ার আগে তা ভালো ভাবে দেখে নেবেন।
ইন্টারনেট জগতের বৃহৎ কোম্পানি বলতে গেলে Facebook ও Google এর কথা চলে আসে। একটু চিন্তা করে দেখুন
Facebook ও Google কিভাবে এত বড় কোম্পানির রূপ নিল। পৃথিবীর বৃহৎ কোম্পানি গুলো মানুষের সমস্যা সমাধান
করার ছোট্ট আইডিয়া থেকে তৈরী হয়েছে।
facebook.com এর উদ্দেশ্য হল পৃথিবীর সকল মানুষকে একত্রিত করা ও প্রত্যেকের মতামত প্রকাশ করার সুযোগ করে দেয়া।
এই আইডিয়া facebook.com সফল করতে পেরেছে তাই facebook.com বড় কোম্পানিতে পরিনত হয়েছে।
google.com এর উদ্দেশ্য হল ইন্টারনেটের সকল তথ্য (ইন্টারনেটের সকল ওয়েবসাইট) থেকে আমাদের
কাঙ্খিত তথ্য এর লিঙ্ক আমাদের সামনে উপস্থাপন করা।
এই আইডিয়া google.com সফল করতে পেরেছে বলেই আজ google এত বড় কোম্পানির।
আপনি যদি ওয়েব ডেভেলপমেন্ট শিখেন তবে আপনার যে কোন আইডিয়াকে বাস্তব রূপ দিয়ে একটি কোম্পানি তৈরী করতে পারবেন।
আপনি ওয়েব ডেভেলপমেন্ট ভালো ভাবে শিখতে পারলে ওয়েব টেকনোলজি প্রোভাইডার কোম্পানি তৈরী করে অর্থ উপার্জন করতে পারবেন।
আপনি যদি ওয়েব টেকনোলজি প্রোভাইডার কোম্পানি তৈরী করতে চান তবে আপনাকে Full Stack Developer হতে হবে এবং
SEO ও ওয়েব সিকিউরিটির উপর দক্ষ হতে হবে। তাহলে আপনি একটি ওয়েবসাইট সম্পৃর্ন ভাবে তৈরী করে Client কে দিতে পারবেন।
একটি কোম্পানি একাধিক প্রজেক্ট নিয়ে কাজ করে তাই একজনের দ্বারা একটি কোম্পানি পরিচালনা করা সম্ভব নয়, কারণ
আপনি একাধিক প্রজেক্ট নিয়ে কাজ করলে সময় মত প্রজেক্ট ডেলিভারি দিতে পারবেন না ও আপনার কাজে
ভুল হতে পারে। তাই নির্ভুল কাজ ও খুব দ্রুত প্রজেক্ট ডেলিভারি দেওয়ার জন্য একটি শক্তিশালী টিম তৈরী করার প্রয়োজন।
আপনার টিমে ওয়েব ডিজাইনার থাকবে, ওয়েব ডিজাইনার Client এর recruitment অনুসারে ওয়েব সাইটের চিত্র অঙ্কন করবে।
UI UX Expert থাকবে, সে ওয়েব ডিজাইনারের তৈরী করা চিত্রকে ভিজিটরের ব্যবহার যোগ্য ওয়ের চিত্র করে তুলবে।
Graphic Designer থাকবে, সে ওয়েবসাইটের লোগো ও ব্যানার তৈরী করবে।
Front-end Developer থাকবে, সে ওয়েব UI UX Expert এর তৈরী করা চিত্র কে static ওয়েব পেইজে রূপান্তর করবে।
Back-end Developer থাকবে, সে static ওয়েব পেইজ গুলোকে ডাইনামিক ওয়েব পেইজে রূপান্তর করবে।
Webmaster থাকবে, সে ওয়েবসাইটকে ইন্টারনেট লাইভ করবে।
Web Security Expert থাকবে, সে ওয়েবসাইটের সিকিউরিটি চেক করে ওয়েবসাইটকে সিকিউর করতে সাহায্য করবে।
SEO Expert থাকবে, সে ওয়েবসাইটকে SEO করবে।
আপনি এইসব কাজ থেকে যে কোন একটি দায়িত্ব নিয়ে কাজ করতে পারেন।
আমরা আমাদের মনের ভাব প্রকাশ করার জন্য বিভিন্ন ভাষা ব্যবহার করে থাকি যেমন বাংলা, হিন্দি, ইংলিশ ইত্যাদি। কিন্তু কম্পিউটার মানুষ নয় তাই বাংলা, হিন্দি, ইংলিশ ভাষা বুঝেনা। কম্পিউটারকে আমাদের মনের ভাব বুঝানোর জন্য এক ধরনে ভাষা ব্যবহার করতে হয় সেই ভাষা গুলোকে প্রোগ্রামিং ল্যাংগুয়েজ বলা হয়। আরো একটু বুঝিয়ে বলি, চীনের মানুষ বাংলা বোঝেনা তাই চীনের মানুষকে বাংলায় কোন কিছু বুঝানো যাবেনা । চীনের মানুষকে কোন কিছু বুঝাতে হলে চীনের ভাষা দিয়ে বুঝাতে হবে। ঠিক একই ভাবে কম্পিউটারকে কোন নিদের্শনা দিতে হলে প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে নিদের্শনা দিতে হবে। আপনি যখন আপনার কম্পিউটারে PHP ইন্সটল করে echo "My First Program"; লিখবে তখন আপনি আপনার কম্পিউটারকে বলছেন My First Program ব্যাক্যটি লিখে দেখানোর জন্য।
আপনি যখন আপনার কম্পিউটারে PHP ইন্সটল করে echo "My First Program";
লিখবেন তখন আপনি আপনার কম্পিউটারকে বলছেন My First Program ব্যাক্যটি লিখার জন্য।
এখানে আপনি আপনার কম্পিউটারকে প্রোগ্রামিং ল্যাংগুয়েজের যে কোড দিয়ে নিদের্শনা দিয়েছেন এই কোড গুলোকে প্রোগ্রাম বলা হয়।
এখানে echo "My First Program"; একটি ছোট্ট প্রোগ্রাম।
একটি উদাহরণ দিলে ভালো ভাবে বুঝতে পারবেন, এই পেইজ আপনি যত বার ভিজিট করবেন ততো বার কাউন্ট হবে
ও ওয়েব পেইজে দেখাবে। এই কোড গুলো আমাদের ওয়েবসাইটের নির্দিষ্ট একটি কাজ করে।
এই কাউন্টিং এর জন্য যে কোড লিখা হয়েছে সেই কোড গুলোকে এক সাথে প্রোগ্রাম বলা হয়।
প্রোগ্রাম হল অনেক কোডের সমষ্টি যা কম্পিউটারকে কোন নির্দিষ্ট কাজ করার নিদের্শনা দেয়।
একটু অন্য ভাবে বলি।
একটি সফটওয়্যারের নির্দিষ্ট কোন কাজ করার জন্য যে কোডগুলো কাজ করে সেই কোড গুলোকে এক সাথে প্রোগ্রাম বলা হয়।
আমাদের মনের ভাব প্রকাশ করার জন্য বিভিন্ন ভাষা ব্যবহার করি। প্রত্যেক ভাষার ক্ষুদ্র একক হল
অক্ষর। যেমন ইংলিশ ভাষার ক্ষুদ্র একক হল a থেকে z পর্যন্ত 26 টি অক্ষর।
এই 26 টি অক্ষর ব্যবহার করে একটি শব্দ গঠন করি আর অনেক গুলো শব্দ মিলিয়ে
বাক্য গঠন করে আমাদের মনের ভাব প্রকাশ করি।
আমরা ইংরেজির 26 টি অক্ষর ব্যবহার করে যে ভাবে কাজ করি ঠিক তেমন ভাবে
কম্পিউটার মাত্র দুইটি ডিজিট ব্যবহার করে কাজ করে, ডিজিট গুলো হল 01। আপনি কম্পিউটারে
যা কিছু লিখে সেভ করেন সবকিছু 0 ও 1 এই দুইটি ডিজিট এ অনুবাদ করে জমা করা হয়। যেমন
আমার কম্পিউটারের notepad এ my name is shyamol লিখে সেভ করলে
notepad বাক্যটিকে বাইনারি কোডে অনুবাদ করে তারপর বাইনারি কোড কে কম্পিউটারে সেভ করে রাখে।
ফাইলটি ওপেন করার সাথে সাথে notepad বাইনারি কোড কে ইংলিশ ভাষায় অনুবাদ করে আমাদের সামনে উপস্থাপন করে।
"my name is shyamol" এর বাইনারি কোড হল
01101101 01111001 00100000 01101110 01100001
01101101 01100101 00100000 01101001
01110011 00100000 01110011 01101000 01111001
01100001 01101101 01101111 01101100
এখন আপনার মনে প্রশ্ন জাগতে পারে, কে হিউম্যান রিডেবল ল্যাংগুয়েজ থেকে বাইনারি ল্যাংগুয়েজে অনুবাদ করে ?
আমরা প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে যা কিছু লিখি তা compiler বা interpreter বাইনারি ল্যাংগুয়েজে অনুবাদ করে।
প্রোগ্রামিং ল্যাংগুয়েজের compiler বা interpreter প্রোগ্রামের কোড গুলোকে বাইনারি কোডে
রূপান্তর করে এবং কম্পিউটারকে নিদের্শনা দেয় এবং
আউটপুট কে হিউম্যান রিডেবল ল্যাংগুয়েজে অনুবাদ করে আমাদের সামনে উপস্থাপন করে।
অনেক গুলো প্রোগ্রাম একসাথে নির্দিষ্ট কোন কাজ করতে পারলে সেই প্রোগ্রাম গুলোকে একসাথে বা এক কথায় সফটওয়্যার বলা হয়।
একটি উদাহরণ দিলে ভালো ভাবে বুঝতে পারবেন।
আপনি যখন আমাদের ওয়েবসাইটের Skill Tester এ পরীক্ষা দেন তখন আপনাকে সাহায্য করার জন্য
অনেক প্রোগ্রাম কাজ করে যেমন,
কতগুলো প্রশ্নের সঠিক উত্তর দেওয়া হয়েছে তা জানার জন্য একটি প্রোগ্রাম কাজ করে।
কতগুলো প্রশ্নের ভুল উত্তর দেওয়া হয়েছে তা জানার জন্য একটি প্রোগ্রাম কাজ করে।
কতগুলো প্রশ্নের উত্তর দেওয়া হয় নি তা জানার জন্য একটি প্রোগ্রাম কাজ করে।
পরীক্ষা টি দিতে কত সময় লেগেছে তা জানার জন্য একটি প্রোগ্রাম কাজ করে।
কোন কোন প্রশ্নের ভুল উত্তর দিয়েছেন তা জানার জন্য একটি প্রোগ্রাম কাজ করে।
কি শিখা প্রয়োজন তা জানার জন্য একটি প্রোগ্রাম কাজ করে।
এছাড়াও আরো অন্যান্য প্রোগ্রাম রয়েছে ।
এই প্রো্গ্রাম গুলো একসাথে কাজ করে আপনাকে ওয়েব ডেভেলপমেন্ট শিখতে সাহায্য করে, তাই
এইসব প্রোগ্রাম গুলোর সমষ্টিকে বা প্রোগ্রাম গুলোকে একসাথে সফটওয়্যার বলা হয়।
সফটওয়্যার প্রধানত তিন প্রকার
১. System software
২. Application software
৩. Malicious software
System software :
যে সফটওয়্যার কম্পিউটারের হার্ডওয়্যার গুলোকে পরিচালনা করে
এবং এপ্লিকেশন সফটওয়্যার গুলোকে কাজ করার উপযোগী পরিবেশ প্রদান করে,
সেই সফটওয়্যার কে System software বলা হয়।
System software এর উদাহরণ হল, সকল operating system,
utility software ও antivirus সমূহ।
Application software :
যে সফটওয়্যার কোন একটি বিশেষ কাজ সম্পাদন করতে সাহায্য করে সে সফটওয়্যার কে
Application software বলা হয়। Application software এর উদাহরণ হল, android application, ios application ও desktop application ইত্যাদি।
Malicious software :
Malicious software হল এক জাতীয় সফটওয়্যার। যা কম্পিউটার অথবা মোবাইলের স্বাভাবিক কাজকে ব্যাহত করতে,
গোপন তথ্য সংগ্রহ করতে, কোন সংরক্ষিত কম্পিউটার নেটওয়ার্ক ব্যবস্থায় অবৈধ অনুপ্রবেশ
করতে বা অবাঞ্ছিত বিজ্ঞাপন দেখাতে ব্যবহার হয়। এই সফটওয়্যার গুলোকে সংক্ষেপে Malware বলা হয়।
Malicious software এর উদাহরণ হল,
Computer Virus, Trojan Horse, Spyware ইত্যাদি।
একটি সফটওয়্যারের ক্ষুদ্র অংশ হল প্রোগ্রাম। এই প্রোগ্রাম যে রচনা করতে পারে তাকে সাধারণত প্রোগ্রামার বলা হয়।
প্রকৃত পক্ষে যে প্রোগ্রাম রচনা করতে পারে, প্রোগ্রামের ভুল ত্রুটি সংশোধন করতে পারে তাকে প্রোগ্রামার বলা হয়।
প্রোগ্রামার শব্দটির দ্বারা কোন ব্যক্তি কোন প্রোগ্রামিং ল্যাংগুয়েজের উপর দক্ষ তা বুঝা সম্ভব না,
তাই নির্দিষ্ট ভাবে বুঝার জন্য প্রোগ্রামার শব্দটির আগে প্রোগ্রামিং ল্যাংগুয়েজের নাম ব্যবহার করা হয়।
যেমন, C ল্যাংগুয়েজের উপর দক্ষ হলে C প্রোগ্রামার বলা হয়।
Python ল্যাংগুয়েজের উপর দক্ষ হলে Python প্রোগ্রামার বলা হয়।
PHP ল্যাংগুয়েজের উপর দক্ষ হলে PHP প্রোগ্রামার বলা হয়।
প্রোগ্রামার হতে হলে আপনাকে যেকোন একটি প্রোগ্রামিং ল্যাংগুয়েজের উপর দক্ষতা অর্জন করতে হবে। বিভিন্ন কলেজ, একাডেমি, ও ওয়েবসাইট আপনাকে প্রোগ্রামিং এর বেসিক বিষয় গুলো শিখাবে। এই বেসিক বিষয় গুলো জানা থাকলে আপনাকে প্রোগ্রামার বলা যাবে কিন্তু আপনাকে প্রফেশনাল প্রোগ্রামার বলা যাবেনা। কারণ বেশিক জ্ঞান দিয়ে আপনি জটিল কোন প্রোগ্রাম রচনা করতে পারবেন না। প্রফেশনাল প্রোগ্রামার হতে হলে প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে জটিল সমস্যা সমাধান করার চেষ্টা করতে হবে। ইন্টারনেটে অনেক ওয়েবসাইট আছে সেখানে অনেক সমস্যা দেওয়া আছে, সেই সমস্যা সমাধান করার চেষ্টা করে দক্ষ প্রোগ্রামার হতে পারবেন। যেমন, stackoverflow.com
প্রত্যেক শিক্ষানবিশ প্রোগ্রামারের উদ্দেশ্য থাকে সফটওয়্যার ডেভেলপার বা সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা অর্জন করা।
আমি আগেই বলেছি অনেক ধরনের সফটওয়্যার আছে, আপনি যে ধরনের সফটওয়্যার ডেভেলপার বা ইঞ্জিনিয়ার হতে চান, সেই
সফটওয়্যার তৈরী করতে যে প্রোগ্রামিং ল্যাংগুয়েজ বেশি ব্যবহার করা হয়, সেই প্রোগ্রামিং ল্যাংগুয়েজ শিখে প্রোগ্রামার হওয়ার
চেষ্টা করুন।
প্রত্যেক প্রোগ্রামিং ল্যাংগুয়েজের একটি অফিসিয়াল ওয়েবসাইট থাকে। সেই ওয়েবসাইটে কোন syntax বা ব্যাক্য কি কারণে ব্যবহার করা হয়
তা বিস্তারিত
দেওয়া আছে, আপনি সেখান থেকে শিখতে পারেন।
ইন্টারনেটে অনেক ওয়েবসাইট বিভিন্ন ভাষায় প্রোগ্রামিং ল্যাংগুয়েজ শিখিয়ে থাকে, আপনি চাইলে সেখান
থেকেও শিখতে পারেন।
YouTube.com এ বিভিন্ন শিক্ষক বিভিন্ন ভাষায় প্রোগ্রামিং ল্যাংগুয়েজ শিখিয়ে থাকে আপনি চাইলে তাদের ভিডিও দেখেও শিখতে পারেন।
একজন প্রফেশনাল সফটওয়্যার ডেভেলপার একটি সফটওয়্যারের ডিজাইন অনুসরন করে সফটওয়্যার ডেভেলপ করে। তাহলে সফটওয়্যার ডেভেলপার
বলতে বুঝায়, যে ব্যক্তি একটি সফটওয়্যারের ডিজাইন অনুসরন করে প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে একটি
সফটওয়্যার তৈরী করে মানুষের সমস্যা সমাধান করে।
একটি সফটওয়্যার নিখুঁত, সুন্দর ও দ্রুত তৈরী করার জন্য
Software Development Life Cycle পদ্ধতি অনুসরণ করতে হয়।
Software Development Life Cycle কে সংক্ষেপে SDLC বলা হয়।
একজন সফটওয়্যার ডেভেলপারের SDLC সম্পর্কে পরিপূর্ন জ্ঞান থাকে।
একজন সফটওয়্যার ডেভেলপার SDLC পদ্ধতি অনুসরণ করে একটি সফটওয়্যার তৈরী করে।
সফটওয়্যার ডেভেলপার হতে হলে সফটওয়্যার ডেভেলপারের দক্ষতা অর্জন করতে হবে।
সফটওয়্যার ডেভেলপার শব্দটির দ্বারা কোন ব্যক্তি কোন ধরনের সফটওয়্যার ডেভেলপ করতে পারে তা বুঝা যায় না।
তাই নির্দিষ্ট ভাবে বুঝার জন্য Developer শব্দটির আগে সফটওয়্যারের নাম ব্যবহার করা হয়।
যেমন, যে Systems Software ডেভেলপ করতে পারে তাকে Systems Software Developer বলা হয়।
যে Web Application Software ডেভেলপ করতে পারে তাকে Web Application Developer বলা হয়।
যে Android Application Software ডেভেলপ করতে পারে তাকে Android Application Developer বলা হয়।
আপনি যদি সফটওয়্যার ডেভেলপারের দক্ষতা অর্জন করতে চান তবে কোন ধরনের সফটওয়্যার ডেভেলপ করা শিখবেন তা
নির্বাচন করার আগে সকল সফটওয়্যার ডেভেলপারের ক্যারিয়ার সম্পর্কে জেনে পরিকল্পনা করে গোছালো মনোভাব নিয়ে স্টাডি শুরু করুন।
আপনি System Software Development শিখে Systems Software Developer এর দক্ষতা অর্জন করতে পারেন।
আপনি Android Application Development শিখে Android Application Developer এর দক্ষতা অর্জন করতে পারেন।
আপনি Web Application Development শিখে Web Application Developer এর দক্ষতা অর্জন করতে পারেন।
আপনি যদি Web Application Development শিখতে চান তবে WDguideline.com আপনাকে সাহায্য করবে।
অনেকেই মনে করে সফটওয়্যার ডেভেলপমেন্ট শিখার অর্থ প্রোগ্রামিং ল্যাংগুয়েজ শিখা।
আসলে প্রোগ্রামিং ল্যাংগুয়েজ শিখা হল কিভাবে প্রোগ্রাম রচনা করতে হয় তা শিখা।
আর সফটওয়্যার ডেভেলপমেন্ট শিখা হল প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে মানুষের
সমস্যা সমাধান করার জন্য মানুষের কাছে গ্রহনযোগ্য সফটওয়্যার তৈরী করার চেষ্টা করা।
দুটি উদাহরন দেই, আমি একজন সরকারী চাকরিজীবী, আমি সহ আরো অনেকে পেনশন ও
জেনারেল প্রভিডেন্ট ফান্ড এর হিসাব করতে পারত না। এই সমস্যা দুটির
Pension Calculator BD ও
GPF Calculator BD
সফটওয়্যার দিয়ে সমাধান করেছি। Pension Calculator BD ও
GPF Calculator BD সফটওয়্যার তৈরী করে সফটওয়্যার ডেভেলপমেন্ট শিখেছিলাম। ঠিক একি
ভাবে আপনিও ছোট ছোট সমস্যা সমাধান করে সফটওয়্যার ডেভেলপমেন্ট শিখতে পারেন।
প্রথমে প্রোগ্রামিং ল্যাংগুয়েজ শিখুন, তার পর প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে ছোটখাটো সমস্যা সমাধানের জন্য সফটওয়্যার তৈরী করুন। তাহলে আপনার আত্নবিশ্বাস ও সফটওয়্যার ডেভেলপমেন্ট
দক্ষতা বৃদ্ধি পাবে।
একজন সফটওয়্যার ডেভেলপারের প্রোগ্রামিং দক্ষতার পাশাপাশি টিম ম্যানেজমেন্ট দক্ষতা থাকতে হয়। কারণ বড় সফটওয়্যার তৈরী করতে হলে
সফটওয়্যার ডেভেলপারের নেতৃত্বে একটি টিম তৈরী করে সফটওয়্যার ডেভেলপ করতে হয়। তাই প্রত্যেক সফটওয়্যার ডেভেলপারের টিমকে নেতৃত্ব দেওয়ার
দক্ষতা থাকতে হবে।
সফটওয়্যার ইঞ্জিনিয়ার সম্পর্কে জানতে হলে আগে ইঞ্জিনিয়ারিং সম্পর্কে জানতে হবে।
ইঞ্জিনিয়ারিং কি সহজ ভাষায় বুঝিয়ে বলি।
মানুষের সমস্যা সমাধান করার জন্য কোন পণ্য অতি সহজ ভাবে, কম খরচে,কম সময়ে,কম জনশক্তি দিয়ে তৈরী করাকে ইঞ্জিনিয়ারিং বলা হয়।
যে ইঞ্জিনিয়ারিং করতে পারে তাকে ইঞ্জিনিয়ার বলা হয় না । মানুষের যে সমস্যা সমাধান করার জন্য ইঞ্জিনিয়ারিং এর মাধ্যমে যে পণ্য তৈরী করা
হয়েছে সেই পণ্য সেই সমস্যা সমাধান করতে পারলে এবং পণ্যটি সবার কাছে গ্রহনযোগ্য হলে, যে ব্যক্তি পণ্যটি তৈরী করতে ইঞ্জিনিয়ারিং করেছে সেই ব্যক্তিকে
ইঞ্জিনিয়ার বলা হয়। পৃথিবীর সকল ইঞ্জিনিয়ারিং এর সংজ্ঞা একি এবং সকল ইঞ্জিনিয়ার একটি নীতি অনুসরণ করে।
সফটওয়্যার তৈরী করার জন্য সফটওয়্যার ইঞ্জিনিয়ারিং করার পদ্ধতি ঘোষণা করা আছে। এই পদ্ধতি অনুসরন করে সফটওয়্যার তৈরী করতে হয়।
এখন জেনে নেই সফটওয়্যার ইঞ্জিনিয়ারিং কি।
মানুষের কোন একটি সমস্যা সমাধান করার উদ্দেশ্যে অতি সহজ ভাবে, কম খরচে,কম সময়ে,কম জনশক্তি দিয়ে
মানুষের সমস্যা সমাধান যোগ্য ও গ্রহনযোগ্য সফটওয়্যার তৈরী করাকে সফটওয়্যার ইঞ্জিনিয়ারিং বলা হয়।
আর যে ব্যক্তি সফটওয়্যার ইঞ্জিনিয়ারিং এর মাধ্যমে মানুষের সমস্যা সমাধান যোগ্য ও গ্রহনযোগ্য সফটওয়্যার তৈরী
করতে পারে তাকে সফটওয়্যার ইঞ্জিনিয়ার বলা হয়।
একজন সফটওয়্যার ইঞ্জিনিয়ার মানুষের সমস্যা সমাধান করার জন্য তার কল্পনা শক্তি ব্যবহার করে একটি কাল্পনিক
সফটওয়্যারের চিত্র বা নকশা অঙ্কন করে। এই নকশা ও চিত্র অনুসরণ করে সফটওয়্যার ডেভেলপার ও
প্রোগ্রামার সফটওয়্যারটি ডেভেলপ করে।
যে ব্যক্তি নতুন টেকনোলজি তৈরী করে বা টেকনোলজির উন্নতি করে কম্পিউটার
টেকনোলজিকে প্রসার বা উন্নয়ন করে তাকে কম্পিউটার বিজ্ঞানী বলা হয়।
যেমন,
স্যার ভিন্টন সার্ফ ইন্টারনেট আবিষ্কার করে টেকনোলজিতে নতুন মাত্রা যোগ করেছেন।
স্যার টিম বার্নার্স-লি ওয়ার্ল্ড ওয়াইড ওয়েব আবিষ্কার করে ইন্টারনেট নতুন মাত্রা যোগ করেছেন।
স্যার ডেনিস রিচি C প্রোগ্রামিং ল্যাংগুয়েজ আবিষ্কার করে কম্পিউটার টেকনোলজিতে নতুন মাত্রা যোগ করেছেন।
সফটওয়্যার ইঞ্জিনিয়ারিং কি একটু বুঝিয়ে বলি, পৃথিবীতে যখন সফটওয়্যার ইঞ্জিনিয়ারিং ছিলনা তখন যে সফটওয়্যার তৈরী করা হত
তার মধ্যে অনেক ভুল থাকত ও সফটওয়্যার তৈরী করতে
অনেক টাকা খরচ হত। এই সমস্যা সমাধানে জন্য ১৯৬০ ইং সালের শুরুর দিকে সফটওয়্যার তৈরী করার নিয়ম বা পদ্ধতি চালু করা হয়।
এই নিয়ম বা পদ্ধতিকে সফটওয়্যার ইঞ্জিনিয়ারিং বলা হয়।
সফটওয়্যার ইঞ্জিনিয়ারিং পদ্ধতি অনুসরণ করে সফটওয়্যার খুব সহজ ভাবে, কম খরচে, কম সময়ে, কম জনশক্তি দিয়ে সবার কাছে গ্রহনযোগ্য সফটওয়্যার তৈরী করা যায়।
এক কথায় কম খরচে, সহজ ভাবে, কম সময়ে, গ্রহনযোগ্য ও নির্ভুল ভাবে সফটওয়্যার তৈরী করার পদ্ধতিকে সফটওয়্যার ইঞ্জিনিয়ারিং বা সফটওয়্যার প্রকৌশল বলা হয়।
বিভিন্ন সমস্যা সমাধানের জন্য ভিন্ন ধরনের সফটওয়্যার তৈরী করার প্রয়োজন হয়, সেই সকল সফটওয়্যার কম সময়ে ও কম খরচে তৈরী করার জন্য বিভিন্ন কোম্পানির সফটওয়্যার ইঞ্জিনিয়ারের প্রয়োজন হয়।
আমি আগেই বলেছি কোন কিছু শিখতে হলে সুপরিকল্পনা প্রয়োজন তাই
আমার বাস্তব অভিজ্ঞতা থেকে আপনাকে পরামর্শ দেয়ার চেষ্টা করব,
আমি মনে করি সফটওয়্যার ইঞ্জিনিয়ার হতে হলে আটটি ধাপে সফটওয়্যার ইঞ্জিনিয়ারিং শিখলে ভালো হয়।
প্রথম ধাপ, নিজের পছন্দের একটি সফটওয়্যার প্লাটফর্ম নির্বাচন করা।
যেমন, Web Application তৈরী করার জন্য Web Application Development শিখা।
Android Application তৈরী করার জন্য Android Application Development শিখা।
Web Application এর চাহিদা বেশি তাই অধিকাংশ সফটওয়্যার ডেভেলপার Web Application Developer।
আমি মনে করি Web Application Developer খুব সহজে ও দ্রুত ক্যারিয়ার তৈরী করতে পারে।
দ্বিতীয় ধাপ, নিজের পছন্দের প্লাটফর্মের প্রোগ্রামিং শিখা।
যেমন, আপনার পছন্দ web application হলে ওয়েব প্রোগ্রামিং শিখা।
তৃতীয় ধাপ: বাস্তব জীবনের ৫টি সমস্যা application দিয়ে সমাধান করার চেষ্টা করা।
যেমন, আমি আমার সমস্যা Pension Calculator BD ও
GPF Calculator BD সফটওয়্যার তৈরী করেছি।
চতুর্থ ধাপ: Software Development Life Cycle এর সকল ধাপ গুলো সম্পর্কে জানা ।
পঞ্চম ধাপ: Software Development Life Cycle এর প্রত্যেক ধাপে যে কাজ করতে হয় সেই কাজ শিখা।
ষষ্ঠ ধাপ: একটি সফটওয়্যার ডেভেলপ করার জন্য প্রজেক্ট প্ল্যানিং করা শিখা।
যেমন, আমি ওয়েব ডেভেলপমেন্ট শিখার সময় নিচের সমস্যা গুলোর সম্মুখীন হয়েছিলাম এবং প্রজেক্ট প্ল্যানিং করে WDguideline.com দিয়ে সমাধান করার চেষ্টা করছি।
১. ওয়েব ডেভেলপার হওয়ার জন্য কী কী শিখতে হবে ?
২. কোন ল্যাঙ্গুয়েজ শিখার পরে কোন ল্যাঙ্গুয়েজ শিখতে হবে ?
৩. যে ল্যাঙ্গুয়েজ শিখছি সেই ল্যাঙ্গুয়েজের উপর কতটুকু দক্ষ হলাম ?
৪. আমার শিখার মধ্যে কোন ভুল আছে কী ?
৫. দক্ষতা বৃদ্ধি করার জন্য কী কী করা উচিৎ ?
৬. পরবর্তী ল্যাঙ্গুয়েজ শিখার মত দক্ষ হতে পেরেছি কী ?
৮. আমি ওয়েব ডেভেলপার হতে পেরেছি কী ?
সপ্তম ধাপ: প্রজেক্ট প্ল্যান বাস্তব রূপ দেওয়ার জন্য দক্ষ টিম তৈরী করা ও টিম ম্যানেজমেন্ট দক্ষতা অর্জন করা।
যেমন, WDguideline.com ডেভেলাপ করার জন্য টিম তৈরী করে কাজ করছি।
অষ্টম ধাপ: একটি প্লাটফর্মের Software Engineering করার পর প্রফেশনাল Software Engineer হওয়ার জন্য অন্য প্লাটফর্মের সফটওয়্যার ডেভেলপমেন্ট শিখা।
একজন ছাত্র SSC পাস করতে হলে প্রথম শেণী থেকে ক্রমানুসারে দশম শেণী পর্যন্ত পাস করতে হবে, ঠিক একি ভাবে
সফটওয়্যার ইঞ্জিনিয়ারিং করে একটি সফটওয়্যার তৈরী করতে হলে ক্রমানুসারে ৬টি ধাপে কাজ করতে হবে, এলোমেলো ভাবে কাজ
করলে তা সফটওয়্যার ইঞ্জিনিয়ারিং এর আওতায় পরবেনা। ধাপ গুলো হল
প্রথম ধাপ. Planning and Requirement Analysis
দ্বিতীয় ধাপ. Defining Requirements
তৃতীয় ধাপ. Designing the Product Architecture
চতুর্থ ধাপ. Building or Developing the Product
পঞ্চম ধাপ. Testing the Product
ষষ্ঠ ধাপ. Deployment in the Market and Maintenance
ধাপ গুলো একে একে বুঝিয়ে বলতেছি।
Planning and Requirement Analysis:
এই ধাপে কাস্টমারের চাহিদা ভালোভাবে দেখে সফটওয়্যারটি তৈরী করা যাবে কিনা বা সফটওয়্যার তৈরী করার ঝুঁকি চিহ্নিত করা হয়।
Defining Requirements:
এই ধাপে সফটওয়্যার তৈরী করার জন্য কি কি করতে হবে ও কি কি লাগবে তা দিয়ে SRS (Software Requirement Specification) তৈরী করা হয়।
Designing the Product Architecture:
এই ধাপে SRS অনুসারে সফটওয়্যারের বিভিন্ন নকশা তৈরী করা হয় ও DDS (Design Document Specification) নথি তৈরী করা হয়।
DDS পর্যালোচনা করা হয় এবং ঝুঁকি মূল্যায়ন, পণ্য দৃঢ়তা, নকশা মডুলারিটি, বাজেট এবং সময় সীমাবদ্ধতার মতো বিভিন্ন বিষয় গুলোর উপর ভিত্তি করে সফটওয়্যারটির জন্য সেরা নকশা পদ্ধতি নির্বাচন করা হয়।
Building or Developing the Product:
এই ধাপে সফটওয়্যারের নকশা অনুসারে সফটওয়্যারের ডেভেলপ করা হয়।
Testing the Product:
এই ধাপে সফটওয়্যারের SRS অনুসারে সফটওয়্যারটি তৈরী হয়েছে কিনা তা পরীক্ষা করা হয় ও ভুল ত্রুটি পরীক্ষা করা হয়।
Deployment in the Market and Maintenance:
এই ধাপে সফটওয়্যার বাজারে ছাড়া হয় ও সফটওয়্যার পরিচালনা করা হয়।
সফটওয়্যার ইঞ্জিনিয়ারিং শিখার প্রধান উদ্দেশ্য হল সমস্যা সমাধান করা। তাই বাস্তব জীবনের সমস্যা সফটওয়্যার ইঞ্জিনিয়ারিং এর মাধ্যমে সমাধান করার চেষ্টা করলে সহজে সফটওয়্যার ইঞ্জিনিয়ারিং শিখা যাবে।
একটি সফটওয়্যার সিকিউর না হলে সফটওয়্যারটি সবার কাছে গ্রহনযোগ্যতা পায় না, তাই
সফটওয়্যারকে সিকিউর করার জন্য হ্যাকিং পদ্ধতি ব্যবহার করে সফটওয়্যারটির সিকিউরিটি চেক করা হয়।
প্রত্যেক সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ারের
হ্যাকিং সম্পর্কে ধারনা থাকা প্রয়োজন। কারণ সফটওয়্যারে অনেক গুরুত্বপূর্ণ তথ্য থাকে যা খুব সিকিউর
রাখতে হয় । একটি সফটওয়্যারকে সিকিউর করা সফটওয়্যার ইঞ্জিনিয়ারিং এর একটি অংশ।
হ্যাক হল কোন বস্তুকে নিজের মত করে পরিবর্তন করা, আর যে হ্যাক করে তাকে হ্যাকার বলা হয়।
কোন মিডিয়া ডিভাইস, সফটওয়্যার বা ওয়েবসাইট তৈরীর সময় বা ব্যবহারের ভুলের কারণে অনেক জায়গায় দূর্বলতা বা ভুল থাকে। হ্যাকিং এর ভাষায় এই দূর্বলতা বা ভুল কে vulnerability বলে। হ্যাকাররা ঐ দূর্বল জায়গায় তাদের হ্যাকিং কৌশল ব্যবহার করে মিডিয়া ডিভাইস, সফটওয়্যার বা ওয়েবসাইট নিজের নিয়ন্ত্রনে নিয়ে নেয় বা নিজের মত করে পরির্বতন করে।
হ্যাকার সাধারণত তিন প্রকার।
Whitehat hacker
Blackhat hacker
Greyhat hacker
হ্যাকারের এই নাম দেওয়ার পিছনে একটি কারণ রয়েছে। যেমন - বিপদের সংকেট প্রদানের জন্য লাল রং
ব্যবহার করা হয়। ঠিক তেমনি হ্যাকারের হ্যাক করার উদ্দেশ্যকে বিবেচনা করে প্রতীক হিসেবে তিন ধরনের হেড (টুপি) ব্যবহার করা হয়।
Whitehat hacker: Whitehat hacker কে Ethical hacker ও বলা হয়।
সাদা টুপির হ্যাকাররা ভালো হ্যাকার। এদের কাজ নিরাপত্তা নিশ্চিত করা। যেমন- কোন মিডিয়া ডিভাইস, সফটওয়্যার বা
ওয়েবসাইটের মালিকেরা তার মিডিয়া ডিভাইস, সফটওয়্যার বা ওয়েবসাইট হ্যাক না হওয়ার জন্য Whitehat
হ্যাকার ভাড়া করে থাকে। ঐ হ্যাকার সেইসব মিডিয়া ডিভাইস, সফটওয়্যার বা ওয়েবসাইট হ্যাক করে এবং কি
দূর্বলতা বা কোন ভুলের কারণে তার মিডিয়া ডিভাইস, সফটওয়্যার বা ওয়েবসাইট হ্যাক হতে পারে তা মালিককে জানিয়ে দেয়।
আর মালিক ঐ সকল দূর্বলতা বা ভুল সংশোধন করে নেন।
Blackhat hacker: Blackhat হ্যাকাররা কারো ক্ষতি করার উদ্দেশ্য নিয়ে হ্যাক করে।
যেমন- ব্যাংক থেকে টাকা হাতিয়ে নেওয়া, হ্যাক করে টাকা আদায় করা, প্রতিশোধ নেওয়ার জন্য,
মজা করার জন্য বা নিজের দক্ষতা দেখানোর জন্য, আরো বিভিন্ন কারনে হ্যাক করে থাকে।
Greyhat hacker: যে হ্যাকাররা কথনও Blackhat কথনও Whitehat
হিসেবে কাজ করে তাদের Greyhat হ্যাকার বলা হয় ।
আমি মনে করি, একজন ভালো হ্যাকার একজন ডেভেলপারের চেয়ে বেশি দক্ষ। কারণ, একজন ডেভেলপারের ডেভেলাপ করা ডিভাইস, সফটওয়্যার বা ওয়েবসাইটের ত্রুটি ধরতে হলে ডেভেলপারের চেয়ে বেশি দক্ষ হতে হবে।
চুরি হওয়ার ভয়ে টাকা ব্যাংকে রাখা হয় আর ব্যাংকের নিরাপত্তা প্রহরী দিন রাত পরিশ্রম করে নিরাপত্তা নিশ্চিত করে। আমরা চোর কে খারাপ বলতে পারি কিন্তু নিরাপত্তা প্রহরীকে খারাপ বলতে পারিনা। ঠিক সে ভাবে Whitehat hacker বা Ethical hacker হ্যাকাররা ইন্টারনেটে নিরাপত্তা নিশ্চিত করে, তাই আমরা নির্দ্বিধায় ইন্টারনেট ব্যবহার করতে পারছি। সুতরাং আমরা হ্যাকার মানে খারাপ ব্যক্তি বলতে বা ভাবতে পারিনা।
বৃহৎ কোম্পানী গুলো নিজেদের ডিভাইস, সফটওয়্যার বা ওয়েবসাইটকে হ্যাকিং থেকে বাঁচাতে নিরাপত্তা প্রহরী হিসেবে Whitehat hacker বা Ethical hacker নিয়োগ দিয়ে থাকে। এ ছাড়া অনেক কোম্পানী তাদের ডিভাইস, সফটওয়্যার বা ওয়েবসাইট হ্যাক করতে পারলে বড় অঙ্কের পুরষ্কার ঘোষনা করে রাখে। যেমন facebook, google সহ আরো অনেক কোম্পানি ।
আপনি যা কিছু শিখেছেন ও শিখবেন তা দিয়ে কিছু তৈরী করার চেষ্টা না করলে আপনার শিক্ষা মানুষের কোন উপকারে আসবেনা, এমনকি আপনারও কোন উপকারে আসবেনা। তাই যা শিখেছেন বা শিখবেন তা দিয়ে কিছু তৈরী করার চেষ্টা করুন এই চেষ্টা আপনাকে সফলতা এনে দেবে।
অর্থ, পজিশনিং পাওয়ার, পজিশনিং সম্মান মানুষের জীবনে ক্ষনস্থায়ী যা সময়ের সাথে সাথে পরিবর্তন হয়
কিন্তু জ্ঞান অর্জনের মাধ্যমে এমন কিছু অর্জন করা সম্ভব যা পৃথিবীর মানুষ কল্পনাও করেনি আর এই অর্জন মানুষকে অর্থ, সম্মান ও
পাওয়ার এনে দেয়।
মানব মস্তিষ্ক সর্বদা নিজেকেই পৃথিবীর শ্রেষ্ঠ মনে করে। যখন সে এই ভুল বুঝতে পারে তখন আস্তে আস্তে শ্রেষ্ঠ হয়ে উঠে।
অর্থ সর্বদা দক্ষ ব্যক্তির নিকট থাকতে পছন্দ করে তাই অর্থ অর্জন করার চেষ্টা করার চেয়ে দক্ষ হওয়ার চেষ্টা করা বুদ্ধিমানের কাজ।
অর্থ ও সম্মানের ফ্যাক্টরি হল দক্ষতা ও জ্ঞান।
শিক্ষা আপনাকে সফল করতে পারবেনা কিন্তু দক্ষতা আপনাকে সফল করবে। দক্ষতা হল নিজের শিক্ষা ও চেষ্টার ফল।
আপনি যদি অর্থ উপার্জন করার জন্য প্রোগ্রামিং শিখেন তবে আপনি প্রোগ্রামিং শিখছেন না অর্থ উপার্জন করা শিখছেন।
অর্থ হল বিনিময়কে সহজ করার একটি পণ্য, তাই একটি পণ্য দিয়ে মানুষের দক্ষতা ও যোগ্যতার মূল্যায়ন করা সম্ভব নয়।
মানুষ আপনাকে মিথ্যা বললেও প্রোগ্রামিং ল্যাংগুয়েজ আপনাকে মিথ্যা বলবে না, তাই প্রোগ্রামিং ল্যাংগুয়েজকে ভালোবাসুন। এই ভালোবাসার
বিনিময়ে এমন কিছু পাবেন যা আপনার জীবনকে বদলে দেবে।
অন্যোর দেওয়া সম্মানের চেয়ে নিজেকে নিজে দেওয়া সম্মান অনেক বেশি আনন্দ দেয়।
আমার নাম শ্যামল সিংহ। আমি বাংলাদেশের একজন সরকারী চাকরিজীবী। কম্পিউটার টেকনোলজির উপর আমার কোন ধরনের প্রাতিষ্ঠানিক শিক্ষা নেই। কম্পিউটার টেকনোলজি সম্পর্কে জানতে ও শিখতে খুব ভালো লাগে। আমার শিক্ষা ও বাস্তব অভিজ্ঞতা থেকে এই বইটি লিখেছি, আশা করি আপনার ক্যারিয়ার তৈরী করতে বইটি সাহায্য করবে।
WDguideline.com এর কোন ভুল থাকলে বা মান উন্নয়নের জন্য পরামর্শ দিয়ে সহযোগিতা করার অনুরোধ করছি।
Contact Form