لماذا رفضت الحلول عبر منصة في تطوير المحمول

صورة
دعني أشاركك شيئًا ما. أنا أحب فكرة تطوير منصة مشتركة. القدرة على استخدام مجموعة واحدة من الأدوات لجميع مهامي هي حلم. من الذي لا يريد استخدام أداة واحدة فقط لإكمال مهامه بنجاح؟ اكتب مرة واحدة ، ركض في كل مكان؟ اريد ان


أنا أيضا أحب فكرة المجتمع المثالي. مجتمع يحترم فيه الجميع معتقدات الآخرين ، وله حجج كبيرة / منطقية / معقولة ويضع مهمة لتصبح أفضل مما كانت عليه بالأمس. ومع ذلك ، فإن العالم الحقيقي نادراً ما يكون مثالياً.

أريد أن أعترف ، لقد أردت منذ فترة طويلة مناقشة الخلاف بين تطوير التطبيقات المحلية والهجينة. ليس بسبب الافتقار إلى الحافز ، بل بسبب الأمل أو الرغبة في ظهور مجموعة مشتركة من الأدوات ذات يوم ، افتح الأبواب وتوفير أفضل قيمة لإنشاء تطبيقات الهاتف المحمول. ما زلت أنتظر هذا اليوم ، وينبغي أن تساعد هذه المقالة في شرح ارتباطي بالتنمية المحلية.

الأم ، عبر منصة ، الهجين؟ Shta؟


يمكنني توضيح الاختلافات في كل نوع من أنواع التطوير ، ولكن بما أن المقارنات بينهما يمكن أن تتم لفترة طويلة جدًا ، فسأحاول جعل هذا الجزء قصيرًا.

التنمية الأصلية


في التطوير المحلي ، نستخدم أدوات متخصصة لإنشاء تطبيقات لنظام التشغيل iOS أو Android. وهذا هو ، هناك قاعدة رمز واحدة لكل منصة. تتضمن مجموعة الأدوات عادةً Swift / Objective-C + Xcode / AppCode لنظام التشغيل iOS و Kotlin / Java + Android Studio لنظام Android.

تطوير منصة الصليب


نحن نستخدم منصة / أداة تقوم بترجمة / تجميع / تشغيل الكود كما لو كانت مكونات أصلية. تختلف العملية وفقًا للأدوات التي تستخدمها ، ولكن النتيجة النهائية هي أن نفس الرمز يعمل ويعمل تقريبًا على منصات Android و iOS.

بعض الأمثلة على الأدوات: Xamarin، React Native، Flutter

التنمية الهجينة


في التطوير المختلط ، نستخدم منصة / أداة تطلق WebView ، والتي تستضيف التطبيق الخاص بك. يعني هذا أساسًا أن التطبيق الخاص بك هو موقع ويب يعمل من خلال التطبيق الخاص به. عادة ما توفر المنصة / الأداة أيضًا إمكانية الوصول إلى وظائفها الخاصة ، مثل الكاميرا ، من خلال المكونات الإضافية.

أمثلة الصك: كوردوفا وأيوني

الابتدائية مقابل الميزات الأساسية


لفهم خياري بشكل صحيح ، أحتاج إلى شرح نوعين مختلفين من خصائص الأداة.

لسنوات عديدة ، كان هناك جدل حول سبب كون إحدى الأدوات أفضل من الأخرى. تناقش معظم المقالات الميزات الواضحة للأداة ، مثل حجم قاعدة الشفرة ووقت التطوير وعدد المنصات التي يمكنك تطوير التطبيقات لها ، وما إلى ذلك. هذه المقارنات ، أحب أن أسمي "الخصائص الرئيسية" لكل صندوق أدوات. إن الخصائص الرئيسية للأداة هي الأكثر مباشرة لمقارنتها بالأدوات الأخرى ، حيث يمكنك عادة رؤية الاختلافات بشكل تجريبي (مثل سرعات التطوير ، وقت البناء ، وما إلى ذلك). هذه الخصائص عادة ما تكون مصدر قلق لمعظم الناس ، لكنها لا تكشف عن جوهرها.

لفهم عواقب اختيار الأداة تمامًا ، يجب مراعاة "الخصائص المتأصلة". هذه الخصائص بشكل عام أكثر دقة وتأثيرها يصعب تقييمها من الخصائص الرئيسية. لسوء الحظ ، لا يحدث فهم تأثير هذه الخصائص عادة إلا بعد اختيار الأداة واستثمار أموال كبيرة فيها. هذه الخصائص هي اكتمال ووضوح الوثائق ، وتوافر أدوات ملائمة ، إلخ.
يتطلب اتخاذ القرار الصحيح بشأن أداة التطوير فهمًا لخصائصها المتأصلة.


