Kotlin, IT di Estonia dan (tiba-tiba) terowongan antara Tallinn dan Helsinki: sebuah wawancara dengan Anton Keks

Baru-baru ini, sebuah posting yang sangat spesifik tentang Kotlin diterbitkan di blog kami: tidak terlalu serius, agak dangkal dan tidak terduga. Tetapi kami sangat menyadari bahwa mengkritik suatu teknologi dengan menghabiskan beberapa hari mempelajarinya adalah perilaku yang buruk. Dan kali ini kami memutuskan untuk membicarakan Kotlin dengan seseorang yang menulisnya di prod dari versi 1.0.



Saat ini, nama Kotlin sudah sulit mengejutkan siapa pun, terutama dalam pengembangan Android. Mungkin itu pada awal 2016: permintaan adalah urutan yang lebih rendah, dukungan resmi untuk Google masih keluar dari pertanyaan, dan menulis di Kotlin adalah semangat yang berani. Anton Keks menjadi salah satu pemberani seperti itu, dan kemudian dia juga memberi banyak perhatian pada Kotlin (misalnya, dia tampil dua kali di KotlinConf). Karena itu, kami memutuskan untuk bertanya kepadanya tentang bagaimana kehidupan pengembang Kotlin telah berubah seiring waktu.

Dan agar tidak bangun dua kali, mereka membahas topik lain. Anton adalah salah satu pendiri perusahaan Estonia Codeborne, yang mempraktikkan pemrograman ekstrem, oleh karena itu, pada saat yang sama, mereka mempelajari apa yang ada di Estonia dengan TI dan cara membuat perusahaan Anda sendiri di sana.

- Bagaimana Anda mulai menulis di Kotlin, dan bagaimana Anda menggunakannya sekarang?
- Mulai digunakan pada awal 2016, dari versi 1.0. Proyek pertama saya di Kotlin adalah yang paling aman: plug-in untuk IntelliJ IDEA, yang saya lakukan untuk pelanggan Jepang. Setelah itu, saya memulai dan memindahkan proyek pribadi saya dari Jawa ke Kotlin, dan mencoba menggunakannya untuk backend.

Pada tahun lalu, kami telah menggunakan bahasa di backend di lingkungan perbankan, kami secara bertahap memindahkan proyek Jawa besar ke Kotlin. Dan kami menulis microservices di atasnya, dan ada Kotlin yang bersih. Ketika Anda memiliki proyek hanya di Kotlin, semuanya menjadi lebih menyenangkan: Anda tidak perlu memikirkan interoperabilitas dengan Java.

- Karena Anda melihat bahasa dari versi 1.0 ke 1.3 hari ini - bagaimana perubahannya dari sudut pandang pengembang yang menulisnya?
- Pada awalnya, saya pikir, sejak versi rilis, maka semuanya sudah luar biasa dan akan bekerja tanpa masalah. Ternyata tidak begitu, dan kesenjangan pertama, antara 1,0 dan 1,1, sebagian besar adalah koreksi saham, peningkatan kinerja, dan sebagainya. Tetapi versi 1.2 dan 1.3 adalah tentang fitur baru.

Misalnya, coroutine yang telah menjadi stabil di 1.3 dapat membuat perbedaan besar. Saya bermain-main dengan mereka dan sangat senang. Namun, dalam produksi kami belum mencobanya: semuanya masih terletak pada kesulitan yang terkait dengan driver JDBC. Namun dalam pengembangan untuk Android, lebih mudah untuk membangun model asinkron, sehingga pengembang Android menggunakan coroutine hingga 1,3.

Dan apa yang masih sangat menarik: dalam versi 1.2, dukungan eksperimental untuk proyek multi-platform muncul, menjadi mungkin untuk dikompilasi dalam JavaScript dengan Kotlin / JS, dan dalam kode asli dengan Kotlin / Asli. Tetapi untuk saat ini, kompilasi dalam JavaScript menakutkan bagi saya, dan dengan Native, masalah utamanya adalah bahwa Kotlin memiliki perpustakaan standar yang sangat kecil. Dalam kasus JVM, Kotlin sangat tergantung pada perpustakaan Java standar. Dan di Kotlin / Asli, secara teori, Anda bisa menggunakan pustaka asli apa pun, tetapi kemudian Anda kehilangan "platform silang penuh", semuanya menjadi terpisah. Namun, JetBrains saat ini sedang mengerjakannya, dan lintas platform dapat memiliki masa depan yang cerah. Aplikasi lintas-platform iOS / Android adalah yang diinginkan banyak orang.

