Programming Career Guideline

বইটি 579 বার পড়া হয়েছে
    • আপনি যেহেতু এই লেখাটি পড়তেছেন আমি ধরে নিয়েছি আপনি প্রোগ্রামিং শিখতে চান। আপনি আপনার লক্ষে পৌঁছার জন্য অনেক কিছু জানতে হবে ও শিখতে হবে তাই আপনার প্রথম লক্ষ হল জানা ও শিখা। আপনি প্রোগ্রামিং শিখার আগে প্রোগ্রামিং এর খুটিনাটি বিষয় গুলো জানা প্রয়োজন কারণ কোন কাজ শিখার আগে কাজটি সম্পর্কে ভাল ভাবে জানা প্রয়োজন। প্রোগ্রামিং এর সকল বিষয় সম্পর্কে জেনে নিজেকে প্রোগ্রামিং শিখার জন্য প্রস্তুত করুন ও কি কি শিখবেন, কোথা থেকে শিখবেন তা পরিকল্পনা করে তারপর প্রোগ্রামিং শিখা শুরু করুন। কারণ কোন কিছুতে সফল হতে হলে সুপরিকল্পনা খুবি প্রয়োজন।
    • বর্তমান যুগ টেকনোলজির যুগ বর্তমান যুগের সাথে তাল মিলিয়ে চলতে হলে টেকনোলজির উপর সাধারণ জ্ঞান থাকা খুব প্রয়োজন, বর্তমানে পৃথিবীতে প্রোগ্রামিং এর গুরুত্ব অপরিসীম, প্রোগ্রামিং কম্পিউটার টেকনোলজির একটি বড় অংশ, আপনি যদি প্রোগ্রামিং শিখার সিদ্ধান্ত নিয়ে থাকেন তবে আপনি উত্তম একটি সিদ্ধান্ত নিয়েছেন। কারণ প্রোগ্রামিং এর মাধ্যমে আপনি আর্থিক সচ্ছলতা ও সম্মান পেতে পারেন।
    • আপনি কম্পিউটার টেকনোলজিতে নতুন হলে কম্পিউটার টেকনোলজি আপনার কাছে অন্ধকার একটি রাস্তা মত মনে হবে। একটু চিন্তা করে দেখুন আজকে যারা প্রোগ্রামার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার ও কম্পিউটার বিজ্ঞানী তাদেরও প্রথম প্রথম কম্পিউটার টেকনোলজি আপনার মত অন্ধকার একটি রাস্তার মত মনে হত কিন্তু তারাও এই অন্ধকার রাস্তা অতিক্রম করে তাদের লক্ষে পৌঁছে গেছে। আপনিও চেষ্টা করলে এই অন্ধকার রাস্তা অতিক্রম করতে পারবেন।
    • কম্পিউটার টেকনোলজি দুই ভাগে ভাগ করা হার্ডওয়্যার ও সফটওয়্যার এই দুই শাখাকে বিভিন্ন উপশাখায় ভাগ করে ও এই দুই শাখাকে একত্রিত করে বিভিন্ন উপশাখা তৈরী করে কম্পিউটার টেকনোলজি উন্নয়ন করা হচ্ছে। কম্পিউটার টেকনোলজির সফটওয়্যার শাখায় আপনার ক্যারিয়ার তৈরী করার জন্য আমার অভিজ্ঞতা থেকে আপনাকে পরামর্শ দেওয়া চেষ্টা করব। আপনি যদি সফটওয়্যার বিভাগে ক্যারিয়ার তৈরী করতে চান তবে প্রাথম প্রাথম আপনার মনে অনেক প্রশ্ন আসবে সেই সব প্রশ্ন ও তার উত্তর দিয়ে এই বইটি সাজানো হয়েছে তাই এই বইয়ের প্রত্যেক বিষয় আপনার জন্য খুব গুরুত্বপূর্ণ, তাই এই বইয়ের প্রত্যেক বিষয় মনযোগ দিয়ে পড়ুন ও বোঝার চেষ্টা করুন, না বোঝলে বার বার পড়ুন।
    • প্রোগ্রামিং ল্যাংগুয়েজের গুরুত্ব জানার জন্য একটি উদাহরণ দেয়, আপনি আপনার বন্ধুর কম্পিউটার বা মোবাইলটি অন করার পর দেখলেন কোন ধরনের সফটওয়্যার ইনস্টল করা নেই, নেই কোন ভিডিও প্নেয়ার, নেই কোন অডিও প্লেয়ার, নেই কোন ইন্টারনেট ব্রাউজার, নেই কোন গেইমিং সফটওয়্যার আপনার কাছে কি মনে হবে ? মনে হবে আপনার বন্ধুর কম্পিউটার বা মোবাইটি ব্যবহারের অযোগ্য।
    • প্রত্যেক কম্পিউটার ও মোবাইলে ইনস্টল করা প্রত্যেক সফটওয়্যার প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে তৈরী করা, তাহলে নিশ্চয় বোঝতে পারতেছেন প্রোগ্রামিং ল্যাংগুয়েজ আমাদের জন্য কতুকু গুরুত্বপূর্ণ।
    • পৃথিবীর প্রায় সকল টেকনোলজিতে প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করার হয়, আমি মনে করি বর্তমানে প্রোগ্রামিং ল্যাংগুয়েজ ব্যতিত কোন টেকনোলজি স্বয়ংসম্পূর্ণ হতে পারেনা।
    • হ্যাঁ আপনি আপনি প্রোগ্রামিং ল্যাংগুয়েজ শিখে প্রোগ্রামার, ওয়েব ডেভেলপার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার হতে পারবেন।
    • অনেকে মনে করে "প্রোগ্রামার, ওয়েব ডেভেলপার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার হতে হলে টেকনোলজি নিয়ে লেখা পড়া করতে হবে।"
    • কয়েকটি উদাহরণ দিয়ে বোঝিয়ে বলি, ব্যবসা, বেসরকারী চাকরি ও সরকারী চাকরি এক একটি পেশা ঠিক তেমন ভাবে ওয়েব ডেভেলপমেন্ট, সফটওয়্যার ডেভেলপমেন্ট ও সফটওয়্যার ইঞ্জিনিয়ারিং এক একটি পেশা।
    • যে ব্যবসা করে তাকে ব্যবসায়ী বলে ঠিক তেমন ভাবে যে সফটওয়্যার তৈরী করে তাকে সফটওয়্যার ডেভেলপার বলে। একজন ব্যবসায়ী ব্যবসা করে অর্থ উপার্জন করে ঠিক তেমন ভাবে একজন সফটওয়্যার ডেভেলপার সফটওয়্যার তৈরী করে অর্থ উপার্জন করে।
    • যে ব্যবসা করে সে ব্যবসায়ী হিসেবে পরিচয় দিয়ে থাকে, ঠিক তেমন ভাবে যে সফটওয়্যার তৈরী করতে পারলে সে সফটওয়্যার ডেভেলপার হিসেবে পরিচয় দিতে পারে।
    • একজন শিক্ষার্থী শিক্ষা প্রাতিষ্ঠান থেকে কম্পিউটার টেকনোলজি নিয়ে লেখা পড়া শেষ করা মানে ডিগ্রি, অনার্স, মার্স্টাস পাস করা। শিক্ষা প্রাতিষ্ঠান একজন শিক্ষার্থীকে কম্পিউটার টেকনোলজি সম্পর্কে বেসিক ধারনা দিয়ে থাকে, যেমন কম্পিউটার কিভাবে চলে, কিভাবে কোডিং করতে হয়, একটি সফটওয়্যার কিভাবে তৈরী করতে হয়, একজন সফটওয়্যার ডেভেলপারে দায়িত্ব, একজন সফটওয়্যার ইঞ্জিনিয়ারের দায়িত্ব, একজন কম্পিউটার বিজ্ঞানীর দায়িত্ব, ইত্যাদি। সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ার হতে হলে শিক্ষা প্রাতিষ্ঠানে শিক্ষাকে কাজে লাগিয়ে নিজে আরো স্টাডি করে সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা অর্জন করতে হয়। এক কথায় সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ার হওয়া নিজের উপর নির্ভর করে শিক্ষা প্রতিষ্ঠানের উপর নয়। আর যে কেউ প্রোগ্রামিং ল্যাংগুয়েজ শিখে সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা অর্জন করতে পারে।
    • বড় বড় কোম্পানিতে সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ারের প্রয়োজন হয়, ডিগ্রি, অনার্স বা মার্স্টাস পাস ব্যক্তি নয়। তাই বড় বড় কোম্পানি সফটওয়্যার ডেভেলপার ও সফটওয়্যার ইঞ্জিনিয়ার নিয়োগে সনদপত্রের প্রতি গুরুত্ব দেয়না শুধু গুরুত্ব দেওয়া হয় দক্ষতার উপর, দক্ষতা থাকলে সনদপত্র না থাকলেউ চাকরি দিয়ে দেয়।
    • তাই আপনিও ভাল ভাবে প্রোগ্রামিং শিখতে পারলে প্রোগ্রামার, ওয়েব ডেভেলপার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার হতে পারবেন।
    • আপনার কম্পিউটার টেকনোলজির উপর কোন প্রাতিষ্ঠানিক শিক্ষা থাকে তবে আপনি সহজে ওয়েব ডেভেলপার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা অর্জন করতে পারবেন।
    • আমি যখন প্রোগ্রামিং ল্যাংগুয়েজ নিয়ে স্টাডি শুরু করি তখন আমার লক্ষে পৌঁছার জন্য অনেক কিছু শিখার প্রয়োজন অনুভব করি আমার শিক্ষা গ্রহনকে দ্রুত ও নিখুঁত করার জন্য কম্পিউটার টেকনোলজির দক্ষতাকে ৬টি ধাপে ভাগ করি। এই পদ্ধতি আপনার উপকারে আসলে আপনিও অনুসরণ করতে পারেন।
    • প্রথম ধাপ: আপনি যখন কম্পিউটার কেনে কম্পিউটার অন অফ, সফটওয়্যার ইন্সটল আনইন্সটল, ফাইল কপি পেষ্ট, কম্পিউটারের অপারেটিং সিস্টেম ইন্সটল, সাধারণ হার্ডওয়্যার সমস্যা সমাধান, এপ্লিকেশন সফটওয়্যার ব্যবহার করতে পারবেন তখন মনে করবেন প্রথম ধাপ অতিক্রম করবেন। আমি মনে করি প্রথম ধাপ অতিক্রম করতে পারলে আপনি কম্পিউটার অপারেটরের দক্ষতা অর্জন করবেন।
    • দ্বিতীয় ধাপ: আপনি যখন ইন্টারনেট ব্রাউজ করে ইন্টারনেট থেকে কোন কিছু শিখতে পারবেন তখন আপনি দ্বিতীয় ধাপ অতিক্রম করবেন। আমি মনে করি দ্বিতীয় ধাপ অতিক্রম করতে পারলে আপনি দক্ষ কম্পিউটার ইউজারের দক্ষতা অর্জন করবেন।
    • তৃতীয় ধাপ: আপনি যখন প্রোগ্রামিং ল্যাংগুয়েজ শিখে আপনার বা অন্য কারো সফটওয়্যারের একটি প্রোগ্রাম লিখতে পারবেন তখন আপনি তৃতীয় ধাপ অতিক্রম করবেন। আমি মনে করি তৃতীয় ধাপ অতিক্রম করতে পারলে আপনি প্রোগ্রামারের দক্ষতা অর্জন করবেন।
    • চতুর্থ ধাপ: আপনি যখন সফটওয়্যার ডেভেলপমেন্টের পদ্ধতি ব্যবহার করে একটি ডাইনামিক ওয়েবসাইট বা সফটওয়্যার তৈরী করে মানুষের সমস্যা সমাধান করতে পারবেন তখন আপনি চতুর্থ ধাপ অতিক্রম করবেন। আমি মনে করি চতুর্থ ধাপ অতিক্রম করতে পারলে আপনি সফটওয়্যার ডেভেলপমেন্ট দক্ষতা অর্জন করবেন।
    • পঞ্চম ধাপ: আপনি যখন আপনার বাস্তব জীবনের সমস্যা বা অন্য কারো বাস্তব জীবনের সমস্যা অতি সহজ ভাবে, কম খরচে, কম সময়ে, কম জনশক্তি দিয়ে একটি সফটওয়্যার তৈরী করে, সফটওয়্যারটি দিয়ে সমস্যাটি সমাধান করতে পারেন ও সফটওয়্যারটি যদি সবার কাছে গ্রহনযোগ্য হয় তখন আপনি পঞ্চম ধাপ অতিক্রম করবেন। আমি মনে করি পঞ্চম ধাপ অতিক্রম করতে পারলে আপনি সফটওয়্যার ইঞ্জিনিয়ারিং দক্ষতা অর্জন করবেন।
    • ষষ্ঠ ধাপ: আপনি যখন কম্পিউটার টেকনোলজি উন্নয়নের জন্য কম্পিউটার কোন হার্ডওয়্যার তৈরী করবেন বা কোন হার্ডওয়্যারের মান উন্নয়ন করবে অথবা কম্পিউটার টেকনোলজি উন্ননের করার জন্য বা কম্পিউটার টেকনোলজির কোন সমস্যা সমাধান করা করার জন্য একটি সফটওয়্যার তৈরী করে সহজে সফটওয়্যার তৈরী করতে সফটওয়্যার ডেভেলপাদের ও প্রোগ্রামেরদের সাহায্য করবেন তখন আপনি ষষ্ঠ ধাপ অতিক্রম করবেন। আমি মনে করি ষষ্ঠ ধাপ অতিক্রম করতে পারলে আপনি কম্পিউটার বিজ্ঞানীর দক্ষতা অর্জন করবেন।
    • পৃথিবীর বড় বড় কোম্পানী নতুন সফটওয়্যার ও ওয়েবসাইট তৈরী করার জন্য, তাদের সফটওয়্যার ও ওয়েবসাইট গুলো পরিচালনা করার জন্য বা তাদের সফটওয়্যার ও ওয়েবসাইটের গুনগত মান বৃদ্ধি করার জন্য প্রোগ্রামার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার নিয়োগ করে। আপনি ভাল ভাবে প্রোগ্রামিং শিখে প্রোগ্রামার, সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার হতে পারলে ঐ সব বড় বড় কোম্পানীতে চাকরি পেতে পারেন।
      নিজের সফটওয়্যার বা ওয়েবসাইট তৈরী করে অর্থ উপার্জন করতে পারবেন।
      নিজের নিজের সফটওয়্যার কোম্পানী খুলে অর্থ উপার্জন করতে পারবেন।
      ফ্রিল্যান্সিং মার্কেটপ্লেসে কাজ করে অর্থ উপার্জন করতে পারবেন।
      YouTube এ মানুষকে প্রোগ্রামিং শিখিয়ে অর্থ উপার্জন করতে পারবেন।
      আসলে প্রোগ্রামিং জানলে নিজের যে কোন একটি আইডিয়া কাজে লাগিয়ে অর্থ উপার্জন করা সম্ভব।

