ক্যারিয়ার গাইডঃ সফটওয়ার ডেভেলপমেন্ট

আমরা প্রোগ্রামিং শেখার শুরুতে প্রথমে কোন একটা কোড এডিটরে কোড লিখি। এরপর তা কনসোলে আউটপুট দেখায়। কিন্তু আমরা শুনেছি প্রোগ্রামিং করে সফটওয়ার তৈরি করা যায়। সফটওয়ার গুলোতে কি সুন্দর ইন্টারফেস থাকে, বাটন থাকে, কত অপশন থাকে। পেইন্টের মত সফটওয়ারে আঁকা আঁকি করা যায়, ওয়ার্ড সফটওয়ারে লেখা যায়, ব্রাউজারের মত সফটওয়ার দিয়ে ওয়েবসাইট ব্রাউজ করা যায়। কিন্তু কনসোলে আউটপুট দেখে আমরা হতাশ হই।

 

কিন্তু জানেন, Hello World প্রোগ্রামটা লিখেছি না?  সফটওয়ার তৈরি করা ঐটার মতই সহজ। শুধু জানতে হয় কিভাবে সফটওয়ার তৈরি করতে হয়। প্রতিটা সফটওয়ারের প্রধান দুইটা অংশ থাকে। একটা হচ্ছে ইউজার ইন্টারফেস, আরেকটা হচ্ছে লজিক পার্ট। আপনি  যে Hello World প্রোগ্রাম লিখেছেন, ঐটার সাথে ইউজার ইন্টারফেস যুক্ত করে দিলেই সুন্দর একটা সফটওয়ার হয়ে যাবে।

 

ইউজার ইন্টারফেস হচ্ছে সফটওয়ারের যে অংশ আমরা দেখি। আমরা প্রথম যে প্রোগ্রামিং  শিখেছি, যে গুলো কনসোলে আউটপুট দেখায়, সে গুলোকে সাধারনত বলে কনসোল অ্যাপলিকেশন। আর ইউজার ইন্টারফেস যুক্ত সফটওয়ার বা অ্যাপ গুলোকে বলে GUI বা গ্রাফিক্যাল ইউজার ইন্টারফেস যুক্ত অ্যাপলিকেশন।

 

আপনার যদি প্রোগ্রামিং এর ব্যাসিক ধারণা থাকে, যেমন ভ্যারিয়বল, কন্ট্রোল স্ট্যাটম্যান্ট যেমন for, while, if else, অ্যারে ইত্যাদি, তাহলে আপনি  GUI অ্যাপ তৈরি করার জন্য প্রস্তুত। আমরা যত বড় বড় সফটওয়ার দেখি না কেনো, সব কিছুই এই সহজ লজিক গুলো দিয়েই তৈরি। তাই কনসোলে আউটপুট দেখতে দেখতে হতাশ হওয়ার কিছু নেই। কারণ ঐ প্রোগ্রাম গুলো তোমার লজিক তৈরি করতে সাহায্য করে। আপনাকে  সুন্দর ভাবে চিন্তা করতে সাহায্য করে। ঐ গুলো ভালো করে জানার পর সফটওয়ার তৈরি করা আপনার জন্য সহজ হয়ে যাবে।

 

 

আমরা সাধারণত যে সব প্রোগ্রামিং ল্যাঙ্গুয়েজের সাথে পরিচিত, সব গুলো দিয়েই GUI অ্যাপ তৈরি করা যায়। যেমন জাভাতে বিল্টইন ক্লাস রয়েছে গ্রাফিক্যাল ইণ্টারফেস তৈরি করার জন্য যার নাম হচ্ছে Java Swing। এ ছাড়া সহজে সফটওয়ার তৈরি করার জন্য রয়েছে অনেক গুলো ফ্রেমওয়ার্ক। যেগুলোতে অনেক গুলো কোড লেখা থাকে। আপনি শুধু আপনার প্রয়োজন মত অল্প কিছু কোড লিখলেই সুন্দর একটা সফটওয়ার তৈরি করতে পারবেন। জাভার জন্য এমন কয়েকটি ফ্রেমওয়ার্ক হচ্ছে Apache Pivot, JavaFX, Drombler FX, JRebirth ইত্যাদি। গুগলে একটু সার্চ দিলেই আপনি  এগুলো সম্পর্কে বিস্তারিত জানতে পারবেন। রয়েছে অনেক টিউটোরিয়াল। ফ্রেমওয়ার্ক নিয়ে কাজ করার আগে আপনাকে  মূল প্রোগ্রামিং সম্পর্কে ভালো ভাবে জানতে হবে। তাই যত পারেন, ভিবিন্ন ওয়েব সাইট থেকে প্রোগ্রামিং সমস্যা গুলো সমাধান করার চেষ্টা করুন। এতে আপনার লজিক তৈরির পাশা পাশি ল্যাঙ্গুয়েজ সম্পর্কেও ভালো  করে জানা হয়ে যাবে।

 

