"হাই, অ্যামিগো!"

"হাই, বিলাবো!"

"আজ আমি আপনাকে বলতে যাচ্ছি কিভাবে প্রোগ্রাম সাধারণত বিকশিত হয়।"

"20 শতকে, যখন আধুনিক আইটি তার শৈশবকালে ছিল, তখন সবাই মনে করেছিল যে প্রোগ্রামিং নির্মাণ বা উত্পাদনের মতো।"

"জিনিস সাধারণত এই মত কিছু হয়েছে:"

" গ্রাহক তার প্রয়োজনীয় প্রোগ্রামের ধরণ ব্যাখ্যা করবে - এটি কী করা উচিত এবং এটি কীভাবে করা উচিত।"

" ব্যবসায়িক বিশ্লেষকরা তার কথা শুনবেন এবং তিনি যা বলেছেন তার উপর ভিত্তি করে প্রোগ্রামের প্রয়োজনীয়তার একটি সম্পূর্ণ তালিকা তৈরি করবেন।"

"তাহলে প্রকল্প পরিচালকরা এই প্রয়োজনীয়তাগুলিকে কার্যগুলিতে ভাগ করবে এবং কোন প্রোগ্রামার কোন কাজটি এবং কোন ক্রমে করবে তা নির্ধারণ করবে।"

"তাহলে প্রোগ্রামাররা কাজ করতে পারে। কখনও কখনও তারা কয়েক বছর কাজ করবে(!)।"

"তারা শেষ হয়ে গেলে, প্রোগ্রামটি পরীক্ষকদের দেওয়া হয়েছিল।"

" পরীক্ষকরা প্রোগ্রামের প্রতিটি প্রয়োজনীয়তা যাচাই করার জন্য যাবেন যে তারা বাস্তবায়িত হয়েছে এবং প্রোগ্রামটি যেভাবে কাজ করা উচিত ছিল সেভাবে কাজ করেছে।"

"যদি কিছু ভুল হয়ে যায়, পরীক্ষকরা বাগগুলি লগ করে প্রোগ্রামারদের কাছে পাঠাবে।"

"তারপর প্রোগ্রামাররা বাগগুলি ঠিক করবে এবং ফিক্সড প্রোগ্রামটি পরীক্ষকদের কাছে ফেরত পাঠাবে। এবং চক্রটি পুনরাবৃত্তি করবে।"

"যখন মূল বাগগুলি ঠিক করা হয়েছিল, তখন প্রোগ্রামটি গ্রাহককে দেওয়া হয়েছিল।"

"সত্যিই এমনই হয়েছে?"

"ঠিক আছে, অবশ্যই, আমি অনেক সরলীকরণ করেছি, তবে এটি কীভাবে করা হয়েছিল তার খুব কাছাকাছি।"

"এবং একটি প্রকল্প সত্যিই শেষ হতে দেড় বছর থেকে দুই বছর সময় নিতে পারে?"

"কখনও কখনও যদি একটি প্রকল্পের বিকাশ সত্যিই দীর্ঘ হয়, তাহলে তারা এটিকে পৃথক রিলিজে ভেঙে দেবে। প্রতি 3-6 মাসে, বিকাশকারীদের প্রোগ্রামটির কার্যকারিতার একটি নির্দিষ্ট অংশ তৈরি করতে হবে, এটি পরীক্ষা করতে হবে, এর সমস্ত বাগগুলি ঠিক করতে হবে এবং এটিকে দেখাতে হবে৷ ক্রেতা."

"প্রথম, যাতে তিনি তার ইমপ্রেশন শেয়ার করতে পারেন। এবং দ্বিতীয়ত, এবং আরও গুরুত্বপূর্ণ, যাতে তিনি প্রোগ্রামের উন্নয়নের জন্য অর্থ প্রদান করতে পারেন।"

"টাকা দিতে থাকো?"

"তখন, ডেভেলপমেন্ট প্রায়শই পরিকল্পনার চেয়ে 2-3 গুণ বেশি সময় নেয়। এবং প্রোগ্রামারদের প্রায়ই প্রতি ঘন্টায় অর্থ প্রদান করা হয়, তাই প্রোগ্রামটি 2-3 গুণ বেশি ব্যয়বহুল হয়ে ওঠে। আরও কী, সুবিধাগুলিও হ্রাস পেয়েছে। সর্বোপরি, গ্রাহকরা আজ কী চান 100,000 ডলারের জন্য 3 বছরে প্রয়োজন নাও হতে পারে - বিশেষ করে তিনগুণ দামে।"

"গ্রাহকরা কি প্রায়ই অর্থ প্রদান করতে অস্বীকার করেছিল?"

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

"কিন্তু কেন?"

"ঠিক আছে, প্রথমত, পরিকল্পনা পর্যায়ে খুব কমই জানা যায়। প্রায়শই নয়, শুরুতে, প্রোগ্রামাররা যে সমস্যার মুখোমুখি হবেন তা কেউ ভবিষ্যদ্বাণী করতে পারেনি।"