About Web Technology

    • এক কম্পিউটারের সাথে অন্য কম্পিউটারের সংযোগ বা সম্পর্ককে এক কথায় ইন্টারনেট বলা হয়। আরো পরিষ্কার করে বলি আমি যখন ফেসবুকে আমার প্রোফাইল ফটো আপলোড করি তখন আমার ফটো ফেসবুকের ডাটা সেন্টারের জমা হয়। আপনি যথন আপনার প্রোফাইল ভিজিট করেন তখন ফেসবুকের ডাটা সেন্টারে জমা করা আমার ফটো দেখতে পান। আমার প্রোফাইল ফটো দেখার জন্য ফেসবুকের ডাটা সেন্টারের সাথে আপনার কম্পিউটারের যে সম্পর্ক বা সংযোগ তৈরী হয় ঐ সম্পর্ক বা সংযোগ কে ইন্টারনেট বলা হয়। সব সময় একটি কথা মনে রাখবেন আমরা ইন্টারনেটে যা দেখি বা পড়ি তা কোন এক কম্পিউটাররে জমা রাখা তথ্য বা ডাটা আর যে কম্পিউটারে ইন্টারনেটের ডাটা বা তথ্য জমা থাকে ঐ কম্পিউটারকে ডাটা সেন্টার বলা হয়। এক বা একাধিক হাই কনফিগারেশনের কম্পিউটারের সাথে হাজার হাজার হার্ডডিস্ক যোগ করে একটি ডাটা সেন্টার তৈরী করা হয়। এই ধরনের কম্পিউটার সব সময় চলতে থাকে, এই ধরনের কম্পিউটার বন্ধ হলে ইন্টারনেটে অনেক ডাটা পাওয়া যাবে না।
    • এখন আপনার মনে প্রশ্ন হয় কিভাবে আমার কম্পিউটারের সাথে ফেসবুকের ডাটা সেন্টারের সংযোগ তৈরী হল ? আপনি নিশ্চয়ই শুনে থাকবেন সাবমেরিন ও সাবমেরিন ক্যাবলের কথা, পৃথিবীর সকল কম্পিউটারকে সংযুক্ত করার জন্য সুমদ্রের তলদেশে সাবমেরিন ক্যাবল দিয়ে এক দেশের সাথে অন্য দেশের সংযোগ স্থাপন করেছে। এই সাবমেরিন ক্যাবল সকল ডাটা সেন্টারের সাথে সংযুক্ত আছে তাই আপনি আপনার কম্পিউটার দিয়ে সকল ওয়েব সাইট ভিজিট করতে পারেন।
    • এখন আপনার মনে প্রশ্ন হয় আমার কম্পিউটারের সাথে কোন সাবমেরিন ক্যাবল লাগানো নেই তাহলে আমার কম্পিউটারের সাথে ফেসবুকের ডাটা সেন্টারে সংযোগ কিভাবে তৈরী হল ? আপনি ইন্টারনেট ব্যবহার করার জন্য যে কোন কোম্পানীর ইন্টারনেট সার্ভিস ব্যবহার করে থাকেন, যে কোম্পানী আপনাকে ইন্টারনেট সেবা দেয় কোম্পানীর গুলোকে 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 লিখে ইন্টার করলেই আমার সার্ভারে রাখা তথ্য দেখতে পারতেছেন।
    • এখন জানা যাক 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)
      এই ডোমেইন গুলো নিদির্ষ্ট কোন দেশের জন্য রেজিষ্টেশন করা হয়। যেমন exmple.in exmple.us, exmple.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 বলা হয়। সংক্ষেপে app বলা হয়।
    • ঠিক একই ভাবে 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 সম্পর্কে বিস্তারিত জানতে " সফটওয়্যার কত প্রকার ? " লিখাটি পড়ুন।

