ভাল সফটওয়ার কোম্পানি এবং ইফিশিয়েন্ট সফটওয়ার ইঞ্জিনিয়ার সমাচার

একসময় আমি একা এক টিমে কাজ করতাম, আমিই ডিসিশন নিতাম, আমিই ডেলিভারি করতাম কাজ তখন মনে হতো ভালই তো চলছে, এমনকি গিট ও ইউজ করতাম আমার পার্সোনার প্রেফারেন্স থেকে, কখনো ওই সময় কোন সঠিক গাইডলাইন পাইনি। এভাবেই চলছিল আমার ক্যারিয়ারের সুড়ুতে অন্তত প্রথম ৩ বছর এরপর আমি একটা গ্রুমিং ব্যাচে জয়েন করে ২০২০ সালে যেটা নিয়েছিল আমাদের কমিউনিটির পরিচিত মুখ Ahmed Shamim Hasan Shaon ভাই ওখান থেকে আমি শিখি আসলে ভাল সফটওয়ার ইঞ্জিনিয়ার হতে হলে একটা ভাল টিমের কাছ থেকে সাহায্য পেলে বা কাজ করলে জীবন সহজে হয়ে যায়।

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

কোড রিভিউ

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

এবার আসেন একটা কোম্পানি কিভাবে তাদের কোডের মান নিয়ন্ত্রণ করে? অবশ্যই কোড রিভিউ এর মাধ্যমে। আপনার টিম মেম্বারদের মধ্যে রেগুলার কোড রিভিউ সেশন হতে পারে। প্রতিটা মডিউল এর জন্য আপনি যে কোড লিখেন তা সঠিকভাবে রিভিউ হয় একটা নির্দিষ্ট স্টান্ডার্ড এর মাধ্যেম যেমনঃ

  • Naming Convention
  • Responsibility of Functions,
  • By Avoiding Duplicate code, ইত্যাদি।

কিছুদিন আগেই আমার ইঞ্জিনিয়ার ম্যানেজার একটা রিসোর্স শেয়ার করেছিল clean code guide এর জন্য এখান থেকে আর বিস্তারিত পড়তে পারেন।

টেকনলোজি কোন ব্যাপার না

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

পাশাপাশি বর্তমানে ইঞ্জিনিয়ার হিসাবে ক্লাউড শেখার কোন বিকল্প নেই, আমার অভিজ্ঞতা থেকে দেখেছি এখন AWS/GCP/Alibaba এসব জায়গায় আপনাকে নিজে নিজে ডেপ্লয় করা শিখে ফেলতে হবে। এতে শুধু কোম্পানির লাভ নয় আপনার নিজের ও। বর্তমানে এই দক্ষতা গুলায় কিন্তু দিন শেষে আর ১০ জন ইঞ্জিনিয়ার থেকে আপনাকে আলাদা করবে।

কিভাবে শিখবেন ক্লাউড?

  • বই পড়বেন
  • ডুয়েল কারেন্সির একটা কার্ড ম্যানেজ করবেন।
    • পাস্পোর্ট থাকলে অনেক ব্যাংক এখন ডুয়েল কারেন্সি এনেবল করা ডেবিট কার্ড দেয়
  • আপনার নিজের কোন প্রজেক্ট ডেপ্লয় করা শুরু করতে পারেন, কিভাবে একটা ফ্রেশ VPS কফিগারেশন করতে হয় তা অনলাইনে খুঁজলেই পাবেন আপনার প্রজেক্টের উপর নির্ভর করে। আমি নিজেই CodeIgniter Application কিভাবে VPS এ ডেপ্লয় করা যায় তা নিয়ে লিখেছিলাম অনেক আগে, মিডিয়াম থেকে আমার সেই লেখাটা দেখতে পারেন।
    • আবার VPS সার্ভার কেনা যায় এক মাসের জন্য
      • বিভিন্ন প্লাটফর্ম আছেঃ আমার পছন্দ ionos server
  • এরপর আপনি একটা আইডিয়া পাবেন সার্ভার কিভাবে কাজ করে, এরপর আপনি AWS এর ১ বছর এর ফ্রি কিছু সার্ভিস ব্যবহার করতে পারেন এরপর আস্তে আস্তে বিভিন্ন ক্লাইয়েন্ট বা প্রজেক্টের জন্য বিভিন্ন সার্ভিস ব্যবহার করে করে অভিজ্ঞতা অর্জন করতে পারেন। যেমনঃ
    • S3
    • EC2
    • RDS, etc.

সঠিক মেন্টরিং

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

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

এর পাশাপাশি আপানরা নিজেও বিভিন্ন ব্লগ পড়তে পারেন অনালাইনে যেখান থেকে অনেক কিছু টুকরো টুকরো শেখা যায় যা পর্বরতীতে কাজে লাগে।

একঘেয়ে ভাবে না থেকে মাঝে মধ্যে টিম পরিবর্তন

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

এছাড়া আপনারা যারা অনেক অভিজ্ঞ আছেন তাদের অভিজ্ঞতা শেয়ার করতে পারেন, আমিও জানতে চাই আপনাদের অভিজ্ঞতা। বানান ভুল হলে ক্ষমাপ্রার্থী।

8 Likes