"Saya dapat memberi tahu Anda tentang rasa sakit yang dimiliki setiap pengembang iOS di pantat" - 10 pertanyaan kepada pengembang, episode 2



Sepertinya semua orang menikmati episode percontohan , dan kami masih yakin bahwa orang-orang "di balik layar" bisa sama menariknya dengan selebriti IT yang kita semua kenal dan cintai. Dan mungkin bahkan lebih, karena mereka berbicara tentang masalah nyata dan solusi nyata. Minggu ini kami mengajukan 10 pertanyaan kepada seseorang di belakang pengembangan Yandex.Maps untuk iOS.


Nikolay Likhogrud ( likhogrud ) dari Moskow. Memulai pemrograman di kelas 9 dari HTML dan Basic. Kemudian belajar sendiri C #, lulus dari Moscow State University dengan gelar IT dan berakhir di tim Any Void. Bersama mereka ia pindah ke Yandex, tempat ia menghabiskan 2,5 tahun terakhir sebagai pemimpin tim untuk pengembangan iOS Yandex.Maps.

1. Ceritakan tentang fitur yang Anda gunakan yang membuat Anda sangat bangga.


- Kita perlu membedakan antara fitur tim dan yang pribadi saya. Yang paling saya ingat adalah bahwa 1,5 tahun yang lalu saya pribadi mengurangi waktu peluncuran aplikasi dan memberi tahu rekan-rekan saya tentang hal itu. Gali beberapa fitur iOS yang tidak didokumentasikan di mana pun. Karena Swift (bahasa pemrograman yang digunakan iOS) menyeret banyak pustaka dinamis bersamanya, ada sedikit masalah. Setiap perpustakaan membutuhkan tanda tangan digitalnya untuk diperiksa saat peluncuran, yang memperlambat semuanya. Jadi pekerjaan saya sangat membantu pengguna. Saya bahkan menyampaikan pidato di Mobius tentang hal itu.

Mengenai pengembangan tim, "Maps" adalah proyek besar dengan banyak fitur berbeda. Saya belum pernah melihat yang seperti ini sebelumnya. Jika Anda benar-benar duduk dan menggali ke dalamnya, saya dapat memamerkan beberapa fitur yang mungkin tidak diketahui oleh siapa pun - ada banyak hal di sana! Setiap rilis baru kami melakukan sesuatu yang sangat keren, dan saya sangat bangga dengan itu semua. Saat ini kami telah selesai memoles data historis untuk pencarian dan perencanaan rute dan berfokus pada fitur yang memberi tahu Anda di mana Anda berada. Kami menyebutnya "pemandu wisata kota". Ini kurang dari alat yang berguna dan lebih banyak hal hiburan saja. Salah satu fitur besar adalah augmented reality di Maps. Kami melakukannya dengan sangat cepat: itu bekerja cukup banyak sejak awal, coba pertama. Bahkan berhasil mencapai batas waktu sebelum iOS 11 diluncurkan, di depan tim lain. Itu sangat keren.

Tidak ada yang istimewa - hanya donat yang menggelinding di sepanjang sungai

2. Sekarang ceritakan tentang persetan terburuk Anda.


- Oh, ada satu. Itu pada awalnya, ketika saya baru saja bergabung dengan tim Maps: itu tidak diketahui oleh saya, tim sebelumnya benar-benar di luar kendali dan tidak ada yang memeriksa saya. Dan suatu kali saya secara tidak sengaja DDoSed server geocoding karena saya lupa untuk menguji di suatu tempat. Setelah pengguna melakukan sesuatu dengan aplikasi tersebut, ponsel mengirim permintaan ke server setiap kali geoposisi diperbarui, dan server mengembalikan data di mana pengguna berada. Pada tingkat maksimum 10 kali per detik. Dan, mengingat berapa banyak pengguna yang kami miliki, bahkan jika setiap pengguna ke-100 atau ke-1000 berinteraksi dengan fitur itu, server benar-benar berjuang untuk mengatasinya.

Itu adalah momen langka yang keluar dari tim Maps, orang-orang dari tim lain bertanya kepada saya: "apa yang telah Anda lakukan!". Tapi, untungnya, kami memperbaiki masalah dengan cukup cepat - server kembali dalam waktu singkat. Kami menemukan yang besar, memperbaikinya dengan sangat cepat dan mengirim perbaikan terbaru ke Apple (meskipun ulasan App Store membutuhkan waktu sekitar seminggu). Sekarang jauh lebih mudah untuk dideteksi di sana, dan saat itu aku lebih marah pada diriku sendiri: bagaimana aku bisa sangat kacau setelah hanya bergabung dengan tim? Tetapi semua orang mengerti bahwa proyek itu besar, dan tidak ada yang berkonsultasi dengan ...