Guideline for Beginner Web Developer

    • ওয়েব ডেভেলপমেন্ট সম্পর্কে অনেকের ভুল ধারনা থাকতে পারে তাই ওয়েব ডেভেলপমেন্ট শিখার আগে ওয়েব ডেভেলপমেন্ট সম্পর্কে সঠিক তথ্য দেওয়া আমার দায়িত্ব। ওয়েব ডেভেলপমেন্ট শিখতে ইচ্ছুক প্রত্যেক ব্যক্তির ওয়েব ডেভেলপমেন্ট সম্পর্কে পরিষ্কার ধারণা থাকা অত্যবশক।
    • একটি ওয়েবসাইটকে তৈরী করা থেকে শুরু করে ইন্টারনেটে লাইভ করার পর্যন্ত যে সকল কাজ করতে হয় সেই সকল কাজ গুলোকে একসাথে ওয়েব ডেভেলপমেন্ট বলা হয়।
    • ওয়েব ডেভেলপমেন্টের গুরুত্ব জানার জন্য আমার ওয়েবসাইট 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 বলা হয়।
    • ওয়েব ডিজাইন সম্পর্কে অনেকের ভুল ধারনা থাকতে পারে তাই ওয়েব ডেভেলপমেন্ট শিখার আগে ওয়েব ডিজাইন সম্পর্কে সঠিক তথ্য দেওয়া আমার দায়িত্ব।
    • অনেকেই ওয়েব ডিজাইন ও ওয়েব ডেভেলপমেন্ট একই দক্ষতা বা কাজ মনে করে কিন্তু ওয়েব ডিজাইন ও ওয়েব ডেভেলপমেন্ট ভিন্ন ভিন্ন কাজ বা দক্ষতা। সাধারনত একজন ওয়েব ডিজাইনার একটি ওয়েবসাইট কে ডিজাইন করে, ওয়েবসাইটের কোন স্থানে কি থাকবে, কোন পেজে কি থাকবে ও কোথায় কি রং দিতে হবে আরো অনেক কিছু। এক কথায় একজন ওয়েব ডিজাইনার তার কল্পনা শক্তি ব্যবহার করে একটি ওয়েবসাইটের চিত্র অঙ্কন করে।
    • প্রত্যেক ওয়েব ডিজাইনার চাই তার কল্পনার ওয়েবসাইটকে বাস্তব রুপ দিতে তাই তিনি 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 website 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 ও Farmwork গুলো তৈরী করা, তাই ফ্রিল্যান্সিং মার্কেটপ্লেস গুলোতে 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 বলা হয়। আর যে Webmastering করতে পারে তাকে Webmaster বলা হয়। যে Front-End ও Back-End Developer সেই সঠিক ভাবে Webmastering করতে পারে কারন ওয়েবসাইটের Front-End ও Back-End এর সমস্যা গুলো খুব সহজে সমস্যা খুজে বের করতে পারে ও খুব তারাতারি সমাধান করতে পারে। তাই Front-End Development ও Back-End Development শেখার পর Webmastering শিখুন।
    • এখন জেনে নেয়া যাক কিভাবে Webmastering শিখবেন। তার আগে Webmastering এর কাজের ধাপ গুলো জেনে নিন
      ১. ডোমেইন হোস্টিং ক্রয় করা।
      ২. cpanel এর সকল ফাংশনের সাথে পরিচয় ও ফাংশনের গুলোর কাজ সম্পর্কে জানা।
      ৩. ডোমেইনের সাথে হোস্টিং সংযুক্ত করা।
      ৪. ওয়েবসাইট লাইভ করার জন্য বিভিন্ন সফটওয়্যার ইন্সটল করা।
      ৫. ওয়েবসাইটের সকল পেজ ও ফাংশন গুলো সক্ষমতা পরীক্ষা করা, সমস্যা থাকলে সমাধান করা।
      ৭. ওয়েবসাইটের বেসিক সিকিউরিটি নিশ্চিত করা।
    • অন্যর ওয়েবসাইটে আপনাকে Webmastering শিখতে দেবেনা, তাই ওয়েব Webmastering শিখতে নিজের একটি ওয়েবসাইটে Webmastering শিখুন। আপনি আপনার নামে বা আপনার পরিকল্পনা অনুসারে একটি ডোমেইন ও হোস্টিং কেনে Webmastering শিখুন। আপনি যে ১০টি PSD ফাইলকে PSD to HTML করেছেন সেই পেজ গুলোকে ডাইনামিক করে সাবডোমেইন তৈরী করে পোর্টফোলিও সাইট তৈরী করুন।
    • আপনি যখন ওয়েব ডেভেলপমেন্ট শিখবেন তখন অনেক বেসিক বিষয় জানার প্রয়োজন হয় এবং কোন বিষয় আপনার জানা প্রয়োজন আপনি জানতে পারবেন না, আপনি যদি WDguideline.com এর সহায়তা নেন তবে WDguideline.com আপনাকে সাহায্য করবে।
    • আপনি যখন ওয়েব ডেভেলপমেন্ট শিখবেন তখন নিচের সমস্যার সম্মুখিন হবেন
      ১. আমার শিখার মধ্যে কোন ভুল আছে কী ?
      ২. দক্ষতা বৃদ্ধি করার জন্য কী কী করা উচিৎ ?
      ৩. পরবর্তী ল্যাঙ্গুয়েজ শিখার মত দক্ষ হতে পেরেছি কী ?
      ৪. কোন ল্যাঙ্গুয়েজ শিখার পরে কোন ল্যাঙ্গুয়েজ শিখতে হবে ?
      ৫. যে ল্যাঙ্গুয়েজ শিখছি সেই ল্যাঙ্গুয়েজের উপর কতটুকু দক্ষ হলাম ?
      WDguideline.com এর সহায়তা নিলে আপনি এই সব সমস্যার সমাধান খুব সহজে পেয়ে যাবেন।
    • মনে করুন আপনি এখন HTML শিখতেছেন আপনি জানবেন না এখন আপনার কোন কোডটি শিখা প্রয়োজন আপনি যদি প্রতিদিন বা দুই একদিন পর পর 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 গুলোর বিষয় বা কোড সম্পর্কে আপনার ধারণা পরিষ্কার হবে।

