এই প্রশ্নে সত্যই দুটি প্রশ্ন রয়েছে, যার আলাদাভাবে সমাধান করা দরকার:
কিছু দলের কেন কঠোর বিকাশ প্রক্রিয়া থাকে?
এর সহজ উত্তর হ'ল কারণ যদি তারা না করে তবে ভুল হয়। ব্যয়বহুল ভুল। এটি বিকাশের ক্ষেত্রে সত্য এবং এটি আইটি ক্ষেত্রেও বাকি রয়েছে (সিসাদমিনস, ডিবিএ, ইত্যাদি)।
এটি অনেকগুলি বিকাশকারী এবং আইটি কর্মীদের বোঝা খুব কঠিন কারণ আমাদের বেশিরভাগ লোকরা কেবলমাত্র "চূড়ান্ত" কোনওটিতেই কাজ করেছেন - হয় বড়, কমপক্ষে এক ডজন বিকাশকারী এবং কঠোর প্রক্রিয়া অনুসরণকারী ফরচুন-স্টাইল সংস্থাগুলি, বা ছোট, মাইক্রো-আইএসভি বা এমনকি ফ্রিল্যান্স কাজ যেখানে লোকেরা কেবল খারাপভাবে স্ক্রু করে না বা স্ক্রু-আপের ব্যয়ও কম হয়।
তবে যদি আপনি কখনও এই পর্যায়গুলির মধ্যে একটি সংস্থা দেখেছেন - এমনকি উজ্জ্বল, মেধাবী আইটি কর্মী সমন্বিত একটি সংস্থা - আপনি কোনও প্রক্রিয়া না করার বা অর্ধ-অ্যাসেসড প্রক্রিয়া করার ঝুঁকিগুলি বুঝতে পারবেন। আপনি দেখুন, কর্মীদের মধ্যে যোগাযোগ একটি সম্মিলিত বিস্ফোরণ সমস্যা ভুগছে ; আপনি একবারে কোনও একক দলের প্রায় 6-10 বিকাশকারীদের পর্যায়ে পৌঁছে গেলে বড় বা সমালোচনামূলক ত্রুটির প্রাথমিক কারণটি প্রতিভা বা জ্ঞাত-দক্ষতার অভাব নয়, বরং যোগাযোগের অভাব।
অ্যালিস সোমবার সকালে প্রায় জিজ্ঞাসা করে এবং ট্রাঙ্কে পুনর্গঠনমূলক অস্ত্রোপচার করা ঠিক আছে বলে সিদ্ধান্ত নিয়েছে কারণ অন্য কেউ সে অংশটিতে কাজ করছে না। বব এক ঘন্টা পরে আসেন, তার ছুটি থেকে ফিরে এবং শক্তিতে ভরপুর এবং সিদ্ধান্ত নেন যে তিনি ঠিক একই অঞ্চলে একটি নতুন প্রধান বৈশিষ্ট্যটি প্রয়োগ করতে যাচ্ছেন, এবং কেন কোনও শাখা কেন বিরক্ত করবেন না কারণ যেভাবেই কোনওদিন এই কোডটি স্পর্শ করা হয়নি? সুতরাং অ্যালিস সেই "প্রযুক্তিগত debtণ" পরিশোধ করে দেয়, বব তার ঘাতক বৈশিষ্ট্যটি প্রয়োগ করে যা ব্যাক-বার্নারে 6 মাস ধরে ছিল এবং অবশেষে যখন তারা উভয়ই তাদের কোডটি পরীক্ষা করে (অবশ্যই শুক্রবারের সময় বন্ধ করার ঠিক আগে!), সম্পূর্ণ দলকে পিছনে থাকতে হবে এবং দ্বন্দ্বের দুঃস্বপ্নের মধ্য দিয়ে কাজ করার চেষ্টা করতে হবে যা পরের কয়েক সপ্তাহ ধরে বাগ এবং রেজিস্ট্রেশন হিসাবে অবিরত থাকে।
কোডিং কার্যগুলিতে অ্যালিস এবং বব দুজনই দুর্দান্ত কাজ করেছিলেন তবে তারা দুজনেই একটি খারাপ সিদ্ধান্ত নিয়ে শুরু করেছিলেন ("সবচেয়ে খারাপ যেটি ঘটতে পারে?")। দলের নেতৃত্ব বা প্রকল্প পরিচালক তাদের পোস্ট-মর্টেমের মাধ্যমে নিয়ে যান এবং আবার এড়াতে বাধা দেওয়ার জন্য একটি চেকলিস্ট বের করেন:
- দ্বন্দ্বের প্রভাব কমাতে চেক-ইনগুলি অবশ্যই প্রতিদিন হতে হবে;
- যে পরিবর্তনগুলি উল্লেখযোগ্যভাবে 1 দিনের বেশি সময় নেবে সেগুলি শাখাগুলিতে করা উচিত;
- সমস্ত তাত্পর্যপূর্ণ কাজ (যেমন রিফ্যাক্টরিং হিসাবে নন-বৈশিষ্ট্যযুক্ত কাজ সহ) অবশ্যই সঠিকভাবে ট্র্যাক করে বাগ ট্র্যাকারে নির্ধারিত হতে হবে।
আমি বাজি ধরব, আমাদের অনেকের কাছে এই "প্রক্রিয়া "টি সাধারণ জ্ঞানের মতো মনে হয়। এটা পুরানো টুপি। কিন্তু আপনি কি জানেন যে অনেক ছোট দল এটি করে না? দু'দলীয় দল সম্ভবত উত্স নিয়ন্ত্রণ নিয়ে মোটেই বিরক্ত করবে না। কে পাত্তা দেয়? এটি সত্যই প্রয়োজন হয় না। সমস্যাগুলি তখনই শুরু হয় যখন দল বড় হয় তবে প্রক্রিয়াটি ঘটে না।
অবশ্যই, প্রক্রিয়া অপ্টিমাইজেশন পারফরম্যান্স অপ্টিমাইজেশনের মতো; এটি একটি বিপরীত সূচকীয় বক্ররেখা অনুসরণ করে। চেকলিস্ট উপরে অপূর্ণতা 80% নিষ্কাশন হতে পারে, কিন্তু আপনি এটা বাস্তবায়ন করার পরে, আপনি যে কিছু অন্যান্য জিনিস জন্য অ্যাকাউন্ট খুঁজে অবশিষ্ট অপূর্ণতা 80%। আমাদের কল্পিত-তবে-পরিচিত উদাহরণে এটি বিভিন্ন বিল্ড এনভায়রনমেন্ট থাকার কারণে ত্রুটিগুলি তৈরি হতে পারে, যা কোনও স্ট্যান্ডার্ড হার্ডওয়্যার নেই এবং এই কারণে যে বিকাশকারীরা ওপেন-সোর্স লাইব্রেরি ব্যবহার করে যা প্রতি 2 সপ্তাহে আপডেট হয়।
সুতরাং আপনার তিনটি পছন্দ রয়েছে: হয় (ক) হার্ডওয়্যারকে মানদণ্ড করুন এবং তৃতীয় পক্ষের লাইব্রেরি ব্যবহারকে কঠোরভাবে সীমাবদ্ধ করুন, যা ব্যয়বহুল এবং উত্পাদনশীলতায় উল্লেখযোগ্যভাবে ক্ষতিগ্রস্থ হতে পারে, বা (খ) একটি বিল্ড সার্ভার স্থাপন করুন, যার জন্য সিসাদমিন গ্রুপের সহযোগিতা প্রয়োজন এবং একটি এটি পুরোপুরি বজায় রাখার জন্য পূর্ণ-সময় বিকাশকারী, বা (গ) একটি স্ট্যান্ডার্ড ভার্চুয়াল মেশিন বিতরণ করে এবং বিকাশকারীদের এটি তৈরি করতে বলার মাধ্যমে বিকাশকারীদের এটি করতে দিন। স্পষ্টতই (খ) সেরা দীর্ঘমেয়াদী সমাধান তবে (সি) নির্ভরযোগ্যতা এবং সাফল্যের আরও ভাল স্বল্প-মেয়াদী ভারসাম্য রয়েছে।
চক্রটি এগিয়ে চলেছে। আপনার দেখা প্রতিটি "নীতি" একটি বাস্তব সমস্যা সমাধানের জন্য সাধারণত প্রতিষ্ঠিত হয়েছিল। যেমন জোয়েল স্পলস্কি 2000 সালে পুরো পথটি লিখেছিলেন (পুরোপুরি আলাদা বিষয়ে আপনাকে মনে রাখবেন তবে তবুও প্রাসঙ্গিক):
আপনি যখন কোনও রেস্তোরাঁয় যান এবং আপনি এমন একটি চিহ্ন দেখতে পান যা "নো ডগস মঞ্জুরিপ্রাপ্ত নয়" বলে মনে করে আপনি মনে করতে পারেন যে এই চিহ্নটি নিখুঁতভাবে অনুমানমূলক: মিঃ রেস্তোঁরা চারপাশে কুকুর পছন্দ করে না, তাই যখন তিনি রেস্তোঁরাটি তৈরি করেছিলেন তখন তিনি সেই চিহ্নটি রেখেছিলেন।
যদি এটি ছিল সব যে যাচ্ছেন, এমন একটি "কোন সাপ" চিহ্ন হবে; সর্বোপরি, কেউ সাপ পছন্দ করে না। এবং একটি "নো এলিফ্যান্টস" চিহ্ন, কারণ তারা বসার সময় চেয়ারগুলি ভেঙে দেয়।
বাস্তব কারণে যে নিদর্শন রয়েছে ঐতিহাসিক: এটি একটি ঐতিহাসিক মার্কার ইঙ্গিত করে যে মানুষ রেস্টুরেন্টে তাদের কুকুর আনার চেষ্টা করতে ব্যবহৃত হয়।
এটি বেশিরভাগ ক্ষেত্রেই (আমি সব বলব না) সফ্টওয়্যার দলগুলির মতো: "প্রতিটি বাগ ফিক্সের জন্য আপনাকে একটি পরীক্ষার কেস যুক্ত করতে হবে" এর মতো নীতিগুলি প্রায় অদ্যাবস্থায় ইঙ্গিত দেয় যে দলটি historতিহাসিকভাবে রিগ্রেশনগুলিতে সমস্যা করেছে। যোগাযোগগুলি হ'ল সেই সমস্যাগুলির মধ্যে একটি যা প্রায়শই অক্ষমতার চেয়ে যোগাযোগ বিচ্ছেদের কারণে ঘটে। যতক্ষণ আপনি নীতিটি বোঝেন ততক্ষণ আপনি বৈধ শর্টকাট নিতে সক্ষম হবেন (যেমন আমাকে small টি ছোট বাগগুলি ঠিক করতে হয়েছিল তবে সেগুলি একই বৈশিষ্ট্যে ছিল, সুতরাং আমি তাদের 9 টির জন্য কেবল একটি পরীক্ষার কেস লিখতে পারি)।
এটি ব্যাখ্যা করে যে কেন প্রক্রিয়াগুলি রয়েছে, তবে এটি পুরো গল্প নয়। অন্য অর্ধেকটি হ'ল:
প্রক্রিয়া অনুসরণ করা এত কঠিন কেন?
এটি আসলে উত্তর দেওয়ার পক্ষে সহজ প্রশ্ন: এটি কারণ টিম (বা এর পরিচালনা) পুনরাবৃত্তিমূলক ফলাফল এবং ত্রুটিগুলি হ্রাস করতে (উপরের মতো) উপর দৃষ্টি নিবদ্ধ করে তবে সেই প্রক্রিয়াটির অপ্টিমাইজেশন এবং স্বয়ংক্রিয়তার দিকে যথেষ্ট মনোযোগ দেয়নি ।
উদাহরণস্বরূপ, মূল প্রশ্নে আমি বেশ কয়েকটি সমস্যা দেখতে পাচ্ছি:
রিভিশন কন্ট্রোল সিস্টেম (সিভিএস) আজকের মান অনুসারে উত্তরাধিকার। জন্য নতুন প্রকল্প, এটা বৈধরূপে প্রতিষ্ঠিত সরকারকে উত্খাত (SVN), যা নিজেই দ্রুত যেমন Mercurial (Hg) হিসাবে বিতরণ করা সিস্টেম দ্বারা গ্রস্ত হয়ে প্রায় পুরোটাই বাতিল করা হয়েছে। Hg স্যুইচ করা শাখাবিন্যাস এবং মার্জ করতে হবে পর্যন্ত উপরে সহজতর, এবং আমার প্রকল্পিত উদাহরণে, দৈনিক কমিট প্রয়োজন অনেক কম বেদনাদায়ক হয়ে যাবে। কোডটি এমনকি সংকলন করতে হবে না, কারণ সংগ্রহস্থল স্থানীয়; - প্রকৃতপক্ষে, অলস বিকাশকারীরা এমনকি চাইলে এই পদক্ষেপটি স্বয়ংক্রিয় করতে পারে, স্থানীয় সংগ্রহস্থলে স্বয়ংক্রিয়ভাবে পরিবর্তন আনতে একটি লগঅফ স্ক্রিপ্ট স্থাপন করে।
ভার্চুয়াল মেশিন প্রক্রিয়াটি স্বয়ংক্রিয় করতে কোনও সময় ব্যয় করা হয়নি। ভার্চুয়াল মেশিনে উত্স / লাইব্রেরিগুলি প্রাপ্ত, কনফিগার করার এবং ডাউনলোড করার সম্পূর্ণ প্রক্রিয়াটি 100% স্বয়ংক্রিয় হতে পারে। এটি আপনার স্থানীয় মেশিনে বাগ ফিক্সে কাজ করার সময় আপনি কোথাও কোনও কেন্দ্রীয় সার্ভারে চালিত একটি অযৌক্তিক প্রক্রিয়া হতে পারে (এবং কেবল একটি পরিষ্কার বিল্ডের আশ্বাস দেওয়ার জন্য ভিএম ব্যবহার করুন)।
অন্যদিকে, একটি নির্দিষ্ট স্কেলে ভিএম-প্রতি-বিকাশকারী সমাধানটি মূর্খতা পেতে শুরু করে এবং আপনার কেবল একটি অবিচ্ছিন্ন ইন্টিগ্রেশন সার্ভার থাকা উচিত। প্রকৃত উত্পাদনশীলতা বেনিফিটগুলি এখানেই আসে, কারণ এটি (বেশিরভাগ ক্ষেত্রে) পৃথক বিকাশকারীদের বিল্ডগুলি নিয়ে মোটেও চিন্তাভাবনা থেকে মুক্ত করে। পরিষ্কার ভার্চুয়াল মেশিন স্থাপনের বিষয়ে চিন্তা করার দরকার নেই কারণ বিল্ড সার্ভারটি সর্বদা পরিষ্কার থাকে।
প্রশ্নের শব্দ ("সমস্ত পদক্ষেপের সাথে টেস্টের কেস") বোঝায় যে এখানে কিছু ম্যানুয়াল পরীক্ষা চলছে। এটি আবার তুলনামূলকভাবে কম কাজের বোঝা সহ ছোট দলগুলির পক্ষে কাজ করতে পারে তবে বৃহত্তর স্কেল এ মোটেই বোঝা যায় না। রিগ্রেশন টেস্টগুলি স্বয়ংক্রিয়ভাবে করা উচিত এবং হওয়া উচিত; কোনও "পদক্ষেপ" নেই, ইউনিট / ইন্টিগ্রেশন টেস্ট স্যুটে কেবল একটি শ্রেণি বা পদ্ধতি যুক্ত হয়েছে।
বলা বাহুল্য, বাগজিলা থেকে নতুন (আরও ভাল) বাগ ট্র্যাকিং সিস্টেমে যাওয়া অভিজ্ঞতার সেই অংশটিকে অনেক কম বেদনাদায়ক করে তুলবে।
সংস্থাগুলি কেবল এই সমস্যাগুলি সমাধান না করার কারণে অগত্যা সস্তা বা বোকা নয়। তারা সকলেই জানেন যে বর্তমান প্রক্রিয়াটি কাজ করে এবং কিছু ক্ষেত্রে তারা ঝুঁকি-প্রতিরোধী এবং এ সম্পর্কে কোনও পরিবর্তন করতে নারাজ। কিন্তু সত্যিই তারা শুধু বিশ্বাস করা প্রয়োজন সুবিধা ।
বিকাশকারীরা যদি নন-কোডিংয়ের সমস্ত কাজে তাদের সময় ট্র্যাক করতে একটি সপ্তাহ ব্যয় করে থাকে, তবে আপনি সহজেই এটি যুক্ত করতে পারেন, পরিচালনাটি দেখান যে (উদাহরণস্বরূপ) মার্কুরিয়ালে আপগ্রেডে শূন্য-মূলধন, 100-মানুষ-ঘন্টা বিনিয়োগ হবে মার্জ সংঘাতগুলি সমাধান করার জন্য প্রতি সপ্তাহে 10 টি ম্যান-ঘন্টা নির্মূল করুন, তারপরে এটি 10-সপ্তাহের বেতন এবং তারা অবশ্যই এতে সম্মত হবে। বিল্ড সার্ভার (সিআই) বা আরও ভাল বাগ ট্র্যাকিংয়ের ক্ষেত্রে একই ধারণা।
পুনরুদ্ধার করার জন্য: দলগুলি এখনও এই জিনিসগুলি করেনি কারণ কেউই ম্যানেজমেন্টকে বোঝায় নি যে এটি করা এখন যথেষ্ট গুরুত্বপূর্ণ । সুতরাং উদ্যোগ গ্রহণ করুন এবং এটিকে ব্যয়-বেনিফিট সমীকরণে রূপান্তর করুন; ন্যূনতম ঝুঁকি নিয়ে সরলীকরণ / স্বয়ংক্রিয় করতে পারে এমন কার্যগুলিতে কতটা সময় ব্যয় করা হবে তা সন্ধান করুন এবং একটি নতুন সরঞ্জাম বা কৌশলটির বিরতি-বিন্দু এবং শেষ অবধি গণনা করুন। যদি তারা এখনও শোনেন না, তবে আপনার বাকি বিকল্পগুলি কী তা আপনি ইতিমধ্যে জানেন।
বিকাশকারীরা যদি নন-কোডিংয়ের সমস্ত কাজের জন্য তাদের সময় ট্র্যাক করতে একটি সপ্তাহ ব্যয় করে থাকে তবে আপনি সহজেই এটিকে যুক্ত করতে পারেন, পরিচালনাটি দেখিয়ে দিতে পারেন ... এবং এটিকে ব্যয়-বেনিফিট সমীকরণ ইত্যাদিতে রূপান্তর করতে পারেন ...
উপরের অংশটি আরও প্রসারণযোগ্য মনে হচ্ছে।
আমি নিশ্চিত করতে পারি যে এটি কাজ করে। আমি যে প্রকল্পগুলিতে কাজ করেছি তার মধ্যে প্রোগ্রামাররা এটি কয়েকবার ব্যবহার করেছিল এবং প্রতিবার এটি পছন্দসই পরিবর্তনের দিকে পরিচালিত করে।
আমার সামগ্রিক ছাপ ছিল যে যদি অধিকার সম্পন্ন, এই কৌতুক Er করতে অগ্রাহ্য ব্যবস্থাপনা অজ্ঞতা এবং নিষ্ক্রিয়তা বেশ ভারী পরিমাণে।
আমি লক্ষ করতে চাই যদিও সেই সংস্থা যেখানে আমাদের (বিকাশকারীদের) এই জাতীয় DIY পদ্ধতির অবলম্বন করতে হয়েছিল এটি ছিল অপরিণত IT- বুদ্ধিমান। আরও পাকা সফ্টওয়্যার বিক্রেতাগুলিতে আমি এমন জিনিস দেখতে পেলাম যা বেশিরভাগ পরিচালকরা নিজেরাই করে থাকেন। এবং একটি নিয়ম হিসাবে তারা আমাদের প্রোগ্রামারদের চেয়ে এতে বেশি উত্পাদনশীল ছিল। আরও অনেক উত্পাদনশীল।