3. Jelaskan tempat kerja Anda: mulai dari kursi kantor dan monitor hingga lingkungan pengembangan yang disukai dan utilitas favorit.


- Kursi dan meja yang tidak saya pilih: apa yang diberikan perusahaan kepada saya, saya ambil. Di atasnya ada monitor Thunderbolt dan MacBook, ditambah keyboard dan mouse nirkabel sehingga saya bisa mengesampingkan laptop.



Meja dipenuhi dengan kertas dengan pikiran dan rencana saya pada mereka. Saya masih belum bisa beralih ke sesuatu yang progresif: Trello atau Dapulse, tidak masalah. Tidak ada yang sekitar ketika saya bergabung, dan saya masih lebih suka kertas. Tentu, saya juga membuat catatan di laptop, tetapi masih menyenangkan untuk menulis sesuatu dan kemudian menyelesaikannya nanti. Ada banyak hal lain di meja juga yang saya bersihkan secara berkala. Ada juga beberapa batu bata Lego untuk kenyamanan. Saya secara sadar mencoba membuat ruang kerja saya terasa seperti rumah, dan saya kadang-kadang melihat meja rekan kerja saya, di mana tidak ada apa-apa selain laptop dan monitor, dan saya pikir saya tidak bisa hidup seperti itu.

4. Bagaimana Anda memilih pekerjaan? Tumpukan, produk, kondisi kehidupan, uang?


- Saya mungkin akan menjawab jika pertanyaannya adalah "jika saya memilih ...". Saya pada dasarnya belum beralih pekerjaan sekali pun. Saya memasuki tahun ke-6 saya di Yandex dan saya tidak bisa membayangkan diri saya di tempat lain. Saya memiliki posisi, tim, tanggung jawab, banyak prospek karier yang hebat.

Jadi, jika saya memilih tempat untuk bekerja, saya mungkin akan melihat tim terlebih dahulu. Saya perlu tahu orang-orang yang akan bekerja dengan saya sebelum membuat keputusan semacam itu. Jika Anda mengenal mereka, Anda mungkin juga tahu proyek apa yang akan Anda kerjakan. Jika orang tersebut selesai, Anda dapat yakin dia memiliki beberapa proyek besar juga. Penting untuk mengenal orang lain dan membiarkan orang lain mengenal Anda. Anda tidak dapat mengisolasi diri sendiri dan masuk ke tempat yang tidak diketahui. Bahkan tugas sangat tergantung pada orang. Jika perusahaan salah tempat mempekerjakan karyawan baru mereka, ia akan dengan cepat tidak tertarik.

Masalah uang juga penting, tetapi kurang lebih sama di mana-mana. Saya sudah melakukan banyak wawancara dan tahu apa yang biasanya ditawarkan di perusahaan lain.

5. Apa yang ingin Anda perbaiki dalam teknologi dan bahasa yang Anda gunakan?


- Saya bisa memberi tahu Anda tentang rasa sakit yang dialami setiap pengembang iOS. Kompiler Swift sangat tidak dioptimalkan, lingkungan pengembangan tidak dipoles juga. Proyek-proyek kami yang panjangnya 400 ribu garis sangat lambat. Pengindeksan lambat seperti molase, setiap file terbuka beberapa menit, sebuah proyek dapat diinisialisasi selama satu jam. Kompilasi tidak lebih cepat, dan juga menghabiskan banyak daya pemrosesan.

Pekerjaan kita tergantung pada seberapa cepat Xcode mengkompilasi barang. Ini berfungsi dengan Objective-C baik-baik saja, tetapi ada sesuatu yang salah dengan Swift. Jika itu bekerja sedikit lebih cepat, kami tidak perlu memotong proyek menjadi modul, tetapi kami harus berinvestasi di dalamnya. Saat ini kami mengembangkan lebih banyak dalam proyek pengujian dan bukan aplikasi utama itu sendiri, kemudian mentransfernya. Meskipun pada akhirnya berhasil dengan baik untuk proyek kami, butuh uang dan waktu untuk belajar bekerja seperti itu.