Freelancer Career Guideline

    • চাকরি যেমন একটি পেশা ঠিক তেমনি ফ্রিল্যান্সিং একটি পেশা। চাকরি করতে হলে অফিসের সকল নিয়ম মেনে চলতে হয় কিন্তু ফ্রিল্যান্সিং করলে কোন অফিসের নিয়ম মেনে চলতে হয়না ইচ্ছা হলে কাজ করবেন, না হলে করবেন না। ফ্রিল্যান্সিং সাধারনত দুভাবেই করা যায় অনলাইন এবং অফলাইন। আর যে ফ্রিল্যান্সিং করে তাকে ফ্রিল্যান্সার বলা হয়।
    • আউট অর্থ বাহির, সোর্স অর্থ উৎস তাহলে আউটসোর্সিং অর্থ বাহিরের উৎস। নিজের কাজ অন্য কাউকে দিয়ে করিয়ে নেওয়াকে আউটসোর্সিং বলা হয়।
    • যার কাজ করানোর প্রয়োজন ও যে কাজ করতে ইচ্ছুক এই দুই ব্যক্তি বা কোম্পানীকে মিলিয়ে দেওয়া হল ফ্রিল্যান্সিং মার্কেটপ্লেসের কাজ।
    • ফ্রিল্যান্সিং মার্কেটপ্লেসে যে কাজ করায় তাকে Client বা Buyer বলা হয়। যে কাজ করে তাকে freelancer বলা হয়।
    • ফ্রিল্যান্সার কাজ করে যে পারিশ্রমিক পাবে তার নির্দিষ্ট পরিমান অর্থ ফ্রিল্যান্সিং মার্কেটপ্লেস কেটে নেয়। Client বা Buyer কাছ থেকে নির্দিষ্ট পরিমান অর্থ নিয়ে থাকে।
    • Client বা Buyer যে ধরনের করাবে তা বিস্তারীত লিখে ফ্রিল্যান্সিং মার্কেটপ্লেসে পোষ্ট করে। freelancer কাজটি করার জন্য আবেদন করে। Client বা Buyer যাকে ভাল মনে করে তাকে দিয়ে কাজটি করিয়ে নেয়।
    • ফ্রিল্যান্সিং মার্কেটপ্লেসের ডলার ব্যাংক একাউন্টের মাধ্যমে উত্তোলন করা যায়।
    • ফ্রিল্যান্সার হচ্ছে মুক্ত বা স্বাধীনচেতা একজন ব্যক্তি যিনি বি​ভিন্ন প্রতিষ্ঠানের হয়ে নিজ দক্ষতা অনুযায়ী বিভিন্ন ধরনের কাজ করে থাকেন। ফ্রিল্যান্সার হচ্ছে এমন একজন ব্যক্তি যিনি কোনো প্রতিষ্ঠানের সাথে কোনো প্রকার চুক্তিবদ্ধ না হয়ে স্বাধীন ভাবে কাজ করে থাকে। আর কাজ জানলে ফ্রিল্যান্সার হওয়া যায়না, ফ্রিল্যান্সার হতে হলে কমিউনিকেশন দক্ষতা থাকতে হয়।
    • কমিউনিকেশন দক্ষতা বলতে শুধু মাত্র কথোপকথন দক্ষতা বোঝানো হয় নাই, কমিউনিকেশন দক্ষতা বলতে আপনার Client বা Buyer কি করতে বলতেছে বা কি বলতে চাই বা কি বলার চেষ্টা করতেছে তা বোঝার দক্ষতা ও বোঝিয়ে বলার দক্ষতাকে কমিউনিকেশন বলা হয়েছে। আরো একটু বোঝিয়ে বলি, আপনার Client বা Buyer আপনাকে একটি ওয়েবসাইট তৈরী করার জন্য বলতেছে কিন্তু আপনার Client বা Buyer এর ওয়েব টেকনোলজি সম্পর্কে পরিপূর্ন জ্ঞান নাও থাকতে পারে তাকে ওয়েব টেকনোলজির বিষয় গুলো বোঝিয়ে বলে তার ওয়েবসাইটি কিভাবে তৈরী করা হবে তা বোঝিয়ে বলাই হল কমিউনিকেশন ।
    • আপনি বড় বড় কোম্পানি বড় বড় কাজ করবেন তাই আপনার কাজকে নির্ভুল ও মান সম্মত হতে হবে। কাজ জমা বা ডেলিভারি দেওয়ার আগে আপনার কাজে ভুল আছে কিনা তা ভাল ভাবে পর্যবেক্ষন করতে হবে।
    • কারণ আপনার সামান্য ভুলের জন্য কোম্পানির বড় ধরনের ক্ষতি হতে পারে যার জন্য আপনি খারাপ ফিটব্যাক পেতে পারেন। তাই কাজ জমা দেওয়ার আগে আপনার কাজ ভাল ভাবে দেখে নিন।

