यदि किसी सुविधा को लागू करने के लिए मेरे पास कोई अच्छा विचार नहीं है तो क्या होगा? [बन्द है]


32

मैं अपने आवेदन पर काम कर रहा हूं और मैं फंस गया हूं। मुझे एक सुविधा लागू करनी है लेकिन मुझे इस सुविधा को लागू करने के लिए एक अच्छा तरीका नहीं मिल रहा है। मैं इसके बारे में कुछ दिनों के लिए सोच रहा था, और कोई अच्छा विचार नहीं आया। इंटरनेट पर खोज करने से मुझे कोई प्रेरणा नहीं मिली।

मुझे आगे बढ़ने की जरूरत है, लेकिन मैं जानना चाहता हूं कि सबसे अच्छा क्या है:

  • अधिक सोचें, अधिक प्रतीक्षा करें, और सर्वोत्तम दृष्टिकोण की खोज करते रहें
  • समय बर्बाद करना बंद करो और खराब डिजाइन के साथ शुरू करो, परीक्षणों के साथ सब कुछ कवर करें

तुम क्या सोचते हो? जैसा कि मैंने पहले कहा था, मैं अपने खुद के आवेदन पर काम कर रहा हूं। मेरे पास कोई समय सीमा नहीं है, लेकिन मैं ऐप को कोड करना भी समाप्त करना चाहता हूं।



12
@gnat: ये अन्य प्रश्न उन स्थितियों से निपटते हैं जहां पूछने वाले पहले से ही जानते हैं कि कुछ सुविधाओं को कैसे सफाई से लागू किया जाए, लेकिन "जल्दी और गंदे" मधुमक्खी पालन के लिए एक अच्छे डिजाइन का त्याग करना चाह सकते हैं। यह प्रश्न, हालांकि, एक अलग स्थिति का वर्णन करता है, यह सामान्य रूप से समस्या को हल करने के बारे में है जब आपको शुरू करने के लिए एक अच्छा बिंदु नहीं मिलता है, इसलिए यह IMHO है कोई डुप्लिकेट नहीं।
डॉक्टर ब्राउन

ध्यान दें: यदि ऐप एक सफलता है तो आप कभी भी "इसे कोडिंग खत्म नहीं करेंगे" और सुविधाओं को फिर से डिज़ाइन किया जाएगा। इसलिए मैं इसे अब तक का सबसे अच्छा तरीका लागू करने के साथ जाऊंगा।
ren

जवाबों:


41

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

आमतौर पर कोड का कुछ हिस्सा है जो मुझे पता है कि मुझे किसी भी तरह लिखना होगा। जो सामान मुझे अभी तक लिखना नहीं आता है, वह तब स्टब्स द्वारा बदल दिया जाता है जो या तो डमी परिणाम देते हैं, या एक सन्निकटन का उपयोग करते हैं जो बाकी का परीक्षण करने के लिए पर्याप्त है।

यह आपको उत्पादक बनाए रखता है। और जब तक आपको लापता टुकड़े को लागू करने की आवश्यकता होती है, तब तक आपके पास इंटरफ़ेस होता है। और आपने समस्या के आसपास बहुत सारे कोड लिखे हैं, एक ही समस्या डोमेन में, जो आमतौर पर मुझे विचार उत्पन्न करने में मदद करता है: आप अधिक सटीक रूप से जानते हैं कि आपको आउटपुट के लिए क्या आवश्यक है, और क्या अन्य इनपुट उपलब्ध हैं यदि यह समस्या को हल करने में मदद करता है । इसके अलावा, अक्सर यह निष्कर्ष निकलता है कि लापता टुकड़े को शुरू में जितना सोचा जा सकता है, उतने दूर रहने की आवश्यकता नहीं है।


6
अंतिम रूप से सबसे कम समझे जाने वाले कोड को लिखने का नकारात्मक पक्ष यह है कि आप यह पता लगा सकते हैं कि समस्या को हल करना संभव नहीं है, या केवल कार्यक्रम की वास्तुकला में पर्याप्त परिवर्तन के साथ इसे हल करना संभव है, जिससे बहुत सारे व्यर्थ प्रयास होते हैं।
रिच स्मिथ

1
इस दृष्टिकोण का दूसरा पहलू कभी-कभी आपको ले जाता है, "मैं समस्या को हल कर सकता हूं। एक्स। जो कुछ बचा है उसे वाई करना है।" जब वास्तव में, Y संभव नहीं है और वास्तविक समाधान Z है।
ब्रायन