6. Di mana tempat terbaik untuk berbagi pengalaman kerja - apakah itu perguruan tinggi, konferensi, Habr? Di mana saja selain itu?


- Cara paling efektif adalah memiliki masalah khusus dan mencari solusi untuk itu. "Pengalaman mendapatkan" adalah istilah yang sangat luas, tetapi "mencari solusi" lebih tepat. Anda cukup mengetik pertanyaan Anda di Google dan melihat apa yang memberi Anda.

Saya biasanya pergi ke kebaktian bukan untuk mendapatkan pengalaman, tetapi untuk berbagi pengalaman saya. Saya memiliki beberapa pengalaman dalam mempertahankan proyek besar, dan itu menarik minat orang. Ada sangat, sangat sedikit proyek seperti kami di Rusia, jadi pengalaman kami agak unik. Saya ditanya bagaimana Anda membagi aplikasi menjadi modul, seperti apa ulasan kode Anda, bagaimana CI Anda bekerja.

7. Dengan sumber daya yang tidak terbatas (waktu, uang, orang), proyek apa yang ingin Anda kerjakan?


- Saya memiliki daftar “ingin melakukan, tidak punya waktu” yang agak panjang tentang apa yang ingin saya lakukan di Maps. Ada hal-hal yang perlu diperbaiki.

Tapi secara keseluruhan, saya ingin masuk ke industri luar angkasa. Saya terpesona oleh gagasan tentang seorang pria di luar Bumi, menjelajahi alam semesta. Setiap kali ada berita tentang kemajuan ilmiah di bidang itu, saya menjadi bersemangat. Meskipun pengembangan iOS mungkin tidak diperlukan di sana, tapi saya bisa cocok dengan keterampilan manajemen tim saya. Sial, saya bahkan akan memberikan kopi kepada orang-orang jika idenya benar.

8. Bagaimana Anda rileks? Apa yang Anda lakukan dalam hidup, selain bekerja?


- Setiap orang perlu "reboot" kadang-kadang. Jadwal 5 + 2 diciptakan oleh beberapa orang yang sangat pintar. Jika Anda benar-benar terlibat dalam suatu proyek, tertarik pada keberhasilannya sehingga Anda bersedia bekerja di akhir pekan, itu tidak akan berakhir dengan baik. Anda akan kehilangan percikan Anda, dan itu harus dipertahankan dengan segala cara jika Anda ingin bekerja selama berbulan-bulan atau bertahun-tahun.

Pada akhir pekan saya biasanya melakukan sesuatu yang sederhana: berjalan, menonton TV, tidak ada yang terlalu ekstrem. Meskipun saya mungkin ingin, tapi tidak ada orang yang melakukannya. Beberapa kali tim kami pergi kayak di sungai Vyazma, itu cukup keren. Terkadang kita pergi bermain paintball. Tapi itu bukan sesuatu yang kami lakukan secara teratur, karena itu menguras Anda lebih cepat. Tentu, Anda menukar itu dengan emosi, tetapi ... Bekerja selama lima hari, lalu menghabiskan dua hari melakukan sesuatu yang intensif secara fisik, kemudian bekerja selama lima hari lagi? Saya mungkin tidak akan berhasil.

Saya juga suka menghabiskan waktu memulihkan rumah saya. Beberapa perbaikan dilakukan dengan cepat, beberapa berlangsung selamanya. Ini adalah dunia kecilnya sendiri dengan teknologi dan pengalamannya sendiri.

9. Ceritakan tentang 3 buku favorit Anda: pendidikan, sains populer, dan fiksi.


- Saya belum memiliki pengalaman positif dengan buku-buku pendidikan - Saya mungkin belum membaca satu pun tentang pekerjaan saya. Mungkin hanya di awal, saya belajar C ++ di buku. Saya ingat pergi ke kemah luar ruangan anak-anak, semua orang di sekitar saya punya buku normal dan saya punya C ++. Saya akhirnya tidak membaca terlalu banyak karena saya tidak punya komputer. Saya membacanya dan sebagian besar mengerti, tetapi sekarang menerapkan semuanya untuk kebutuhan saya? Bagaimana cara mendapatkan pengalaman? Saya lebih dari orang yang berlatih daripada orang teori. Mungkin saya tidak tahu beberapa istilah keren yang digunakan rekan saya secara teratur, tetapi setidaknya saya tahu cara menyelesaikan sesuatu. Saya belajar itu hanya dengan memecahkan masalah yang kompleks dan mencari solusi di Internet.