- Xamarin dan React Native telah mencoba memberikannya kepada kami ...
"Mereka semua memiliki masalah yang tidak dihadapi Kotlin." Dalam kasus React Native, Xamarin dan sejenisnya, kerangka kerja perlu mengikuti rilis OS. Sesuatu yang terus-menerus rusak, dan semua kerangka kerja ini tidak mengikuti. Anda berada dalam kondisi yang tidak dapat dipahami ketika versi baru OS telah dirilis, dan kerangka kerja Anda masih tidak berfungsi, dan Anda masih perlu melakukan sesuatu. Ini adalah saat yang paling tidak menyenangkan. Dan dengan Kotlin dalam pengertian ini, semuanya berbeda - mereka secara langsung menggunakan semua API dan perpustakaan standar dari bahasa tersebut.

- Seringkali, fitur di Kotlin muncul sebagai fitur "eksperimental", dan berhasil berubah sebelum versi stabil. Apakah Anda menyukai pendekatan ini? Jika Anda menggunakan fitur eksperimental, berapa banyak yang berubah dan berapa banyak yang harus Anda ulang?
- Ya saya menyukainya. Karena benar-benar ada banyak bug dalam versi beta dan rilis kandidat 1.3 (bahkan untuk laporan saya dengan puzzle saya menemukan beberapa puzzle pada topik ini), dan pada rilis final mereka memperbaikinya, dan ini sangat bagus.

Dalam coroutine, beberapa hal menjadi sedikit lebih rumit, tetapi menjadi lebih jelas apa yang terjadi: misalnya, menjadi perlu untuk lebih eksplisit menyampaikan konteks kepada coroutine. Dan pada akhirnya, kode dengan coroutine yang ditulis di bawah Kotlin 1.2, sekarang tidak bisa dikompilasi. Tetapi pada saat yang sama, perubahan ini tidak terlalu besar sehingga sulit untuk dimigrasi.

- Jika kita tidak berbicara tentang bahasa itu sendiri, tetapi, misalnya, tentang IDE, kemana perkembangannya? Bagaimana keadaan sebelumnya, dan sekarang apa?
- Karena JetBrains menghasilkan bahasa, kompiler, dan alat-alat, ada situasi yang belum pernah terjadi sebelumnya dalam hal dukungan dalam IDE. Sangat sering, ketika sebuah bahasa lahir, pengadopsi awal awalnya ditulis di dalamnya dalam editor teks tanpa highlight, dan sejenisnya. Dan dengan Kotlin ini bahkan tidak sampai versi 1.0, dukungan dalam IDE segera.

Namun, itu tidak ideal, dan seiring waktu itu terus meningkat, dengan setiap versi minor, inspeksi ditambahkan. Dan apa yang sekarang jauh lebih baik daripada sebelumnya. Sebagai contoh, salah satu bug yang saya sedang menunggu perbaikan: ada string template di Kotlin, dan saya ingin mencoba menggunakannya alih-alih bahasa templating lain dalam proyek saya, tetapi karena bug di IDE, sorotan pecah segera setelah variabel di dalam string template dimulai di Kotlin. Dan sekarang akhirnya diperbaiki, jadi saya mulai menggunakannya. Saat ini, saya tidak lagi memiliki hal-hal spesifik yang tidak sesuai.

- Bagaimana dengan pengembangan ekosistem secara keseluruhan - masyarakat, tanggapan terhadap Stack Overflow, kerangka kerja?
- Sejauh yang saya lihat, komunitasnya sangat aktif, ada banyak aktivitas di Slack. Stack Overflow sudah cukup ditulis. Mungkin satu-satunya masalah adalah ketika google, terkadang ada beberapa posting yang ditulis sebelum versi 1.0, ketika beberapa fitur benar-benar berbeda. Anda harus mengikuti relevansinya.

