"المستخدمون النهائيون - نحن معك": حول تطوير Android في CFT



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

بالنسبة للتطبيقات المالية التي طورتها CFT لمختلف العملاء ، فإن العدد الإجمالي للمنشآت بالملايين - أي أن القليل منهم يمكنهم التباهي بهذه الخبرة في هذا المجال. الاستفادة من حقيقة أن الشركة كانت حاضرة في مؤتمر Mobius لدينا ، سألنا رئيس مجموعة تطوير تطبيقات Android Mikhail Emelyanov عدة أسئلة حول كيف يبدو تطوير Android في CFT.

- أولاً ، أخبرنا بإيجاز عن "CFT" لأولئك الذين لم يسمعوا بهذا الاسم من قبل.

- تعمل الشركة في سوق التكنولوجيا المالية منذ أكثر من 25 عامًا: عندما ظهرت ، لم يكن هناك حتى مفهوم التكنولوجيا المالية ، ولكن حتى ذلك الحين أنتجت منتجات وخدمات تسمى الآن بهذه الطريقة. في الواقع ، لا يزال اسم "مركز التقنيات المالية" ، الذي ظهر في أوائل التسعينات ، مناسبًا ويتحدث عن نفسه.

بالطبع ، تغير الكثير خلال الفترة الماضية (من كان يتخيل Android في عام 1991؟) ، لكن الجوهر ظل كما هو: تقوم CFT بتطوير وتطوير حلول تكنولوجيا المعلومات والخدمات التكنولوجية التي تجعل المعاملات المالية بسيطة ومريحة (بما في ذلك تحويل الأموال والمدفوعات).

ظهرت الشركة في Novosibirsk Academgorodok ، ولا يزال مركز تطويرها الرئيسي موجودًا هناك. ولكن الآن ، إلى جانبه ، توجد مكاتب في العديد من المدن الأخرى في روسيا ، وكذلك في تشيسيناو وألماتي ودوشنبه. يستمر النمو: الخدمات والوحدات الجديدة تظهر باستمرار ، R & D- الاتجاه يتطور بنشاط.

- وكم عدد الأشخاص المنخرطين بشكل خاص في تطوير الهواتف المحمولة ، وهل يمكنك تقديم أمثلة على التطبيقات التي تم تطويرها في CFT؟

—لدينا فريق متنقل موزع في نوفوسيبيرسك وتومسك وسان بطرسبرغ. يبلغ عدد الأشخاص الآن أكثر من 50 شخصًا ، لكن لدى الشركة خططًا لتطوير الهواتف المحمولة يجب أن ننمو مرتين أسرع لمطابقتها.

أكثر تطبيقاتنا شيوعًا لنظامي iOS و Android هي تحويلات الأموال (أكثر من 1.3 مليون عملية تنزيل على Google Play) ومكاتب الدفع Beeline و Corn .

بالإضافة إلى ذلك ، لدى مزود الخدمات المصرفية عبر الإنترنت Faktura.ru أكثر من 100 تطبيق محمول مخصص لنظامي iOS و Android. في المجموع ، نفذ فريق Faktura.ru 340 مشروعًا مصرفيًا عبر الإنترنت للعملاء من الشركات والقطاع الخاص. بشكل عام ، يعمل حوالي 130 مصرفاً على منصة التكنولوجيا هذه.

- العمل مع الشؤون المالية له تفاصيله الخاصة - كيف يختلف تطوير Android في CFT عن الشركة "المتوسطة"؟

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

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

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

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

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

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

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

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



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

- الكثير من المحاولة. عندما أصدرت Google إصدار Android Architecture Component ، قررنا تجربته وتنفيذه في أحد المشاريع الجديدة. لكننا واجهنا أشعل النار: على سبيل المثال ، لم نر في ViewModel وسيلة فعالة بما فيه الكفاية لحل مشكلة دورة الحياة لمشروعنا. لكن يبدو أن LiveData مفيدة لنا لطبقة العرض التقديمي.

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

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

بشكل عام ، نحن نحب الطريقة التي تطور بها Kotlin ، ويسرنا أن مجتمعها ينمو. وبما أنه أصبح منتشرًا جدًا الآن ، حتى لا يتم تطويره ، يجب أن يكون لدى المرء معتقدات ومبادئ قوية جدًا.

نستخدم أيضًا RxJava / RxKotlin و Retrofit و Dagger 2 المشهورين ، ربط البيانات من Google ، ونخطط لتجربة RxBinding ، ويمكن إدراج كل شيء لفترة طويلة. بشكل عام ، لا تتداخل التكنولوجيا المالية مع اللعب الكامل بالتقنيات المختلفة.

