Mengapa saya menolak solusi lintas platform dalam pengembangan ponsel

gambar
Biarkan saya berbagi sesuatu dengan Anda. Saya suka ide pengembangan lintas platform. Kemampuan untuk menggunakan satu set alat untuk semua tugas saya adalah mimpi. Siapa yang tidak ingin menggunakan hanya satu alat untuk menyelesaikan tugas mereka dengan sukses? Menulis sekali, jalankan di mana-mana? Saya ingin!


Saya juga menyukai gagasan masyarakat utopis. Suatu masyarakat di mana setiap orang menghormati kepercayaan orang lain, memiliki argumen yang signifikan / logis / masuk akal dan menetapkan tugas untuk menjadi lebih baik dari sebelumnya. Namun, dunia nyata jarang, begitu sempurna.

Saya ingin mengakui, saya sudah lama ingin membahas perselisihan antara asli, lintas platform dan pengembangan aplikasi hybrid. Bukan karena kurangnya motivasi, tetapi lebih karena harapan atau keinginan bahwa suatu hari serangkaian alat gabungan akan muncul, buka pintu dan berikan nilai terbaik untuk membuat aplikasi seluler. Saya masih menunggu hari ini, dan artikel ini harus membantu menjelaskan keterikatan saya pada perkembangan asli.

Asli, lintas platform, hibrida? Apa?


Saya bisa menguraikan perbedaan masing-masing jenis pengembangan, tetapi karena perbandingan di antara mereka dapat dilakukan untuk waktu yang sangat lama, saya akan mencoba untuk membuat bagian ini singkat.

Perkembangan asli


Dalam pengembangan asli, kami menggunakan alat khusus untuk membuat aplikasi untuk iOS atau Android. Artinya, ada satu basis kode untuk setiap platform. Toolkit biasanya mencakup Swift / Objective-C + Xcode / AppCode untuk iOS dan Kotlin / Java + Android Studio untuk Android.

Pengembangan lintas platform


Kami menggunakan platform / alat yang menerjemahkan / mengkompilasi / menjalankan kode Anda seolah-olah itu adalah komponen asli. Prosesnya berbeda tergantung pada alat apa yang Anda gunakan, tetapi hasil akhirnya adalah bahwa kode yang sama berjalan dan bekerja hampir sama pada platform Android dan iOS.

Beberapa contoh alat: Xamarin, React Native, Flutter

Pengembangan hibrida


Dalam pengembangan hibrida, kami menggunakan platform / alat yang meluncurkan WebView, yang kemudian menampung aplikasi Anda. Pada dasarnya, ini berarti bahwa aplikasi Anda adalah situs web yang berjalan dari aplikasinya sendiri. Platform / alat biasanya juga menyediakan akses ke fungsinya sendiri, seperti kamera, melalui plugin.

Contoh Instrumen: Cordova dan Ionic

Fitur Utama vs Esensial


Untuk memahami pilihan saya dengan benar, saya perlu menjelaskan dua jenis karakteristik alat yang berbeda.

Selama bertahun-tahun, ada perdebatan tentang mengapa satu alat lebih baik dari yang lain. Sebagian besar artikel membahas fitur yang jelas dari alat ini, seperti ukuran basis kode, waktu pengembangan, jumlah platform tempat Anda dapat mengembangkan aplikasi, dan sebagainya. Perbandingan ini, saya suka menyebut "karakteristik utama" dari setiap kotak alat. Karakteristik utama alat ini adalah yang paling langsung untuk membandingkannya dengan alat lain, karena Anda biasanya dapat melihat perbedaannya (mis. Kecepatan pengembangan, waktu pembuatan, dll.). Karakteristik ini biasanya menjadi perhatian bagi kebanyakan orang, tetapi mereka tidak mengungkapkan esensinya.

Untuk sepenuhnya memahami konsekuensi dari memilih alat, Anda harus mempertimbangkan "karakteristik yang melekat". Karakteristik ini umumnya lebih halus dan dampaknya lebih sulit untuk dievaluasi daripada karakteristik utama. Sayangnya, pemahaman tentang pengaruh karakteristik ini biasanya terjadi hanya setelah alat dipilih dan dana besar diinvestasikan di dalamnya. Karakteristik ini adalah kelengkapan dan kejelasan dokumentasi, ketersediaan alat yang nyaman, dll.
Membuat keputusan yang tepat pada alat pengembangan membutuhkan pemahaman tentang karakteristik yang melekat.