যারা C++ জানো, তারা GUI অ্যাপ তৈরি করার জন্য ব্যবহার করতে  পারেন QT framework. সি++ এর জন্য রয়েছে Windows Template Library (WTL) যা দিয়ে আপনি  ইউজার ইন্টারফেস যুক্ত সফটওয়ার তৈরি করতে পারেন। এ ছাড়া রয়েছে Gtkmm GUI library। এগুলো ছাড়াও আরো অনেক গুলো লাইব্রেরী বা ফ্রেমওয়ার্ক রয়েছে। লাইব্রেরী বা ফ্রেমওয়ার্ক থেকে গুরুত্বপূর্ণ হচ্ছে মূল প্রোগ্রামিং সম্পর্কে সলিড ধারণা। পরে আপনি যে কোন ফ্রেমওয়ার্কই ব্যবহার করতে পারবেন। শেখা কঠিন কিছু হবে না। একটা পছন্দ না হলে আরেকটাতে সহজেই সুইচ করতে পারবেন।

 

পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজের জন্য রয়েছে অনেক গুলো ফ্রেমওয়ার্ক, যেমন Kivy, PyQt, PyGUI ইত্যাদি। এক একটা ফ্রেমওয়ার্কে এক এক ধরণের ফিচার থাকে। একটা সম্পর্কে ভালো ভাবে জানলে আপনি বুঝতে পারবেন আপনার কোন ফ্রেমওয়ার্ক দরকার। প্রথমে যে ফ্রেমওয়ার্ক দিয়ে শুরু করেছেন, এমন না যে সব সময় ঐটাতেই কাজ করতে হবে। যে কোন সময় আপনি ফ্রেমওয়ার্ক পরিবর্তন করতে পারবেন।

 

প্রায় ল্যাঙ্গুয়েজ এবং ফ্রেমওয়ার্ক দিয়ে ক্রসপ্লাটফরম সফটওয়ার তৈরি করা আয়। ক্রসপ্লাটফরম সফটওয়ার বা অ্যাপ বলতে ঐ অ্যাপ বা সফটওয়ার গুলো সব গুলো প্লাটফরমেই কাজ করবে। যেমন উইন্ডোজ, ম্যাক বা লিনাক্স, সব জায়গায়। যদি আপনি  ক্রসপ্লাটফরম সফটওয়ার তৈরি করতে চান, দেখে নিন আপনার পছন্দ করে ফ্রেমওয়ার্ক দিয়ে ক্রসপ্লাটফর্ম সফটওয়ার তৈরি করা যায় কিনা। যদি না যায়, তাহলে অন্য ফ্রেমওয়ার্ক পছন্দ করে নিতে পারেন।

 

ম্যাকের জন্য সফটওয়ার তৈরি করার জন্য তাদের অফিশিয়াল ল্যাঙ্গুয়েজ এবং টুলকিট রয়েছে। উপরের ল্যাঙ্গুয়েজ ছাড়াও ম্যাকের জন্য সফটওয়ার তৈরির জন্য অ্যাপলের অফিশিয়াল ল্যাঙ্গুয়েজ হচ্ছে Objective C এবং Swift। সুইফট নতুন একটা ল্যাঙ্গুয়েজ। রয়েছে অনেক নতুন ফিচার। সুইফট দিয়ে আবার ক্রসফ্লাটফরম অ্যাপ ও তৈরি করা যাবে।

 

 

GUI অ্যাপ তৈরি করার জন্য মাইক্রোসফটের সেরা একটা ল্যাঙ্গুয়েজ হচ্ছে C# (সি শার্প)। সহজে অ্যাপ তৈরি করার জন্য রয়েছে Visual Studio IDE। IDE এর পূর্ণরুপ হচ্ছে Integrated development environment। IDE তে সফটওয়ার বা অ্যাপ তৈরি করার জন্য যে সব টুল দরকার হয়, সব কিছু এক সাথে ইন্ট্রিগ্রেট থাকে। প্রায় সব গুলো ল্যাঙ্গুয়েজের জন্য IDE রয়েছে। যেমন জাভার জন্য Eclipse, সুইফট এবং অবজেক্টিভ সি এর জন্য Xcode, পাইথনের জন্য PyCharm ইত্যাদি। আবার একই IDE তে একের অধিক ল্যাঙ্গুয়েজ নিয়ে কাজ করা যায়। রয়েছে বিভিন্ন  প্লাগিন। প্লাগিন বা মডিউল  যুক্ত করে নিয়ে ভিন্ন ভিন্ন ফ্রেমওয়ার্ক নিয়েও কাজ করা যায়। ল্যাঙ্গুয়েজের পাশা পাশি আপনি আপনার পছন্দ অনুযায়ী IDE খুঁজে নিতে পারেন।  IDE সম্পর্কে ভালো ভাবে জানলে ডেভেলপমেন্ট আপনার  জন্য সহজ হয়ে যাবে।

 