لماذا اخترت التنمية المحلية


على مدار سنوات تطوير البرمجيات ، أتيحت لي الفرصة لاستخدام عدة أدوات لمشاريع مختلفة. عادة ، تم اختيار أدوات التطوير من قِبل مهندس إداري أو فني. بمجرد أن تحولت إلى العمل الحر ، قررت أن تقرر المكدس التكنولوجي.

في النهاية ، تم اتخاذ قراري النهائي في التفكير ليس فقط في عوامل الأدوات ، ولكن أيضًا في كيفية تأثير الخصائص الملازمة لكل مشروع في المواقف المختلفة مع مرور الوقت ، وفيما يلي استنتاجاتي.

1. شعبية ثابتة


عندما بدأت البرمجة لأول مرة في عام 2013 ، كان هناك الكثير من غناء الضجيج Cordova و Appcelerator. بعد بضع سنوات ، تحولت Hype إلى Xamarin. بعد بضع سنوات كان بالفعل رد فعل الأصلية. في الوقت الحاضر؟ ترفرف تكتسب شعبية.

لقد وجدت أن شعبية الأداة تمثل أيضًا الدعم الذي تتلقاه. إذا كانت الأداة تابعة لشركة خاصة ، فإن الشهرة تعادل المبيعات ، مما يؤدي إلى زيادة تكاليف الدعم. إذا كانت الأداة مفتوحة المصدر ، فإن الشعبية تعتمد على عدد المطورين النشطين الذين يحسنون قاعدة الشفرة. يمكن أن تأتي شعبية وتذهب والتأثير على النظام البيئي للتنمية بأكمله حول هذه الأداة.
ألق نظرة على مخطط Google Trends هذا ، والذي يعرض العديد من الأدوات عبر الأنظمة الأساسية بمرور الوقت.

صورة
يعرض الرسم البياني لـ Google Trends تقريبًا نتائج عدد طلبات البحث للعديد من تقنيات الأجهزة المحمولة.
على الرغم من أن هذا المخطط هو تقدير تقريبي لشعبية (لأنه يمثل فقط نتائج عدد عمليات البحث) ، فإنه يوفر بعض نظرة ثاقبة على ما خبرته كمطور. الشركات والأفراد يميلون إلى استخدام ما هو جديد. هذا لا يعني بالضرورة أن الأداة أفضل أو أسوأ (نظرًا لأن العديد من المقالات ستناقش / تعارض ، بصرف النظر عن تاريخ الإصدار) ، لكن الناس يتحولون دائمًا إلى شيء جديد.

عندما يتم إطلاق أداة ، عادة ما يتم الترويج لها من قبل مجتمع التنمية وينظر إليها على أنها "مستقبل". هذا يمكن أن يسبب دعم الأدوات القديمة وضمور ببطء بمرور الوقت.

قارن هذا مع التطور الأصلي ، والذي يضمن الحصول على الدعم. على الرغم من أن Apple تدعم iOS و Google تدعم Android ، إلا أن التطوير الأصلي سيكون دائمًا ذا صلة. هذا هو السبب في التنمية المحلية لديها أكبر نظام بيئي للمطورين. كان فقط لفترة أطول وكان ثابتا في شعبيته.

وهناك اعتبار آخر يتعين القيام به هو نقل المشروع. احتمال أن يكون لدى المطور التالي بعض الخبرة على الأقل في مجال التنمية المحلية مرتفع للغاية. حتى إذا كانت لا تعمل بشكل أساسي مع الأدوات الأصلية ، فإن معظم المطورين على الأقل مرتبطون بطريقة أو بأخرى بهذه الأدوات ، وهو احتمال أقل بكثير مع حلول الأنظمة الأساسية.

2. القيم التجارية / الرؤية


نادراً ما أسمع الكثير من الناس يناقشون قيمة الأعمال عند مقارنة أدوات التطوير. سألت العديد من المطورين وحتى أصحاب الأعمال الفنية حول هذا الموضوع ، وفي أغلب الأحيان كان ما تلقيته في المقابل شكلًا فارغًا. من المهم أن نفهم كيف ترتبط قيمة الأعمال بأداة معينة وكيف يمكن أن توفر هذه القيمة.

