প্রথমেই বলার চেষ্টা করছি যে একজন "এমবেডেড সফটওয়্যার ইঞ্জিনীয়ার" আসলে কি বা কে !
একজন "এমবেডেড সফটওয়্যার ইঞ্জিনীয়ার" কে আরো যথাযথ ভাবে শুধু "এমবেডেড ইঞ্জিনীয়ার" বা "ফার্মওয়্যার ইঞ্জিনীয়ার" বলা যেতে পারে । এমবেডেড ইঞ্জিনীয়াররা সাধারনত কোন হার্ডওয়্যারকে ব্যাবহার উপযোগী করার জন্য খুব নিম্ন স্তরের কোড (Lowest Level Code) ডিজাইন করেন ও লিখে থাকেন । উদাহরন স্বরুপ কম্পিউটারের বায়োস (BIOS) বা ভিন্ন ভিন্ন হার্ডওয়্যারের জন্য অপারেটিং সিস্টেম স্পেসিফিক ড্রাইভারের কথা বলা যায় ।
মজার ব্যাপার এখনো কাজ করছেন এমন অনেক "এমবেডেড ইঞ্জিনীয়ার" তাদের ক্যারীয়ারের শুরু করেছেন DOS কম্পিউটারের সময় থেকে , যখন কম্পিউটারের জন্য ভাল কোন সফটওয়্যার লিখতে গেলে হার্ডওয়্যার সম্পর্কে সাম্যক ধারনা থাকা বাধ্যতামুলক ছিল । কারন তখনকার সময়ে Stack এর ধারনা এখনকার মতো ব্যাপ্তি পায়নি । বরং তখনকার দিনে সব প্রোগ্রামার , ইঞ্জিনীয়ার বা ডেভেলপার ছিলেন Full Stack ।
অন্যান্য সফটওয়্যার ইঞ্জিনীয়ারদের মতো একজন এমবেডেড ইঞ্জিনীয়ার কখনই শুধু কোড লেখা পর্যন্ত সীমাবদ্ধ থাকেন না । অন্যান্য সফটওয়্যার ইঞ্জিনীয়াররা চাইলে হার্ডওয়্যারকে সম্পুর্ন অগ্রাহ্য করে শুধু অপারেটিং সিস্টেম স্পেসিফিক সফটওয়্যার লিখতে পারেন । কিন্তু একজন এমবেডেড ইঞ্জিনীয়ার এর প্রথম উদ্দেশ্যই হচ্ছে তার লেখা সফটওয়্যার খুব লোয়ার লেভেলে কিভাবে হার্ডওয়্যারের সাথে ইন্টার্যাক্ট করবে - সেটা পর্যবেক্ষন করা , হার্ডওয়্যার - সফটওয়্যার কম্প্যাটিবলিটি নিশ্চিত করা । তাদেরকে হার্ডওয়্যার যেমন চিপ ইন্টারফেস , স্টোরেজ এর প্রতিটি বৈশিষ্ট জেনে তার সাথে সামঞ্জস্যপুর্ন কোড লিখতে হয় ।
এমবেডেড ইঞ্জিনীয়ারদের অন্যান্য সফটওয়্যার ইঞ্জিনীয়ারদের মতো ফুল ওয়ার্কিং হার্ডওয়্যার বা সিস্টেমে কোড রান করানোর সুযোগ খুব কম । মাঝে মাঝে তাদের হাইপোথেটিক্যাল ফার্মওয়্যার বা হার্ডওয়্যারের জন্য প্রোগ্রাম লিখতে হয় যার প্রোটোটাইপই সেই প্রোগ্রামের উপর ভিত্তি করে পরে বানানো হয় । অন্যান্য সফটওয়্যার ইঞ্জিনীয়াররা তাদের লেখা প্রোগ্রাম কাজ না করলে অন্তত এটুকু শতভাগ নিশ্চিত হতে পারেন যে তাদের লেখা কোডেই ভুল রয়েছে । কিন্তু এমবেডেড ইঞ্জিনীয়ারদের লেখা প্রোগ্রাম কাজ না করলে তার অর্থ এরর দুই জায়গাতেই থাকতে পারে - হার্ডওয়্যারে বা কোডে । এমবেডেড ইঞ্জিনীয়ারদের লেখা প্রোগ্রাম ডিবাগিং এর জন্য শুধু একটা ডিবাগার হলেই চলে না , বরং পাশাপাশি অসিলোস্কোপ , ভোল্ট-ওহম মিটারও থাকতে হয় ।
এক কথায় আপনি একজন এমবেডেড ইঞ্জিনীয়ারকে সফটওয়্যার ইঞ্জিনীয়ার ও ইলেকট্রিক্যাল ইঞ্জিনীয়ার এর কম্বো বলতে পারেন ।
এতখনে নিশ্চয়ই অল্প হলেও বুঝে ফেলেছেন এমবেডেড ইঞ্জিনীয়ার কে এবং কি করেন । কম্পিউটার , রোবট , ড্রোন - এসব হাইলি এডভান্স জিনিসের কথা বাদ দিন । আমাদের ঘরেই নিত্য ব্যাবহার্য অনেক জিনিস আছে যা এমবেডেড সিস্টেমের উপর নির্ভরশীল । যেমন টিভি-রিমোট , এসি , ওয়াশিং মেশিন , ওভেন । এগুলোর প্রতিটির ফার্মওয়্যারের পেছনে আছে কোন এমবেডেড ইঞ্জিনীয়ার এর নির্ঘুম রাত । সময় পেলে Embedded system and IoT নিয়ে অল্পবিস্তর পড়াশুনা করার পরামর্শ রইলো , আশা করি আরো বিশদ জানতে পারবেন ।