Ada kerangka kerja yang segera dibuat khusus untuk Kotlin. Misalnya, kerangka kerja yang sangat baik untuk unit test MockK, dirancang untuk Kotlin, ada banyak API yang lebih indah. Selain itu, banyak kerangka kerja Java sekarang juga secara khusus terlibat dalam mendukung Kotlin, bukan karena itu benar-benar diperlukan dengan interoperabilitasnya, tetapi mereka menambahkan beberapa chip atau menjadikannya lebih nyaman.

- Ledakan popularitas di dunia Android tidak mengarah pada bias di komunitas, ketika semua orang hanya peduli tentang Android, dan platform lain telah memudar di latar belakang?
"Aku entah bagaimana tidak merasakan kemiringan sama sekali." Tentu saja, keputusan Google untuk menjadikan Kotlin sebagai bahasa resmi untuk Android secara dramatis memengaruhi peningkatan minat pada bahasa tersebut, tetapi bagi saya sepertinya ini bukan hanya Android, tetapi juga minat pada bahasa itu secara umum. Ada banyak pengembang android di KotlinConf, tetapi ada juga banyak dari mereka yang menulis aplikasi server, desktop, bahkan JS: Saya bertemu orang-orang yang benar-benar menggunakan penulisan kode untuk sisi klien dan sisi server. Dan tidak ada perasaan bahwa itu adalah "bahasa untuk android." Meskipun Android telah menjadi pendorong minat, itu masih merupakan bahasa tujuan umum.

- Dengan teknologi baru, ada ketakutan abadi akan "menarik, tetapi Anda belum bisa menyeretnya ke dalam produksi", dan di Android belum ada masalah seperti itu, tetapi di luar Android masih ada pertanyaan. Jika masalah tersebut relevan dengan Codeborne, maka pada saat Anda menggunakan Kotlin, apa yang telah berubah?
- Kami terutama memilih teknologinya sendiri, tetapi sering terjadi bahwa klien juga ingin berpartisipasi dalam pengambilan keputusan. Dan saat ini, ketika kami membawa Kotlin ke proyek yang berbeda, tidak ada keberatan. Apa yang telah berubah: sebelumnya, pelanggan tidak pernah mendengar apa pun tentang Kotlin, tetapi sekarang sudah di sidang. Dan sekarang, jika kita mengatakan "kita mulai beralih ke Kotlin," tidak ada lagi rasa takut, misalnya, bahwa dia akan menghilang. Ada Yayasan Kotlin, ada JetBrains dan perusahaan lain dalam kondisi keuangan yang baik. Dan dukungan komunitas sangat bagus. Secara umum, ada keyakinan mutlak bahwa Kotlin tidak pergi ke mana pun.

- Banyak yang datang ke Kotlin sekarang, setelah melewati tahap perkembangan bahasa yang dijelaskan. Ini hanya bisa membuat iri, karena mereka sudah mendapatkan teknologi yang lebih matang, atau tanpa pengalaman adopter awal, mereka kehilangan sesuatu yang penting?
- Tergantung orangnya, mana yang lebih menarik baginya. Dengan menghubungkan sebelumnya, seseorang dapat secara pribadi berpartisipasi dalam pengembangan, memengaruhi formasi. Terutama sebelum versi 1.0, ada saat ketika Anda dapat berbicara dengan tim JetBrains, memengaruhi keputusan mereka, membantu mereka. Dan sekarang tim masih beralih ke komunitas dan mempertimbangkan pendapatnya, tetapi pada saat yang sama banyak keputusan dasar telah dibuat dan tidak akan berubah. Karena itu, semuanya tergantung pada minat pribadi yang demikian.

Menurut pendapat saya, mulai menggunakan teknologi untuk pengembangan ketika tidak lagi mentah banyak membantu: Anda menghabiskan waktu untuk tugas-tugas Anda, dan bukan pada kekurangan. Dan alat Anda hanya berfungsi untuk Anda. Saya pikir sekarang saatnya telah tiba ketika mereka yang tidak mencoba Kotlin - sekarang mereka benar-benar sangat terlambat dan kehilangan banyak.