How companies are made

    • ইন্টারনেট জগতের বড় কোম্পানি বলতে 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 থাকবে, যে ওয়েব ডিজাইনারের তৈরী করা চিত্রকে ভিজিটরের ব্যবহার যোগ্য ওয়ের চিত্র করে তুলবে।
      যে টীমে Front end Developer থাকবে, যে ওয়েব UI UX Expert এর তৈরী করা চিত্র কে static ওয়েব পেজে রুপান্তর করবে।
      যে টীমে Graphic Designer থাকবে, সে ওয়েবসাইটের লগ ও ব্যানার তৈরী করবে।
      যে টীমে Back end Developer থাকবে, সে static ওয়েব পেজ গুলোকে ডাইনামিক ওয়েব পেজে রুপান্তর করবে।
      যে টীমে Webmaster থাকবে, সে ওয়েবসাইটকে ইন্টারনেট লাইভ করবে।
      যে টীমে Web Security Expert থাকবে, সে ওয়েবসাইটের সিটিউরিটি চেক করে ওয়েবসাইটের সিকিউর করতে সাহায্য করবে।
      যে টীমে SEO Expert থাকবে, সে ওয়েবসাইটকে SEO করবে।
      আপনি এইসব কাজ থেকে যে কোন একটি কাজের দায়িত্ব নিয়ে কাজ করতে পারেন।