@ रीचस्मिथ, ब्रायन: ऐसा होता है, हालांकि शायद ही कभी आप मुझसे पूछें। यह आपको एक बेहतर समझ प्रदान कर सकता है कि लापता भाग इतना कठिन क्यों है, जो आपके अनुमानों को बेहतर बनाता है। और मैं जिम्मेदारियों के एक सट्टा और मनमाना विभाजन के आधार पर काम के हफ्तों में लगाने का सुझाव नहीं दूंगा।
jdv-Jan de Vaan

यह तर्क है कि उन downsides हैं या नहीं, हालांकि। क्या आपका समय बेहतर होगा कि आप इस मुद्दे की खोजबीन न करें? या आप यह अनुमान लगाकर बैठे हैं कि क्या काम करेगा? मुझे लगता है कि त्वरित प्रोटोटाइप लिखना, सामान आज़माना और तेज़ी से असफल होना अच्छा अभ्यास है। यह सुनिश्चित करने और भविष्य में इसी तरह की स्थितियों के लिए अनुभव प्राप्त करने का एकमात्र तरीका है
सारा

14

यदि खोज विफल हो जाती है, तो आप हमेशा प्राप्त किए गए पहले (जरूरी नहीं कि सबसे अच्छा) विचार का उपयोग करके कार्यान्वित कर सकते हैं, और फिर जब आप सही दृष्टिकोण पाते हैं तो इसे बाद में रिफैक्ट कर सकते हैं।

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

ऐसा करते समय, इस तरह से डिजाइन और कार्यान्वित करना सुनिश्चित करें कि रिफ्लेक्टर करना आसान हो। यदि आप इसे ठीक से करते हैं, तो आपको केवल समस्याग्रस्त भाग को बदलना होगा, और प्रारंभ से शुरू नहीं करना होगा।


1
ऐसा लगता है कि इस पोस्ट में माना जा रहा है, लेकिन मैं यह जोड़ना चाहूंगा कि यह बहुत महत्वपूर्ण है कि आप अपने कोड को इस तरह से लिखें कि उसे फिर से करना आसान हो।
c_maker

@c_maker हाँ, बिल्कुल। अन्यथा, यह खरोंच से बाद में सब कुछ फिर से लिखने के लिए कोई मतलब नहीं है। मैं इसे उत्तर में जोड़ूंगा। धन्यवाद
5050

10

किसी दूसरे व्यक्ति से पूछने के बारे में क्या? उदाहरण के लिए, आप यहां अपनी समस्या का वर्णन कर सकते हैं, या, यदि यह एक कार्यान्वयन समस्या अधिक है, stackoverflow.com पर, और विचारों के लिए पूछें। यदि आपको अच्छे उत्तर नहीं मिलते हैं, तो कभी-कभी यह समस्या को हल करने में आपकी मदद करेगा।


यदि यह यूजर इंटरफेस है तो यह एक समस्या है, इसमें ux.stackexchange.com
रोब चर्च

यदि आप एसओ से पूछते हैं तो उत्तर क्रिएटिव कॉमन्स के तहत कॉपीराइट होने वाले हैं, और परियोजना के आधार पर, यह कोड अनुपयोगी हो सकता है।
smcg

2
सलाह कॉपीराइट की जा सकती है? निश्चित रूप से लेखक इसे एक ट्यूटोरियल के रूप में उपयोग करेगा, कॉपी / पेस्ट नहीं?
१२:१३ बजे १२:१३

@smcg: इस विषय पर यहां चर्चा की गई थी: meta.stackexchange.com/questions/12527/… - लेकिन ईमानदारी से, अगर यह वास्तव में एक मुद्दा बनता जा रहा है, तो मुझे लगता है कि कोई व्यक्ति GrizzLy द्वारा सुझाए गए तरीके से इसे दरकिनार कर सकता है।
डॉक ब्राउन

@DocBrown IANAL तो मैं यह सुनिश्चित करने के लिए नहीं कह सकता कि क्या होगा, लेकिन कभी-कभी सावधानी बरतने के लिए यह अच्छा है।
smcg

2

