Tim Apiqa terlibat dalam pengembangan produk untuk sektor perumahan tertentu. Menemukan pengembang yang berpengalaman di Yekaterinburg tidaklah mudah - perusahaan IT besar memburu mereka di sini, banyak kandidat meninggalkan ibukota atau meninggalkan negara, dan kerja sama jarak jauh pada tahap saat ini tidak sesuai dengan kita. Kami menumbuhkan karyawan di dalam perusahaan, bertemu dengan mereka dan mencoba memberikan kondisi kerja yang nyaman. Jadi, salah satu pengembang web kami tahun lalu memutuskan untuk mencoba keahliannya dalam pemrograman untuk iOS. Kami membantunya melakukan transisi ini dengan lancar, sekarang ia secara bersamaan terlibat dalam pengembangan web dan seluler. Dan sekarang dia siap untuk membagikan kisahnya sebagai orang pertama. Selamat datang di kucing.
Siapa saya
Halo, Habr! Saya Sasha Kalinin, seorang pengembang di Apiqa. Saya selalu suka menulis situs web, mengumpulkan komputer, dan memahami hal-hal teknis yang rumit, tetapi atas desakan orang tua saya, saya mendapatkan pendidikan ekonomi dan mulai bekerja di sektor perbankan.

Pada 2015, ia mulai mempelajari pemrograman dan mendapat magang di UrZPI (Ural Software Products Plant), yang kemudian bekerja sama dengan agensi interaktif, Semuanya Jelas, dan Apiqa muncul. Jadi saya terjun ke dunia pengembangan web. Tahun lalu, saya ingin mencoba sendiri tentang luasnya iOS, dan perusahaan pergi menemui saya.
Mulai: Pemrograman Web
UrZPI terlibat dalam pengembangan situs: "Golden Apple", "League of Housing dan Utilities Publik", merek perhiasan, salon kecantikan, dan lainnya. Kami membuat proyek skala besar Digital Pathology - sebuah platform untuk studi kanker. Sejalan dengan pekerjaan utama saya, saya adalah seorang mentor di dua sekolah online: Loftschool dan HTML Academy.
Pada tahun 2018, PIK Comfort, perusahaan manajemen terbesar di Rusia, menjadi klien utama Apiqa, sebagai akibat dari mana spesialisasi ditentukan, dan kami mulai terlibat dalam pengembangan produk di sektor perumahan dan sektor layanan komunal.

Pada Mei tahun lalu, kami memiliki permintaan untuk aplikasi seluler, dan pengembang asli datang ke perusahaan. Pada saat itu, saya sudah bosan dengan web dan ingin mencoba sendiri di ponsel. Karena saya penggemar berat Apple, saya memutuskan untuk menulis untuk iOS.
Perendaman di dunia seluler
Pada hari pertama, saya meminta pengembang iOS kami untuk memberi tahu saya harus mulai dari mana. Dia ternyata responsif dan berperan sebagai mentor saya, membantu pada berbagai tahap pelatihan. Menjelang musim gugur, saya mulai membaca buku: βCepat. Dasar-dasar mengembangkan aplikasi untuk iOS dan macOS β(edisi ke-4) oleh Vasily Usov danβ Swift 3. Mengembangkan aplikasi di lingkungan Xcode untuk iPhone dan iPad menggunakan iOS SDK β(edisi ke-3) Molly Maskri. Enam bulan saya membaca, menyelesaikan tugas, menulis sesuatu pada saat yang sama, menerima ide aplikasi dari seorang mentor hingga memompa keterampilan.

Saya suka Swift - ternyata cukup sederhana dan mirip dengan TypeScript di sintaks yang saya tulis di web. Alat pengembangan untuk platform Apple lebih rumit - ada banyak warisan dari masa Objective-C, sebuah API sistem yang lama dan tidak nyaman. Saya membaca buku kedua dengan derit.
Permintaan tarikan pertama gagal, dan untuk pertama kalinya saya ingin membatalkan semuanya, tetapi saya tidak melakukannya. Dan prosesnya berbaris dalam waktu sekitar enam bulan: sekarang saya menulis untuk web dan untuk iOS.
Kami mendistribusikan tugas saat ini. Saya suka melakukan sesuatu yang tidak biasa, tidak dapat diakses oleh pengembang web - misalnya, 3D Touch, tetapi animasinya belum dapat diterima, saya tidak memiliki perasaan desain. Animasi antarmuka di web, tentu saja, lebih mudah - ada kode lebih mudah dimengerti, tidak ada masalah yang rumit.
Pengembangan seluler dan web: apa bedanya
Di web, keseluruhan visual dibuat menggunakan kode. Anda dapat membacanya dan membayangkan produk akhirnya. Di Xcode, ini adalah IDE untuk pengembang iOS, ada Interface Builder - alat yang memungkinkan Anda untuk mengeset menggunakan antarmuka grafis dengan menyeret kursor dengan kursor - artinya, Anda tidak perlu menulis kode untuk bagian visual.