- Sekarang semuanya baik-baik saja secara umum, apa yang secara pribadi kurang Anda miliki dalam kasus Kotlin?
"Mungkin dua hal kecil." Cukup kecil adalah operator ternary. Jelas bahwa karena jika merupakan ekspresi, Anda dapat menggunakannya, tetapi Anda ingin menulis lebih akrab.

Sedikit lebih besar - akses paket lokal. Tampak bagi saya bahwa internal di Kotlin lebih dari kesalahan. Mereka mencoba memperbaiki apa yang ada di Jawa, tetapi, menurut saya, mereka melakukannya dengan sia-sia. Di Jawa, ini kurang lebih berfungsi dengan baik, dan internal hanya berguna jika Anda menulis perpustakaan, bukan aplikasi biasa. Dan saya rindu kontrol akses berbutir halus yang dimiliki Java.

Yah, saya ingin mengembangkan pengembangan lintas-platform, yang sudah saya bicarakan. Di sana Anda perlu bekerja di perpustakaan standar. Tetapi ada juga kerangka kerja Ktor, dan sekarang merupakan testbed untuk menulis semuanya di Kotlin, dan beberapa perpustakaan sekarang muncul dari proyek ini



- Mari kita beralih ke bagian kedua dari pertanyaan: Estonia, Codeborne, kewirausahaan. Pertama-tama, sebuah pertanyaan yang tidak dapat didekati: seperti apa rasanya hidup di Tallinn secara umum?
- Mungkin saya bukan orang yang tepat untuk pertanyaan ini, karena saya penggemar Tallinn, menurut saya ini adalah tempat terbaik di Bumi. Di satu sisi, kita memiliki Uni Eropa, mata uang Eropa, tatanan Eropa, dan kemurnian Eropa. Di sisi lain, Anda dapat menggunakan bahasa Rusia dengan cukup luas (sepertiga dari populasi berbicara dengan pasti), dan kami secara geografis dekat. Banyak spesialis IT dari Rusia, Ukraina, Belarusia datang kepada kita sekarang - saya pikir itulah alasannya.

Kota ini tidak sebesar Moskow atau St. Petersburg, jadi Anda tidak menghabiskan banyak waktu untuk transportasi, dan seringkali nyaman untuk berjalan kaki. Pada saat yang sama, jika Anda ingin variasi, mudah untuk pergi ke luar negeri. Dan dalam hal harga, Tallinn lebih murah daripada Inggris dan negara-negara Eropa lainnya, sehingga standar kehidupan yang Anda mampu untuk gaji yang sama di Tallinn jauh lebih tinggi.

Dari minus, hanya iklim. Di musim panas sangat baik, dan di musim dingin indah dengan salju, tetapi November adalah bulan yang sangat menyedihkan.

- Ya, Anda tidak terbiasa dengan Petersburgers / Moskow terakhir. Dan bagaimana dengan negara dengan IT?
- Kami memiliki tingkat pengembangan teknologi yang sangat tinggi. Segala sesuatu yang terhubung dengan "keadaan elektronik" sedang aktif berkembang - hingga program e-residence, ketika Anda dapat menjadi penduduk suatu negara secara online, tanpa pernah berada di dalamnya. Banyak layanan online, yang baru di negara lain, diterima begitu saja oleh kami. Permulaan muncul - misalnya, Skype awalnya Estonia. Pekerjaan juga berlimpah. Oleh karena itu, saya akan mengatakan bahwa ada banyak hal menarik untuk spesialis TI.

- Kedengarannya tiba-tiba: secara naluriah, tampaknya pusat-pusat TI seperti itu akan berada di tempat-tempat seperti Lembah, dan bukan di negara dengan populasi kurang dari Novosibirsk.
- Nah, di Lembah itu hanya orang IT yang bisa lebih buruk, ada harga real estat yang tidak realistis dan umumnya biaya hidup.

Dan, mungkin, sedikit yang ditulis tentang Estonia dalam sumber-sumber Rusia, tetapi jika Anda melihat pers internasional, maka ada banyak teks dalam semangat "negara elektronik, yang pertama di dunia" (di sini adalah contoh yang bagus ). Ketika saya pergi ke konferensi IT di seluruh dunia, mereka berkata kepada saya: β€œEstonia? Oh, kamu punya IT di sana! ”