Programming Guideline

    • আমরা আমাদের মনের ভাব প্রকাশ করার জন্য বিভিন্ন ভাষা ব্যবহার করে থাকি যেমন বাংলা, হিন্দি, ইংলিশ ইত্যাদি, কিন্তু কম্পিউটার মানুষ নয় তাই বাংলা হিন্দি ইংলিশ ভাষা বোঝেনা, কম্পিউটারকে আমাদের মনের ভাব বোঝানোর জন্য এক ধরনে ভাষা ব্যবহার করতে হয় এই ভাষা গুলোকে প্রোগ্রামিং ল্যাংগুয়েজ বলা হয়। আরো একটু বোঝিয়ে বলি, চীনের মানুষ বাংলা বোঝেনা তাই চীনের মানুষকে বাংলায় কোন কিছু বোঝানো যাবেনা, চীনের মানুষকে কোন কিছু বোঝাতে হবে চীনের ভাষা দিয়ে বোঝাতে হবে। ঠিক একই ভাবে কম্পিউটারকে কোন নিদের্শনা দিতে হলে প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে নিদের্শনা দিতে হবে। আপনি যখন আপনার কম্পিউটারে 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 হল এক জাতীয় সফ্‌টওয়্যার যা কম্পিউটার অথবা মোবাইলের স্বাভাবিক কাজকে ব্যহত করতে, গোপন তথ্য সংগ্রহ করতে, কোন সংরক্ষিত কম্পিউটার নেটওয়ার্ক ব্যবস্থায় অবৈধ অনুপ্রবেশ করতে বা অবাঞ্ছিত বিজ্ঞাপন দেখাতে ব্যবহার হয় তাকে 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 আপনাকে সাহায্য করবে।
    • একজন সফটওয়্যার ডেভেলপারের প্রোগ্রামিং দক্ষতার পাশাপাশি টিম ম্যানেজমেন্ট দক্ষতা থাকতে হয় কারণ বড় সফটওয়্যার তৈরী করতে হলে সফটওয়্যার ডেভেলপারের নেতৃত্বে একটি প্রোগ্রামার টিম তৈরী করে সফটওয়্যার ডেভেলপ করতে হয় তাই প্রত্যেক সফটওয়্যার ডেভেলপারের টিম নেতৃত্ব দেওয়ার দক্ষতা থকতে হবে।
    • আপনি যদি সফটওয়্যার ডেভেলপারের দক্ষতা অর্জন করতে চান তবে কোন ধরনের সফটওয়্যার ডেভেলপ করা শিখবেন তা নির্বাচন করার আগে সকল সফটওয়্যার ডেভেলপারের ক্যারিয়ার সম্পর্কে জেনে পরিকল্পনা করে গোছানো মনোভাব নিয়ে স্টাডি শুরু করুন।
      আপনি 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 BDGPF Calculator BD ক্যালকুলেটর দিয়ে সমাধান করেছি। Pension Calculator BDGPF Calculator BD তৈরী করে সফটওয়্যার ডেভেলপমেন্ট শিখেছিলাম ঠিক একটি ভাবে আপনিও ছোট ছোট সমস্যা সমাধান করে সফটওয়্যার ডেভেলপমেন্ট শিখুন।
    • আপনি প্রথম প্রথম ছোট ছোট সমস্যা ছোট ছোট সফটওয়্যার দিয়ে সমাধান করুন তাহলে আপনার আত্ববিশ্বাস ও সফটওয়্যার ডেভেলপমেন্ট দক্ষতা বৃদ্ধি পাবে।
    • একজন সফটওয়্যার ডেভেলপারের প্রোগ্রামিং দক্ষতার পাশাপাশি টিম ম্যানেজমেন্ট দক্ষতা থাকতে হয় কারণ বড় সফটওয়্যার তৈরী করতে হলে সফটওয়্যার ডেভেলপারের নেতৃত্বে একটি টিম তৈরী করে সফটওয়্যার ডেভেলপ করতে হয়, তাই প্রত্যেক সফটওয়্যার ডেভেলপারের টিম নেতৃত্বে দেওয়ার দক্ষতা থকতে হবে।
    • একজন প্রফেশনাল সফটওয়্যার ডেভেলপার হতে হলে সফটওয়্যারের ডিজাইন অনুসরন করে সফটওয়্যার ডেভেলপ করা শিখতে হবে। তাহলে সফটওয়্যার ডেভেলপারকে এই ভাবে বলা যায়, যে ব্যক্তি একটি সফটওয়্যারের ডিজাইন অনুসরন করে প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে মানুষের সমস্যা সমাধান করতে পারে তাকে সফটওয়্যার ডেভেলপার বলা হয়।
    • সফটওয়্যার ইঞ্জিনিয়ার সম্পর্কে জানতে হলে আগে ইঞ্জিনিয়ারিং সম্পর্কে জানতে হবে।
    • ইঞ্জিনিয়ারিং সহজ ভাষায় বোঝিয়ে বলি, মানুষের সমস্যা সমাধান করার জন্য কোন পণ্য অতি সহজ ভাবে, কম খরচে,কম সময়ে,কম জনশক্তি দিয়ে তৈরী করাকে ইঞ্জিনিয়ারিং বলা হয়। যে ইঞ্জিনিয়ারিং করতে পারলে তাকে ইঞ্জিনিয়ার বলা হয় না, মানুষের যে সমস্যা সমাধান করার জন্য ইঞ্জিনিয়ারিং এর মাধ্যমে যে পণ্য তৈরী করা হয়েছে সেই পণ্য সেই সমস্যা সমাধান করতে পারলে এবং পণ্যটি সবার কাছে গ্রহনযোগ্য হলে যে ব্যক্তি পণ্যটি তৈরী করতে ইঞ্জিনিয়ারিং করেছে সেই ব্যক্তিকে ইঞ্জিনিয়ার বলা হয়। পৃথিবীর সকল ইঞ্জিনিয়ারিং এর সংঙ্গা একি এবং সকল ইঞ্জিনিয়ার একি নিয়ম অনুসরণ করে।
    • সফটওয়্যার তৈরী করার জন্য সফটওয়্যার ইঞ্জিনিয়ারিং করার পদ্ধতি ঘোষণা করা আছে, এই পদ্ধতি অনুসরন করে সফটওয়্যার
    • এখন জানা যাক কাকে সফটওয়্যার ইঞ্জিনিয়ারিং বলা হয়। মানুষের কোন একটি সমস্যা সমাধান করার উদ্দেশ্যে অতি সহজ ভাবে, কম খরচে,কম সময়ে,কম জনশক্তি দিয়ে মানুষের সমস্যা সমাধান যোগ্য ও গ্রহনযোগ্য সফটওয়্যার তৈরী করাকে সফটওয়্যার ইঞ্জিনিয়ারিং বলা হয়।
    • আর যে ব্যক্তি সফটওয়্যার ইঞ্জিনিয়ারিং এর মাধ্যমে মানুষের সমস্যা সমাধান যোগ্য ও গ্রহনযোগ্য সফটওয়্যার তৈরী করতে পারে তাকে সফটওয়্যার ইঞ্জিনিয়ার বলা হয়।
    • একজন সফটওয়্যার ইঞ্জিনিয়ার মানুষের সমস্যা সমাধান করার জন্য তার কল্পনা শক্তি ব্যবহার করে একটি কাল্পনিক সফটওয়্যারের চিত্র বা নকশা অঙ্কন করে, এই নকশা ও চিত্র অনুসরণ করে সফটওয়্যার ডেভেলপার ও প্রোগ্রামার সফটওয়্যার ডেভেলপ করে।
    • যে ব্যক্তি নতুন টেকনোলজি তৈরী করে বা টেকনোলজির উন্নতি করে কম্পিউটার টেকনোলজিকে প্রসার বা উন্নয়ন করে তাকে কম্পিউটার বিজ্ঞানী বলা হয়।
    • যেমন, স্যার ডেনিস রিচি C প্রোগ্রামিং ল্যাংগুয়েজ আবিষ্কার করে কম্পিউটার টেকনোলজিকে নতুন মাত্রা যোগ করেছেন।
      স্যার ভিন্টন সার্ফ ইন্টানেট আবিষ্কার করে কম্পিউটার টেকনোলজিকে নতুন মাত্রা যোগ করেছেন।
      স্যার টিম বার্নার্স-লি ওয়ার্ল্ড ওয়াইড ওয়েব আবিষ্কার করে কম্পিউটার টেকনোলজিকে নতুন মাত্রা যোগ করেছেন।