Mengapa saya memilih pengembangan asli


Selama bertahun-tahun pengembangan perangkat lunak, saya memiliki kesempatan untuk menggunakan beberapa alat untuk berbagai proyek. Biasanya, pilihan alat pengembangan dibuat untuk saya oleh manajemen atau insinyur teknis. Segera setelah saya beralih ke freelance, saya memutuskan untuk memutuskan tumpukan teknologi.

Pada akhirnya, keputusan akhir saya datang untuk mempertimbangkan tidak hanya faktor-faktor alat, tetapi juga bagaimana karakteristik yang melekat akan mempengaruhi masing-masing proyek saya dalam situasi yang berbeda dari waktu ke waktu dan inilah kesimpulan saya.

1. Popularitas konstan


Ketika saya pertama kali memulai pemrograman pada 2013, ada banyak vokal hype Cordova dan Appcelerator. Beberapa tahun kemudian, Hype beralih ke Xamarin. Beberapa tahun kemudian itu sudah React Native. Sekarang Flutter semakin populer.

Saya telah menemukan bahwa popularitas alat juga mewakili dukungan yang diterimanya. Jika alat tersebut milik perusahaan swasta, maka popularitas disamakan dengan penjualan, yang mengarah pada peningkatan biaya dukungan. Jika alat ini open source, popularitas tergantung pada berapa banyak pengembang aktif meningkatkan basis kode. Popularitas dapat datang dan pergi dan memengaruhi seluruh ekosistem pengembangan di sekitar alat ini.
Lihatlah grafik Google Trends ini, yang menunjukkan berbagai alat lintas platform dari waktu ke waktu.

gambar
Grafik Google Trends secara kasar menampilkan hasil dari jumlah permintaan pencarian untuk berbagai teknologi mobile lintas platform.
Meskipun bagan ini adalah perkiraan kasar dari popularitas (karena ini hanya mewakili hasil dari jumlah pencarian), itu memang memberikan beberapa wawasan tentang apa yang saya alami sebagai pengembang. Bisnis dan individu cenderung menggunakan apa yang baru. Ini tidak berarti bahwa alat tersebut lebih baik atau lebih buruk (karena banyak artikel akan menentang / menentang, terlepas dari tanggal rilis), tetapi orang selalu beralih ke sesuatu yang lebih baru.

Ketika alat dirilis, biasanya dipromosikan oleh komunitas pengembangan dan dipandang sebagai "masa depan." Hal ini dapat menyebabkan alat yang lebih tua kurang memiliki dukungan dan perlahan-lahan berhenti tumbuh seiring waktu.

Bandingkan ini dengan pengembangan asli, yang dijamin akan menerima dukungan. Sementara Apple mendukung iOS dan Google mendukung Android, pengembangan asli akan selalu relevan. Inilah sebabnya mengapa pengembangan asli memiliki ekosistem pengembang terbesar; itu hanya sekitar lagi dan konsisten dalam popularitasnya.

Pertimbangan lain yang harus dilakukan adalah transfer proyek. Kemungkinan bahwa pengembang berikutnya akan memiliki setidaknya beberapa pengalaman di bidang pengembangan asli cukup tinggi. Bahkan jika mereka tidak bekerja terutama dengan alat asli, sebagian besar pengembang setidaknya entah bagaimana terkait dengan alat ini, yang jauh lebih kecil kemungkinannya dengan solusi lintas platform.

2. Nilai / Visi Bisnis


Saya jarang mendengar banyak orang membahas nilai bisnis ketika membandingkan alat pengembangan. Saya bertanya kepada berbagai pengembang dan bahkan pemilik bisnis teknis tentang hal ini, dan yang paling sering saya terima adalah pandangan kosong. Penting untuk memahami bagaimana nilai bisnis berkorelasi dengan alat tertentu dan bagaimana hal itu dapat memberikan nilai itu.

