পোস্ট
কারুশিল্পে দক্ষতা অর্জন: একজন সিনিয়র সফটওয়্যার ইঞ্জিনিয়ারের অপরিহার্য দক্ষতা
৩১ অক্টোবর, ২০১২ • 4 মিনিট পড়া

যখন আমি “সিনিয়র ডেভেলপার” শুনি তখন আমি এমন কাউকে চিন্তা করি যিনি প্রোগ্রামিংয়ে দক্ষতা অর্জন করেছেন। আমি এমন একজন ব্যক্তির কথা চিন্তা করি যিনি একটি সিস্টেম ডিজাইন, কোড এবং পরীক্ষা করতে পারেন। তারা সিস্টেম আর্কিটেকচার বা কম্পোনেন্ট ডিজাইন সম্পর্কে কথা বলতে পারেন। তারা ডিজাইন প্যাটার্ন বোঝেন এবং ব্যবহার করেন। এই ব্যক্তি পারফরম্যান্স বটলনেক অনুমান করতে পারেন, কিন্তু প্রাক-অপ্টিমাইজেশন না করতে জানেন। এই ব্যক্তি অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং, কিউয়িং, ক্যাশিং, লগিং, নিরাপত্তা এবং স্থায়িত্ব ব্যবহার করবেন যখন উপযুক্ত। যখন জিজ্ঞাসা করা হয় তারা তাদের পছন্দ এবং পেশা এবং বিপক্ষের বিস্তারিত ব্যাখ্যা দিতে পারেন। বেশিরভাগ ক্ষেত্রে তারা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এবং ডিজাইনে দক্ষতা অর্জন করেছেন, এটি একটি পরম নয় অন্যান্য ভাষা যেমন জাভাস্ক্রিপ্ট, F#, স্কিম শক্তিশালী এবং হৃদয়ে অবজেক্ট-ওরিয়েন্টেড নয়। তারা ঝুঁকি ব্যবস্থাপনায় দক্ষ এবং সবচেয়ে গুরুত্বপূর্ণভাবে তারা উপরোল্লিখিত বিষয়গুলি তাদের সমবয়সীদের কাছে যোগাযোগ করতে পারেন।
দক্ষতা কী? একটি সাধারণভাবে গৃহীত ধারণা রয়েছে যে যেকোনো একটি দক্ষতায় দক্ষতা অর্জনের জন্য মানব শরীর এবং মনকে একটি দক্ষতা আয়ত্ত করতে এবং অভ্যন্তরীণ করতে ১০,০০০ ঘন্টার পুনরাবৃত্তি প্রয়োজন। এটি ম্যালকম গ্ল্যাডওয়েলের বই আউটলায়ার্স-এ দীর্ঘ আকারে লেখা হয়েছে।
ম্যালকম গ্ল্যাডওয়েলের আউটলায়ার্সের কিছু উদাহরণ হল:
মোজার্ট তার প্রথম কনসার্টো ২১ বছর বয়সে। যা প্রথমে তরুণ মনে হয়, কিন্তু তিনি ১১ বছর বয়স থেকে সঙ্গীত লিখছিলেন।
দ্য বিটলস প্রাথমিকভাবে প্রত্যাখ্যাত হয়েছিল। তাদের বলা হয়েছিল তাদের কাছে সরিষা নেই এবং তাদের কাজের একটি ভিন্ন লাইন বিবেচনা করা উচিত। তারা জার্মানিতে ৩ বছর কাটিয়েছিল বিভিন্ন স্থানে প্রায় ১২০০ বার পারফর্ম করেছিল, প্রতিবার ৫ থেকে ৮ ঘন্টা দীর্ঘ। তারা আজ যে বিটলস হিসাবে পুনরায় আবির্ভূত হয়েছিল।
এবং সবশেষে, বিল গেটস ২০ বছর বয়সে হার্ভার্ড থেকে ঝরে পড়ে মাইক্রোসফট প্রতিষ্ঠা করেছিলেন। কিছু মানুষের কাছে এটি মূর্খতা মনে হতে পারে, কিন্তু ২০ বছর বয়সে তিনি তার তরুণ জীবনের প্রায় অর্ধেক প্রোগ্রামিং করেছিলেন। ১৯৭৫ সালে, বিশ্বে সম্ভবত মাত্র ৫০ জন তার মতো অভিজ্ঞতা ছিল। তার অভিজ্ঞতা তাকে মাইক্রোসফটে ভবিষ্যত দেখার দূরদর্শিতা দিয়েছিল।
পিটার নরভিগ তার প্রবন্ধ “দশ বছরে নিজেকে প্রোগ্রামিং শেখান”-এ ১০,০০০ ঘন্টার নিয়মটি আলোচনা করেন।
বই জর্জ লিওনার্ড দ্বারা দক্ষতা-তে, একটি দক্ষতা আয়ত্ত করার উপায় সম্পর্কে বিস্তারিত বিবরণ দেওয়া হয়েছে। একজনকে বারবার বারবার দক্ষতা অনুশীলন করতে হবে। যত বেশি পুনরাবৃত্তি, আপনি প্রতিটি পুনরাবৃত্তিতে পার্থক্য সম্পর্কে আরও সচেতন হয়ে ওঠেন। শুধুমাত্র এই অন্তর্দৃষ্টির সাথে আপনি আরও ভাল হতে পারেন।
সফটওয়্যার শিল্পের শিরোনাম (জুনিয়র, মিড-লেভেল এবং সিনিয়র) বিভ্রান্তিকর এবং সংস্থা থেকে সংস্থায় অসামঞ্জস্যপূর্ণ। আমি এমন কোম্পানিগুলির সাথে কাজ করেছি যারা একজন সিনিয়র ডেভেলপারকে এমন কাউকে সংজ্ঞায়িত করেছিল যার ৫ বছর বা তার বেশি অভিজ্ঞতা ছিল। অভিজ্ঞতার গুণমান সম্পর্কে কোনো উল্লেখ নেই, শুধু যে তারা ৫ বছর ধরে কম্পিউটারের সামনে বসেছিল। এই লোকদের সাথে কাজ করার সময় তাদের অনেকেই এখনও অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং বোঝেনি, তবুও তাদের সিনিয়র ডেভেলপার হিসাবে বিবেচনা করা হয়েছিল।
একজন সফটওয়্যার ইঞ্জিনিয়ারের দক্ষতা পরিমাপ করার জন্য একটি ভাল আরও উদ্দেশ্যমূলক উপায় থাকতে হবে। জন হাউগেল্যান্ড একটি কম্পিউটার প্রোগ্রামারের দক্ষতা ম্যাট্রিক্স নিয়ে এসেছেন। এটি একটি প্রোগ্রামারের দক্ষতা স্তর পরিমাপ করার একটি সাধারণ, উদ্দেশ্যমূলক উপায় দেয়, যা অন্যথায় বেশিরভাগ অন্ত্রের অনুভূতির জন্য রেখে যায়।
সফটওয়্যার ইঞ্জিনিয়ারদের দিকে তাকিয়ে আমি দক্ষতার ৪টি স্তর দেখি: লুমিনারি, সিনিয়র, মিড-লেভেল এবং জুনিয়র।
লুমিনারি (১০+ বছর) এমন একজন যিনি একটি দক্ষতায় দক্ষতা অর্জন করেছেন এবং তাদের নিজ নিজ শৃঙ্খলা উন্নত করার জন্য নিয়োজিত হয়েছেন। কিছু উদাহরণ অন্তর্ভুক্ত: টেড নিওয়ার্ড, আঙ্কেল বব মার্টিন, ডোনাল্ড কনুথ, ওরেন ইনি, পিটার নরভিগ, লিনাস টরভাল্ডস। এটি আপনার দক্ষতা সেটের উপর নির্ভর করে পরিবর্তন হতে পারে।
সিনিয়র (৭ থেকে ১০+ বছর, স্তর ৩) এমন একজন যিনি গত ১০,০০০ ঘন্টা একটি নির্দিষ্ট ঘরানায় প্রোগ্রামিং করেছেন। ডিজাইন প্যাটার্নের একটি শক্তিশালী বোঝাপড়া রয়েছে, তারা অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং, কিউয়িং, ক্যাশিং, লগিং, নিরাপত্তা এবং স্থায়িত্ব ব্যবহার করেন যখন উপযুক্ত।
এটি সম্ভব যে একজন সিনিয়র কখনও লুমিনারিতে পৌঁছাবে না। লুমিনারিরা প্রায়শই কথা বলা এবং লেখা পাওয়া যায়। তারা সক্রিয়ভাবে তাদের শৃঙ্খলাকে প্রভাবিত করার চেষ্টা করছে।
মিড-লেভেল (৪ থেকে ৬ বছর, স্তর ২) এমন একজন যিনি দিনের পর দিন প্রোগ্রামিং বোঝেন। তারা স্বাধীনভাবে কাজ করেন এবং শক্তিশালী সমাধান তৈরি করেন। তবে তারা এখনও বড় বা জটিল সিস্টেম তৈরি বা রক্ষণাবেক্ষণের অভিজ্ঞতা অর্জন করেননি। সাধারণভাবে মিড-লেভেল ডেভেলপাররা কম্পোনেন্ট স্তরের উন্নয়নে দুর্দান্ত।
জুনিয়র (১ থেকে ৩ বছর, স্তর ১) এমন একজন যিনি প্রোগ্রামিংয়ের মূল বিষয়গুলি বোঝেন। তাদের কাছে সফটওয়্যার ইঞ্জিনিয়ারিং বা কম্পিউটার বিজ্ঞানে ডিগ্রি রয়েছে বা তারা স্ব-শিক্ষিত। তাদের কোড ক্রমাগত পর্যালোচনা করা হয়। অ্যালগরিদম, রক্ষণাবেক্ষণযোগ্যতা এবং কাঠামো সম্পর্কে নির্দেশনা দেওয়া হয়।
লেখক: চাক কনওয়ে একজন এআই ইঞ্জিনিয়ার যার কাছে প্রায় ৩০ বছরের সফটওয়্যার ইঞ্জিনিয়ারিং অভিজ্ঞতা রয়েছে। তিনি ব্যবহারিক এআই সিস্টেম তৈরি করেন—কন্টেন্ট পাইপলাইন, অবকাঠামো এজেন্ট এবং সরঞ্জাম যা বাস্তব সমস্যার সমাধান করে—এবং তার শেখার বিষয়গুলি শেয়ার করেন। তার সাথে সোশ্যাল মিডিয়ায় সংযোগ করুন: X (@chuckconway) অথবা তাকে YouTube এবং SubStack এ দেখুন।