Dan selain itu, di dekat Tallinn ada Helsinki, di antara mereka satu setengah jam dengan air atau 15 menit dengan helikopter. Dan ada negosiasi untuk menggabungkan Tallinn-Helsinki menjadi satu pusat IT Eropa. Terowongan antara dua kota itu mungkin, maka itu akan menjadi terowongan terpanjang di dunia.

- Ketika berada di negara dengan populasi kecil IT besar, apakah mungkin itu bekerja terutama untuk pelanggan asing?
- Ya, perusahaan mana pun yang muncul di sini ingin segera keluar ke pasar internasional. Batinnya kecil jumlahnya. Tetapi berkat kenyataan bahwa kita berada di Uni Eropa, kita memiliki pasar Uni Eropa segera. Selain itu, pasar domestik yang kecil memungkinkan TI untuk menguji beberapa hal sebelum rilis dunia.

- Banyak Rusia di benak negara-negara Baltik bergabung bersama, jadi kami akan mengklarifikasi: berapa banyak yang telah dikatakan tentang Estonia berlaku untuk Latvia dan Lithuania?
- Sebenarnya tidak terlalu berlaku. Ada beberapa persimpangan, tetapi mentalitasnya berbeda, untuk orang Latvia dan Lithuania lebih dekat ke Eropa Timur. Sejarah negara-negara juga sangat berbeda. Karena itu, jika Anda datang dan berjalan-jalan di sekitar Tallinn, Riga dan Vilnius, Anda akan merasa bahwa mereka berbeda, dan jika Anda hidup lebih lama, akan ada lebih banyak perbedaan.

Suatu ketika saya bekerja dengan orang-orang Latvia dan Lituania di tempat kerja - kemudian orang-orang Estonia ternyata yang paling progresif di bidang TI, kemudian mereka mengadopsi orang-orang Latvia, dan orang-orang Lituania bahkan lebih belakangan.

- Anda adalah salah satu pendiri perusahaan Estonia Codeborne - sebagai permulaan, beri tahu kami tentang itu.
- Kita kecil, ada 32 kita. Semua pengembang, kami menyebutnya bukan "pengembang", tetapi "pengrajin perangkat lunak" - ini adalah perbedaan yang sangat penting, karena kami tidak memiliki analis, penguji, atau manajer produk. Kami memiliki orang-orang fullstack universal yang, di samping pengembangan fullstack, juga berurusan dengan klien secara langsung tanpa perantara yang dapat mengatur tugas untuk diri mereka sendiri. Berkat ini, efisiensinya berkali-kali lebih tinggi daripada banyak perusahaan IT lainnya. Kita dapat membangun berbagai hal dengan dua atau empat orang yang membutuhkan ribuan orang untuk Sberbank bersyarat. Ngomong-ngomong, saya tidak bercanda, kami berbicara dengan Sberbank tentang topik ini, mereka tertarik untuk berinteraksi. Tetapi bagi saya tampaknya dalam skala besar, efisiensi seperti yang kecil tidak mungkin. Itu sebabnya kami tidak ingin tumbuh terlalu banyak. Budaya perusahaan - bertindak cepat, lakukan sejumlah kecil orang secara super efisien, pecahkan masalah besar sehingga pelanggan tidak menunggu selama enam bulan. Untuk ini kami menggunakan, misalnya, pemrograman ekstrim dan pemrograman pasangan.

- Apakah semua yang ekstrem ekstrem ini merupakan fitur khusus Codeborne, atau apakah itu tipikal untuk Estonia secara umum? Di negara lain, apakah Anda bisa?
- Anggap saja aggel di Estonia itu tipikal, tim kecil cukup tipikal. Tapi saya pikir kita berbeda dan melangkah lebih jauh. Tidak mungkin ada banyak perusahaan yang melakukan pemrograman berpasangan dalam jumlah seperti itu dan yang sangat berpusat pada pengembang.