على سبيل المثال ، خذ Xamarin. مرة أخرى في فبراير 2016 ، اشترت Microsoft Xamarin مقابل حوالي 400-500 مليون دولار. في ذلك الوقت ، كانت رؤية Microsoft مرتبطة بشكل أساسي بتطوير تطبيقات الهاتف المحمول. لقد حققوا تقدمًا كبيرًا في هذه الأداة ، بل قاموا بتضمينها كإضافة خارجية في Visual Studio و Visual Studio لنظام التشغيل Mac. بسرعة إلى الأمام بضع سنوات ، وتحولت رؤية مايكروسوفت إلى الذكاء الاصطناعي.

طوال هذا التغيير في الرؤية ، عملت في مشروع مع Xamarin. خلال هذا الوقت ، تعرفت على نظام أساسي كان علي أن أتحول من مجموعة مستقرة من الأدوات إلى مجموعة مهينة ببطء. بدا كل تحديث للأداة وكأنه محاولة ، على الأقل عدم كسر أي شيء. في أفضل الأحوال ، كل شيء يعمل كما ينبغي. في أسوأ الحالات ، قضيت ساعات أو حتى يومًا أو اثنين من التحديثات المتجددة وتحاول استعادة بيئتك إلى حالة صحية.

لم يتم توثيق هذا الانحطاط البطيء في الصفحة الرئيسية لـ Xamarin (وهو أمر مفهوم) ، ولكن إذا كنت تبحث عن معلومات في المنتديات ، فقد تشعر أن شيئًا ما قد تغير بمرور الوقت. لا تعمل الرسائل المتعلقة بالأشياء التي اعتادت العمل خارج الصندوق الآن ، أو حول كيفية تغير تجربة المطور مع هذه الأداة. كل هذا يؤثر بشكل مباشر على تكلفة التطوير ، ليس فقط بسبب الساعات الأولية ، ولكن أيضًا بسبب جودة الكود.

اللف أثناء الانتقال إلى أداة جديدة يؤدي إلى زيادة في التكاليف العامة وخسارة الأرباح


أعترف أن التنمية المحلية لديها أيضا مشاكلها هنا. على سبيل المثال ، تحاول Apple عادةً حث المطورين على التطوير بطريقة معينة (على سبيل المثال ، استخدام Storybords أو قالب MVC). مجموعة الأدوات ليست أيضًا مثالية دائمًا ، لذلك أستخدم AppCode فعليًا لمعظم تطوير iOS الخاص بي. ومع ذلك ، فإن كل من Apple و Google تنفقان قدرًا كبيرًا من الوقت والمال لضمان راحة المطورين في تطوير الحلول المحلية. مجرد إلقاء نظرة على Android Jetpack ، SwiftUI ، أو حتى الترقية إلى Kotlin و Swift.

في النهاية ، لا تتمتع Google أو Apple بأفضل رؤية في العالم ، لكنها متسقة. هناك احتمال ضئيل بأن الشركات بين عشية وضحاها سترفض دعم أدواتهم.

3. توفير الوقت


أوه نعم ، توفير الوقت. الكأس المقدسة للفعالية التنموية. يمكن لهذا الموضوع الذي يدور حوله نقاش ساخن بشأن أي أداة تطوير إنشاء أو تدمير الأعمال. هذا الموضوع في طليعة أي مشروع ، لأنه يؤثر بشكل مباشر على التكلفة. لكن دعنا نتراجع ونسأل أنفسنا سؤالاً.

ماذا يمكننا أن نفعل لتوفير الوقت؟


ساوضح. كما هو الحال مع برامج العمل ، عادة ما تكون هناك عدة طرق لحل المشكلة. يأتي القرار أساسًا من وضع شخص معين أو نشاط تجاري معين. هذا يعني أن نهج "حل واحد يناسب الجميع" خطير ؛ كما أنه قريب جدًا من عقلية "لقد فعلنا دائمًا". لسوء الحظ ، عندما يتعلق الأمر بتطوير الأجهزة المحمولة ، فإن الطريقة الشائعة لتوفير الوقت تتمثل في اختيار أداة مشتركة بين الأنظمة الأساسية. ولكن هل هو جيد جدا؟ هل يمكننا ، على سبيل المثال ، التوصل إلى طريقة أخرى لحل المشكلة؟ في العمل ، هناك قول مأثور "الناس فوق العمليات ، فوق الأدوات".
الناس فوق العمليات ، أعلاه الأدوات