Software Engineering Guideline

    • সফটওয়্যার ইঞ্জিনিয়ারিং কি বোঝিয়ে বলি, পৃথিবীতে যখন সফটওয়্যার ইঞ্জিনিয়ারিং ছিলনা তখন যে সফটওয়্যার তৈরী করা হত তার মধ্যে অনেক ভুল থাকত ও সফটওয়্যার তৈরী করতে অনেক টাকা খরচ হত। এই সমস্যা সমাধান করা জন্য ১৯৬০ ইং সালের শুরুর দিকে সফটওয়্যার তৈরী করার নিয়ম বা পদ্ধতি চালু করা হয়, এই নিয়ম বা পদ্ধতিকে সফটওয়্যার ইঞ্জিনিয়ারিং বলা হয়। সফটওয়্যার ইঞ্জিনিয়ারিং পদ্ধতি অনুসরন করে সফটওয়্যার খুব সহজ ভাবে, কম খরচে, কম সময়ে, কম জনশক্তি দিয়ে সবার কাছে গ্রহনযোগ্য সফটওয়্যার তৈরী করা যায়।
    • বিভিন্ন কাস্টমারের বিভিন্ন ধরনের সফটওয়্যার প্রয়োজন হয়, সেই সব সফটওয়্যার কম সময়ে ও কম খরচে তৈরী করার জন্য বিভিন্ন সফটওয়্যার কোম্পানির সফটওয়্যার ইঞ্জিনিয়ারের প্রয়োজন হয়।
    • আমি আগেই বলেছি কোন কিছু শিখতে হলে সুপরিকল্পনা প্রয়োজন তাই আমার বাস্তব আভিগতা থেকে আপনাকে পরামর্শ দেওয়ার চেষ্টা করব, আমি মনে করি সফটওয়্যার ইঞ্জিনিয়ার হতে হলে আটটি ধাপে শিখলে ভাল হয়।

      প্রথম ধাপ, নিজের পছন্দের একটি সফটওয়্যার প্লাটফর্ম নির্বাচন করা।
      যেমন, Web Application তৈরী করার জন্য Web Application Development শিখা।
      Android Application তৈরী করার জন্য Android Application Development শিখা।
      Web Application এর চাহিদা বেশি তাই অধিকাংশ সফটওয়্যার ডেভেলপার Web Application Developer। আমি মনে করি Web Application Developer খুব সহজে ও তারতারি ক্যারিয়ার তৈরী করতে পারে।

      দ্বিতীয় ধাপ, নিজের পছন্দের প্লাফর্মের প্রোগ্রামিং শিখা।
      যেমন, আপনার পছন্দ web application হলে ওয়েব প্রোগ্রামিং শিখা।

      তৃতীয় ধাপ: বাস্তব জীবনের ৫টি সমস্যা application দিয়ে সমাধান করার চেষ্টা করা।
      যেমন, আমি আমার সমস্যা Pension Calculator BDGPF 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: এই ধাপে সফটওয়্যার বাজারে সারা হয় ও সফটওয়্যার পরিচালনা করা হয়।
    • আমি মনে করি দক্ষ Software Engineer হতে হলে ৫টি বিষয়ে জোর দেওয়া উচিৎ
      ১. সকল প্লাটফর্মের সফটওয়্যার ডেভেলপ করা শিখা উচিৎ।
      ২. প্রজেক্ট প্লান করার প্রতি জোর দেওয়া উচিৎ।
      ৩. Software Architecture ও Architecture Design করার প্রতি জোর দেওয়া উচিৎ।
      ৪. SDLC এর সকল ধাপের কাজ জানা ও শিখার প্রতি জোর দেওয়া উচিৎ।
      ৫. টিম ম্যানেজমেন্ট করার প্রতি জোর দেওয়া উচিৎ।
    • সফটওয়্যার ইঞ্জিনিয়ারিং শিখার প্রধান উদ্দেশ্য হল সমস্যা সমাধান করা তাই বাস্তব জীবনের সমস্যা সফটওয়্যার ইঞ্জিনিয়ারিং এর মাধ্যমে সমাধান করার চেষ্টা করলে সহজে সফটওয়্যার ইঞ্জিনিয়ারিং শিখা যাবে।

