একজন ভালো প্রোগ্রামার হতে চাইলে

একজন ভালো প্রোগ্রামার হওয়ার জন্যে যে বিষয়গুলো আমার কাছে গুরুত্বপূর্ণ মনে হয় সেগুলো হল:

  1. যেকোনো একটা অবজেক্ট ওরিয়েন্টেড লাঙ্গুয়েজ ভালো করে শিখতে হবে। যেমন C++, Java, Python ইত্যাদি। (একটা ভালো করে শিখলে বাকিগুলো পরে দরকার পড়লে সহজেই শিখে ফেলা যাবে)
  2. ডাটা স্ট্রাকচার ভালো করে বুঝতে হবে অর্থাৎ কোন জায়গায় কোন ধরনের ডাটা স্ট্রাকচার ব্যবহার করতে হবে সেসব বিষয়ে ধারণা থাকতে হবে এবং খুব কমন ডাটা স্ট্রাকচার গুলো যেমন লিস্ট বা হ্যাশম্যাপ কিভাবে ইমপ্লিমেন্ট করা যায় তা জানতে হবে।
  3. অ্যালগরিদম এর উপর ভালো জ্ঞান থাকতে হবে। বিভিন্ন কমন অ্যালগরিদম গুলো জানতে বুঝতে ও অ্যাপ্লাই করতে শিখতে হবে।
  4. টাইম ও স্পেস কমপ্লেক্সিটি কি এবং কি কারণে এগুলো গুরুত্বপূর্ণ সেটা বুঝতে হবে এবং যেকোনো একটা প্রোগ্রাম এর টাইম ও স্পেস কমপ্লেক্সিটি বের করতে জানতে হবে।
  5. কনকারেন্ট প্রোগ্রামিং, থ্রেড, মিউটেক্স, সেমাফোর, রেস কন্ডিশন বুঝতে হবে।
  6. অপারেটিং সিস্টেম এর বিভিন্ন কনসেপ্ট যেমন স্কেজুলিং, ফাইল সিস্টেম সম্পর্কে ধারণা থাকতে হবে।
  7. লাস্ট বাট নট দা লিস্ট: problem solving ability (এটি যেকোনো সফটওয়্যার ইঞ্জিনিয়ার এর core গুণাবলির একটি)

এখন আসা যাক কি করলে এসব ভালো ভাবে শিখতে পারা যাবে:

  1. কম্পিটিটিভ প্রোগ্রামিং।
    • বিভিন্ন কনটেস্ট যেমন ACM icpc, Google Codejam এ অংশগ্রহণ করলে একই সাথে অনেক কিছু শেখা যাবে আবার সেগুলো অনুশীলন ও করা হয়ে যাবে।
  2. ভালো প্রোগ্রামারদের কোড দেখে শিখতে হবে।
    • যেমন আমি Google Codejam এর প্রথম দিকে থাকা contestant দের সলিউশন গুলো ডাউনলোড করে বোঝার চেষ্টা করতাম যে তারা কেন কোন ডাটা স্ট্রাকচার ব্যবহার করেছে।
  3. ভালো বই পড়তে হবে।
    • ইদানিং বাংলাতেও প্রোগ্রামিং এর উপর অনেক ভালো বই বের হচ্ছে। যেমন Tamim Shahriar Subeen ভাই এর বা Jhankar Mahbub ভাই এর বই গুলো দিয়ে শুরু করা যেতে পারে। আবার ইংরেজি বুঝতে সমস্যা না হলে Head First সিরিজ এর বই গুলো পড়ে দেখা যেতে পারে। এছাড়াও অ্যালগরিদম এর বিভিন্ন ভালো বই পড়তে হবে। আর যেকোনো ইন্টারভিউ এর জন্যে Cracking the coding interview বইটা সবার অবশ্যই একবার পড়ে দেখা উচিৎ।
  4. YouTube.
    • আজকাল প্রায় সবকিছুই ইউটিউব থেকে শিখতে পারা যায়। যেমন আমার প্রোগ্রামিং শেখার শুরু TheNewBoston এর ইউটিউব এর ভিডিও গুলো দেখে। আর Harvard CS50, MIT Introduction to Algorithm এর ভিডিও গুলো তো এককথায় অসাধারণ।
  5. প্রাকটিস।
    • এটার কোন বিকল্প নেই। Leetcode, HackerRank, Codeforces, URI তে বিভিন্ন প্রবলেম গুলো সলভ করতে হবে। এতে অনেক নতুন কিছু শিখতেও পারা যাবে।

এর পরে আরও কিছু মনে পড়লে আপডেট করে দিব।

[বি: দ্র: উপরের সবগুলোই আমার ব্যক্তিগত মতামত, কারো সাথে না মিললে আমার কিছু করার নাই 😛]