क्यों मैंने मोबाइल विकास में क्रॉस-प्लेटफॉर्म समाधान से इनकार कर दिया

छवि
मुझे आपके साथ कुछ साझा करने दें। मुझे क्रॉस-प्लेटफॉर्म विकास का विचार पसंद है। मेरे सभी कार्यों के लिए उपकरणों के एक सेट का उपयोग करने की क्षमता एक सपना है। अपने कार्यों को सफलतापूर्वक पूरा करने के लिए कौन केवल एक उपकरण का उपयोग नहीं करना चाहेगा? एक बार लिखो, हर जगह दौड़ोगे? मैं चाहता हूँ!


मुझे एक यूटोपियन समाज का विचार भी पसंद है। एक समाज जहां हर कोई दूसरों की मान्यताओं का सम्मान करता है, महत्वपूर्ण / तार्किक / उचित तर्क देता है और कार्य को कल से बेहतर बनने के लिए निर्धारित करता है। हालांकि, वास्तविक दुनिया शायद ही कभी इतनी परिपूर्ण होती है।

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

देशी, पार मंच, संकर? Shta?


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

मूल विकास


मूल विकास में, हम iOS या Android के लिए एप्लिकेशन बनाने के लिए विशेष उपकरणों का उपयोग करते हैं। यही है, प्रत्येक प्लेटफ़ॉर्म के लिए एक कोड आधार है। टूलकिट में आमतौर पर आईओएस के लिए स्विफ्ट / ऑब्जेक्टिव-सी + एक्सकोड / ऐपकोड और एंड्रॉइड के लिए कोटलिन / जावा + एंड्रॉइड स्टूडियो शामिल हैं।

क्रॉस प्लेटफॉर्म डेवलपमेंट


हम एक मंच / उपकरण का उपयोग करते हैं जो आपके कोड का अनुवाद / संकलन / चलाता है जैसे कि यह मूल घटक थे। आपके द्वारा उपयोग किए जाने वाले टूल के आधार पर प्रक्रिया भिन्न होती है, लेकिन अंतिम परिणाम यह है कि एक ही कोड चलता है और एंड्रॉइड और आईओएस प्लेटफॉर्म पर लगभग समान है।

औजारों के कुछ उदाहरण: ज़मारिन, रिएक्ट नेटिव, स्पंदन

हाइब्रिड विकास


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

साधन उदाहरण: कॉर्डोवा और आयोनिक

प्राथमिक बनाम आवश्यक विशेषताएं


मेरी पसंद को सही ढंग से समझने के लिए, मुझे दो अलग-अलग प्रकार की टूल विशेषताओं की व्याख्या करने की आवश्यकता है।

कई सालों से, इस बारे में बहस चल रही है कि एक उपकरण दूसरे से बेहतर क्यों है। अधिकांश लेख उपकरण की स्पष्ट विशेषताओं पर चर्चा करते हैं, जैसे कि कोड आधार का आकार, विकास समय, उन प्लेटफार्मों की संख्या, जिनके लिए आप एप्लिकेशन विकसित कर सकते हैं, और इसी तरह। ये तुलना, मुझे प्रत्येक टूलबॉक्स की "मुख्य विशेषताओं" को कॉल करना पसंद है। उपकरण की मुख्य विशेषताएं अन्य उपकरणों के साथ उनकी तुलना करने के लिए सबसे अधिक प्रत्यक्ष हैं, क्योंकि आप आमतौर पर अनुभवजन्य रूप से अंतर (यानी विकास की गति, निर्माण समय आदि) देख सकते हैं। ये विशेषताएं आमतौर पर ज्यादातर लोगों के लिए चिंता का विषय हैं, लेकिन वे सार को प्रकट नहीं करते हैं।

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


मैं मूल विकास क्यों चुनूं?


सॉफ्टवेयर विकास के वर्षों में, मुझे विभिन्न परियोजनाओं के लिए कई उपकरणों का उपयोग करने का अवसर मिला है। आमतौर पर, विकास के साधनों का चुनाव मेरे लिए एक प्रबंधन या तकनीकी इंजीनियर द्वारा किया जाता था। जैसे ही मैंने फ्रीलांस पर स्विच किया, मैंने तकनीकी स्टैक पर निर्णय लेने का फैसला किया।

