সফটওয়্যার ইঞ্জিনিয়ার বা ডেভেলপার হিসেবে চাকরির প্রস্তুতি

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

পরবর্তী ইন্টারভিউতে যাওয়ার আগে আমার কিংবা আপনার কী কী বিষয়ে জ্ঞান রাখা উচিত, সে বিষয়েই আমার ব্যক্তিগত অভিজ্ঞতার আলোকে কিছুটা দিক-নির্দেশনা দেওয়ার চেষ্টা করবো এই লেখাটিতে।

১. চাকরির আবেদনের পূর্বে:

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

এর জন্য আবেদনের আগেই ঠিক করে নিতে হবে আমি কী হিসেবে চাকরির জন্য আবেদন করতে চাই। আমার দক্ষতা ফ্রন্ট-এন্ড, ব্যাক-এন্ড, ফুলস্ট্যাক নাকি কোনো বিশেষ ভাষায়। উদাহরণস্বরূপ বলতে পারি, আমি নিজেকে ফুলস্ট্যাক জাভাস্ক্রিপ্ট ডেভেলপার হিসেবে পরিচয় দেই। আর চাকরির আবেদনের ক্ষেত্রে আমি কেবল আমার দক্ষতার সাথে সম্পর্কিত চাকরি গুলোর জন্যই আবেদন করি।

২. পছন্দের প্রোগ্রামিং ভাষাটি ভালোভাবে আয়ত্ত করাঃ

সফটওয়্যার ইঞ্জিনিয়ার হিসেবে চাকরি পাওয়ার একটি অন্যতম শর্ত হলো অন্ততপক্ষে একটি প্রোগ্রামিং ভাষায় ভালো দক্ষতা অর্জন করা। কিন্তু অনেককেই দেখা যায় ভাষা শেখার আগেই সেই ভাষার ফ্রেমওয়ার্ক শিখে কাজে নেমে পড়তে চান। এটি একটি মারাত্মক ভুল। যেকোনো প্রোগ্রামিং ভাষায় ভালো দক্ষতা অর্জন করতে হলে ফ্রেমওয়ার্কের আগে সেই ভাষাটির ব্যবহার শিখতে হবে। এর জন্য আপনার প্রিয় প্রোগ্রামিং ভাষা ব্যবহার করে কিছুদিন প্রোগ্রামিং প্রবলেম সল্‌ভ করতে পারেন। এর জন্য ভালো কিছু অনলাইন প্ল্যাটফর্ম হলো:

৩. প্রোগ্রামিংয়ের মৌলিক বিষয়সমূহে জ্ঞান রাখাঃ

একজন প্রোগ্রামার হিসেবে আপনার প্রোগ্রামিং দক্ষতার বহিঃপ্রকাশ ঘটবে প্রোগ্রামিংয়ের মৌলিক বিষয়গুলোতে আপনার দক্ষতা কেমন তার মাধ্যমে। একজন প্রোগ্রামারের নিচের বিষয়গুলোতে অবশ্যই ভালো জ্ঞান থাকতে হবে (যেই প্রোগ্রামিং ভাষাই আপনার প্রিয় হোক না কেনো)।

  • ভেরিয়েবল
  • লুপ
  • ফাংশন
  • ডাটা স্ট্রাকচার (অ্যারে, লিস্ট, লিংকড লিস্ট, কালেকশান বা অবজেক্ট ইত্যাদি)
  • মিউটেবল ও ইম্মিউটেবল ডাটা
  • অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (ক্লাস, অবজেক্ট, ইনহ্যারিটেন্স, পলিমরফিজম)
  • ফাংশনাল প্রোগ্রামিং

৪. অ্যালগরিদমের মৌলিক বিষয়গুলোর জ্ঞান রাখা:

প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ বিষয় হলো অ্যালগরিদম। সাধারণত অ্যালগরিদম বলতে বোঝায় একটি সমস্যা সমাধানের পর্যায়ক্রমিক ধাপসমূহকে। আমরা আমাদের দৈনন্দিন জীবনে এর প্রচুর ব্যবহার করি। গুগল ম্যাপে এক জায়গা থেকে অন্য জায়গায় যেতে সবচেয়ে দ্রুততম রাস্তা কোনটি, ফেইসবুকে বন্ধু সাজেশান, বিভিন্ন ই-কমার্স সাইটে পণ্য সর্টিং - এসবই কিছু অ্যালগরিদম ব্যবহার করে করা হয়। প্রোগ্রামার হিসেবে আপনাকে অ্যালগরিদম বিশারদ হতে হবে না। তবে কিছু কিছু অ্যালগরিদম সম্পর্কে অবশ্যই মৌলিক ধারণা রাখতে হবে। নিচে কিছু গুরুত্বপূর্ণ অ্যালগরিদমের তালিকা দেয়া হলো।

  • সর্টিং অ্যালগরিদম (মার্জ সর্ট, কুইক সর্ট ইত্যাদি)
  • সার্চিং অ্যালগরিদম (বাইনারি সার্চ, DFS/BFS সার্চ)
  • হ্যাশিং অ্যালগরিদম

৫. ডাটাবেজের প্রথমিক ও মৌলিক বিষয়সমূহে জ্ঞান রাখা:

অনলাইন বা অফলাইন যে ধরনের সফটওয়্যারই হোক না কেনো আমরা সাধারণত ডাটা নিয়েই কাজ করে থাকি। আর অধিকাংশ ক্ষেত্রেই ডাটা সংরক্ষণ করা হয় ডাটাবেজে। একজন সফটওয়্যার ইঞ্জিনিয়ারের অবশ্যই ডাটাবেজ ব্যবহারের প্রাথমিক জ্ঞান থাকতে হবে। তাকে জানতে হবে কীভাবে ডাটাবেজে তথ্য সংরক্ষণ (create), ডাটাবেজ থেকে তথ্য পাঠ (read), সম্পাদনা (update) এবং মুছে ফেলা যায় (delete)। বিভিন্ন ধরনের ডাটাবেজ, যেমন: রিলেশনাল ও নন-রিলেশনাল ডাটাবেজ কী, তাদের মধ্যে পার্থক্য কী, কোনটার কী সুবিধা এ ব্যাপারেও কিছুটা প্রাথমিক ধারণা রাখা উচিত।

৬. সফটওয়্যার ডেভেলপমেন্টের পূর্ণাঙ্গ প্রক্রিয়া সম্পর্কে ধারণা রাখা:

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

৭. সফটওয়্যার ডেভেলপমেন্টের বিভিন্ন পদের স্থানীয় ও আন্তর্জাতিক বেতন কাঠামো সম্পর্কে ধারণা রাখা:

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

উল্লিখিত বিষয়গুলো ছাড়াও একজন ডেভেলপারের সফটওয়্যার ভার্শন কন্ট্রোল (গিট), প্রজেক্ট ম্যানেজমেন্ট টুল্‌স (জিরা, আসানা, ট্রেলো), কমান্ড লাইন টুল্‌স, অপারেটিং সিস্টেম (বিশেষ করে লিনাক্স), সার্ভার, CI/CD ইত্যাদি সম্পর্কে ধারণা রাখা উচিত। ভালো সফটওয়্যার ডেভেলপারের একটা উল্লেখযোগ্য বৈশিষ্ট হলো নতুন কিছু শেখার আগ্রহ। তাই সবসময় শিখতে থাকুন। আজকের লেখা এখানেই শেষ করছি। আল্লাহ হাফিজ।

সর্বশেষ আপডেট: আগস্ট ২৫, ২০২০ খ্রিস্টাব্দ

লেখাটি সম্পাদনা করুন এখানে