About Hacking

    • একটি সফটওয়্যার আনসিকিউর হলে সফটওয়্যারটি সবার কাছে গ্রহনযোগ্য নয় তাই সফটওয়্যারকে সিকিউর করার জন্য হ্যাকিং পদ্ধতি ব্যবহার করে সফটওয়্যারটির সিকিরিটি চেক করা হয়।
    • তাই প্রত্যেক সফটওয়্যার ডেভেলপার, সফটওয়্যার ইঞ্জিনিয়ার হ্যাকিং সম্পর্কে ধারনা থাকা প্রয়োজন, কারণ প্রত্যেক সফটওয়্যারে অনেক গুরুত্বপূর্ণ তথ্য থাকে যা খুব সিকিউর রাখতে হয় । একটি সফটওয়্যারকে সিকিউর করা সফটওয়্যার ইজ্ঞিনিয়ারিং এর একটি অংশ।
    • হ্যাক হল কোন জিনিসকে নিজের মত করে পরিবর্তন করা, আর যে হ্যাক করে তাকে হ্যাকার বলা হয়।
    • কোন মিডিয়া ডিভাইস, সফটওয়্যার বা ওয়েবসাইট তৈরীর সময় বা ব্যবহারের ভুলের কারণে অনেক জায়গায় দূর্বলতা বা ভুল থাকে হ্যাকিং এর ভাষায় এই দূর্বলতা বা ভুল কে 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

সমাপ্ত