अंत में, मेरा अंतिम निर्णय न केवल साधनों के कारकों पर विचार करने के लिए नीचे आया, बल्कि यह भी बताया कि समय के साथ-साथ विभिन्न स्थितियों में अंतर्निहित विशेषताओं से मेरी प्रत्येक परियोजना कैसे प्रभावित होगी और यहां मेरे निष्कर्ष हैं।

1. लगातार लोकप्रियता


जब मैंने पहली बार 2013 में प्रोग्रामिंग शुरू की थी, तो बहुत सारे प्रचार स्वर कॉर्डोवा और ऐप्पलरेटर थे। कुछ साल बाद, हाइप ने ज़ामरीन को बदल दिया। कुछ साल बाद यह पहले से ही रिएक्ट नेटिव था। वर्तमान समय में? स्पंदन लोकप्रियता हासिल कर रहा है।

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

छवि
Google ट्रेंड ग्राफ विभिन्न क्रॉस-प्लेटफ़ॉर्म मोबाइल तकनीकों के लिए खोज क्वेरी की संख्या के परिणामों को लगभग प्रदर्शित करता है।
यद्यपि यह चार्ट लोकप्रियता का मोटा अनुमान है (क्योंकि यह केवल खोजों की संख्या के परिणामों का प्रतिनिधित्व करता है), यह एक डेवलपर के रूप में मुझे जो अनुभव हुआ उसमें कुछ अंतर्दृष्टि प्रदान करता है। व्यवसाय और व्यक्ति जो नया है उसका उपयोग करते हैं। यह जरूरी नहीं है कि उपकरण बेहतर या बदतर है (चूंकि कई लेख रिलीज की तारीख की परवाह किए बिना / के खिलाफ बहस करेंगे), लेकिन लोग हमेशा कुछ नया करने के लिए स्विच करते हैं।

जब कोई उपकरण जारी किया जाता है, तो इसे आमतौर पर विकास समुदाय द्वारा प्रचारित किया जाता है और इसे "भविष्य" के रूप में देखा जाता है। इससे पुराने उपकरण कम समर्थन और धीरे-धीरे समय के साथ शोष का कारण बन सकते हैं।

मूल विकास के साथ इसका विरोध करें, जिसे समर्थन प्राप्त करने की गारंटी है। यद्यपि Apple iOS का समर्थन करता है और Google Android का समर्थन करता है, लेकिन मूल विकास हमेशा प्रासंगिक रहेगा। यही कारण है कि देशी विकास में डेवलपर्स का सबसे बड़ा पारिस्थितिकी तंत्र है; यह केवल लंबे समय तक था और अपनी लोकप्रियता के अनुरूप था।

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

2. बिजनेस वैल्यू / विजन


मैंने शायद ही कभी सुना है कि कई लोग विकास उपकरण की तुलना करते समय व्यावसायिक मूल्य पर चर्चा करते हैं। मैंने विभिन्न डेवलपर्स और यहां तक ​​कि तकनीकी व्यवसाय के मालिकों से इस बारे में पूछा, और सबसे अधिक बार जो मुझे बदले में मिला वह एक खाली नज़र था। यह समझना महत्वपूर्ण है कि किसी विशेष उपकरण के साथ व्यावसायिक मूल्य कैसे संबंधित है और यह उस मूल्य को कैसे प्रदान कर सकता है।

उदाहरण के लिए, ज़मारिन को लें। फरवरी 2016 में वापस, Microsoft ने Xamarin को लगभग $ 400-500 मिलियन में खरीदा। उस समय, Microsoft की दृष्टि मुख्य रूप से मोबाइल अनुप्रयोगों के विकास से संबंधित थी। उन्होंने इस टूल के साथ महत्वपूर्ण प्रगति की और इसे विजुअल स्टूडियो और मैक के लिए विजुअल स्टूडियो के आउट-ऑफ-द-बॉक्स ऐड-इन के रूप में भी शामिल किया। कुछ वर्षों में तेजी से आगे बढ़ा, और Microsoft की दृष्टि कृत्रिम बुद्धिमत्ता में बदल गई।

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