"কিন্তু অভিজ্ঞ প্রোগ্রামারদের সবকিছু আগে থেকেই দেখা উচিত ছিল, তাই না?"

"আপনি কি দেখতে পাচ্ছেন যে প্রোগ্রামিং একটি অনন্য পেশা।"

"একজন সাধারণ কর্মী প্রায়ই একই কাজ বারবার করে। ঘড়ি প্রস্তুতকারীরা ঘড়ি তৈরি করে, রাঁধুনিরা রান্না করে, শিক্ষকরা শেখায়, ডাক্তাররা চিকিৎসা করে ইত্যাদি।"

"এই পেশাদারদের প্রত্যেকেই মূলত দিনে দিনে একই কাজ করে। ফলস্বরূপ, তারা তাদের চাকরিতে আরও ভাল হতে শুরু করে।"

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

"প্রতিটি প্রোগ্রামার সাধারণত তার জীবনে একবার প্রতিটি কাজ সমাধান করে।"

"বিজ্ঞানী বা ডিজাইন ইঞ্জিনিয়ারদের মত কিছু যারা জিনিস উদ্ভাবন করে।"

"আহ. আচ্ছা, একটি প্রকল্পে সবচেয়ে গুরুত্বপূর্ণ ভূমিকা কি?"

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

" একজন পরীক্ষকের প্রাথমিক কাজ ( Q uality  A নিশ্চয়তা, QA )  হল একটি প্রোগ্রামের স্থিতি নিরীক্ষণ করা এবং তাৎক্ষণিকভাবে বাগ রিপোর্ট করা। একজন পরীক্ষক যত তাড়াতাড়ি বাগ খুঁজে পায়, তত বেশি সংশোধন করা যায়।  একজন ভালো পরীক্ষক পণ্যের গুণমানকে আরও বেশি প্রভাবিত করে। একজন ভালো প্রোগ্রামার করে ।"

"কেন প্রোগ্রামাররা তাদের নিজস্ব প্রোগ্রাম পরীক্ষা করতে পারে না। সর্বোপরি, তারা কি পরীক্ষকদের চেয়ে ভালো জানে না কী কাজ করে এবং কী করে না?"

"একজন ভাল প্রোগ্রামার একজন ভাল পরীক্ষক হতে অক্ষম। একজন প্রোগ্রামার জানেন কিভাবে প্রোগ্রামটি সত্যিই ভাল কাজ করে, তাই তিনি সবসময় এটিকে একটি নির্দিষ্ট উপায়ে ব্যবহার করেন। সাধারণ ব্যবহারকারীদের বিপরীতে যারা প্রোগ্রামটি তারা চান তবে ব্যবহার করেন। "

"অতিরিক্ত, পরীক্ষকরা এখনও কী কাজ করে না তা পরীক্ষা করে না। পরীক্ষক প্রোগ্রামের কার্যকারিতা বা অংশগুলি পরীক্ষা করে যা প্রোগ্রামার বলে যে ইতিমধ্যেই প্রায় পুরোপুরি কাজ করছে।"

"এবং যখন পরীক্ষক সেই কার্যকারিতাতে প্রচুর বাগ খুঁজে পায় এবং প্রোগ্রামার সেগুলি ঠিক করে, তখন পণ্যটি আসলে পরিপূর্ণতার কাছাকাছি যায়।"

" একজন প্রোগ্রামারের প্রাথমিক কাজ ( এস অটওয়্যার  ডি বিকাশকারী  ইঞ্জিনিয়ার,  ডি ইভলপারএসডিই ) হল নতুন কার্যকারিতা বাস্তবায়ন করা। অথবা, আরও সহজ করে বললে, তাকে বা তার কাছে অর্পিত কাজগুলি সম্পাদন করা। যখন প্রোগ্রামারদের নতুন বৈশিষ্ট্য সহ কাজ বরাদ্দ করা হয় , তারা সেগুলি সম্পাদন করে৷ যখন তাদের বাগ অ্যাসাইন করা হয়, তারা বাগগুলি ঠিক করে৷"

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

"সমস্যাটি হল যে স্থাপত্যটিকে একেবারে শুরুতে বেছে নেওয়া দরকার, তবে আপনি বিকাশের মাঝখানে না হওয়া পর্যন্ত এটি পরিষ্কার নয় যে আপনি সঠিক স্থাপত্য বেছে নিয়েছেন কিনা।"

"অতিরিক্ত, যদি আর্কিটেকচারটি সফল হয় এবং প্রোগ্রামটি দুর্দান্ত হয়ে ওঠে, তবে গ্রাহক সম্ভবত এটি প্রোগ্রামের নতুন সংস্করণগুলির ভিত্তি হিসাবে ব্যবহার করতে চাইবেন।"

"আমি যা করছি তা এখানে।"

