বর্তমান সময় বিবেচনা করলে আমাদের এই পৃথিবীকে সম্পূর্ণ তথ্য ও প্রযুক্তি নির্ভর পৃথিবী বললে খুব একটা ভুল হবে না। কেননা এখন প্রযুক্তি ছাড়া আমরা যেন একদিনও কল্পনা করতে পারি না। দিন যত সামনে এগিয়ে যাচ্ছে প্রযুক্তি যেন তার থেকেও দ্রুত গতিতে এগিয়ে যাচ্ছে। প্রতিনিয়ত আমরা ইন্টারনেট নির্ভর হয়ে পরার কারণে কম্পিউটার ও মোবাইল ডিভাইসের ব্যবহার ক্রমাগত বৃদ্ধি পাচ্ছে। আর এই সকল ডিভাইসে যে জিনিসটা সবচেয়ে বেশি ব্যবহার করা হয় তা হলো সফটওয়্যার। সফটওয়্যার ছাড়া এসকল ডিভাইস সম্পূর্ণ অচল।
আমরা প্রতিনিয়ত বিভিন্ন কাজে এই সকল সফটওয়্যার গুলোকে ব্যবহার করে থাকি। যেমনঃ ভিডিও এডিটিং সফটওয়্যার, সোশ্যাল মিডিয়া অ্যাপ, অফিস ডকুমেন্ট সফটওয়্যার, ফটো এডিটিং অ্যাপ, অডিও – ভিডিও প্লেয়ার অ্যাপ সহ নানান ধরনের সফটওয়্যার। আমাদের মধ্যে অনেকেই আছি যারা এই সফটওয়্যার গুলোকে শুধু ব্যবহার করেই নয়, বরং কিভাবে এগুলোকে তৈরি করা যায় ও এই সেক্টরে নিজেকে প্রতিষ্ঠিত করা যায় সে বিষয়ে জানতেও আগ্রহী। এজন্য এই আর্টিকেলে আমরা সফটওয়্যার ইঞ্জিনিয়ারিং কি ও কিভাবে কাজ করে? সফটওয়্যার ইঞ্জিনিয়ার হতে হলে কি কি দক্ষতার প্রয়োজন ও এ সম্পর্কিত বিভিন্ন বিষয় সম্পর্কে জানতে চলেছি।
সফটওয়্যার ইঞ্জিনিয়ারিং সম্পর্কে জানার পূর্বে সফটওয়্যার সম্পর্কে স্বচ্ছ ধারণা থাকা প্রয়োজন। এজন্য প্রথমে সফটওয়্যার সম্পর্কে সংক্ষেপে কিছু ধারণা নেয়া যাক।
প্রথমে বুঝতে চেষ্টা করি সফটওয়্যার আসলে কি? সহজ ভাষায় সফটওয়্যার হলো এক ধরনের প্রোগ্রাম বা ডেটা ও কিছু ইলেক্ট্রনিক নির্দেশনা যার মাধ্যমে একটি কম্পিউটার পরিচালিত হয়। আমরা প্রতিনিয়ত কম্পিউটার বা অন্যান্য ডিভাইসে যে সকল ছোট বড় অ্যাপ্লিকেশন (অ্যাপ) ব্যবহার করে থাকি সেগুলোই মূলত এক একটি সফটওয়্যার। এই সফটওয়্যার গুলোর সাহায্যেই আমরা আমাদের ডিভাইসকে কোনো কাজ করার নির্দেশ দিয়ে থাকি।
সফটওয়্যারের প্রধানত তিনটি ধরন রয়েছে–
একটি সফটওয়্যার তৈরি থেকে শুরু করে সফটওয়্যারের যাবতীয় রক্ষণাবেক্ষণের জন্য কিছু নিয়মকানুন রয়েছে, যা মূলত সফটওয়্যারের জীবনচক্র। সফটওয়্যারের জীবনচক্রকে সংক্ষেপে SDLC (Software Development Life Cycle) বলা হয়। SDLC হলো সফটওয়্যার তৈরির একটি পদ্ধতিগত প্রক্রিয়া যা একটি সফটওয়্যারের মান এবং সঠিকতা নিশ্চিত করে। এই প্রক্রিয়ার মূল লক্ষ্য হচ্ছে উচ্চমানের সফটওয়্যার তৈরি করা যা ব্যবহারকারীর প্রত্যাশা পূরণ করতে সক্ষম হবে। সফটওয়্যার ডেভেলপমেন্ট লাইফ সাইকেলকে অ্যাপ্লিকেশন ডেভেলপমেন্ট লাইফ সাইকেল হিসেবেও উল্লেখ করা হয়। নিচের ছবিতে একটি সফটওয়্যারের লাইফ সাইকেল অর্থাৎ জীবনচক্র দেখানো হয়েছে-
সফটওয়্যার ইঞ্জিনিয়ারিং হলো সফটওয়্যার ডেভেলপমেন্টে ইঞ্জিনিয়ারিং ধারণার প্রয়োগ। এর মূল লক্ষ্য সফ্টওয়্যার তৈরি, উন্নতি এবং রক্ষণাবেক্ষণ। সফটওয়্যার ইঞ্জিনিয়ারিং – এ একটি সফটওয়্যারের ডিজাইন, ডেভেলপমেন্ট সহ যাবতীয় সকল কাজ করা হয়। সহজ কথায় সফটওয়্যার ইঞ্জিনিয়ারিং হলো এমন একটি ইঞ্জিনিয়ারিং যেখানে সফটওয়্যার তৈরির প্ল্যানিং, ডিজাইন, প্রোগ্রামিং, বিশ্লেষণ ও সফটওয়্যারের যাবতীয় রক্ষণাবেক্ষণ করা হয়। একটি সফটওয়্যারের সম্পূর্ণ জীবনচক্রে যে যে বিষয় গুলো লক্ষ রাখা হয় তা সফটওয়্যার ইঞ্জিনিয়ারিং এর অন্তর্ভুক্ত। যে বা যারা এই কাজ গুলো করে তাদেরকে সফটওয়্যার ইঞ্জিনিয়ার ও সফটওয়্যার ডেভেলপার বলা হয়।
কিভাবে একটি সফ্টওয়্যারের ডিজাইন তৈরি করা যায়, উন্নয়ন এবং রক্ষণাবেক্ষণ করা যায় ইত্যাদি সফটওয়্যার ইঞ্জিনিয়ারিং অধ্যয়ন করলে জানা যায়। একজন সফটওয়্যার ইঞ্জিনিয়ার একটি সফটওয়্যার তৈরির ক্ষেত্রে ব্যবহারকারীদের চাহিদাকে বিশেষ ভাবে গুরুত্ব দেন। কারণ ইউজার যদি সফটওয়্যার ব্যবহার করে সন্তুষ্ট না হন, তাহলে সেই সফটওয়্যার তেমন কোনো ভ্যালু তৈরি করবে না। এজন্য সফটওয়্যার তৈরির ক্ষেত্রে সফটওয়্যার ইঞ্জিনিয়ার এই বিষয়টিকে খুবই গুরুত্ব সহকারে দেখেন।
একটি সফটওয়্যারে কী রাখা উচিত, তা জানতে ইঞ্জিনিয়ার বা ডেভেলপাররা ইউজারের কাছ থেকে বিভিন্ন ধরনের তথ্য সংগ্রহ এবং সিনিয়র ডেভেলপারদের কাছ থেকে তথ্য সংগ্রহ ও পূর্বে তৈরি করা সফটওয়্যার রিভিউ থেকে সফটওয়্যার তৈরির রোডম্যাপ তৈরি করেন এবং সেগুলোকে কয়েকটি ভাগে ভাগে করে নেন। যেহেতু একজন সফটওয়্যার ইঞ্জিনিয়ারকে অনেক গুলো বিষয়ের উপর লক্ষ্য রেখে কাজ করতে হয়, সেজন্য ইঞ্জিনিয়াররা সাধারনত সফটওয়্যার তৈরির ক্ষেত্রে নিজেরদের মধ্যে দল গঠন করে কাজ করে থাকে।
সফটওয়্যার ইঞ্জিনিয়াররা বিভিন্ন ধরনের সফটওয়্যার অ্যাপ্লিকেশন তৈরি, মেইনটেনেন্স এবং সফটওয়্যার পরিচালনার কাজ করে। সফটওয়্যার ইঞ্জিনিয়ারদের উল্লেখযোগ্য কাজের মধ্যে রয়েছে –
উপরের অংশটুকু পড়ে আশাকরি কিছুটা হলেও বুঝতে পেরেছেন যে সফটওয়্যার ইঞ্জিনিয়ারিং মোটেই সহজ কোনো কাজ নয়। এখানে কাজ করার জন্য কাজের প্রতি প্রবল ইচ্ছা, ধৈর্য ও সঠিক দক্ষতা থাকা প্রয়োজন। একজন সফটওয়্যার ইঞ্জিনিয়ার হতে হলে প্রোগ্রামিং এর দক্ষতার পাশাপাশি আরো বেশ কিছু দক্ষতার প্রয়োজন হয়, যেমন –
সফটওয়্যার ইঞ্জিনিয়ারিং পেশা একটি উচ্চচাহিদা সম্পন্ন পেশা। একদম শুরুতেই বলেছি যে সফটওয়্যার কতটা গুরুত্বপূর্ণ একটি জিনিস। দিন দিন এর চাহিদা বেড়েই চলেছে। ফলে প্রতিনিয়ত তৈরি করা হচ্ছে অসংখ্য সফটওয়্যার। তবে ভালো দক্ষতা ও অভিজ্ঞতা সম্পন্ন সফটওয়্যার ইঞ্জিনিয়ারের চাহিদা থাকার কারণে অনেক সফটওয়্যারই ব্যবহারকারীদের নিকট গ্রহণযোগ্যতা হারাচ্ছে। আপনি যদি এ সেক্টরে ভালো দক্ষতা অর্জন করে সেটিকে সঠিকভাবে কাজে লাগাতে পারেন তাহলে আপনিও একজন ভালো সফটওয়্যার ইঞ্জিনিয়ার হতে পারবেন। সফটওয়্যার ব্যাতিত যেহেতু কম্পিউটার বা অন্যান্য ডিভাইস সম্পূর্ণ অচল সেহেতু এই পেশার চাহিদা কখনো কমার প্রশ্ন আসে না।
PayScale এর তথ্য অনুযায়ী বর্তমানে বাংলাদেশে একজন সফটওয়্যার ইঞ্জিনিয়ারের বাৎসরিক গড় আয়ের একটি রিপোর্ট নিচের ছবিতে লক্ষ্য করুন –
নিচের ছবিতে Glassdoor এর তথ্য অনুযায়ী USA এর গড় রিপোর্ট দেখানো হলো -
একটা সময় ছিল যখন এই বিষয়গুলো শেখার জন্য শুধুমাত্র একাডেমিক ভাবে ডিগ্রি অর্জন করা ছাড়া তেমন কোনো উপায় ছিলো না। কিন্তু বর্তমানে ইন্টারনেটের বদৌলতে সেই ধারণাটি সম্পূর্ণ বদলে গেছে। আপনি ইচ্ছা করলে নিজেই ইন্টারনেটের মাধ্যমে সফটওয়্যার ইঞ্জিনিয়ারিং শিখতে পারেন। সার্টিফিকেটের তুলনায় এখানে সঠিক দক্ষতাকে সবচেয়ে বেশি প্রাধান্য দেয়া হয়। ইন্টারনেটে সার্চ করলেই মুহূর্তের মধ্যে অসংখ্য রিসোর্স আপনার সামনে হাজির হয়ে যাবে। আপনি চাইলে কোনো বিশ্বস্ত আইটি ইনস্টিটিউট থেকে অনলাইন বা অফলাইন কোর্সের মাধ্যমেও সফটওয়্যার ইঞ্জিনিয়ারিং এ দক্ষতা অর্জন করতে পারেন। এছাড়া সফটওয়্যার ইঞ্জিনিয়ারিং – এ চার বছরের স্নাতক ডিগ্রি অর্জনের মাধ্যমেও একটি একাডেমিক শিক্ষা নিতে পারেন।
সফটওয়্যার ইঞ্জিনিয়ারিং শিখতে কত সময় লাগবে? এ প্রশ্নের একদম সহজ উত্তর হলো আপনি নিয়মিত যত বেশি সময় দিয়ে কাজ করবেন ততো দ্রুত শেখা সম্ভব। স্নাতক ডিগ্রি অর্জনের জন্য আপনার চার বছর সময় লাগবে। আপনি যদি অনলাইন বা অফলাইন কোর্সের মাধ্যমে শিখতে চান তাহলে গড়ে ছয় মাস থেকে এক বছরের মধ্যে একজন জুনিয়র সফটওয়্যার ইঞ্জিনিয়ার হিসেবে নিজের ক্যারিয়ার গঠন করতে পারবেন এবং ধীরে ধীরে দক্ষতা ও অভিজ্ঞতা অর্জনের মাধ্যমে সিনিয়র সফটওয়্যার ইঞ্জিনিয়ার হতে পারবেন।
যেভাবেই শিখুন না কেন, কাজে ভালো দক্ষতা অর্জনের জন্য অবশ্যই সময়, পরিশ্রম ও ধৈর্যের প্রয়োজন। তাহলেই আপনি একজন ভালো দক্ষতা ও অভিজ্ঞতা সম্পন্ন সফটওয়্যার ইঞ্জিনিয়ার হতে পারবেন। আশাকরি উপরে উল্লেখিত এই বিষয় গুলো নিয়ে আপনার স্বচ্ছ একটি ধারণা তৈরি হয়েছে। লেখায় কোনো ভুলভ্রান্তি থাকলে তা ক্ষমাসুন্দর দৃষ্টিতে দেখার অনুরোধ রইল। উপরে উল্লেখিত বিষয় সম্পর্কে বা বিজ্ঞান ও প্রযুক্তি নিয়ে আপনার যেকোনো প্রশ্ন নিচে টিউমেন্টের মাধ্যমে জানাতে পারেন, আমি তার যথাযথ উত্তর দেয়ার চেষ্টা করবো। ধন্যবাদ।
আমি রুহুল আমিন। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 3 বছর 4 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 2 টি টিউন ও 0 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।