यह धीमी गिरावट Xamarin होमपेज (जो समझ में आता है) पर प्रलेखित नहीं है, लेकिन यदि आप फ़ोरम पर जानकारी खोजते हैं, तो आप महसूस कर सकते हैं कि कुछ समय के साथ बदल गया है। उन चीज़ों के बारे में संदेश, जो अब बॉक्स से बाहर काम करते थे, या केवल इस उपकरण के साथ डेवलपर के अनुभव कैसे बदल गए हैं, इस बारे में काम नहीं करते हैं। यह सब सीधे विकास लागत को प्रभावित करता है, न केवल कच्चे घंटों के कारण, बल्कि कोड की गुणवत्ता के कारण भी।

एक नए उपकरण में परिवर्तन के दौरान लैप करने से ओवरहेड लागत और खोए लाभ में वृद्धि होती है


मैं स्वीकार करता हूं कि देशी विकास की भी अपनी समस्याएं हैं। उदाहरण के लिए, ऐप्पल आमतौर पर डेवलपर्स को एक निश्चित तरीके से विकसित करने की कोशिश करता है (उदाहरण के लिए, स्टोरीबॉर्ड्स या एमवीसी टेम्पलेट का उपयोग करके)। टूलकिट भी हमेशा सही नहीं होता है, इसलिए मैं वास्तव में अपने अधिकांश iOS विकास के लिए AppCode का उपयोग करता हूं। फिर भी, Apple और Google दोनों ही यह सुनिश्चित करने के लिए बहुत समय और पैसा खर्च करते हैं कि डेवलपर्स देशी समाधान विकसित करने में सहज हों। बस Android Jetpack, SwiftUI को देखें, या यहां तक ​​कि कोटलिन और स्विफ्ट को अपग्रेड करें।

अंततः, Google या Apple के पास दुनिया में सबसे अच्छी दृष्टि नहीं है, लेकिन यह सुसंगत है। एक न्यूनतम संभावना है कि रातोंरात कंपनियां अपने उपकरणों का समर्थन करने से इनकार कर देंगी।

3. समय की बचत


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

समय बचाने के लिए हम क्या कर सकते हैं?


मैं समझा दूंगा। व्यापार सॉफ्टवेयर के साथ के रूप में, आम तौर पर एक समस्या को हल करने के कई तरीके हैं। निर्णय मुख्य रूप से किसी विशेष व्यक्ति या व्यवसाय की स्थिति से आता है। इसका मतलब यह है कि "एक समाधान सभी फिट बैठता है" दृष्टिकोण खतरनाक है; यह "हम हमेशा किया" मानसिकता के बहुत करीब आता है। दुर्भाग्य से, जब मोबाइल विकास की बात आती है, तो समय बचाने के लिए एक सामान्य दृष्टिकोण एक क्रॉस-प्लेटफ़ॉर्म टूल चुनना है। लेकिन क्या यह इतना अच्छा है? क्या हम कह सकते हैं, समस्या को हल करने का एक और तरीका है? व्यापार में, एक कहावत है "लोग प्रक्रियाओं से ऊपर, उपकरण से ऊपर हैं।"
लोग प्रक्रियाओं से ऊपर, उपकरण से ऊपर


निर्णय लेते समय ठीक ऐसा ही माना जाना चाहिए। किसी टूल को चुनने और प्रक्रियाओं / प्रक्रियाओं को बनाने या यहां तक ​​कि विकास के लिए एक अलग दृष्टिकोण बनाने के बीच विकास का समय कैसे होता है?

एक उपकरण जो विकास के दौरान एक बुरी मानसिकता को हल करने में सक्षम है?

क्या टूल विकास प्रक्रिया को सुव्यवस्थित करता है?

क्या थोड़ी सी संशोधित प्रक्रिया या मानसिकता बेहतर समय की बचत के परिणाम ला सकती है?

क्या हम अपनी समस्याओं को हल करने के लिए बुनियादी ढांचे का उपयोग कर सकते हैं?