সফটয়ারের একটা গুরুত্বপূর্ণ অংশ হচ্ছে ডেটাবেজ। যদিও সব গুলো সফটওয়ারে ডেটাবেজের দরকার হয় না। যে সব অ্যাপে কোন ডেটা স্টোর করে রাখার দরকার হয়, সেগুলোতে ডেটাবেজ ব্যবহার করার প্রয়োজন হয়। Oracle, MySQL, Microsoft SQL ইত্যাদি যে কোন ডেটাবেজই আপনি  ব্যবহার করতে পারেন।  এগুলো ছাড়াও আরো অনেক ডেটাবেজ ম্যানেজমেন্ট সিস্টেম রয়েছে।  যেমন Light Weight ডেটাবেজের জন্য SQLite। এগুলো সবই হচ্ছে রিলেশনাল ডেটাবেজ ম্যানজম্যান্ট সিস্টেম। আবার নন রিলেশনাল ডেটাবেজ ম্যানজম্যান্ট সিস্টেম রয়েছে, যেমন MongoDB।  কি ধরণের ডেটাবেজ ম্যানজম্যান্ট সিস্টেম ব্যবহার করবে, তা নির্ভর করবে ডেটার উপর। এখন শুধু টার্ম গুলোর সাথে পরিচিত হয়ে নিন। এরপর আপনি   আস্তে আস্তে এগুলো শিখতে পারবে বিভিন্ন আর্টিকেল, বই ইত্যাদি থেকে।

 

উপরে মাত্র অল্প কয়েকটি ল্যাঙ্গুয়েজ এবং ফ্রেমওয়ার্ক এর কথা লিখেছি। এগুলো ছাড়াও আরো অনেক অনেক ল্যাঙ্গুয়েজ এবং ফ্রেমওয়ার্ক রয়েছে। আপনাকে সব গুলো ল্যাঙ্গুয়েজ শিখতে হবে না। আবার শিখতে হবে না একটা ল্যাঙ্গুয়েজের সব গুলো ফ্রেমওয়ার্ক। আপনাকে ভালো করে জানতে হবে মাত্র একটি ল্যাঙ্গুয়েজ। জানতে হবে একটি ল্যাঙ্গুয়েজের একটি ফ্রেমওয়ার্ক। ভালো ভাবে! কারণ ল্যাঙ্গুয়েজ বা ফ্রেমওয়ার্ক থেকেও গুরুত্বপূর্ণ হচ্ছে লজিক, অ্যালগরিদম, ডেটা স্ট্রাকচার, সফটওয়্যার আর্কিটেকচার, সফটওয়ার ডেভেলপমেন্ট প্রসেস ইত্যাদি।

 

দেখুন না, প্রোগ্রামিং ল্যাঙ্গুয়েজ মাত্র একটা অংশ। এর পরে আরো কত গুলো অংশ জানতে হয় ভালো সফটওয়ার তৈরি করতে। ভয় পাবেন  না। আপনি   শুধু ল্যাঙ্গুয়েজ এবং ফ্রেমওয়ার্ক জেনেই সফটওয়ার তৈরি করা শুরু করতে পারেন।  তখন আপনি নিজেই বুঝতে পারবেন, আপনার  সফটওয়ারটাকে ভালো করার জন্য আরো কত কিছু শিখতে হবে। আর তা আপনি আস্তে আস্তে শিখে নিতে পারবেন। কেউই সব কিছু জেনে সফটওয়ার ডেভেলপমেন্ট শুরু করতে পারে না। সফটওয়ার তৈরি করতে করতেই নিজের জ্ঞান বাড়িয়ে নেয়।

 

