
Pada tahun 2018, ketika dimungkinkan untuk membayar bahkan shawarma menggunakan Android Pay, smartphone adalah alat keuangan utama bagi pengguna. Sekarang orang ingin menyelesaikannya dengan bantuannya secara umum semua masalah yang berkaitan dengan uang. Jadi, aplikasi seluler yang sesuai menjadi sangat relevan.
Untuk aplikasi keuangan yang dikembangkan oleh CFT untuk berbagai pelanggan, jumlah total instalasi ada dalam jutaan - yaitu, hanya sedikit yang dapat membanggakan pengalaman seperti itu di bidang ini. Mengambil keuntungan dari fakta bahwa perusahaan hadir di konferensi Mobius kami, kami bertanya kepada kepala kelompok pengembangan aplikasi Android
Mikhail Emelyanov beberapa pertanyaan tentang bagaimana rupa perkembangan Android di CFT.
- Pertama, beri tahu kami secara singkat tentang "CFT" bagi mereka yang belum pernah mendengar nama ini sebelumnya.- Perusahaan telah beroperasi di pasar fintech selama lebih dari 25 tahun: ketika muncul, bahkan tidak ada konsep fintech, tetapi bahkan kemudian menghasilkan produk dan layanan yang sekarang disebut demikian. Sebenarnya, nama "Pusat Teknologi Finansial", yang muncul di awal 90-an, masih tetap relevan dan berbicara untuk dirinya sendiri.
Tentu saja, banyak yang telah berubah selama masa lalu (siapa yang bisa membayangkan Android pada tahun 1991?), Tetapi esensinya tetap sama: CFT mengembangkan dan mengembangkan solusi TI dan layanan teknologi yang membuat transaksi keuangan menjadi sederhana dan nyaman (termasuk transfer uang) dan pembayaran).
Perusahaan muncul di Novosibirsk Academgorodok, dan pusat pengembangan utamanya masih ada di sana. Tapi sekarang, selain dia, ada kantor di banyak kota lain di Rusia, serta di Chisinau, Almaty dan Dushanbe. Pertumbuhan berlanjut: layanan dan unit baru terus muncul, arahan Litbang berkembang aktif.
- Dan berapa banyak orang yang secara khusus terlibat dalam pengembangan ponsel, dan dapatkah Anda memberikan contoh aplikasi yang dikembangkan dalam CFT?—Kami memiliki tim seluler yang didistribusikan di Novosibirsk, Tomsk dan St. Petersburg. Sekarang jumlahnya lebih dari 50 orang, tetapi perusahaan memiliki rencana untuk pengembangan seluler sehingga kita harus tumbuh dua kali lebih cepat untuk menyamai mereka.
Aplikasi kami yang paling populer untuk iOS dan Android adalah
Transfer Uang (lebih dari 1,3 juta unduhan di Google Play),
Beeline , dan kantor pembayaran
Corn .
Juga,
penyedia perbankan online kami
Faktura.ru memiliki lebih dari 100 aplikasi seluler yang disesuaikan untuk iOS dan Android. Secara total, tim Faktura.ru telah mengimplementasikan 340 proyek perbankan online untuk klien korporat dan pribadi. Secara umum, sekitar 130 bank beroperasi pada platform teknologi ini.
- Bekerja dengan keuangan memiliki kekhasannya sendiri - bagaimana perbedaan pengembangan Android di CFT dari perusahaan "rata-rata"?- Karena kami bekerja dengan data pribadi dan keuangan pengguna, salah satu aturan utamanya adalah persyaratan ketat untuk perlindungan informasi. Kami secara teratur menangani topik-topik seperti mengamankan mobile banking di tingkat API dan selama transfer data, otentikasi biometrik, Keychain, pin-SSL, dll. Kami mengumpulkan banyak pengalaman yang relevan, itu sebabnya Mobius baru saja
menyajikan laporan "Dasar-dasar Keamanan Aplikasi Seluler".
Tetapi pada saat yang sama, pengembangan ponsel di fintech tidak berubah menjadi kepatuhan berkelanjutan terhadap persyaratan keselamatan, terpisah dari keinginan orang yang hidup. Pengguna akhir masih jutaan warga negara biasa. Sekarang semua orang mengontrol operasi uang dari smartphone - mereka membayar layanan, mentransfer uang. Dan produk akhir kami ditargetkan secara khusus pada orang-orang seperti itu.
Oleh karena itu, di fintech, cukup menarik untuk terlibat hanya dalam pengembangan seluler: ada pengguna akhir, pada kenyataannya, kami bersama Anda. Jadi aplikasi tidak hanya aman, tetapi juga sesederhana mungkin, teknologi. Kami tidak menciptakan sesuatu dalam ruang hampa, tetapi sebuah produk untuk konsumen.
- Selain melindungi informasi, Anda juga harus sangat stabil: jika startup dapat mendapatkan kesalahan dalam produksi, maka mereka mengharapkan keandalan dari keuangan. Tetapi pada saat yang sama, berubah menjadi “air terjun” yang lambat dan mengoordinasikan segalanya selama setengah tahun juga tidak mungkin. Bagaimana Anda mengatasi masalah ini?- Pertama-tama, dengan pendekatan arsitektur. Kami mengambil gagasan arsitektur bersih sebagai standar, dan prinsip-prinsipnya sedang dikembangkan pada aplikasi nyata. Kami membuat aplikasi baru dalam kerangka membagi menjadi beberapa lapisan, tanggung jawab tunggal dan entitas yang terhubung lemah.
Keuntungan: penggunaan berbagai teknologi tanpa perlu menulis ulang seluruh kode, kualitas tinggi melalui tes, dan yang paling penting - skalabilitas sederhana, yang sangat penting bagi kami.
Kami juga memiliki tinjauan kode paling ketat, hampir seluruh tim mengambil bagian di dalamnya, dan kami mendeteksi sebagian besar momen sulit pada tahap peninjauan, sehingga mereka tidak mencapai produksi.
Ya, tentu saja, pengujian - hampir di semua tempat kami membahas pengujian unit, beberapa pengembang menulis kode menggunakan metodologi TDD. Tentu saja, UI tidak ada dalam TDD, tetapi kami juga tidak melupakan pengujian UI: bersama dengan tim penguji, kami berupaya memastikan bahwa mereka menggunakan Espresso seefisien mungkin.
- Karena fintech memerlukan konservatisme, dalam beberapa kasus ini dapat mengganggu penggunaan teknologi baru. Oleh karena itu, menarik untuk bertanya: apa yang baru Anda coba di Android selama setahun terakhir? Dan teknologi apa yang Anda gunakan?- Cukup banyak berusaha. Ketika Google merilis versi Komponen Arsitektur Android, kami memutuskan untuk bereksperimen dan mengimplementasikannya di salah satu proyek baru. Tapi kami berlari menyapu: misalnya, kami tidak melihat dalam ViewModelnya cara yang cukup efektif untuk menyelesaikan masalah siklus hidup untuk proyek kami. Tetapi LiveData bagi kami bermanfaat untuk lapisan presentasi.
Setelah hasil AAC tidak memenuhi harapan, kami hentikan itu, menggantinya dengan pendekatan yang lebih efisien. Berkat arsitektur bersih, kami tidak perlu mengulang seluruh aplikasi, itu sudah cukup untuk memperbaiki lapisan presentasi. Ada contoh lain menggunakan Ruang ORM baru.
Kami sekarang aktif berkembang di Kotlin. Di Mobius, banyak yang bertanya-tanya “mengapa Kotlin ada di mana-mana”, tetapi ini memohon. Ini memberikan lebih banyak fitur daripada Java di luar kotak: ada jauh lebih sedikit kode, lebih banyak fungsi. Banyak yang bisa dilakukan dengan satu baris kode, seperti mendeklarasikan kelas. Sekarang kami juga mencoba coroutine di salah satu proyek.
Secara umum, kami menyukai cara Kotlin berkembang, dan senang bahwa komunitasnya tumbuh. Dan karena sudah menyebar luas, sekarang, agar tidak mengembangkannya, seseorang harus memiliki keyakinan dan prinsip yang sangat kuat.
Kami juga menggunakan RxJava / RxKotlin, Retrofit dan Dagger 2 yang populer, Google Binding Data, kami berencana untuk mencoba RxBinding, untuk waktu yang lama semuanya dapat didaftar. Secara umum, fintech tidak mengganggu bermain penuh dengan berbagai teknologi.
- Komponen Arsitektur Android tidak cocok untuk Anda - tetapi dapatkah Anda merekomendasikannya kepada orang lain? Seberapa intensif sumber daya migrasi ke mereka: proyek yang sudah lama harus memikirkannya, atau lebih baik membiarkannya baru?“Meskipun AAC tidak sesuai dengan harapan kami, mereka bekerja dengan baik untuk beberapa tugas: misalnya, menyimpan dan memulihkan data saat mengubah orientasi layar. Jadi, jika dalam sebuah proyek dengan sekelompok dukungan kode lama untuk mengubah orientasi tidak diterapkan secara efektif, maka Anda harus berpikir tentang menggunakan AAC. Tetapi untuk mengimplementasikannya dengan cara yang tidak menguntungkan tidak berhasil, Anda harus terlebih dahulu menyiapkan arsitektur, memperbaiki kesalahan kritis dan menemukan titik integrasi agar tidak memproses keseluruhan aplikasi.
- Kamar tersebut adalah teknologi yang cukup baru yang banyak yang belum sempat mencoba. Karena itu, sangat menarik: apa pengalaman Anda dengannya?- Kamar menyenangkan kami. Menggunakan anotasi, Anda dapat dengan mudah menggambarkan pembuatan tabel, menentukan transaksi, dll. Ada dukungan bawaan untuk Kotlin, Rx, LiveData. Dari minus dalam versi stabil saat ini (1.1.0) adalah kurangnya perintah untuk membersihkan database dan kebutuhan untuk mengkonfigurasi komunikasi secara manual. Masih ada hal-hal kecil yang tidak nyaman ketika menggunakan Room di Kotlin, tetapi mereka secara bertahap memutuskan dengan merilis versi baru. Misalnya, metode Transaksi default di antarmuka hanya didukung di 1.1.0-alpha2.
Secara umum, dengan Room, bekerja dengan database telah menjadi jauh lebih mudah dan efisien.
- Ada sudut pandang "semua ORM Anda licik, abstraksi masih mengalir dan Anda harus turun ke tingkat SQL" - apa pendapat Anda tentang ini?- Dalam teknologi apa pun, untuk menyelesaikan tugas-tugas non-sepele, Anda harus menulis kode, bahkan SQL. Yang utama adalah ini tidak berubah menjadi overhead. Di Kamar, Anda juga dapat menulis kueri SQL dengan tangan (misalnya, migrasi atau kueri kompleks), tetapi melalui anotasi, jauh lebih mudah untuk melakukan ini. Misalnya, Anda dapat menarik data dari beberapa tabel menggunakan Relation.
- Karena CFT lebih tua dari Android itu sendiri, pertanyaan Legacy mungkin relevan untuk Anda. Apakah Anda sering refactor?- Tentu saja, kode warisan akan ada di proyek apa pun. Dan pernyataan populer "kode apa pun yang ditulis hari ini, besok menjadi warisan" cukup benar.
Begitu juga dengan kita. Ada aplikasi yang dirilis beberapa tahun lalu. Jika ada alasan obyektif untuk mengubah seluruh kode (bug, skalabilitas rendah, kurangnya teknologi efektif, dll.), Maka kami melakukan ini. Kami melakukan langkah-demi-langkah refactoring, secara paralel kami merilis fitur di mana kode diproses oleh komponen, lapisan atau hanya layar.
Juga dalam penggunaan teknologi. Misalnya, di salah satu proyek kami, Volley digunakan sebagai klien http. Teknologi ini bukan hal baru, dan kami ingin beralih ke OkHttp + Retrofit. Untuk melakukan ini, kami menganalisis koneksi dalam proyek dengan klien sisanya, menyiapkan arsitektur untuk transisi, dan pindah ke sana pada suatu waktu, tanpa menghabiskan banyak waktu untuk itu.
- CFT memiliki kursus, termasuk Android - dan apa yang Anda ajarkan di sana? Dan apa, dalam pengalaman Anda, yang paling kurang untuk pengembang Android pemula?- Ya, ada beberapa proyek pendidikan di CFT. Untuk siswa junior - SHIFT School, dalam kerangka yang kami lakukan kursus pengembangan Android dasar berdasarkan NSU. Dan untuk siswa senior dan junior - proyek Start Mulai, di mana ada 6 kursus multi arah, termasuk pengembangan ponsel (Android dan iOS). Program kursus Android menyediakan pengetahuan mendalam tentang Android, Java, Kotlin, Rx. Sudah merilis beberapa set, beberapa lulusan terbaik telah menjadi karyawan kami.
Seringkali, pengembang Android pemula tidak memiliki pengalaman menggunakan OOP, prinsip SOLID. Beberapa tidak mengerti perbedaan antara pola MVC - MVP - MVVM dan prinsip Arsitektur Bersih, karena ini mereka salah mengerti logika bisnis.
Ada juga kesenjangan dalam Android SDK, Java, pemahaman multithreading dan bagaimana penerapannya di Android. Nah, yang dasar: memahami Rx, Dagger, Retrofit. Banyak yang tidak mencoba membaca dokumentasi berbagai teknologi.
Tetapi praktik kami menunjukkan bahwa pelatihan mengintensifkan kesenjangan dengan cepat dan cukup efisien untuk bekerja di bidang TI.
