# Agile Speccing: लेखन विशेषता स्पेक्ट्स कि वास्तव में काम करता है

<!--category-- Software Development, Documentation, Agile -->
<datetime class="hidden">2025-11-11T11:30</datetime>

# परिचय

वर्षों के दौरान मैंने पढ़ा है।

यहाँ मैं माइक्रोसॉफ्ट में सीखा कुछ है कि मैं स्पेक्ट्स के बारे में सोचने को बदल गया **एक विनिर्दिष्ट ग्रन्थ नहीं है** किसी भी उपकरण की तरह, आप इसे काम करने के लिए उपयोग करते हैं।

एक विशेषता को एक पवित्र वस्तु के रूप में व्यवहार करें।

विशेषताओं के लिए यह एजील दृष्टिकोण एक विशिष्ट चुनौतियां निर्मित करता है

सामान्य रूप से एक सिद्धांत मैं'में अपने कैरियर में जीता है।

**बुनियादी तौर पर एक विशेषता स्पेक्ट एक बेहतर विशेषता बनाने के लिए वार्तालाप उपकरण है नहीं एक सिद्धांतात्मक**

[TOC]

## क्यों एजील ( और क्या वास्तव में इसका मतलब है

एजील यह है-’ स्थैंड नहीं है, - ऊपर और चिपचिपा नोट्स **अनिश्चितता में सही बात बनाने के लिए आर्थिक रणनीति**. प्रजातियां उस अनिश्चितता के भीतर रहते हैं, इसलिए उन्हें भी गतिशील होना चाहिए [त्वरित घोषणापत्र](https://agilemanifesto.org/)इसे उत्पाद विकास के लिए डिज़ाइन पैटर्न के रूप में सोचें।

### प्रथम सिद्धांत

* **परिवर्तन डिफ़ॉल्ट है** बाजार खिसकते हैं, उपयोगकर्ता आपको आश्चर्य देता है
* **सीखना भविष्यवाणी करता है** आप वास्तविक आवश्यकताओं को तभी पता चलता है जब मानव वस्तु को छुपाते हैं *सस्ती और तेजी से*.
* **वीरता के ऊपर प्रवाह** Small, continuous moves beat large , infrequent M SK2big bang” dropsMSC4

### अर्थशास्त्र

* **गलत होने की लागत कम करें** छोटा चक्र + हल्के वजन स्पेक्ट्स का अर्थ होता है कि बुरे विचार छह सप्ताह के निर्माण के बाद के बजाय तेजी से मर जाते हैं
* **विलंब अपरिवर्तनीय निर्णय** विकल्पों को अंतिम उत्तरदायी समय तक खुला रखें
* **आंकड़ा कम करें** अर्द्धः-लिखित महाकाव्य और विशाल खंडों का निर्माण किया गया है।

### फीडबैक लूप उत्पाद हैं

प्रत्येक लूप के बीच दूरी कम करता है “

* **स्पेक ⇄ Dev:** कोड उन्हें सीमेंट करने से पहले असंभवियों को पकड़ें
* **Dev ⇄ QA:** स्वीकृत मानदंडों को निष्पादनीय जांच में बदलें.
* **आंतरिक कुत्ता आहार ⇄ उपयोक्ता** यह एक वास्तविक समस्या को हल करता है साबित करें

> प्रत्येक लूप के बाद स्पेक्ट अद्यतन करें. परिवर्तन लॉग है *जो कुछ आपने सीखा है उसकी कहानी*.

# क्या एक अच्छा विशेषता विशिष्ट बनाता है

## समस्या

विशेषताओं को लिखने के लिए एकल सबसे महत्वपूर्ण सिद्धांत **हमेशा समस्या से शुरू करें**

यह पैटर्न सरल है

1. **समस्या** क्या उपयोगकर्ता अनुभव कर रहे हैं क्या पीड़ा है
2. **समाधान** यहाँ यह है कि कैसे हम इसे सुधारने का प्रस्ताव करते हैं
3. **क्षेत्र में** क्या हम इस स्पेक्ट में कर रहे हैं
4. **क्षेत्र से बाहर** - हम क्या कर रहे हैं-' स्पष्ट रूप से नहीं कर रहे है।

मैंने अनगिनत विनिर्दिष्टियाँ देखी हैं जो सीधे "प्रयोक्ता बटन X को क्लिक करता है जो API Y को बुलाता है, बिना कभी यह स्पष्ट करने के कि उपयोक्ता वास्तव में क्या प्राप्त करने की कोशिश कर रहा है

याद रखें विकासकर्ता विशेषता निर्माण मशीन हैं सचमुच (कोड विशेषताओं को प्रदान करने के लिए उपकरण है *कार्य करना* यह कैसे करने के लिए नहीं है-.-यदि आपके पास एक UX व्यक्ति है जो UX स्पेक्ट के लिए जिम्मेदार है तो डेव और वे एक साथ काम करना चाहिए। *उपयोगकर्ता के लिए* जो बदल सकता है और कोई भी बदलाव के लिए दबाव डालने के लिए सशक्त हो जाता है ( स्पेक्टिक में ) और उस समीक्षा प्रक्रिया का विचार परीक्षण करने के लिए

```mermaid
flowchart TD
    A[Feature Idea] --> B[Spec / Proposal]
    B --> C[Visuals: Flowcharts, Figma, UI Mockups]
    C --> D[Implementation]
    D --> E[Internal Testing]
    E --> F[Feedback Loop]
    F -->|Refine| B
    F -->|Ship| G[Release to Users]
    G --> H[User Feedback]
    H -->|Iterate| B
```

## उद्देश्य की स्पष्टता

कार्यान्वयन के बारे में एक शब्द लिखने से पहले आपको एक प्रश्न का उत्तर देना होगा **क्यों**

हम इस का निर्माण क्यों कर रहे हैं?

एक अच्छा स्पेक्ट के साथ शुरू होता है:

1. **समस्या विवरण** क्या है?
2. **उपयोगकर्ता प्रभाव** - कौन परवाह करता है और क्यों?
3. **सफलता मानदंड** हम कैसे जानते हैं कि हम इसे हल किया है
4. **गैर** क्या हम स्पष्ट रूप से नहीं कर रहे हैं

## विस्तृतता का सही स्तर

यह है जहाँ अधिकतर स्पेक्ट्स Tits जाएँ।

चाल यह है कि निर्दिष्ट करें **क्या** बिना विहित करने के होने की जरूरत है **कैसे** ऐसा होता है

**अच्छा**जब कोई उपयोगकर्ता अवैध डेटा के साथ एक फ़ॉर्म प्रस्तुत करने का प्रयास करता है, तो उन्हें तुरंत प्रतिक्रिया प्राप्त करनी चाहिए जिसमें यह सूचित किया जाए कि कौन से क्षेत्रों में सुधार की जरूरत है

**खराब**: "प्रपत्र प्रस्तुत करने पर\,प्रस्तुत बटन\'s onClick ह्यान्डलर को validateForm का आह्वान करना चाहिए\M SK4 जो फ़ॉर्म के माध्यम से प्रतिवर्तित होता हैFields एरे प्रत्येक क्षेत्र की जाँच करता है\MSC5उसकी वैधता के विपरीत मान\MST6\regex गुण और यदि कोई त्रुटि हो तो दिखाएँ त्रुटियाँ दिखाने के लिए पुकारा जाना चाहिए

पहला मुझे बताता है कि उपयोगकर्ता अनुभव क्या होना चाहिए।

<img src="https://media.tenor.com/la1K-_RBV0cAAAAi/chick-stab-chick.gif" />
## तस्वीरों का उपयोग करें / फ्लोcharts; बिंदु को पार करें

आपको याद रखें-'-आप लोगों को समझाने की कोशिश कर रहे हैं कि आप क्या सिफारिश कर रहे है। *सुनिश्चित करने के लिए आप को समझ रहे हैं*किसी भी उपकरण का उपयोग करें जो आप की जरूरत है

[एक विकी मरमीड में ग्राफ़्स इस के लिए महान हैं ](https://www.mostlylucid.net/blog/category/Mermaid)याद AI इन बनाने में भी एक पाठ विवरण दिए जाने पर महान है

कुछ लोग लिखित वर्णनों को विश्लेषण कर सकते हैं

```mermaid
flowchart LR
A[User on Profile Page] --> B[Click 'Add Profile Picture']
B --> C[Upload Dialog Opens]
C --> D[Select Image File]
D --> E[Preview + Crop Options]
E --> F{User Confirms?}
F -->|Yes| G[Profile Updated with New Picture]
F -->|No| C
G --> H[User Sees Updated Profile]
```

## किनारे केस और त्रुटि प्रबंधन

अगर वहाँ एक बात है मैं यह सीखा हूँ **उपयोगकर्ताओं को अपने शूटी को तोड़ने के लिए तरीके ढूंढेंगे कि आप कभी कल्पना नहीं की थी**

एक अच्छा स्पेक्ट केवल खुशी के रास्ते का वर्णन नहीं करता है

- क्या होता है जब नेटवर्क मध्य में विफल हो जाता है
- क्या है यदि उपयोक्ता के पास कोई अनुमतियाँ नहीं हैं
- समवर्ती संशोधनों के बारे में क्या
- हम वितरित संक्रियाओं में आंशिक विफलताओं को कैसे निपटाते हैं

आपको इन सबको स्पेक्ट में हल करने की ज़रूरत नहीं है, लेकिन आपको यह मानना होगा कि वे मौजूद हैं।

बहुत से लोगों के लिए यह ' संभव है कि वे \' इस स्पेक्ट के लिए क्षेत्रफल से बाहर हैं \ . आप हो सकता है | ' | तकनीकी स्पेक्ट्स |' | जो कार्यान्वयन विवरण और तकनीकी समाधानों की विस्तृत जानकारी देता है

## सुरक्षा और निष्पादन विचार

इन को कोड की समीक्षा के दौरान पीछे विचारों में शामिल नहीं किया जाना चाहिए।

इसी प्रकार, यदि निष्पादन संबंधी बाधाएं हों तो यह खोज करने के लिए 200ms में पूर्ण करना आवश्यक है।

# एक अच्छे प्रजाति का संरचना

यहाँ मैं विशेषता स्पेक्ट्स के लिए उपयोग करता हूँ टेम्प्लेट है

## 1. सारांश

एक या दो पैराग्राफ जो हम क्या बना रहे हैं और क्यों यह महत्वपूर्ण है summarising what we're building and why it matters. Your CEO should be able to read just this section and understand the value

## पृष्ठभूमि

वर्तमान स्थिति क्या है?

यह मिला-—let **उपयोगकर्ता कहानियां** में बंधे हुए व्यक्तियों के साथ-साथ यह केवल एक जाँच सूची नहीं है बल्कि विभिन्न प्रकार के उपयोगकर्ताओं की प्रणाली से आदान-प्रदान का एक जीवित नक्शा है

---


## उपयोगकर्ता कहानियां

उपयोगकर्ता कहानियां केवल एक बक्सा नहीं हैं **वास्तविक व्यक्तियों को मूर्त रूप देना** और उनके लक्ष्यों. आप जानते हैं **इस बात का निर्माण करने के लिए पूरी बात**.
प्रत्येक कहानी को एक व्यक्ति के रूप में स्थापित करके आप स्वयं को वास्तविक उपयोग नमूने के बारे में सोचने के लिए बाध्य करते हैं

अंत में व्यक्तियों को पहचानने का एक स्वागत योग्य तरीका है कि आपका सॉफ्टवेयर किस प्रकार उपयोगकर्ताओं के विभिन्न प्रकार की सेवा कर सकता है

**एक के रूप में [persona / उपयोक्ता का प्रकार] मैं चाहता हूँ [कुछ करने के लिए [मैं कुछ लक्ष्य प्राप्त कर रहा हूँ**

 **“अर्थात** खंड निर्माण विशेषताओं के प्रति सुरक्षा है कोई भी जरूरत नहीं है

---


### उदाहरण व्यक्ति

- **एलेक्स प्रशासक** नियंत्रण के बारे में ध्यान देता है
- **जेमी casual उपयोक्ता** मान सरलता और तेजी से जीतें
- **प्रिया पावर उपयोक्ता** – सिस्टम को अपने सीमाओं तक ले जाता है
- **मोर्गन** – मार्गदर्शन की आवश्यकता है
- **स्टाकहोल्डर टेलर** – नहीं करता है, ’ सिस्टम का दैनिक उपयोग नहीं करता लेकिन परिणामों में दृश्यता की जरूरत है

---


### नमूना उपयोगकर्ता कहानियां

| पेन्सोरा | | | कहानी & #44; | | यह क्यों महत्वपूर्ण है
|---------|-------|----------------|
Alex (Administrator **प्रशासक**, मैं भूमिकाओं और अनुमतियों को सौंपना चाहता हूँ **ताकि** मैं डेटा की सुरक्षा और अनुपालन सुनिश्चित कर सकता हूँ
के रूप में **सामान्य उपयोगकर्ता**, मैं एक सरल dashboard चाहता हूँ **ताकि** मैं बिना तृप्त होने के सबसे महत्वपूर्ण सूचनाओं को शीघ्रता से देख सकता हूँ
एक के रूप में **पावर उपयोक्ता**, मैं मनपसंद कार्यप्रवाह बनाना चाहता हूँ **ताकि** मैं पुनरावर्ती कार्यों को स्वचालित कर सकते हैं और समय बचा सकता है
| मोर्गन (नया-प्रतीक |) | | **नया आने वाला**, मैं मार्गदर्शन पाठ्य और उपकरणटिप चाहता हूँ **ताकि** मैं बिना खोने की भावना के सिस्टम सीख सकता हूँ
| टेलर **हितधारक**, मैं नियमित रिपोर्टें मुझे ईमेल करना चाहता हूँ **ताकि** मैं लॉगइन किए बिना प्रगति का ट्रैक कर सकता हूँ

---


### why Personas + Stories Work Together

- **व्यक्ति अमूर्त को मानवीय बनाते हैं** इसके बजाय आप Alex के बारे में सोच रहे हैं
- **कथाएं विशेषताओं को लक्ष्यों से जोड़ती हैं** “ इसीलिए कि '”' खंड स्पष्टता को बल देता है
- **पैटर्न प्रकट होते हैं** जब आप कई कहानियों को पंक्तिबद्ध करते हैं

## 4. विस्तृत आवश्यकताएं

यह आपका मांस और आलू है।

प्रत्येक आवश्यकता के लिए विनिर्दिष्ट करें

- अपेक्षित व्यवहार
- कोई भी अवरोध या वैधीकरण नियम
- त्रुटि प्रबंधन आवश्यकताएँ
- यह मौजूदा विशेषताओं के साथ कैसे प्रतिक्रिया करता है

## 5. Non-प्रक्रियात्मक आवश्यकताएं

निष्पादन लक्ष्य, सुरक्षा आवश्यकताएंM SK1 पहुंचता मानकों, ब्राउज़रMSC3 उपकरण समर्थनMNK4 मत मानें कि ये स्पष्ट हैं–. लेकिन कुछ टीमों में ये पूरी तरह से अन्य टीमें हो सकती है।

## 6. क्षेत्र से बाहर

इस अनुभाग के रूप में जितना महत्वपूर्ण है वैसा ही क्या है

यह क्यों महत्वपूर्ण है

- **स्कोप क्राइप रोकता है** - " मगर क्या हम सिर्फ' नहीं कर सकते थे-..." जब आप क्षेत्र से बाहर अनुभाग की ओर संकेत कर सकते हैं, वार्तालाप तेजी से मर जाता है
- **उम्मीदें सेट करता है** - Stakeholders know what **won't** प्रदान किया जा सकता है (इस बार
- **भविष्य का कार्य सक्षम करता है** - यहां की वस्तुएं बाद में अपनी विशिष्टता बन सकती हैं
- **टीम को ध्यान केंद्रित करता है** सभी इस काम की सीमाओं को जानते हैं

सीमा से बाहर वस्तुओं के उदाहरण

- "मोबाइल समर्थन
- मौजूदा डेटा का स्थानांतरण
- विन्यास के लिए एडमिन यूआई ( आरंभिक रूप से विन्यास फ़ाइलों का उपयोग करेगा
- "प्रणाली X के साथ सम्मिलन

यदि कोई तर्क करता है कि एक बाहरी स्कोप मद को स्कप में होना चाहिए।

## 7. खुले प्रश्न

आप जो नहीं जानते हैं के बारे में सच्चे रहें।

## 8. निर्भरता

क्या अन्य प्रणालियों पर निर्भर करता है

## 9. स्वीकृत मानदंड

यह कैसे क्यूटी परीक्षण करेगा? ये ठोस होना चाहिए।

# स्पेक्ट बग की समस्या

यहाँ कुछ है जो नहीं करता है **स्पेक में भी बग हो सकते हैं.**

एक विशेष बग है जब विनिर्दिष्टीकरण स्वयं गलत होता है।

## स्पेक बग कैसे होता है

1. **अपूर्ण समझ** - विवरण लिखने वाला व्यक्ति समस्या या मौजूदा प्रणाली को पूरी तरह नहीं समझता था
2. **परस्पर विरोधी आवश्यकताएं** विभिन्न भागीदार अलग-अलग चीजें चाहते हैं और कोई भी संघर्ष को हल नहीं कर सका
3. **तकनीकी असंभवता** स्पेक्ट कुछ के लिए पूछता है कि क्या किया जा सकता है
4. **आवश्यकताओं को बदल रहा है** दुनिया आगे बढ़ी लेकिन स्पेक्ट नहीं मिला

## स्पेक्ट बगों को संभालना

जब आप एक विकासकर्ता के रूप में एक विशेष बग पाते हैं

### विकल्प 1: इसे तुरंत उठाएँ

यह लगभग हमेशा सही उत्तर है

स्पेक्ट के मालिक को एक स्पष्ट संदेश भेजें

- स्पेक्ट क्या कहता है
- यह क्यों समस्या है '
- क्या आप सोचते हैं कि इसके बदले में होना चाहिए (if you have a suggestion

यह लिखित रूप में करें।

### विकल्प 2: इसे किसी भी तरह लागू करें

कभी-कभी आपको बस उस चीज़ को बनाने की इच्छा हो सकती है जो विनिर्दिष्ट है, चाहे आप जानते हों **DO THIS.**

मैंने विकासकर्ताओं को यह देखा है कि वे गलत थे क्योंकि वे जानते थे कि वे स्पेक्ट्स को लागू करते हैं, क्योंकि "thatM SK2s what it said to do" और फिर जबQA इसे अस्वीकार करता है या उपयोक्ता शिकायत करते हैं तो आश्चर्य से काम करें।

अपवाद यह है कि यदि आपको इस मुद्दे को उठाया गया है, किसी भी तरह आगे बढ़ने के लिए कहा गया है।

### विकल्प 3: इसे अपने आप ठीक करें

यदि आप विश्वास रखते हैं कि आप जानते है कि स्पेक्ट क्या कहना चाहिए, तो आप इसे स्वयं ठीक करने के लिए प्रलोभित हो सकते हैं

कभी भी चुपचाप आवश्यकताओं को बदलें

## स्पेक्ट बग रोकना

सबसे अच्छा दृष्टिकोण पहले से ही स्पेक्ट बगों को रोकना है

1. **विकासकर्ताओं को जल्दी शामिल करें** विनिर्दिष्टियों की तकनीकी समीक्षा प्राप्त करें इससे पहले कि वे अंतिम हो जाएँ
2. **आरंभिकQA शामिल करें** यदि यह हो सकता है, तो यह परीक्षण नहीं किया जा सकता, यह बनाया जा सकता है।
3. **उदाहरणों को मुक्त रूप से प्रयोग करें** - सारांश विवरणों को गलत समझना आसान है
4. **मौजूदा सिस्टम के विरुद्ध वैध करें** - क्या स्पेक्ट कैसे बातें वर्तमान में काम करते हैं के बारे में अनुमान बनाता है
5. **स्पेक पर पुनरावृत्ति करें** - स्पेक्ट को एक जीवित दस्तावेज के रूप में व्यवहार करें

# सामान्य स्पेक पिटैल्स

## उपन्यास

कुछ लोग सोचते हैं कि अधिक विवरण हमेशा बेहतर है

अगर आपका स्पेक्ट युद्ध और शांति में बदल रहा है

- इसे कई विशेषताओं में तोड़ने की जरूरत है
- कार्यान्वयन विवरण निर्दिष्ट कर रहे हैं जो विकासकर्ताओं को छोड़ दिया जाना चाहिए
- गलत समस्या को हल कर रहे हैं और पीछे कदम उठाने की जरूरत है

## द वाग हांडवेव

एक रिपोर्टिंग सिस्टम बनाना।

अगर आपका स्पेक्ट एक ही वाक्य में पूरी तरह से पकड़ा जा सकता है

## समाधान-First Spec

"हम एक डैशबोर्ड की जरूरत है।

## चल रहा लक्ष्य

आवश्यकताएं जो दिन-प्रतिदिन बदलती हैं, यह नहीं है।

## रूम सिंक

"जब हम-'-में होते हैं-हम भी-हमें भी मिल सकता है।

# स्रोत कोड जैसे विशेषताओं का उपचार

यह मानसिकता परिवर्तन है कि कैसे मैं स्पेक्ट्स लिखने में बदल गया है **अपने स्पेक्ट को वैसा ही व्यवहार करें जैसा कि आप स्रोत कोड के साथ व्यवहार करते हैं**

## संस्करण नियंत्रण

आपके विवरण को आपके कोड के साथ संस्करण नियंत्रण में रहना चाहिए।

माइक्रोसॉफ्ट में हम स्पेक्ट्स को कोड के रूप में एक ही रिपोजिटर में रखते थे।

## रीफैक्टरिंग स्पेक्स

जैसे कोड को पुनरीfactoring की आवश्यकता होती है, वैसे ही स्पेक्ट्स भी होती हैं. जैसे कि आप कार्यान्वयन के दौरान अधिक सीखते हैं.

समस्या को हल करने के लिए एक बेहतर तरीका मिला? नए दृष्टिकोण को प्रतिबिंबित करने और क्यों आपने दिशा बदली समझाने के लिए स्पेक्ट अद्यतन करें

विकास के बाद स्पेक्ट विकसित करने से पहले स्पेक्ट से अधिक परिष्कृत होना चाहिए

## जीवंत दस्तावेज सिद्धांत

एक विशेषता है, जब विकास आरंभ होता है तब '\ t "\ t किया जाता है & #44; "\ t जब विकास शुरू होता है तो ,\ t यह '\ t सिर्फ इस चरण के लिए तैयार है।

इसका मतलब नहीं है कि स्पेक्ट रोज बदलना चाहिए।

इसे इस तरह सोचें

## स्पैक्स को वर्तमान में क्यों रहना चाहिए

यहाँ कुछ है जो नहीं discussed enough **आपके स्पेक्ट के बाद आने वाली सब चीज़ों का आधार बन जाता है**

**परीक्षण योजनाएं**: QA स्पेक्ट पर आधारित परीक्षण केस लिखता है।

**दस्तावेज़**उपयोगकर्ता दस्तावेज़

**भावी विकास**: जब किसी को छह महीने बाद विशेषता का विस्तार करने की आवश्यकता होती है।

**जहाज पर सवार होना**: नए टीम सदस्य सिस्टम को आंशिक रूप से स्पेक्ट्स पढ़ने के द्वारा सीखते हैं

इसीलिए स्पेक्ट मौजूद रहना चाहिए

माइक्रोसॉफ्ट में हम स्पेक्ट अद्यतन को कोड अद्यतन के समान महत्व से व्यवहार करते थे।

अगर आप कोड बदलते हैं लेकिन नहीं, लेकिन विनिर्दिष्ट अद्यतन नहीं करता है, तो आप TECHNICAL DEBT बनाया है

<img src="https://media1.tenor.com/m/3T1hzop89-kAAAAC/debt-credit-card.gif" height="250"/>
# स्पेक्ट और कार्यान्वयन के बीच संबंध

यह एक बात है जो युवा विकासकर्ता अक्सर नहीं समझते **स्पेक्ट सत्य का स्रोत नहीं है**

स्पेक आपको बताता है कि आप क्या बनाना चाहते हैं।

इसका मतलब है

1. **प्रजातियों का विकास होना चाहिए** जब आप कार्यान्वयन के दौरान चीजें खोजते हैं
2. **क्रियान्वयन विवरण Don't Specs में शामिल हैं** एक बार जब आप 'implementing को आरंभ करने के लिए शुरू कर दिया है , कोड स्वयं दस्तावेज़ करता है कि कैसे \(कुछ स्थानों में एक |'Technical Spec\' लेकिन ये दुर्लभ हैं और प्रायः एक बुरा उत्पाद है।
3. **अंतर को पार करने का परीक्षण** अच्छा परीक्षण यह सत्यापित करता है कि क्रियान्वयन आवश्यकताओं के अनुरूप है

# विभिन्न श्रोताओं के लिए वर्ण लिखना

विभिन्न लोगों को स्पेक्ट्स से भिन्न चीज़ों की आवश्यकता है

**कार्यपालक** व्यापार मूल्य और अनुमानित समयरेखा जानना चाहते हैं

**उत्पाद प्रबंधक** - यह समझने की जरूरत है कि कैसे यह व्यापक उत्पाद रणनीति और रोडमैप में फिट करता है

**विकासकर्ता** सही ढंग से लागू करने के लिए पर्याप्त विवरण की आवश्यकता है बिना उन्हें यह बताया जाए कि उनका काम कैसे किया जाता है

**प्रश्नोत्तरी** यह कार्य करता है कैसे सत्यापित करने के लिए जानने की जरूरत है

**डिजाइनर** उपयोगकर्ता अनुभव क्या होना चाहिए यह जानने की जरूरत है।

एक अच्छा स्पेक्ट इन सभी श्रोताओं को बिना ब्लेड किए सेवा करता है

# अपने स्पेक्ट जाँच कर रहा है

आप एक स्पेक्ट करने से पहले क्या किया है

1. **क्या एक विकासकर्ता जो इस विशेषता को कभी नहीं देखा है यह इस स्पेक्ट से बना सकता है** अगर नहीं-,-आप-'-छोटे विवरण हैं-M SK2 कभी भी टुकड़े जैसे '-यह चल प्रणाली में विशेषता x की तरह काम करता है।
2. **इस विशेषता से परीक्षण केस लिख सकता है** यदि नहीं, तो आपका स्वीकार्य मानदंड पर्याप्त स्पष्ट नहीं है
3. **क्या आप कुछ पूरी तरह से बेकार बना सकते हैं जो अभी भी इस विशेषता के अनुरूप है** यदि ऐसा है, तो क्या आपने वास्तविक आवश्यकताओं को ठीक से नहीं पकड़ा है
4. **क्या यह स्पेक्ट लागू करने के लिए कैसे वर्णन करता है या क्या प्राप्त करना है?** यदि यह है, ' पहली है,, आप micromanagement कर रहे हैं

# स्पेक्ट्स के लिए एजील दृष्टिकोण

लेकिन हम एकgile हैं।

एजील का अर्थ नहीं है 'नियोजित करने के लिए " या " नियोजित करें। **विवरण उपकरण हैं, संविदा नहीं है** आप उन्हें शुरू करने के लिए पर्याप्त विवरण से बनाते हैं।

## जलfall से कैसे एजील प्रजातियां भिन्न होती हैं

बुनियादी भिन्नता है

**जलfall Specs**:

- किसी भी विकास से पहले पूरी तरह ऊपर लिखा गया
- प्रथम दिन से पूर्णता का लक्ष्य बनाना
- परिवर्तनों के लिए औपचारिक परिवर्तन नियंत्रण प्रक्रियाओं की आवश्यकता है
- एक बार अनुमोदित होने पर स्पेक "लॉक है
- मानना: हम शुरू करने से पहले सब कुछ जान सकते हैं
- रेखीय: स्पेक्ट → निर्माण | → | परीक्षण & #44; → | लागू

**एजील स्पैक्स**:

- शुरू करने के लिए न्यूनतम व्यवहार्य विवरण से शुरू करें
- आरंभ में अपूर्णता की आशा करें (और यह 's ठीक है
- परिवर्तनों की आशा और स्वागत है
- विशेषता के साथ स्पेक निरंतर विकसित होता है
- आकलन हम निर्माण के रूप में सीखेंगे
- चक्रीय: ड्राफ्ट | → | निर्माण |→ | जानने के लिए & #44; → | अद्यतन स्पेक्ट & #39; → | और निर्माण करें

जलfall दृष्टिकोण मानता है कि आप कोड की एक पंक्ति लिखने से पहले पूरी तरह से सब कुछ निर्दिष्ट कर सकते हैं।

<img src="https://media.tenor.com/RSp2ieJayNsAAAAM/panda-destroy.gif" height="250"/>
## फीडबैक लूप सब कुछ हैं

एजील स्पेक्टिंग में फ़ीडबैक लूप आपका सबसे अच्छा दोस्त है

**डेवलपर फीडबैक**आरंभिक दृष्टिकोण जीता था। ' X के कारण काम नहीं करता था। I.' इसके बजाय Y का प्रस्ताव कर रहा था।

**उपयोक्ता पृष्ठपोषण**वास्तविक उपयोगकर्ताओं के साथ इस सुविधा का प्रयास करें **पिवोट** आप क्या सीखते हैं पर आधारित स्पेक्ट

**कार्यान्वयन फीडबैक**: जब आप निर्माण करते हैं, \",\", आप किनारे के मामलों को खोजते हैं \ ",\", तकनीकी अवरोधों \ ',\' या बेहतर दृष्टिकोण \

**QA फीडबैक**स्पेक्ट X कहता है लेकिन नहीं करता था

इन सब रिबैक लूपों में से प्रत्येक स्पेक्ट बेहतर बनाता है।

इसीलिए पानीfall स्पेक्ट्स अक्सर असफल होते हैं।

**बडी बात है-, फ़ीडबैक के रूप में कम से कम संभव [एलएलएमएपी](https://www.mostlylucid.net/blog/llmapi) यह आप एक BIT बनाने में मदद करता है फिर उपयोगी प्रतिक्रिया प्राप्त करने के लिए बनावटी डेटा का उपयोग करें**

## अपूर्णता को ग्रहण करें (पहली बार

यह कुछ है जो पारंपरिक परियोजना प्रबंधकों को चिंतित करता है **यह पूर्ण रूप से ठीक है यदि आरंभिक स्पेक्ट अंतर है**

यदि आप नहीं जानते हैं, तो खंडों को चिह्नित करें।

यह नहीं है।

के साथ प्रारंभ करें:

- समस्या विवरण साफ करें (you must know this
- प्रस्तावित समाधान दृष्टिकोण
- सटीक "done" criteria (will be refined
- खुले प्रश्नों के रूप में चिह्नित ज्ञात अज्ञात

जब आप सीखते हैं तो gaps को भरें।

## स्पेक बदलेगा

इसे अब स्वीकार करें **विकास के दौरान आपका स्पेक्ट बदलेगा** अगर यह नहीं है, तो आप या तो अविश्वसनीय भाग्यशाली हो गए हैं या आप कुछ नहीं सीख रहे हैं

आपको अपेक्षा की जाने वाली परिवर्तनें

- जब आप बाधाओं को खोजते हैं तो तकनीकी दृष्टिकोण बदलता है
- स्कोप समायोजन जब आप महसूस करते हैं कि आप बहुत अधिक निर्माण कर रहे हैं
- जैसे आप समस्या को बेहतर समझते हैं, मानक सुधार करें
- कार्यान्वयन के दौरान नए किनारे केसों का पता चला
- प्रयोग के माध्यम से बेहतर समाधान खोजा गया

प्रत्येक परिवर्तन को होना चाहिए

1. **दस्तावेज़ित** - स्पेक्ट अद्यतन करें
2. **संचारित** - भागीदारों को बतायें कि क्या बदल गया है और क्यों
3. **युक्तियुक्त** - बताओ कि आपने क्या सीखा है जो परिवर्तन को प्रेरित किया

संस्करण इतिहास आप क्या सीखा है की अभिलेख बन जाता है

## जब एजील स्पेक्टिंग गलत हो जाता है

यदि आप एक महत्वपूर्ण बात भूलें तो एजील दृष्टिकोण असफल हो सकता है **"परिवर्तित होगा।**

खराब एजील स्पेक्टिंग

- कोई स्पष्ट कारण के बिना प्रतिदिन स्पेक परिवर्तन होता है
- का कोई परिभाषा नहीं है "done" इसलिए विशेषता बढ़ती रहती है
- परिवर्तन communicated नहीं हैं
- "Agile" चीज़ों के बारे में सोचने के लिए बहाना के रूप में उपयोग किया गया
- क्षेत्रक परिवर्तन से हितधारकों को आश्चर्य हुआ क्योंकि कोई भी उन्हें नहीं बताया

सुचारु एजील स्पेक्टिंग

- सीखने पर आधारित स्पष्ट कारणों से परिवर्तन होते हैं।
- criteria are clear even if other details aren
- परिवर्तनों पर चर्चा की जाती है
- एजिल होने का मतलब नहीं है-'
- Stakeholders feedback loop का हिस्सा हैं

स्पेक्ट एक जीवित दस्तावेज है, लेकिन यह है

कभी भी आप जो भी चाहेंगे नहीं कर रहे हैं और इसे कभी भी नहीं बुलाते

यह एक गतिशील प्रक्रिया है जो सबसे अच्छी वस्तुओं को यथासंभव जल्दी बनाने के लिए सोल लक्ष्य रखता है [त्वरित घोषणापत्र ](https://agilemanifesto.org/principles.html) के रूप में कहता है ''' पहला सिद्धांत '.'

> "हमारी सर्वोच्च प्राथमिकता ग्राहक को संतुष्ट करना है
> शीघ्र और निरंतर वितरण के माध्यम से
> मूल्यवान सॉफ्टवेयर

यह कोड बाहर स्पिनक करने के आसपास फेफ नहीं करता है क्योंकि आप भावना को पसंद करते हैं

## आरंभ करने के लिए पर्याप्त विवरण

सवाल यह है-'t "विस्तार को कैसे विस्तृत होना चाहिए ?" यह क्या हम विश्वासपूर्वक निर्माण शुरू करने के लिए जानने की जरूरत है

कुछ विशेषताओं के लिए जो हो सकता है

- समस्या का वर्णन करने वाला पैराग्राफ
- Three bullet points sketching the solution
- क्या "done" की तरह दिखता है एक स्पष्ट परिभाषा

अन्य के लिए यह हो सकता है:

- नमूने के साथ विस्तृत उपयोगकर्ता प्रवाह
- आंकड़ों द्वारा समर्थित निष्पादन आवश्यकताएं
- बहुविध प्रणालियों के लिए एकीकृत विनिर्दिष्टियां

**जहाँ अनिश्चितता है, विवरण जोड़ें** अगर हर कोई इस बात पर सहमत हो कि किसी चीज का काम कैसे करना चाहिए, तो आपको यह लिखने की ज़रूरत नहीं है।

लेकिन अंत में यह है-' s ' फिडबैक लूप आरंभ करने के लिए पर्याप्त विवरण है

<img src="https://media.tenor.com/5q0fppfYcLAAAAAM/push-loop-infinite.gif" height="250"/>
## टेम्प्लेट और AI: जल्दी शुरू हो रहा है

आरंभिक स्पेक्ट पर अधिक विचार न करें

- rough estimate (even a SWAG
- प्राथमिकता निर्धारण चर्चाओं के लिए इनपुट
- केवल आप व्यक्तिगत रूप से कोडिंग शुरू करने के लिए पर्याप्त है

**टेम्प्लेट का उपयोग करें**: कुंजी खंडों के साथ एक बुनियादी टेम्प्लेट रखें।

एक साधारण टेम्प्लेट हो सकता है

```
# [Feature Name]

## Problem
[What's broken? What pain exists?]

## Proposed Solution
[High-level approach]

## What "Done" Looks Like
- [ ] Specific, testable criterion 1
- [ ] Specific, testable criterion 2
- [ ] Specific, testable criterion 3

## In Scope
-
-

## Out of Scope
-
-

## Open Questions
-
-
```

यह है 5 मिनट भरने के लिए और तुममें enough to start discussing or even building

**à¤à¥à¤°à¥à¤**Claude या ChatGPT जैसे उपकरण पहली ड्राफ्ट प्राप्त करने के लिए शानदार हो सकते हैं

लेकिन - और यह महत्वपूर्ण है **AI के गहराई से आपको सब कुछ जोड़ने में आकर्षित न करें**

अभियांत्रिकी व्यापक होना पसंद करता है।

अधिकतर को बाहर निकालें. क्या आप अभी जरूरत रखते हैं

एआई को एक मेनू के रूप में उत्पन्न स्पेक्ट सोचें।

लक्ष्य यह है-' एक पूर्ण स्पेक्ट नहीं है, ; यह है। ' कार्य आरंभ करने के लिए पर्याप्त स्पेक्ट है।

## सहकारिता मॉडल

यहाँ क्या परिवर्तन है agile में **आप एक स्पेक्ट नहीं लिखते और इसे डेवलपर्स को दीवार पर फेंक देते हैं** स्पेक्ट एक सहयोगात्मक प्रयास है

सबसे अच्छा दृष्टिकोण मैंने देखा है

1. **उत्पाद/PM समस्या को रेखांकित करता है** - क्या समाधान की जरूरत है और क्यों
2. **विकासकर्ता तकनीकी दृष्टिकोण का योगदान करते हैं** - हम इसे कैसे हल कर सकते हैं
3. **डिजाइनर UX आवश्यकताओं को योगदान देते हैं** - क्या उपयोगकर्ता अनुभव होना चाहिए
4. **प्रश्नोत्तरी परीक्षण परिदृश्यों में योगदान करता है** - किनारा केस और वैधीकरण दृष्टिकोण

यह सहयोगात्मक दृष्टिकोण समस्याओं को जल्दी पकड़ता है जब वे

इससे भी अधिक महत्वपूर्ण है, यह मतलब है कि स्पेक्ट क्या प्रतिबिंबित करता है

## विकास के दौरान विकास

यहाँ जहाँ एजिल स्पेक पारंपरिक से भिन्न होते हैं **आप इसे बनाते समय विशेषता विकसित हो सकती है**

आपको पता चलता है कि आपका आरंभिक दृष्टिकोण सफल होगा

आप सुविधा का प्रयास करते हैं और यह महसूस करता है कि यह नहीं करता

उपयोक्ता प्रतिक्रिया बेहतर समाधान प्रकट करती है

यह विकास एक विशेषता है

लेकिन यह एक समस्या पैदा करता है, यदि विशेषता बदल सकता है तो :

## आकलन चुनौती

यह एकgile के गन्दे रहस्य है **अनुमान बहुत कठिन है जब लक्षण विकसित हो सकते हैं**

पारंपरिक अनुमान मानता है कि आप जानते हैं क्या आप बना रहे हैं

एजील आकलन आपको स्वीकार करता है कि आप नहीं कर रहे हैं

**आप प्राक्कलित दायरे, अनिरपेक्ष नहीं है** के बजाय यह लेगा 3 सप्ताहों को " आप कहते हैं कि \""\"हम क्या पता लगाते है पर निर्भर करते हुए \'2\' और \ '5\' के बीच कहीं से

**You estimate in iterations** हम इसे खोजने के लिए एक स्पिनट खर्च करेंगे और जो कुछ हमने सीखा है उसके बारे में रिपोर्ट करें। तब हम बाकी का अनुमान अधिक सही तरीके से कर सकते हैं

**आप समय के बजाय स्कोप** हम इस पर सप्ताह बिताएँगे

लेकिन इन सभी दृष्टिकोणों में एक महत्वपूर्ण आवश्यकता है **आपको यह जानने की जरूरत है कि क्या करता है** के एक स्पष्ट परिभाषा के बिना एक विशेषता हमेशा के लिए metastasising जारी रख सकता है

यह Waterfall दृष्टिकोणों के मुकाबले एजिल की एक आम आलोचना है।

# परिभाषित करने के लिए "Done

यह है जहां बहुत से एजिल स्पेक्ट्स टूट जाते हैं।

बिना किसी स्पष्ट परिभाषा के किया जाता है युक्तियाँ नहीं होती हैं युक्तियों को समाप्त नहीं होता है 2 वे metastasise करते हैं 3 वे प्रसारित होते हैं 4 वे प्रणाली के अन्य भागों में tendrils का विकास करते हैं 5 इससे पहले कि आप इसे जानते हैं 6 आपका युक्ति सामान्य टिप्पणी प्रणाली 8 संदेश भेजने के साथ एक पूर्ण सामाजिक नेटवर्क में रूपांतरित हो गया है 9 प्रोफाइलें 10 और मित्र अनुरोध

## अस्पष्ट के साथ समस्या "Done"

I'ने स्वीकार्य मानदंडों के साथ स्पेक्ट्स देखा है जैसे

- उपयोक्ता पोस्ट पर टिप्पणी कर सकते हैं
- Dashboard में प्रासंगिक जानकारी दिखायी जाती है
- खोज अच्छी तरह से काम करता है

ये कार्य के परिभाषाएँ नहीं हैं, वे अस्पष्ट आकांक्षाएं हैं।

विकासकर्ता को जानने की जरूरत है **क्या विशिष्ट बात है जब लागू किया जाता है**

## लिखा जा रहा है Concrete "Done" Criteria

अच्छा "doneM SK1 मानक हैं

- **परीक्षण योग्य** - आप यह सत्यापित कर सकते हैं कि क्या यह मिला है
- **विशिष्ट** कोई अस्पष्ट शब्द नहीं जैसेः
- **सीमाबद्ध** - वे नहीं है

**खराब**: "Comments should be moderatedM SK2
**अच्छा**एडमिन उपयोक्ता अनुमोदन कर सकते हैं।

**खराब**Search should be fast"
**अच्छा**परिणाम प्रासंगिकता के आधार पर श्रेणीबद्ध होते हैं।

**खराब**à¤à¥à¤°à¥à¤
**अच्छा**à¤à¥à¤°à¥à¤

भिन्नता को ध्यान दें? अच्छे उदाहरण आपको ठीक से बताते हैं कि क्या होना चाहिए और जब आप चीजें जोड़ना बंद कर सकते हैं

## सीमा से बाहर अनुभाग आपका मित्र है

याद करो जब मैंने कहा था कि क्षेत्र से बाहर अनुभाग क्षेत्र में क्या है जैसे ही महत्वपूर्ण है

हर विशेषता के लिए \, \ There are dozens of things you could add

**क्षेत्र में**: नीस्टेड टिप्पणी
**क्षेत्र से बाहर**: अनसीमित टिप्पणी थ्रेडिंगM SK1 टिप्पणी मतदान, टिप्पणी थ्रिडिंग\, सबसे अच्छा टिप्पणी क्रमबद्ध करनाMSC4 टिप्पणी permalinks (ये बाद में अलग विशेषताओं के रूप में आएँगे

अब जब कोई सुझाव देता है "shouldn't comments have upvotes\?" you can point to the spec and say

ओह और अगली विशेषता ? अच्छी तरह से आप एक गुच्छा उपयोग में न लाए गए अच्छे विचारों को पहले ही पकड़ा है

## एक अंतिम रिसोर्ट के रूप में बॉक्सिंग

कभी-कभी आप सचमुच नहीं जानते।

"हम'हम recommendation algorithm के विभिन्न दृष्टिकोणों को प्रारूप बनाने के लिए 2 सप्ताह बिताएँगे या जब तक बैकएण्ड तैयार न हो जाए तब तक।

लेकिन ध्यान दें, आप अभी भी एक ठोस है।

### स्पाइक & स्प्रिंट्स

एक स्पाइक इन में से एक है। <s>'<s>को खेलने और इस तकनीक का पता लगाने के लिए जाना चाहिए।

एक स्प्रिंट को अंत में उपलब्धताओं के लिए अपेक्षित है (कुछ कोई अन्य व्यक्ति जो इस में संलग्न व्यक्ति से भिन्न है यह लूप के लिए परीक्षण कर सकता है

वे भी डेव्स के लिए आनंददायक हैं और टीम में मदद करते हैं मैं अक्सर एक परियोजना के दौरान स्पाइक विचार एकत्र करता हूँ और जब वहाँ है तो मैं डेवों को एक खोजने के लिए चुनने देता हूँ।

## विकास के दौरान स्कोप क्राइप को रोकने

यहां तक कि स्पष्ट "done" मापदण्ड के साथ-साथ स्कोप कूद सकता हैM SK3 आप किनारे केसों का पता लगाते हैं . आप यह महसूस करते हैं कि उपयोगकर्ताओं को कुछ की जरूरत होती है जिसे आपने नहीं सोचा था।

**इसे दस्तावेज़ करें** जब आप किसी नई चीज़ को खोजते हैं जिसे जोड़ने की जरूरत है

यह दो उद्देश्यों का काम करता है

1. **दृश्यता** - सभी जानते हैं कि क्षेत्र बदल गया है और क्यों
2. **लागत जागरूकता** - Stakeholders see that adding things impacts timeline

अगर आपका स्पेक्ट बढ़ता रहता है, तो यह एक संकेत है।

## इसे कब किया जाना चाहिए

किसी बिंदु पर आपको भेजने की ज़रूरत है

एक अच्छा परीक्षण **क्या उपयोगकर्ता इस सुविधा से मूल्य प्राप्त कर सकते हैं जैसा कि यह है**

यदि हाँ है, तो इसे भेजें।

अगर नहीं, तो आप क्या कहते हैं

गतिशीलता का सबसे कठिन हिस्सा है

लेकिन याद रखें कि आपको यह सोचना होगा कि आप इसे सभी को जारी कर सकते हैं या नहीं।

<img src="https://media1.tenor.com/m/hl4H1KOXEMcAAAAC/bongo-cat-keyboard-smash.gif" height="300"/>
# स्पेक समीक्षा प्रक्रिया

एक स्पेक्ट जब आप इसे लिखने को समाप्त करते हैं तब नहीं किया जाता है

## कूट समीक्षाओं की तरह स्पेक समीक्षाओं का व्यवहार करें

मैं माइक्रोसॉफ्ट में सीखा सबसे अच्छा अभ्यास **विशेष समीक्षाओं की तरह ही काम करता है कोड समीक्षाएँ.** वे-'-सहयोगी होते हैं-,-विरोधी नहीं होते हैं। ( यद्यपि माइक्रोसॉफ्ट के लड़के क्लब ने अक्सर स्पेक्ट समीक्षाओं को यदि कोई मादा था तो ग्लेडियटरी युद्ध जैसा महसूस किया।

विवरणों की समीक्षा करते समय:

- **प्रश्न पूछें** क्या होता है यदि X होता है, ?" क्या नहीं है criticism' यह एक अंतर पहचानता है
- **वैकल्पिक सुझाव दें** - "क्या आपने Y दृष्टिकोण पर विचार किया है
- **अनुपस्थित मामलों को ध्यान में रखें** - "यह नहीं करता है-'Z सिनारियो को कवर नहीं करता-" चित्र पूरा करने में मदद करता है
- **चुनौती आकलन** क्यों हम इसे इस तरह से हल कर रहे हैं

जब आपका स्पेक्ट समीक्षा किया जा रहा है

- **प्रश्न अवसर हैं** वे पता लगाते हैं कि क्या ' अस्पष्ट है और क्या तुमने missed
- **सुझाव स्पेक्ट को बेहतर बनाते हैं** उन्हें गंभीरता से सोचें अगर आप नहीं मानते
- **यह' व्यक्तिगत नहीं है** - कोड की समीक्षा के समान
- **समीक्षाकर्ता गलत हो सकता है** explain why your approach makes sense

सबसे अच्छा स्पेक्ट समीक्षा वार्तालाप है।

## कौन समीक्षा करेगा

महत्वपूर्ण सभी दृष्टिकोणों से समीक्षा प्राप्त करें

**विकासकर्ता समीक्षा** क्या यह वास्तव में काम करेगा

**उत्पाद समीक्षा** क्या यह सही समस्या को हल करता है?

**डिजाइन समीक्षा** क्या उपयोगकर्ता अनुभव समझता है?

**प्रश्नोत्तर समीक्षा** क्या हम यह परीक्षण कर सकते हैं?

आपको औपचारिक चिह्न की जरूरत नहीं है।

## सामान्य समीक्षा प्रश्न

अच्छे समीक्षाकर्ता प्रश्न पूछते हैं जो स्पेक्ट सुधारता है

- क्या होता है यदि उपयोक्ता X करता है
- यह मौजूदा विशेषता के साथ कैसे प्रतिक्रिया करता है Y
- यदि Z निर्भरता नहीं है तो क्या "What' हमारी वापसी है
- "क्या हम इसे W के बजाय करने द्वारा सरल कर सकते हैं
- "क्या हम जानते हैं कि क्या यह सफल है?
- क्या हम नहीं कर रहे हैं

इनमें से कोई भी गॉच नहीं है

## फीडबैक शामिल करना

आप हर सुझाव को स्वीकार नहीं करेंगे

1. **ईमानदारी से सोचें** इसे अस्वीकार नहीं करें क्योंकि वे नहीं समझते
2. **अगर आप इसे स्वीकार करते हैं** - स्पेक्ट अद्यतन करें
3. **अगर आप इसे स्वीकार नहीं करते** - क्यों बताना है कि , शायद वे ' हरा रहे हैं संदर्भ
4. **यदि यह' क्षेत्र से बाहर है** - इसे इस खंड में जोड़ें

समीक्षा के प्रत्येक दौर से स्पेक्ट बेहतर होना चाहिए

कार्यान्वयन शुरू करने से पहले इन सभी दृष्टिकोणों से समीक्षा प्राप्त करें

# एक ठोस उदाहरण: मार्कडाउन अनुवाद सेवा

यह सब कम अमूर्त बनाने के लिए-, यहाँ-' क्या एक स्पेक्ट क्या एक स्वचालित मार्क डाउन अनुवाद विशेषता मैं इस ब्लॉग के लिए बनाया है कि क्या लग सकता है

## समस्या विवरण

अंग्रेजी में लिखे गए ब्लॉग पोस्टों को केवल गैर शामिल नहीं करता है।

## समाधान

एक पृष्ठभूमि सेवा को लागू करें जो स्वचालित रूप से मार्कडाउन फ़ाइलों को EasyNMT मशीन अनुवाद सेवा के उपयोग से कॉन्फ़िगर किए गए लक्ष्य भाषाओं में अनुवाद करता है

- परिवर्तन के लिए मार्कडाउन फ़ाइलों को मॉनीटर करें
- मार्कडाउन संरचना और कोड ब्लॉकों को सुरक्षित रखते हुए अनुवाद योग्य पाठ निकालें
- दक्षता के लिए बैच अनुवाद अनुरोध
- अनुवादित मार्कडाउन फ़ाइलें उपयुक्त भाषा उपसर्गों के साथ उत्पन्न करें

## सफलता के मानदंड (क्या है

ये मानक हमें ठीक से बताते हैं जब हम इस सुविधा पर काम करना बंद कर सकते हैं

- नए ब्लॉग पोस्टों को सभी कॉन्फ़िगर किए गए भाषाओं में स्वचालित रूप से अनुवाद किया जाता है।
- अनुवादित फ़ाइलें मूल के लिए समान मार्कडाउन संरचना बनाए रखती हैं
- कोड ब्लॉक्स, छवि यूआरएलों, और ढाँचा बदला नहीं है
- एक सामान्य ब्लॉग पोस्ट के लिए 15 मिनट में अनुवाद पूरा होता है
- तंत्र केवल -परिवर्तित फ़ाइलों को अनुवाद करता है
- यदि अनुवाद API अस्थायी रूप से अनुपलब्ध है तो भी सेवा सफलतापूर्वक आरंभ होती है
- अनुवाद के दौरान त्रुटि लॉग किए गए हैं लेकिन अनुप्रयोग क्रैश नहीं

ध्यान दें कि ये विशिष्ट और परीक्षण योग्य हैं।

## क्षेत्र में

- मार्कडाउन फ़ाइलों को प्रक्रिया करने के लिए पृष्ठभूमि सेवा
- EasyNMT अनुवाद API के साथ एकीकरण
- अनावश्यक पुनरावर्तन को रोकने के लिए परिवर्तन पता लगाने के आधार पर Hash-
- EasyNMT's शब्द सीमा को संभालने के लिए बैच प्रक्रमण
- बहुविध EasyNMT इंस्टैंसों के माध्यम से राउंड </-> रबिन लोड संतुलन
- अनुवाद के दौरान मार्कडाउन वाक्य संरचना का संरक्षण

## क्षेत्र से बाहर

- हस्तचालित अनुवाद संपादन के लिए उपयोक्ता अंतरफलक
- अनुवाद मेमोरी या शब्दकोश प्रबंधन
- वास्तविक-समय अनुवाद ( पृष्ठभूमि संसाधन स्वीकार्य है
- कोड खंडों के भीतर कोड टिप्पणी का अनुवाद
- अनुवादों की स्वचालित गुणवत्ता मूल्यांकन

## तकनीकी प्रतिबंध

- EasyNMT के लिए एक ~500 शब्द सीमा प्रति अनुरोध है [mostlylucid-nmt](/blog/mostlylucid-nmt-complete-guide) जो fucking किताबें ले सकता है
- अनुवाद सेवा धीमी हो सकती है।
- युक्तियुक्त निष्पादन के लिए कई EasyNMT इंस्टैंस की आवश्यकता है (nope mostlylucid
- फ़ाइल सिस्टम I/O मुख्य अनुप्रयोग को अवरोधित नहीं करना चाहिए

## स्पेक्ट समय पर प्रश्न खोलें

- क्या हम बदले हुए फ़ाइलों को अनुवाद करने से बचने के लिए अनुवाद कैश करें **फ़ाइल हैश तुलना के उपयोग से हल**
- कैसे हम EasyNMT सेवा विफलताओं का सामना करते हैं **हल किया गया: लॉग त्रुटि और फ़ाइल छोड़ें ; अगले सेवा पुनः आरंभ पर पुनः प्रयास करेगा**
- तकनीकी सामग्री के साथ हम क्या गुणवत्ता समस्याएं देख सकते हैं **फ़ैसला: जहाज और मापन के बारे में मानदंड की समीक्षा**

## कार्यान्वयन के दौरान हमने क्या सीखा

विकास के दौरान कई चीजें उभरी जो स्पेक को परिष्कृत किया

**बैच आकार अनुकूलन**: लाइन बैचों के साथ आरंभ किया गया, लेकिन EasyNMT के तहत रहने के लिए अधिक विश्वसनीय लाइनें मिला

**छवि पता लगाना**आरंभ में छवि फ़ाइलनाम मार्कडाउन में अनुवाद सेवा को भेजा जा रहा था

**सेवा उपलब्धता**: EasyNMT आरंभ पर भावनात्मक हो सकता है `/model_name` अनुवाद करने के प्रयास से पहले अंतिम बिंदु

**हैश भंडारण**फ़ाइल हैश के लिए मूल रूप से योजनाबद्ध डाटाबेस भंडारण `.hash` फ़ाइलें सरल साबित हुई और इस सेवा के लिए डाटाबेस निर्भरता से बच गया.

इन सीखों को दस्तावेज़ में फिर से फोल्ड किया गया और बाद में समान विशेषताओं के बारे में जानकारी दी गई

## यह स्पेक क्यों काम करता है

यह स्पेक्ट discussed सिद्धांतों का अनुसरण करता है

- **समस्या-पहले**वास्तविक समस्या से आरंभ हुआ
- **स्कोप साफ करें**स्पष्ट रूप से कहा गया कि हम क्या कर रहे हैं
- **दायाँ विवरण स्तर**: क्या होने की जरूरत है निर्दिष्ट किया गया
- **जीवंत दस्तावेज़**: खुले प्रश्नों को हल किया गया और कार्यान्वयन की प्रगति के साथ निर्णयों का दस्तावेज़ीकरण किया गया
- **सहकारिता**: कार्यान्वयन के दौरान उठाया गया त्रुटि

परिणाम-: एक विशेषता है कि-' महीनों के लिए उत्पादन में चल रहा है। , कम से कम हस्तक्षेप के साथ प्रत्येक ब्लॉग पोस्ट को स्वचालित रूपांतरित करता है।

# एजील स्पैक्स के बारे में सामान्य प्रश्न

हम क्या शामिल किया है के आधार पर यहाँ अक्सर आने वाले सवाल हैं

## क्या मैं वास्तव में एक छोटी सुविधा के लिए एक स्पेक्ट की जरूरत है

यह उस पर निर्भर करता है "small." यदि यह 'सच्चे तौर पर बेवकूफ है।

- Estimate how long it will take
- भागीदारों से सहमति प्राप्त करें
- सुनिश्चित करें किQA जानता है कि क्या परीक्षण करना चाहिए
- दस्तावेज़ जो आपने बनाया है भविष्य के संदर्भ के लिए

तो हाँ, ,। <s> यहां तक कि एक त्वरित स्पेक्ट भी मदद करता है।

यदि आप कर सकते हैं, तो आप को दो वाक्यों में क्या दिखता है

## मैं उन भागीदारों से कैसे निपटता हूँ जो सभी क्षेत्र में चाहते हैं

क्षेत्र से बाहर धारा को संकेतित करें

1. **अधिक वृद्धि समयरेखा जोड़ें** क्या वे सप्ताह में विशेषता ए चाहते हैं या विशेषता A
2. **हम इसे अगले कर सकते हैं** यह एक महान विचार है।
3. **समय-बक्सा प्राथमिकताओं को बल देता है** हमारे पास सप्ताह है

यदि वे आग्रह करते हैं कि सब कुछ समान रूप से महत्वपूर्ण है, तो वे सुझाव देते हैं कि वे किस अन्य कार्य को पीछे लाने के लिए चुनें

## "क्या यदि स्पेक्ट इतना परिवर्तन करता है कि यह

कि'का जुर्माना

- परिवर्तनों को दस्तावेज़ित किया गया है (विधि अद्यतन करें,नहीं
- परिवर्तनों को संचारित किया जाता है ( Stakeholders know what shifted and why
- आप कुछ सीखा (परिवर्तन सीखने को प्रतिबिंबित करता है

यदि स्पेक पहचाना नहीं जा सकता है क्योंकि आप मूल में समस्या को पूरी तरह गलत समझे हैं, तो यह एक संकेत है कि अगले बार शुरू करने से पहले अधिक खोज करना है।

संस्करण इतिहास आपको क्या सीखा है के बारे में बताना चाहिए

स्टार्टअप में यह एक 'Pivot' कहा जाता है जहां आप एक खेल बनाना शुरू करते हैं और अंत में एक अद्भुत संदेश प्रणाली बनाते हैं इसके बजाय।

<img src="https://media1.tenor.com/m/8DRynH5nEE8AAAAC/if-you.gif" height="200px" />
Don't get too locked in

## @info: whatsthis

महत्वपूर्ण बग के लिए

जटिल बग के लिए, जो अनेक सिस्टम पर प्रभाव डालते हैं या वास्तुकला परिवर्तनों की आवश्यकता होती है।

के बीच में हर चीज़ के लिए: अपने निर्णय का उपयोग करें. यदि समाधान स्पष्ट नहीं है, या इसका दुष्प्रभाव हो सकता है

यह सुरक्षा बगों के लिए विशेष रूप से सच है. आपको यह जानना चाहिए कि आप क्या ठीक कर रहे हैं और कैसे आप इसे सत्यापित करेंगे

## "विशिष्ट क्या औपचारिक होना चाहिए

जैसा कि आपकी टीम की आवश्यकता होती है, औपचारिक रूप से. कुछ टीमें विस्तृत JIRA टिकटों के साथ अच्छी तरह से काम कर रहे हैं

औपचारिकता सामग्री से कम महत्व रखती है

- समस्या विवरण साफ करें
- प्रस्तावित समाधान
- किया गया परिभाषा
- क्षेत्र सीमाओं को साफ करें

आप इसे मार्कडाउन में लिख सकते हैं

यह एकgile विकास के लिए प्रायः अवर्णित कुंजी है।
अगर दिन के चक्र एक टीम के लिए काम करते हैं लेकिन एक दूसरे के लिए सप्ताह के स्पिनट
आपका दल उस उत्पाद को बनाने वाला मशीन है

एक प्रबंधक के रूप में देखें कि आपके आउटपुट क्या हैं; यदि बोर्ड को एक बर्न डाउन ग्राफ की जरूरत है तो कैसे आप एक बनाने के लिए मौजूदा डेटा का उपयोग कर सकते हैं

अंत में आप टीम आउटपुट सुविधाएं और क्या भागीदारों की जरूरत है

## यदि मैं परियोजना पर एकमात्र डेवलपर हूँ

आपको अभी भी विशेषताओं की जरूरत है, शायद इससे भी अधिक हो सकता है . छह महीनों में जब आप इस सुविधा को विस्तारित करने के लिए आवश्यक होता है।

इसके अलावा आपको अभी भी करने की जरूरत है

- जो भी आपको पैसे देता है उसके लिए काम का आकलन
- परिभाषित करें क्या "done" का मतलब है ताकि आप समाप्त कर सकते हैं
- दस्तावेज़ क्या आप उन लोगों के लिए बनाया है जो बाद में शामिल हो सकते हैं

अपने लिए स्पेक्ट्स लिखना एक इकाई परीक्षणों को लिखने की तरह है। <s> यह अब धीमी लगता है लेकिन बाद में समय बचाता है।

## "क्या मैं स्कोप क्रीप के साथ व्यवहार करता हूँ जो 'आवश्यकता स्पष्टीकरण के रूप में छिपा हुआ है

जब कोई कहता है, “"”Oh“,”मैं यह भी उल्लेख करने के लिए भूल गया था कि इसे भी करना चाहिए X”,"” कि

जवाब: "ऐसे किM SK2 एक अच्छा वांछितता है , लेकिन यह\ '\ क्या हम स्पेक्ट में सहमत नहीं हैं\.\ हम इसे अभी के लिए बाहर क्षेत्र से धारा में जोड़ें और विचार करें कि क्या इसे शामिल करना या इसे संस्करण के लिए सहेजना

यदि यह वास्तव में एक आवश्यकता है, तो

1. इसे शामिल करने के लिए स्पेक्ट अद्यतन करें
2. अनुमान अद्यतन करें
3. नए समयरेखा पर सहमति प्राप्त करें या मूल समयरेख में फिट करने के लिए क्या काटना है

कभी भी चुपचाप स्कोप क्रीप अवशोषित करें

## "क्या मैं स्पेक्ट पूरा होने से पहले कोडिंग शुरू कर सकता हूँ

हाँ, यदि आप'आप खुले प्रश्नों का उत्तर देने के लिए प्रारूप निर्माण कर रहे हैं।

सीखने के लिए प्रोटोटाइपिंग अच्छा है

स्पेक्ट तैयार होने से पहले निर्माण उत्पादन कोड का मतलब है कि आप

अपवाद: यदि आप'उत्पादक मालिक और डेवलपनर हैं |( |सोलो परियोजना | ), | आप एक साथ विनिर्दिष्ट कर सकते है और कोड बना सकते हैं \. | लेकिन फिर भी अपने निर्णयों को दस्तावेज़ करें जैसे आप जा रहे हैं

' जब तक स्पेक्ट तैयार नहीं है।

## "क्या यदि मेरी टीम नहीं करता है

पता लगाने के लिए क्यों

- **बहुत लंबा** उन्हें छोटा करें, अधिक स्कैन करने योग्य
- **बहुत औपचारिक** हल्का फ़ॉर्मेट इस्तेमाल करें
- **प्रासंगिक नहीं** सुनिश्चित करें कि वे वास्तव में detail आप प्रदान कर रहे हैं की जरूरत है
- **खराब आदत** विकास आरंभ करने से पहले स्पेक्ट समीक्षा की आवश्यकता शुरू करें

यदि लोग स्पेक्ट समीक्षाओं को छोड़ दें और फिर गलत बात बनाते हैं, तो यह स्पेक्ट में नहीं था, इसलिए हमें इसे फिर से कार्य करना होगा

Also: specs make easy to find

## मैं एक स्पेक्ट पर कितना समय खर्च करना चाहिए

विकास समय का नियम

एक 2- सप्ताह विशेषता के लिए
एक 1- सप्ताह विशेषता के लिए
एक दिन विशेषता के लिए 2-के लिए एक घंटा या दो स्पेक्ट पर

कुछ विशेषताओं को अधिक ऊपर की जरूरत है

अगर आप इस पर अधिक समय व्यतीत कर रहे हैं कि कार्यान्वयन के बजाय

## "Why estimates are always wrong

क्योंकि सॉफ्टवेयर आकलन मूलतः कठिन है **आकलन तभी काम करता है यदि आप**

जो प्रायः कभी नहीं होता

हर बार जब आप अनुमान लगाते हैं ',' आप ''' के साथ काम कर रहे हैं

- **अज्ञात अज्ञात** - समस्याओं को आप नहीं जानते हैं
- **अज्ञात ज्ञात** - समस्याओं को आप जानते हैं कि मौजूद है लेकिन कैसे हल करने के लिए कोई आईडीए नहीं
- **आवश्यकताओं को बदलना** एक बार मुझे एक मूर्ख आइड्स के साथ अपने हूगेली ड्रंक ग्राहक से एक काल मिला है शून्य में मैं एक बार आया था 4
- **पर्यावरणीय अंतर** - यह लाइब्रेरी आपके पिछले प्रोजेक्ट में काम करती है, लेकिन इस पर भिन्न निर्भरताएं हैं।
- **उपकरणिंग मुद्दे** - निर्माण प्रणालीM SK1 विनियोजन पाइपलाइन, या परीक्षण वातावरण भिन्न रूप से व्यवहार करता है
- **एकीकृत आश्चर्य** - जो एपीआई आप calling कर रहे हैं-'-documented के रूप में पूरा काम नहीं करता है
- **मानवीय कारक** - आपM SK1अवलंबित हैं, बीमार है , या उत्पादन समस्याओं से काम कर रहे हैं
- **वित्त** - कभी-कभी एक छोटा संस्करण पहले की जरूरत है क्योंकि *अन्यथा हम पैसे से बाहर हैं1 कि स्टार्टअप में एमएसक्यू2 का साझा है3 एमएसक्यु4 मैं एमएसके5 स्टार्ट अप डेव7 और कैसे यह भविष्य में सामान्य डेव8 से भिन्न है पर एक लेख होगा

इसीलिए

- **रेंज बिट बिंदु अनुमान** - "2-5 दिन" अनिश्चितता स्वीकार करता है
- **स्पाइक मदद** पूरे काम की अनुमान लगाने से पहले एक दिन जांच करना।
- **बॉक्सिंग कार्य** -"We will spend weeks and see what we get" sets expectations
- **ऐतिहासिक आंकड़ों का संबंध** - ट्रैक कैसे लंबे समय वास्तव में समान कार्य ले लिया
- **पैडिंग सच्ची है** यदि आप सोचते हैं कि आप अधिक बार सही होंगे

<img src="https://media1.tenor.com/m/vrpp1cfR6XgAAAAd/star-trek-star-trek-tos.gif" height="300" />
काम जितना नया होगा, उतना आपके अनुमान भी खराब होंगे।

इसीलिए विशेषताओं को स्पष्ट की जरूरत है "done" criteria

## अनुसंधान या खोज कार्यों के लिए स्पेक्ट्स के बारे में क्या

इन्हें भिन्न आवश्यकता होती है।

खोज के लिए उदाहरण स्पेक्ट:

- **समस्या**: हम नहीं जानते हैं, ' क्या दृष्टिकोण ए या दृष्टिकोण बी सिफारिश इंजन के लिए बेहतर है
- **समाधान**: सप्ताह में 1 दोनो दृष्टिकोणों के प्रारूपण का प्रयोग करें
- **किए गए मानदंड**: हमारे पास दोनों के लिए प्रत्येक performance metrics के कार्य प्रारूप हैं, और एक सिफारिश है जिस पर आगे बढ़ना
- **क्षेत्र से बाहर**उत्पादन क्रियान्वयन

समय-बाक्सिंग अन्वेषण के लिए महत्वपूर्ण है

## मैं क्या विशेषताओं के लिए विनिर्दिष्टियाँ लिख सकता हूँ मैं नहीं हूँ

से शुरू करें जो आप जानते हैं

- समस्या विवरण (you should know this
- प्रस्तावित दृष्टिकोण
- प्रश्नों को खोलें (सब कुछ जो आप नहीं जानते
- किए गए मानदंड (चाहे अधूरा हो तो भी

अनुभागों को "TBD." अनिश्चितता के बारे में सच्चे रहें

तब स्पेक्ट समीक्षा प्रक्रिया का उपयोग करके रिक्तियों को भरें

याद रखें

## "क्या GitHub जारी करता है

पूरी तरह से . स्पेक्ट को नहीं है | ' | एक अलग दस्तावेज़ होने की जरूरत नहीं है & #44; . | अच्छी तरह से\ - | लिखा गया GitHub निर्गम या JIRA टिकट स्पेक्ट के रूप में काम कर सकता है पूरी तरह अच्छी तरह

क्या बात है सामग्री के रूप में नहीं Container

- **समस्या विवरण साफ करें** क्या हम हल कर रहे हैं और क्यों
- **प्रस्तावित समाधान** हम इसे कैसे दृष्टिकोण करेंगे
- **किए गए मानदंड** - विशिष्ट
- **क्षेत्र सीमाएँ** स्कोप में क्या है और बाहर क्या है
- **खुले प्रश्न** - इन को एक "question" लेबल या समान से चिह्नित करें

मुद्दे का उपयोग करने के लाभ

- **सब कुछ एक जगह में** - कोड
- **आसान लिंकिंग** - संदर्भ संबंधित मुद्दे, पीआरएस
- **निर्मित** - निर्गम संपादन इतिहास दिखाता है कि आवश्यकताओं का विकास कैसे हुआ
- **परिचित कार्यप्रणाली** - टीम पहले से ही यह कैसे प्रयोग करता है जानता है

निर्णायक के रूप में समस्याओं का उपयोग करने के लिए सुझाव

- स्पेक्ट के लिए मुद्दे विवरण का उपयोग करें, टिप्पणी में नहीं चिह्नित (लोगों ने वर्णन पढ़ा है
- विवरण को अद्यतन करें जैसे कि स्पेक्ट विकसित होता है ( परिवर्तनों को दिखाने के लिए सेक्शन्स जोड़ें
- स्थिति को इंगित करने के लिए लेबल का उपयोग करें
- महत्वपूर्ण स्पेक्टिक वार्तालापों को पिन करें ताकि वे ' comments में खो नहीं जाते
- समर्थन करने वाले दस्तावेज़ों के लिए लिंक (diagrams, mockups

परीक्षण: कोई इस मुद्दे को पढ़ सकता है और क्या बनाना जानता है।

## विनियमित उद्योगों में विनिर्दिष्टियों के बारे में क्या

यदि आप healthcare में हैं, ,, वित्त,,, एयरोस्पेस या अन्य विनियमित क्षेत्रों में है तो आपको अनुपालन के लिए अधिक औपचारिक विनिर्दिष्टियों की आवश्यकता होगी।

- समस्या से शुरू करें
- स्पष्ट रूप से किया गया परिभाषित करें
- जैसे आप सीखते हैं वैसे ही विकसित होना
- स्पेक्ट्स को चालू रखें

लेकिन आप को भी ज़रूरत होगी

- अपने उद्योग के documentation standards का अनुसरण करें
- अपेक्षित धाराओं को शामिल करें
- जहाँ आवश्यक हो, औपचारिक हस्ताक्षर प्राप्त करें
- अधिक विस्तृत संस्करण इतिहास बनाए रखें
- परियोजना समाप्त होने के बाद विवरण बनाए रखें

विनियमित परिवेशों में भी।

# अंत में

एक एजील वातावरण में अच्छी विशेषता स्पेक्ट्स लिखना एक कौशल है जो अभ्यास के साथ सुधार करता है।

प्रमुख सिद्धांत

- **स्पेक उपकरण हैं, , नहीं संविदा** - जहाँ आपको इसकी जरूरत है उसमें विवरण जोड़ें
- **समस्या से प्रारंभ करें, समाधान नहीं** - कार्यान्वयन समस्या को समझने से प्रवाहित होता है
- **सहयोग करें** - सभी स्पेक्ट बेहतर बनाने में योगदान करता है
- **स्पष्ट रूप से परिभाषित करें** - कंक्रीट के साथ लक्षण मेस्टैसिस को रोकना
- **कार्यक्षेत्र से बाहर मामले** - क्या आप कर रहे हैं नहीं के रूप में महत्वपूर्ण है जैसा कि तुम हो
- **विकास की आशा करें** - विशेषताएँ बदलती हैं जब आप उन्हें बनाते हैं
- **स्पेक्ट्स को चालू रखें** - वे परीक्षणों के लिए आधार बनते हैं

सबसे कठिन हिस्सा यह है-' आरंभिक स्पेक्ट को लिखना नहीं करता है, . यह जानता है कि जब एक विशेषता पर काम करना बंद करने के लिए . बिना स्पष्ट " के बिना किया जाता है

यही कारण है कि एजील आकलन इतनी कठिन है।

आप क्या कर सकते हैं best you can do: be clear about what

एक अच्छा विशेषता विकासकर्ताओं को समझदार ढंग से समस्याओं का समाधान करने के लिए शक्ति देता है जबकि वे सही समय पर रोक सकते हैं जानते हैं

और यदि आप एक विकासकर्ता हैं जो एक विशेषता को पढ़ रहा है कि ' समझ नहीं आता या कोई स्पष्ट नहीं है