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