Misalnya, ambil Xamarin. Kembali pada Februari 2016, Microsoft membeli Xamarin dengan harga sekitar $ 400-500 juta. Pada saat itu, visi Microsoft terutama terkait dengan pengembangan aplikasi mobile. Mereka membuat kemajuan yang signifikan dengan alat ini dan bahkan memasukkannya sebagai tambahan tambahan untuk Visual Studio dan Visual Studio untuk Mac. Maju cepat beberapa tahun, dan visi Microsoft telah bergeser ke kecerdasan buatan.

Sepanjang perubahan visi ini, saya mengerjakan sebuah proyek dengan Xamarin. Selama waktu ini, saya berkenalan dengan platform yang dengannya saya harus beralih dari satu set alat yang stabil ke yang menurun secara perlahan. Setiap pembaruan alat tampak seperti upaya, setidaknya untuk tidak merusak apa pun. Dalam kasus terbaik, semuanya berjalan sebagaimana mestinya. Dalam skenario terburuk, Anda menghabiskan berjam-jam atau bahkan satu atau dua hari untuk memperbarui dan berusaha mengembalikan lingkungan Anda ke keadaan sehat.

Degradasi lambat ini tidak didokumentasikan di beranda Xamarin (yang dapat dimengerti), tetapi jika Anda mencari informasi di forum, Anda mungkin merasa bahwa ada sesuatu yang berubah dari waktu ke waktu. Pesan tentang hal-hal yang dulu berfungsi di luar kotak sekarang tidak berfungsi, atau tentang bagaimana pengalaman pengembang dengan alat ini telah berubah. Semua ini secara langsung mempengaruhi biaya pengembangan, bukan hanya karena jam mentah, tetapi juga karena kualitas kode.

Menjilat selama transisi ke alat baru menyebabkan peningkatan biaya overhead dan kehilangan laba


Saya akui bahwa perkembangan asli juga punya masalah di sini. Misalnya, Apple biasanya mencoba membuat pengembang berkembang dengan cara tertentu (misalnya, menggunakan Storybords atau templat MVC). Toolkit ini juga tidak selalu sempurna, jadi saya benar-benar menggunakan AppCode untuk sebagian besar pengembangan iOS saya. Namun demikian, baik Apple dan Google menghabiskan banyak waktu dan uang untuk memastikan bahwa pengembang nyaman mengembangkan solusi asli. Lihat saja Android Jetpack, SwiftUI, atau bahkan tingkatkan ke Kotlin dan Swift.

Pada akhirnya, Google atau Apple tidak memiliki visi terbaik di dunia, tetapi konsisten. Ada kemungkinan minimal bahwa perusahaan dalam semalam akan menolak untuk mendukung alat mereka.

3. Menghemat waktu


Oh ya, menghemat waktu. Cawan suci efektivitas pembangunan. Topik yang diperdebatkan dengan hangat ini mengenai alat pengembangan APAPUN dapat membuat atau menghancurkan bisnis. Topik ini berada di garis depan proyek apa pun, karena secara langsung memengaruhi biaya. Tapi mari kita mundur dan bertanya pada diri sendiri.

Apa yang bisa kita lakukan untuk menghemat waktu?


Saya akan jelaskan. Seperti halnya perangkat lunak bisnis, biasanya ada beberapa cara untuk menyelesaikan masalah. Keputusan terutama berasal dari situasi orang atau bisnis tertentu. Ini berarti bahwa pendekatan "satu solusi untuk semua" berbahaya; itu juga sangat dekat dengan mentalitas "kita selalu melakukan". Sayangnya, ketika datang ke pengembangan ponsel, pendekatan umum untuk menghemat waktu adalah memilih alat lintas platform. Tapi apakah ini sangat baik? Bisakah kita, katakanlah, menemukan metode lain untuk menyelesaikan masalah? Dalam bisnis, ada ungkapan "Orang di atas proses, di atas alat."
Orang di atas proses, alat di atas


Inilah yang harus dipertimbangkan ketika mengambil keputusan. Bagaimana waktu pengembangan antara memilih alat dan menciptakan proses / prosedur atau bahkan menciptakan pendekatan berbeda untuk pengembangan?