Bagi orang-orang yang berkonsentrasi pada blog dan literatur yang pandai, saya hanya bisa mengatakan bahwa tidak ada yang Anda baca atau lihat jaminan Anda dapat mereplikasi sendiri. Selalu ingat tujuan Anda dan lengkapi membaca dengan latihan.

Wikipedia menggantikan sains populer bagi saya. Saya membaca tentang semuanya. Saya sangat suka sejarah dan sesekali dapat membaca tentang seluruh garis keturunan penguasa Rusia: dari Rjurjik ke Ivan the Terrible, dari Romanov pertama hingga Revolusi Oktober - dan kemudian melompat pada tautan tentang Alexander Agung. Saya bisa menghabiskan 2-3 jam di sana dan hampir tidak menyadarinya. Ada beberapa artikel menarik tentang senjata, pandai besi, dan sebagainya. Sayangnya saya tidak bisa meniru itu, tetapi itu keren untuk membayangkan bagaimana orang-orang awalnya datang dengan ide-ide ini.

Saya tidak banyak membaca buku fiksi saat ini. Mereka hampir seluruhnya digantikan oleh film. Mereka melayani sebagian besar tujuan yang sama, tetapi film jauh lebih padat. Tapi saya akan menyebutkan satu buku yang benar-benar menempel pada saya - "Oblomov". Itu menyentuh saraf saya dengan cara yang tidak ada buku lain lakukan.

10. Jika sistem AI tiba-tiba menjadi sadar tepat di depan Anda, apa yang akan Anda katakan kepadanya?


- Pertama saya akan bertanya: apa artinya "sadar"? Jika itu berarti lulus tes Turing, maka itu belum masuk akal. Tetapi jika kita tidak membahas secara khusus, saya mungkin akan memintanya untuk memecahkan beberapa masalah khusus. Lagipula, aku orang yang latihan. Jadi, "Bagaimana cara membuat Xcode lebih cepat?"

Tetapi Anda masih harus mulai dengan "Hai, apa kabar?". Jawaban untuk pertanyaan semacam ini dapat memberi tahu kami banyak tentang AI. Bagaimana cara mesin menilai suasana hatinya sendiri? Apa fungsinya?

Pertanyaan dari tamu sebelumnya: teknologi apa yang paling menyenangkan untuk dipelajari?


- "Menyenangkan" secara khusus? Saya belum belajar bersenang-senang dari belajar atau bekerja dulu. Saya telah belajar untuk mengambilnya dengan tenang dan melakukannya dengan baik. Sebagai contoh, saya belum benar-benar bersenang-senang belajar iOS SDK, karena itu agak sederhana jika Anda tahu dasar-dasarnya.

Di mana saya benar-benar bersenang-senang berada di universitas, di mana saya bekerja pada sebuah proyek yang menerapkan pembelajaran mesin. Sangat menyegarkan untuk menyadari bahwa sebenarnya tidak ada hal yang sulit untuk ML. Jika Anda mengetahui parameter input, Anda dapat memprediksi hasilnya secara akurat. Mungkin, itu menjelaskan mengapa saya tidak tergila-gila dengan AI seperti orang lain tampaknya - saya tahu itu hanya algoritma.

Juga, saya senang bekerja dengan kompiler yang memiliki multithreading otomatis. Ini adalah teknologi yang agak maju, memiliki banyak hal untuk dipelajari. Mereka benar-benar pintar dan melakukan lebih banyak daripada yang dapat Anda bayangkan. Sebagai contoh, transformasi pohon sintaksis yang sangat kompleks. Atau mengoptimalkan pembuatan kode untuk perangkat keras dan konfigurasi CPU tertentu.

Sangat keren bahwa kami memiliki kerangka kerja sumber terbuka untuk itu, LLVM , sehingga Anda dapat membuat kompiler Anda sendiri. Anda bahkan dapat membuat bahasa Anda sendiri! Tuliskan parcer untuknya yang melakukan analisis lexis dan sintaksis, lalu gunakan kekuatan kompiler modern untuk mengubahnya menjadi kode mesin.

Bonus: tanyakan pengembang lain apa pun yang Anda suka


- Apakah Anda akan bergabung dengan penerbangan berawak pertama ke Mars, mengetahui bahwa Anda tidak akan kembali?

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


All Articles