Saya pikir ini bisa dilakukan di negara mana pun, kami tidak datang dengan model dari awal - kami fokus pada beberapa perusahaan, salah satunya di Chicago. Kami membaca beberapa blog, dan sebagian besar di Amerika saya melihat pendekatan yang paling dekat dengan kami.

Saya pikir pendekatan pelanggan pada awalnya membantu. Upah per jam adalah umum di Estonia, Anda dapat mengatakan bahwa Anda melihat begitu banyak jam kerja manusia, dan bersama-sama kami akan memikirkan bagaimana melakukannya sebaik mungkin dengan anggaran yang tersedia. Di Estonia, ide ini tidak perlu dijual. Dan, misalnya, di Rusia, sebagian besar perusahaan pelanggan tidak siap untuk ini, mereka ingin membayar proyek, meskipun pada akhirnya untuk pelanggan, sebagai suatu peraturan, ternyata lebih mahal.

- Pada awal wawancara, pelanggan Jepang disebutkan - apakah ini khas? Ketika pelanggan di luar negeri, dan bahkan mereka dengan bahasa apa yang harus Anda hadapi?
- Tentang Jepang - ya, biasanya, Estonia banyak bekerja dengan Jepang, mereka datang ke sini sebagai seluruh delegasi.

Kami berkomunikasi dengan hampir semua klien dalam Bahasa Inggris, hanya dengan Bahasa Rusia di Bahasa Rusia. Mereka tidak setuju untuk beralih ke bahasa Inggris sama sekali - mungkin banyak yang bisa, tetapi malu. Karena itu, kami menyadari bahwa kami memiliki pengembang yang sangat berharga yang bisa berbahasa Rusia.

Dan kami bekerja dengan negara-negara lain dalam bahasa Inggris - meskipun bahasa Jepang biasanya bukan bahasa Inggris, tetapi mereka yang mencapai Estonia untuk negosiasi biasanya berbicara. Dan bahkan di Estonia kita sering berkomunikasi dalam bahasa Inggris, karena dalam sepuluh tahun terakhir ini sangat kosmopolitan, terutama IT. Banyak ahli datang dari seluruh dunia, jadi hampir selalu ternyata tidak semua orang yang terlibat dalam dialog berbicara bahasa Estonia. Saya pikir ini juga alasan mengapa cukup mudah untuk pindah ke Estonia - yang utama adalah mengenal bahasa Inggris, bahasa Estonia tidak diperlukan.

- Saya pikir banyak pengembang secara teoritis ingin membuat perusahaan mereka sendiri, tetapi mereka takut bahwa kemudian mereka tidak akan punya waktu untuk pemrograman sama sekali, dan perubahannya akan menjadi lebih buruk. Apa pengalaman Anda dalam menciptakan perusahaan di Estonia?
"Aku akan mengatakan itu." Codeborne berusia sekitar sembilan tahun, dan selama waktu itu, ketika seseorang meninggalkan perusahaan, paling sering untuk membuat perusahaan mereka sendiri. Di satu sisi, ini menghina, karena kami menumbuhkan dan mendidik orang, dan di sisi lain, itu menyanjung bahwa orang percaya bahwa langkah selanjutnya setelah Codeborne bisa seperti itu.

Dan saya akan mengatakan bahwa menciptakan perusahaan adalah pilihan keren, tetapi benar-benar bersiaplah untuk kenyataan bahwa sebagian besar waktu (terutama pada awalnya) Anda akan memiliki tugas yang tidak terkait dengan TI. Β« Β», , β€” .

, - . β€” , .

β€” β€” Β« Β». , Β« Β»?
β€” , flat-. Β« Β», , , β€” Β« Β». , , , core team 10 , 30 - . .

β€” Β« Β»: ? ?
β€” : . ( ), β€” . . : , , , .

β€” , - . ?
β€” . , , , . Codeborne, β€” , , - . , ( ) , β€” , - . . .

Akhir pekan ini, Anton mempersembahkan set kedua teka-teki Kotlin di Moskow pada konferensi Mobius . Selain dia, program ini juga memiliki banyak hal menarik untuk pengembang seluler (misalnya, laporan "Kotlin untuk menulis kode umum untuk Android dan iOS" ).


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


All Articles