Alat yang mampu mengatasi mentalitas buruk selama pengembangan?

Apakah alat merampingkan proses pengembangan?

Dapatkah proses atau mentalitas yang sedikit dimodifikasi menghasilkan hasil penghematan waktu yang lebih baik?

Bisakah kita menggunakan infrastruktur untuk menyelesaikan masalah kita?

Ini semua adalah pertanyaan yang benar yang juga menunjukkan kompleksitas solusi. Ini tidak sesederhana memilih kerangka kerja lintas-platform selanjutnya, bukan pengembangan asli. Apa yang tepat untuk Anda atau bisnis Anda? Hanya Anda yang bisa membuat pilihan ini.

Karena pengembangan asli akan menghasilkan produk berkualitas lebih tinggi secara default dan akan didukung hampir tanpa batas, saya akan memilih serangkaian alat ini. Nilai-nilai pribadi saya menentukan pilihan ini (berjuang untuk keunggulan). Pengembangan sendiri benar-benar membutuhkan waktu lebih lama (berapa banyak lebih bervariasi). Apakah ada cara untuk menghemat waktu? Haruskah saya menghemat waktu? Haruskah saya mencari proyek di mana anggaran tidak menjadi masalah?

Salah satu cara untuk mengatasi masalah penghematan waktu adalah dengan membuat kode yang dapat digunakan kembali. Buat kode berkualitas tinggi dan dapat digunakan kembali yang dapat dengan cepat diintegrasikan dan digunakan di berbagai proyek. Karena saya memilih toolkit untuk daya tahan, saya dapat memastikan bahwa kode saya yang dapat digunakan kembali akan dapat digunakan untuk beberapa waktu.

4. Kesimpulan lainnya


Pada akhirnya, saya membuat banyak kesimpulan lain sebelum memilih pengembangan asli. Banyak yang telah saya lakukan dalam seluruh karir saya, mencoba berbagai alat, proses dan pendekatan. Deskripsi semua ini akan membuat artikel ini sangat produktif. Karena itu, untuk singkatnya, saya akan memberikan tesis beberapa di antaranya.

Hal-hal yang saya pertimbangkan sebelum memilih pengembangan asli:
1. Waktu untuk Pengembang Onboarding
2. Infrastruktur pendukung
3. Saluran Pipa CI / CD
4. Biaya untuk mendukung proyek-proyek warisan
5. Lapisan abstraksi = lebih banyak ruang untuk kesalahan
6. Ketersediaan pengembang (jumlah pengembang yang menggunakan alat yang ditentukan)
7. Hirarki bisnis (Airbnb memiliki seri blog hebat yang menyentuh topik ini)
8. Ketergantungan platform pada plugin
9. Kebahagiaan pengembang saat menggunakan alat ini
10. Biaya desain: kebutuhan untuk merancang sedemikian rupa untuk mendukung kedua platform
11. Struktur proyek kustom
12. Sumber daya pengetahuan - jumlah bidang pengetahuan yang diperlukan (misalnya, Xamarin membutuhkan: + Platform Xamarin Api, C #, fungsionalitas Android spesifik, fungsionalitas iOS spesifik, dan pengetahuan tentang fitur-fitur setiap platform dan bagaimana mereka berinteraksi melalui Xamarin.)
13. Lisensi + biaya
14. Lansekap sistem operasi seluler. Misalnya: berapa lama hanya 2 platform utama yang bertahan?

Kesimpulan


Selama 2 tahun terakhir, ia telah menggunakan pengembangan ponsel asli sebagai seperangkat alat utamanya. Salah satu dari banyak alasan mengapa saya senang dengan keputusan saya adalah bahwa saya meluangkan waktu untuk mempertimbangkan sebanyak mungkin kehalusan untuk setiap alat. Saya tahu pro dan kontra, dan itu memberi saya keuntungan.
Saya harap artikel ini membantu Anda mengajukan pertanyaan yang tepat saat memilih alat. Jangan mengambil pemasaran pada nilai nominal, dan TOLONG jangan ikuti hype. Gali, menjadi kotor dan berpikir kritis.

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


All Articles