আপনার কম্পিউটারে কত গুলো সফটওয়ার ইন্সটল করা রয়েছে। অনলাইনে রয়েছে কত লক্ষ সফটওয়ার। যে গুলো ডাউনলোড করে আমরা ব্যবহার করতে পারি। কিছু সফটওয়ার কিনতে হয়, কিছু সফটওয়ার ফ্রিতে ডাউনলোড করা যায়। এই যত গুলো সফটওয়ারই আপনি দেখেন না কেনো, সব গুলোই তৈরি করেছে আমার মত আপনার মত কেউ। কিছু কিছু সফটওয়ার একা একা তৈরি করা যায়। কিছু কিছু সফটওয়ার তৈরি করতে অনেক ডেভেলপারের সাথে কাজ করতে হয়। আবার অনেক ডেভেলপারের সাথে কাজ করতে গেলে  মানতে হয় কিছু নিয়ম কানুন। ব্যবহার করতে হয় সোর্স কন্ট্রোল সিস্টেম, যেমন Git। আমার উদ্দ্যেশ্য হচ্ছে  আপনাকে এই টার্ম গুলোর সাথে পরিচয় করিয়ে দেওয়া। যেন আপনি জেনে নিতে পারেন  আপনার  কি শিখতে হবে।  যে সব টার্ম তোমার অপরিচিত, সেগুলো লিখে গুগলে সার্চ করতে পারেন। অনেক আর্টিকেল পাবেন, সেগুলো পড়ুন। পাবেন অনেক বই। বই এর দোকানে নিয়ে বই কিনে এনে পড়তে পারেন। ইউটিউভে ভিডিও দেখতে। এভাবেই শিখতে হয়। এভাবেই শিখে সবাই। সফটওয়ার বিজনেস করেই বিলগেটস পৃথিবীর সেরা ধনী। পৃথিবীর টপ ৫০ জন ধনীর মধ্যে অর্ধেকেরও বেশি হচ্ছে প্রোগ্রামার। জানুন, জেনে দারুণ কিছু করুন। 🙂

19 thoughts on “ক্যারিয়ার গাইডঃ সফটওয়ার ডেভেলপমেন্ট”

  1. সমস্যটা হচ্ছে প্রাকটিকেলে করতে গিয়ে যদি কোনো যায়গায় আটকে যায়, তখন পরামর্শ চাইলে সহজে দিতে চান না। আপনার মত সফটওয়্যার স্পেশালিষ্টরা যদি সঠিক সাজেশন না দেন তবে কিভাবে, বলুন?

    Reply
    • সাজেশনের জন্যই তো লেখা গুলো লিখা। 🙂

  2. ভাল আর্টিকেল! কিন্তু একটা ব্যাপারে একটু খটকা লাগলঃ আপনি আপনার ভিজিটরকে “তুমি” সম্বোধন করেন কেন ভাই ? অনেক সিনিয়র লোকজনও তো আপনার লেখাটা পড়তে পারে। সিনিয়রদের কি তুমি বলা বাঞ্ছনীয়? ওয়েবের সবাই তো আপনার ছোট ভাই-বেরাদার, বাপ-দাদা, মুরুব্বীশ্রেনীর লোক না। আপনি জিনিয়াস, কষ্ট করে নিজের অতি গুরুত্তপুর্ন সময় ব্যয় করে অপরের উপকারের জন্যে লিখছেন।এ জন্যে আপনাকে অন্তরের অন্তঃস্থল থেকে সাধুবাদ জানাই। সবই ঠিক আছে, কিন্তু দুনিয়ার সবাইকে ঢালাও তুমি বলাটা কতটা যুক্তিসংগত ? ফার্মের মুরগীখোর এ যুগের ডিজুস পোলাপান্দের মত যাকে তাকে “তুমি” বলা অন্ততঃ আপনাকে মানায় না ভাই।

    ভাল থাকবেন, আমি আপনার আর্টিকেলগুলোর একজন ফ্যান, তাই থামাবেন না, চালিয়ে যান!

    ধন্যবাদ।

    Reply
  3. নিন্দুকের অভাব কোনদিন বাংলাদেশে হবে না ইনশাল্লাহ্ । ভাই post ta obossoy helpfull starting er jonno..

    Reply
  4. ধন্যবাদ ভাই। অনেক গুলা টার্ম ক্লিয়ার হয়ে গেলো।

    Reply
  5. জাকির ভাই আপনার আর্টিকেলটা ব্যাপক ভালো লাগলো শুধু তাই নয় কিছু ডিবাগ ও ক্লিয়ার হলো এরকমের আরো তিন চারটা আর্টিকেল লিখেন অ্যাপ এর উপর । এই রকমের ভালো গাইড লাইন আপনাকে পেলাম উৎসাহ দেওয়ার জন্য

    Reply
  6. জাকির ভাই আপনার আর্টিকেলটা ব্যাপক ভালো লাগলো শুধু তাই নয় কিছু ডিবাগ ও ক্লিয়ার হলো এরকমের আরো তিন চারটা আর্টিকেল লিখেন অ্যাপ এর উপর । এই রকমের ভালো গাইড লাইন আপনাকে পেলাম উৎসাহ দেওয়ার জন্য

    Reply
  7. ভাইয়া একজন ভালোমানের সফটওয়ার ইঞ্জিনিয়ার হওয়ার জন্য কি থেকে শুরু করা উচিত এবং বাংলাদেশে থেকে কী তা হওয়া যাবে ? যদি একটু বলতেন তাহলে অনেক উপকার হতো।

    Reply

Leave a Reply