- لم تناسبك مكونات Android Architecture - ولكن هل يمكنك التوصية بها للآخرين؟ إلى أي مدى كانت الهجرة كثيفة الاستخدام للموارد: يجب على المشاريع القائمة منذ فترة طويلة التفكير فيها ، أم من الأفضل تركها جديدة؟

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

- الغرفة المذكورة هي تقنية حديثة إلى حد ما لم يجد الكثير منها وقتًا لتجربتها. لذلك ، من المثير للاهتمام: ما كانت تجربتك معها؟

- الغرفة تسعدنا. باستخدام التعليقات التوضيحية ، يمكنك بسهولة وصف إنشاء الجداول وتحديد المعاملات وما إلى ذلك. هناك دعم مدمج لـ Kotlin و Rx و LiveData. من السلبيات في الإصدار الثابت الحالي (1.1.0) هو عدم وجود أوامر لتنظيف قاعدة البيانات والحاجة إلى تكوين الاتصالات يدويًا. لا تزال هناك أشياء صغيرة غير مريحة عند استخدام Room في Kotlin ، لكنهم قرروا تدريجيًا مع إصدار إصدارات جديدة. على سبيل المثال ، أصبحت أساليب المعاملات الافتراضية في الواجهات مدعومة فقط في الإصدار 1.1.0-alpha2.

بشكل عام ، مع Room ، أصبح العمل مع قواعد البيانات أكثر ملاءمة وكفاءة.

- هناك وجهة نظر "كل ORMs الخاصة بك ماكرة ، وما زالت التجريد تتدفق وعليك أن تنزل إلى مستوى SQL" - ما رأيك في هذا؟

- في أي تقنية ، لحل المهام غير التافهة ، عليك كتابة التعليمات البرمجية ، حتى SQL. الشيء الرئيسي هو أن هذا لا يتحول إلى النفقات العامة. في الغرفة ، يمكنك أيضًا كتابة استعلامات SQL يدويًا (على سبيل المثال ، الترحيل أو الاستعلامات المعقدة) ، ولكن من خلال التعليقات التوضيحية ، من الملائم جدًا القيام بذلك. على سبيل المثال ، يمكنك سحب البيانات من جداول متعددة باستخدام Relation.

- نظرًا لأن CFT أقدم من Android نفسه ، فمن المحتمل أن يكون سؤال Legacy مناسبًا لك. هل غالبا ما تقوم بإعادة بناء؟

- بالطبع ، سيوجد الرمز القديم في أي مشروع. والبيان الشائع "أي رمز مكتوب اليوم ، غدا يصبح إرثًا" صحيح تمامًا.

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

أيضا في استخدام التكنولوجيا. على سبيل المثال ، في أحد مشاريعنا ، تم استخدام Volley كعميل http. التكنولوجيا ليست جديدة ، وأردنا التبديل إلى OkHttp + Retrofit. للقيام بذلك ، قمنا بتحليل الاتصالات في المشروع مع العميل المتبقي ، وأعدنا بنية الانتقال ، وانتقلنا إليه في كل مرة ، دون قضاء الكثير من الوقت عليه.

- CFT لديها دورات ، بما في ذلك Android - وماذا تدرس هناك؟ وماذا ، في تجربتك ، هو الأكثر افتقارًا لمطوري Android المبتدئين؟

- نعم ، هناك العديد من المشاريع التعليمية في CFT. للطلاب الصغار - SHIFT School ، أجرينا في إطارها دورة تطوير Android الأساسي استنادًا إلى NSU. وبالنسبة لكبار الطلاب والشباب - مشروع Focus Start ، حيث توجد 6 دورات متعددة الاتجاهات ، بما في ذلك تطوير الأجهزة المحمولة (Android و iOS). يوفر برنامج دورة Android معرفة متعمقة بأجهزة Android و Java و Kotlin و Rx. أصدرت بالفعل عدة مجموعات ، أصبح بعض أفضل الخريجين موظفينا.

غالبًا ما يفتقر مطورو Android المبتدئون إلى تجربة استخدام OOP ، مبدأ SOLID. البعض لا يفهم الفرق بين أنماط MVC - MVP - MVVM ومبادئ العمارة النظيفة ، ولهذا فهم يسيئون فهم منطق الأعمال.

هناك أيضًا ثغرات في Android SDK و Java وفهم التعددية وكيفية تنفيذها في Android. حسنًا ، الأساسيات: فهم Rx ، Dagger ، التحديثية. لا يحاول الكثير قراءة وثائق التقنيات المختلفة.

لكن ممارستنا تظهر أن التدريب المكثف يسد الفجوات بسرعة وكفاءة كافية للعمل في مجال تكنولوجيا المعلومات.

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


All Articles