প্রোগ্রামিং ইন্টারভিউঃ কোডিং

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

x = input()
y = input()
print x / y

তখন ইন্টারভিউয়ার তোমাকে বলল, “আপনি একটা ফাংশন লিখে কাজটা করেন”। “আচ্ছা, ঠিকাছে” বলে তুমি নিচের মতো কোড লিখে ফেললে –

def division(x, y):
    return x / y

x = input()
y = input()
print division(x, y)

এবার তুমি পরিতৃপ্ত, তোমার কোড দেখতে বেশ সুন্দর হয়েছে। কিন্তু ইন্টারভিউয়ারের চেহারা দেখে বোঝা যাচ্ছে, তিনি এখনো তেমন খুশি নন। তখন তিনি জিজ্ঞাসা করলেন, আচ্ছা, y-এর মান যদি 0 হয়?

একথা বলতে না বলতেই তুমি ঝট করে নিচের কোড টাইপ করে মুচকি হাসি দিলে:

def division(x, y):
    try:
        return x / y
    except ZeroDivisionError:
        return "Can not divide by zero"

x = input()
y = input()
print division(x, y)

তুমি মনে মনে ভাবছ, “যাক, এবারের কোড বুলেট প্রুফ”। ইন্টারভিউয়ার এবারে বললেন, আচ্ছা, x-এ 5 আর y-তে 2 ইনপুট দিলে কী হবে? পাইথন (2 সিরিজে)-এ সেটার উত্তর হবে 2। কিছুক্ষণ চিন্তাভাবনা করে তুমি তোমার কোড একটু পরিবর্তন করে নিচের মতো করে লিখলে –

def division(x, y):
    try:
        return x * 1.0 / y
    except ZeroDivisionError:
        return "Can not divide by zero"

x = input()
y = input()
print division(x, y)

এরপর আর এই কোড নিয়ে কোনো প্রশ্ন রইল না। ইন্টিজার ও রিয়েল নাম্বারের জন্য এই কোড কাজ করবে। তুমি ইন্টারভিউ দিয়ে খুশিমনে বাড়ি ফিরে গেলে। কিন্তু কয়েকদিন পরে ইমেইল পেলে যে ওরা তোমাকে নিচ্ছে না। কারণ এই ছোট কোড ঠিকভাবে লিখতে যদি এত সাহায্যের প্রয়োজন হয়, তাহলে আরেকটু বড় কাজ তোমার হাতে দেওয়ার ভরসা ঠিক তোমার টিম লিডার করতে পারবেন না (এই কথা অবশ্য ইমেইলে লেখা থাকবে না)। আর হ্যাঁ, ওপরের কোডে ভ্যারিয়েবলের নামও আরো ভালোভাবে দেওয়া যেত। x-এর বদলে numerator বা num এবং y-এর বদলে denominator বা denom। কারণ অর্থপূর্ণ ভ্যারিয়েবল নামকরণও অনেক গুরুত্বপূর্ণ জিনিস। সাথে এক লাইন কমেন্ট যোগ করে দিলে ইন্টারভিউয়ার আরো খুশি হতেন।

def division(numerator, denominator):
    """ Divides numerator by denominator. In case the denominator is    zero, it returns None 
    """
    try:
        return numerator * 1.0 / denominator
    except ZeroDivisionError:
        print "Can not divide by zero"
        return None

আশা করি তোমরা ইন্টারভিউতে প্রশ্ন শুনেই কোডিংয়ে ঝাঁপিয়ে পড়বে না। তাই তোমার জন্য টিপস্ হচ্ছে –

  • প্রশ্ন বুঝেছ কী না, চিন্তা করবে, কোনো জিজ্ঞাসা থাকলে প্রশ্ন করবে,
  • প্রোগ্রামের কর্নার কেসগুলো চিন্তা করবে এবং যথাযথ কোডিং করবে,
  • ভ্যারিয়েবলের নামকরণ ভালোভাবে করবে
  • দরকার হলে কমেন্টও লিখবে

 

Facebook Comments

2 thoughts on “প্রোগ্রামিং ইন্টারভিউঃ কোডিং”

Leave a Reply