कुछ विचार:

  • बुद्धिशीलता
    आपके द्वारा नीचे दिए गए प्रत्येक मूर्ख विचार को लिखें (कागज या व्हाइटबोर्ड पर)। उन लोगों को पार करें जो सुनिश्चित हैं कि आप काम नहीं करेंगे। लिखते रहो। संभावित रूप से संबंधित वास्तविक दुनिया की समस्याओं का समाधान शामिल करें। जैसे, पेंट मिलाना, या दीवार में कील ठोकना, या अपने तेल को बदलकर वास्तविक दुनिया को सुलझाना है?

  • Google से सहायता मांगें , यहां पूछें, अपने geek दोस्तों से पूछें, आदि।
  • संबंधित समस्या
    को हल करें आप समस्या को हल नहीं कर सकते हैं , लेकिन क्या आप बहुत सरल हल कर सकते हैं? या एक समान रूप से जटिल, संबंधित एक? वो करें। फिर अपने समाधान को वांछित समाधान के करीब लाने के लिए छोटे, व्यक्तिगत बदलाव करें।

  • भले ही आपका इंटरफ़ेस एक वेब सेवा, वेब पेज, मूल रूप, कैमरा, कीबोर्ड, मॉनिटर, या जो कुछ भी है , उसके बावजूद बाहर से लिखना शुरू करें। इंटरफ़ेस काम करने के लिए कोड / pseudocode की कुछ पंक्तियाँ लिखें। जादू विधियों का उपयोग करें जो अभी तक मौजूद नहीं हैं। पुनरावर्ती प्रत्येक nonexistent जादुई विधि के लिए एक ही है। बाद में ऑप्टिमाइज़ करें।

2

बुरा समाधान के साथ जाने में कुछ भी गलत नहीं है। उस समय अक्सर आप समस्या डोमेन के बारे में पर्याप्त नहीं जानते हैं। एक बुरे समाधान के साथ जाने से आप आगे बढ़ते हैं और समस्या के बारे में अधिक सीखते हैं। फिर आप अभी भी वापस जा सकते हैं और अपने पहले समाधान को रिफ्लेक्टर कर सकते हैं।


1

मैं हमेशा कोशिश करता हूं और इसे अंतिम उपयोगकर्ता के नजरिए से देखता हूं। एक डेवलपर के रूप में "शांत" विचार के बारे में सोचना बहुत आसान है कि आप उस पर काम कर रहे उम्र बिता सकते हैं जो वास्तव में आपके ऐप में बहुत कम जोड़ता है।

आदर्श रूप से आप अपने ऐप में सभी विशेषताओं को मैप करना चाहते हैं और अंतिम उपयोगकर्ता को लाभ के अनुसार उन्हें प्राथमिकता देते हैं, व्यक्तिगत रूप से मैं MOSCoW का उपयोग करता हूं , हालांकि जब तक आप अपनी प्राथमिकता के तरीके को एक समान रखते हैं तब तक यह 1 के रूप में सरल हो सकता है। - 5।

जिसके बाद अगर आपको अभी भी लगता है कि यह सुविधा आपके ऐप का एक अनिवार्य हिस्सा है तो जैसा कि लोग पहले ही कह चुके हैं, पूछें! मुझे नहीं लगता कि मुझे कभी ऐसी समस्या का सामना करना पड़ा है जो अंततः या तो एक सहयोगी या उन अच्छे लोगों द्वारा हल नहीं की गई जो स्टैकओवरफ्लो पर थे।


कूल, क्योंकि मैं मास्को से हूँ :)
user21974

वहाँ तुम इसकी निशानी जाओ!
श्रीमती फालिग

1

मेरी राय है: कभी भी वह कोड न लिखें जो सिर्फ काम करता हो! भविष्य में रिफ्लेक्टर करना बहुत मुश्किल होना चाहिए।

यह डेवलपर्स के लिए एक बहुत ही सामान्य दृष्टिकोण है (और निश्चित रूप से पीएम या बॉस)। मैंने बहुत समय सुना "बस इसे काम करना" या "मैं बाद में ठीक करूँगा" (बाद में जब ??? कभी नहीं!) लेकिन, मुझे लगता है कि गुणवत्ता ऐसी चीज नहीं है जिसे आप परियोजना के बीच में प्राप्त नहीं कर सकते।

मेरा सुझाव है, थोड़ी देर के लिए अपनी समस्या के बारे में सोचना बंद करो .... कुछ और करो, और, कभी-कभी, समाधान बस खुद ही सामने आता है।

Btw, एक सहयोगी से पूछना आपकी परेशानी को हल करने का एक शानदार तरीका है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.