"আপনি যে স্থাপত্যই বেছে নিন না কেন, সেখানে সর্বদা অনেক পরিবর্তন, সংযোজন এবং নতুন বৈশিষ্ট্য থাকবে যা আর্কিটেকচারের জন্য দায়ী নয়।"

"এখানে একটি ভাল উদাহরণ।"

"একজন গ্রাহক আপনাকে একটি 5-তলা বিল্ডিং তৈরি করতে বলে, তাই আপনি একটি আর্কিটেকচার ডিজাইন করুন এবং বাড়িটি তৈরি করুন।"

"তারপর গ্রাহক অন্য গল্প যোগ করতে বলে, তারপরে অন্য, এবং আরও অনেক কিছু।"

"কিন্তু প্রথম তলার দেয়াল এত ওজনের জন্য ডিজাইন করা হয়নি, এবং ভিত্তিও ছিল না। তাই সবকিছু আবার করতে হবে।"

"কিন্তু 5 তলা বিল্ডিং হয়ে যাওয়ার পরে, গ্রাহক যদি অবিলম্বে সিদ্ধান্ত নেন যে তিনি 50 তলা বিল্ডিং চান?"

"বিদ্যমান কাঠামো ভেঙে ফেলা এবং স্ক্র্যাচ থেকে সবকিছু পুনর্নির্মাণ করা সহজ হবে..."

"কিন্তু স্থাপত্যের বিষয়ে আপনার জন্য আমার একটি উপদেশ আছে।"

"একটি অ্যাপ্লিকেশনের আর্কিটেকচার অবশ্যই প্রথমে এবং সর্বাগ্রে, নমনীয় হতে হবে, যার মানে আপনি যদি অ্যাপ্লিকেশনের অর্ধেকটি পুনরায় করার সিদ্ধান্ত নেন তবে আপনাকে স্ক্র্যাচ থেকে শুরু করতে হবে না। এই ধরনের আর্কিটেকচারকে সাধারণত নমনীয় এবং মডুলার বলা হয় "

" প্রজেক্ট ম্যানেজারের প্রাথমিক কাজ হল সিদ্ধান্ত নেওয়া। প্রজেক্ট ম্যানেজার হলেন সেই ব্যক্তি যিনি বড় ছবি দেখেন এবং সেই দৃষ্টিভঙ্গির ভিত্তিতে সিদ্ধান্ত নেন।"

"ধরুন যে বিকাশের সময় এটি স্পষ্ট হয়ে যায় যে একটি নির্দিষ্ট কাজ পরিকল্পনা অনুযায়ী সম্পন্ন হবে না। প্রকল্প পরিচালক তখন করতে পারেন:"

" ক)  কাজটি সংশোধন করতে গ্রাহকের সাথে আলোচনা করার চেষ্টা করুন"

" খ)  কাজের জন্য আরও সময় বরাদ্দ করুন"

" গ)  অন্যান্য প্রকল্প থেকে আরও অভিজ্ঞ প্রোগ্রামার আনুন।"

"এবং আরও অনেক সম্ভাবনা রয়েছে।"

"প্রতিটি বিকল্পের জন্য আপনাকে কিছু ত্যাগ করতে হবে এবং ম্যানেজারের কাজ হল এই বলিদান থেকে মোট ক্ষতি কমিয়ে আনা। "

"উদাহরণস্বরূপ, ধরুন প্রতিযোগীরা লিড প্রোগ্রামারকে দ্বিগুণ অর্থের প্রস্তাব দিয়ে চুরি করে।"

"প্রকল্প পরিচালক করতে পারেন:"

" ক)  কিছুই করবেন না৷ প্রোগ্রামার চলে যাবে, এবং প্রকল্পটি সম্ভবত পিছিয়ে পড়বে এবং জরিমানা গুনতে হবে৷"

" খ)  তার বেতন দ্বিগুণ। তারপর দলের বাকি সবাইও বাড়াতে চাইবে। আপনি যদি তাদের সবাইকে বেশি টাকা দেন, তাহলে প্রকল্পের খরচ বাড়বে এবং এটি অলাভজনক হতে পারে।"

" গ)  অন্য কোন বিকল্প যা আপনি মনে করেন।"

"আমি দেখি."

"একজন খারাপ প্রকল্প পরিচালকের সাথে, একটি ভাল দল সাধারণত একটি প্রকল্পকে দীর্ঘায়িত করে, তবে সবসময় নয়।"

"গড় প্রোগ্রামারদের একটি দলের সাথে একজন ভাল ম্যানেজার প্রায় সবসময় একটি ভাল প্রোগ্রামারদের একটি দলের সাথে একটি খারাপ ম্যানেজারের চেয়ে দ্রুত একটি প্রকল্প সম্পূর্ণ করবে।"

"আমি দেখি."

"ঠিক আছে, আসুন একটি ছোট বিরতি নেওয়া যাক, তারপর আমরা চালিয়ে যাব।"