Kedengarannya keren, tetapi bekerja sangat tidak stabil - itu buggy, lalu macet, lalu istirahat. Kadang-kadang timbul konflik antara kode asli dan Interface Builder - banyak kesalahan jatuh ke konsol, aplikasi itu sendiri mungkin macet, semuanya mungkin masuk neraka.
Apa yang harus dipilih: web atau seluler?
Keputusan ada di tangan Anda. Anda perlu memahami bahwa mereka memiliki situasi pasar yang berbeda secara fundamental. Web adalah platform gratis, dan pembuat undang-undang di ponsel adalah perusahaan yang memiliki iOS dan Android - mereka memutuskan di mana akan dikembangkan, alat apa yang harus digunakan pengembang. Saat memprogram untuk web, Anda dapat menggunakan kerangka kerja yang berbeda, menulis dalam bahasa yang berbeda, menggunakan IDE yang berbeda, sedangkan untuk iOS hanya ada Swift, Cocoa dan Xcode. Jika beberapa fitur baru keluar untuk Xcode, maka itu muncul untuk semua pengembang, tetapi jika tidak, maka tidak ada. Keterbatasan Apple menyediakan pesanan saat menulis kode, tetapi di web Anda harus mengatur pesanan ini sendiri.
Saya juga bisa memberi nama plus web sejumlah besar solusi open source yang bukan untuk iOS. Ketika saya mulai menulis aplikasi seluler, saya mencari alat yang mirip dengan web yang akan mengotomatisasi sesuatu, tetapi di sini saya harus menulis dengan tangan saya.
Pada gilirannya, ditambah pengembangan untuk iOS tanpa perbedaan, Apple memberi pengembang lebih banyak kebebasan dalam hal penerapan fungsionalitas - ID Wajah, iCloud, penyimpanan, dan banyak lagi. Anda memiliki akses hebat ke perangkat keras khusus. Dan di browser Anda dibatasi oleh apa yang browser ini memungkinkan Anda.
Cara selanjutnya
Potensi pengembangan saya di web adalah studi tentang hal-hal yang tidak banyak diminati dalam pekerjaan sehari-hari. Di iOS, saya masih punya banyak pertanyaan, ada tempat untuk mengembangkan, tumbuh, dan belajar. Saya tertarik dengan kemungkinan penerapan praktis keterampilan dalam kerangka kerja dan kehidupan sehari-hari: Anda perlu menulis sesuatu untuk telepon - Saya akan menulisnya, saya membutuhkannya untuk Mac - Saya akan menyiksa diri sendiri, memilah dan menulis, untuk arloji dan Apple TV juga. Saya sudah ingin menulis mainan, tetapi kemudian saya menyadari bahwa ini adalah arah kompleks yang terpisah, pencelupan yang akan memakan waktu terlalu banyak. Saya belum siap untuk ini.
Sekarang saya lebih terlibat dalam pengembangan untuk iOS, tetapi kapan saja saya bisa kembali. Saya sering mengikuti pembaruan web, mendapatkan catatan rilis, dan memahami ke mana arah semuanya. Pada platform seluler, pembaruan terjadi hampir setahun sekali.
Segera setelah pengumuman SwiftUI dan versi OS baru, saya ingin menyentuhnya. Saya memasang beta ... dan membunuh arloji - itu berubah menjadi batu bata. Untuk membuatnya bekerja lagi, saya juga harus memutakhirkan ponsel ke iOS versi iOS yang kasar dan buggy.
Secara umum, saya menyukai pendekatan dengan SwiftUI lebih dari yang sedang kami kerjakan sekarang - Tata Letak Otomatis. SwiftUI sederhana dan mudah, Anda menulis kode dan segera melihat apa yang Anda dapatkan. Bahkan, ini mirip dengan web: Anda menulis kode, dan semuanya muncul di browser segera, tidak memerlukan kompilasi panjang dan perakitan aplikasi yang konstan.

Apa hasilnya?
Saya tidak menyesal bahwa saya telah datang ke sini. Jika Anda ingin mengulang pengalaman saya, evaluasi keterampilan dan kemampuan perusahaan Anda. Kolega di Apiqa datang menemui saya, tetapi bukan fakta bahwa Anda akan memiliki hal yang sama, jadi sebelum Anda memulai transisi seperti itu, diskusikan dengan manajemen.
Sangat penting untuk mencurahkan cukup waktu untuk pengembangan ponsel dan menerapkan pengetahuan baru di lingkungan pertempuran - pembuatan satu aplikasi sederhana tidak akan memberikan gambaran lengkap, pengalaman berharga hanya datang ketika ada tugas yang tidak dapat diabaikan.
Jika Anda sama sekali tidak terbiasa dengan pemrograman, ingatlah bahwa di web bilah entri lebih rendah, ada lebih banyak sumber daya pendidikan di Rusia yang tersedia. iOS lebih sulit dikuasai dalam hal penulisan kode - di sini Anda perlu berpikir, sebagai seorang programmer, untuk memiliki pengetahuan dasar yang cukup.
Siapa pun yang telah menetapkan sendiri tugas semacam itu dapat menjadi pengembang web atau Android - Anda hanya perlu mencari informasi, mempelajarinya, dan mendapatkan pengalaman. Tetapi untuk mengabdikan dirinya untuk iOS, setidaknya Anda harus mendapatkan Mac.