ये सभी सही प्रश्न हैं जो समाधान की जटिलता को भी दर्शाते हैं। यह मूल विकास के बजाय अगले क्रॉस-प्लेटफॉर्म ढांचे को चुनने के रूप में सरल नहीं है। आपके या आपके व्यवसाय के लिए क्या सही है? केवल आप इसे चुन सकते हैं।

चूंकि मूल विकास डिफ़ॉल्ट रूप से एक उच्च गुणवत्ता वाले उत्पाद का उत्पादन करेगा और लगभग विज्ञापन इन्फिनिटम का समर्थन करेगा, इसलिए मैं इस उपकरण के सेट का चयन करूंगा। मेरे व्यक्तिगत मूल्य इस विकल्प को निर्धारित करते हैं (उत्कृष्टता के लिए प्रयास करते हैं)। स्वयं का विकास वास्तव में अधिक समय लेता है (कितना अधिक भिन्न होता है)। क्या समय बचाने का कोई तरीका है? क्या मुझे समय बचाना चाहिए? क्या मुझे उन परियोजनाओं की तलाश करनी चाहिए जहां बजट कोई समस्या नहीं है?

समय बचाने की समस्या को हल करने का एक तरीका कोड बनाना है जिसका पुन: उपयोग किया जा सकता है। उच्च-गुणवत्ता वाले, पुन: प्रयोज्य कोड बनाएं जो कई परियोजनाओं में जल्दी एकीकृत और तैनात किए जा सकते हैं। चूंकि मैंने स्थायित्व के लिए टूलकिट चुना, इसलिए मुझे यकीन है कि मेरा पुन: प्रयोज्य कोड कुछ समय के लिए उपयोग करने योग्य होगा।

4. अन्य संदर्भ


अंततः, मैंने एक देशी विकास चुनने से पहले कई अन्य निष्कर्ष निकाले। जिनमें से कई मैंने अपने पूरे करियर में किए हैं, विभिन्न उपकरणों, प्रक्रियाओं और दृष्टिकोणों की कोशिश कर रहा हूं। इस सब का विवरण इस लेख को अविश्वसनीय रूप से स्वैच्छिक बना देगा। इसलिए, संक्षिप्तता के लिए, मैं उनमें से कुछ का शोध करूंगा।

देशी विकास को चुनने से पहले जिन बातों पर मैंने विचार किया:
1. ऑनबोर्डिंग डेवलपर के लिए समय
2. आधारभूत संरचना का समर्थन करना
3. सीआई / सीडी पाइपलाइन
4. विरासत परियोजनाओं के समर्थन की लागत
5. अमूर्तन की परतें = त्रुटि के लिए अधिक जगह
6. डेवलपर्स की उपलब्धता (निर्दिष्ट टूल का उपयोग करने वाले डेवलपर्स की संख्या)
7. व्यावसायिक पदानुक्रम (Airbnb की एक महान ब्लॉग श्रृंखला है जो इस विषय पर छूती है)
8. प्लगइन्स पर प्लेटफ़ॉर्म की निर्भरता
उपकरण का उपयोग करते समय डेवलपर की खुशी
10. डिजाइन की लागत: इस तरह से डिजाइन करने की आवश्यकता दोनों प्लेटफार्मों का समर्थन करने के लिए
11. कस्टम प्रोजेक्ट संरचना
12. ज्ञान संसाधन - आवश्यक ज्ञान के क्षेत्रों की संख्या (उदाहरण के लिए, ज़मरीन की आवश्यकता है: + ज़ामरीन अपी मंच, सी #, विशिष्ट एंड्रॉइड कार्यक्षमता, विशिष्ट आईओएस कार्यक्षमता और प्रत्येक प्लेटफ़ॉर्म की विशेषताओं का ज्ञान और वे ज़मैरिन के माध्यम से कैसे बातचीत करते हैं।]
13. लाइसेंस + लागत
14. मोबाइल ऑपरेटिंग सिस्टम का परिदृश्य। उदाहरण के लिए: केवल 2 प्रमुख प्लेटफॉर्म कब तक चलेंगे?

निष्कर्ष


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

Source: https://habr.com/ru/post/hi480686/


All Articles