هذا هو بالضبط ما يجب مراعاته عند اتخاذ القرار. كيف وقت التطوير بين اختيار أداة وخلق العمليات / الإجراءات أو حتى إنشاء نهج مختلف للتنمية؟

أداة قادرة على حل عقلية سيئة أثناء التنمية؟

هل تعمل الأداة على تبسيط عملية التطوير؟

هل يمكن لعملية أو عقلية معدلة بعض الشيء أن تؤدي إلى نتائج أفضل لتوفير الوقت؟

هل يمكننا استخدام البنية التحتية لحل مشاكلنا؟

هذه كلها أسئلة صحيحة توضح أيضًا تعقيد الحل. الأمر ليس بهذه السهولة مثل اختيار إطار عمل النظام الأساسي التالي بدلاً من التنمية المحلية. ما هو المناسب لك أو لعملك؟ فقط يمكنك أن تجعل هذا الاختيار.

نظرًا لأن التطوير الأصلي سينتج منتجًا عالي الجودة افتراضيًا وسيتم دعمه بشكل لا نهائي تقريبا ، سأختار هذه المجموعة من الأدوات. تحدد قيمي الشخصية هذا الاختيار (السعي للتميز). التنمية الخاصة تستغرق حقًا وقتًا أطول (كم يتنوع أكثر). هل هناك طريقة لتوفير الوقت؟ هل يجب علي توفير الوقت على الإطلاق؟ هل يجب علي فقط البحث عن المشروعات التي لا تشكل فيها الميزانية مشكلة؟

تتمثل إحدى طرق حل مشكلة توفير الوقت في إنشاء رمز يمكن إعادة استخدامه. أنشئ رمزًا عالي الجودة وقابل لإعادة الاستخدام يمكن دمجه بسرعة ونشره عبر مشاريع متعددة. نظرًا لأنني اخترت مجموعة أدوات لقوة التحمل ، فيمكنني التأكد من أن الكود القابل لإعادة الاستخدام الخاص بي سيكون قابلاً للاستخدام لبعض الوقت.

4. الاستدلالات الأخرى


في النهاية ، قدمت العديد من الاستنتاجات الأخرى قبل اختيار التنمية المحلية. لقد فعلت الكثير منها طوال حياتي المهنية ، حيث جربت العديد من الأدوات والعمليات والمناهج. وصف كل هذا من شأنه أن يجعل هذه المادة ضخمة بشكل لا يصدق. لذلك ، على سبيل الإيجاز ، سأقدم أطروحات بعضها.

الأشياء التي فكرت فيها قبل اختيار التنمية المحلية:
1. الوقت لمطور Onboarding
2. دعم البنية التحتية
3. CI / CD خطوط الأنابيب
4. تكلفة دعم المشروعات القديمة
5. طبقات التجريد = مساحة أكبر للخطأ
6. توفر المطورين (عدد المطورين الذين يستخدمون الأداة المحددة)
7. التسلسل الهرمي للأعمال (يحتوي Airbnb على سلسلة مدونات رائعة تتناول هذا الموضوع)
8. اعتماد النظام الأساسي على الإضافات
9. سعادة المطور عند استخدام الأداة
10. تكاليف التصميم: الحاجة إلى التصميم بطريقة تدعم كلا النظامين
11. هيكل مشروع مخصص
12. موارد المعرفة - عدد مجالات المعرفة المطلوبة (على سبيل المثال ، يتطلب Xamarin: + منصة Xamarin Api ، C # ، وظائف Android المحددة ، وظائف iOS المحددة ومعرفة ميزات كل منصة وكيفية تفاعلها من خلال Xamarin.)
13. الترخيص + التكلفة
14. المشهد من أنظمة التشغيل المتنقلة. على سبيل المثال: إلى متى ستستمر منصتان رئيسيتان فقط؟

النتائج


على مدى العامين الماضيين ، كان يستخدم تطوير الهاتف المحمول الأصلي كمجموعة من الأدوات الرئيسية. أحد الأسباب الكثيرة التي تجعلني سعيدًا بقراري هو أني استغرقت وقتًا للنظر في أكبر عدد ممكن من التفاصيل الدقيقة لكل أداة. أنا أعرف إيجابيات وسلبيات ، وهذا يعطيني مزايا.
آمل أن تساعدك هذه المقالة في طرح الأسئلة الصحيحة عند اختيار الأداة. لا تأخذ التسويق بالقيمة الاسمية ، والرجاء عدم اتباع الضجيج. حفر ، القذرة والتفكير النقدي.

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


All Articles