Mengapa startup menghindari Java?
(news.ycombinator.com)Mengapa startup menghindari Java? Jawaban atas pertanyaan yang muncul di HN
- Alasan terbesar adalah ekosistem Java sudah rusak, dengan hal-hal mengerikan seperti Maven/Gradle.
- Dihindari karena para pengembang yang mengagung-agungkan Spring.
- Karena Java disamakan dengan hibernate/springboot.
- Java identik dengan coding perusahaan yang membosankan, bukan sesuatu yang modern dan sedang panas seperti Rust.
- Jika harus menggunakan JVM, lebih baik memakai bahasa lain seperti Kotlin atau Clojure.
- Pada 2022, mengatakan startup baru Anda menggunakan Java sama seperti mengatakan Anda menggunakan Cobol.
- Dulu sempat keren dan trendi, tetapi lalu Oracle muncul.
47 komentar
Saya setuju dengan poin terakhir. Setelah diakuisisi Oracle, Java mulai mengalami kemunduran
Semua orang juga sudah tahu jelas kalau mereka tidak sanggup menanggung biaya dan tenaga kerjanya, apaan sih omongannya...
Maven/Gradle dan sejenisnya memang mengerikan
Ini seolah menyiratkan bahwa tingkat pemahaman penulisnya terlihat dari sini
Saya menyimak baik-baik nasihat para senior, lalu pamit.
Keuntungan berupa mudahnya merekrut memang bisa juga menjadi kekurangan, yaitu benar-benar siapa saja jadi ikut melamar.
Akan ada veteran yang sudah menguasai JVM setelah mempelajari semuanya sampai Kotlin dan Scala, dan ada juga orang yang sudah lebih dari 10 tahun berkarier dengan Java di industri SI tetapi tidak punya kemauan untuk meningkatkan kemampuan teknis, sampai tidak tahu Stream API dan terus bertahan pada sintaks zaman dulu. Jika merekrut untuk golang atau rust, rasanya proporsi tipe yang belakangan itu akan jauh berkurang. Untuk Python saya kurang yakin...
Beralih dari Java ke Kotlin tidak sulit, dan beralih dari JSP ke Thymeleaf juga tidak sulit. Hanya saja ada ketidaknyamanan berupa referensi. Apa pun itu, cobalah mulai dari objek, pewarisan, dan perancangan terstruktur. Bergantung pada library atau alat sampingan hanya membuktikan bahwa Anda masih pemula.
Secara pribadi, menurut saya Java tampaknya memiliki ketimpangan informasi yang cukup besar karena sejarahnya sudah panjang.
Bagaimanapun juga, ini adalah bahasa yang pernah mendominasi sebuah era, jadi masih banyak artefak informasi dari masa itu yang tersisa, dan tampaknya sangat sering artefak tersebut diproduksi ulang seolah-olah masih relevan hingga sekarang meskipun sudah mengalami begitu banyak peningkatan versi.
Saya ingat pernah mengalami banyak kesulitan saat mencoba mencari pendekatan baru yang sesuai dengan versi-versi terbarunya.
Bukan berarti bahasa lain tidak seperti itu, tetapi kalau harus memilih bahasa yang sangat terfragmentasi, menurut saya Python dan Java adalah dua yang paling menonjol.
Namun, Python tampaknya masih cukup sering direkrut oleh startup karena dinilai unggul dari sisi kecepatan pengembangan.
Tetapi itu tampaknya alasan yang berbeda dari alasan startup menghindari Java.
[Alasan startup menghindari Java]
[Namun alasan startup seharusnya memilih Java]
[Namun alasan mengapa ini tetap perlu dipertimbangkan ulang]
Terlepas dari apakah Java itu bagus atau tidak, kesan yang saya rasakan adalah Java tampaknya bukan arus utama di kalangan startup luar negeri.
Saya pernah melakukan pekerjaan analisis teknologi untuk akuisisi perusahaan luar negeri, dan tidak ada satu pun yang menggunakan Java. Yang menarik, justru cukup banyak yang memakai .NET.
Mungkin karena saya sudah punya pengalaman seperti itu sejak 2–3 tahun lalu, jadi saya cukup merasa relate dengan isi ini.
Saya juga kurang suka
mavenkarena terlalu bertele-tele,ternyata
gradlejuga mengerikan ya.Kalau saya malah lebih takut
npm;Dan menurut saya, membawa-bawa
cobolitu agak keterlaluan.Mungkin karena ditulis dari sudut pandang developer perusahaan besar, haha.
Bagaimanapun juga, setiap kali melihat gambaran Java dibenci secara membabi buta, rasanya lucu. Saat melihat berbagai kasusnya, kelihatan pengalaman kelam masing-masing orang.
Java terlalu malas.
Memang pantas kena omel.
Akhir-akhir ini kelihatannya mulai berusaha, tapi menurut saya masih harus lebih banyak dikritik.
Pada akhirnya, seiring pergantian generasi, bahasa lain akan menjadi arus utama lagi. Startup memiliki proses pengambilan keputusan yang sederhana untuk mengadopsi arus baru, dan agar bisa berkembang melampaui tahap startup, bahasa yang mereka gunakan harus menjadi arus utama. Sementara itu, perusahaan besar memiliki proses pengambilan keputusan yang rumit dan banyak kepentingan terkait, sehingga cenderung baru mengadopsi sesuatu setelah stabilitasnya terjamin. COBOL yang muncul pada 1959 baru benar-benar hilang dari sektor keuangan saat memasuki abad ke-21. Sebagai catatan, Java yang kalian anggap kurang bagus itu juga berawal sebagai open source, dan pada suatu masa pernah menjadi bahasa paling populer di kalangan SOHO. Selain itu, citra Java sebagai bahasa perusahaan besar makin kuat setelah diakuisisi oleh Oracle dan, di Korea, setelah munculnya framework e-government yang dipimpin pemerintah.
Saya penasaran dari mana mitos bahwa 'Java hanya populer di Korea' mulai muncul. Apakah karena dari sedikit perusahaan IT besar dalam negeri yang benar-benar besar, dua di antaranya adalah Naver dan Kakao, dan keduanya memakai Java?
Tentu saja, di AS kumpulan engineer jauh lebih luas, jadi memang lebih mudah membentuk tim dengan bahasa lain. Namun bahkan di semua perusahaan IT Amerika, termasuk FAANG, Java adalah tech stack yang sangat umum.
Karena perusahaan-perusahaan itu sangat besar, perbedaan antar tim juga sangat besar. Tetapi setahu saya, di Amazon framework standar internalnya memang Java (katanya di versi 2 mereka sempat memakai Spring lalu sekarang beralih ke Guice). Kalau Google, yang saya tahu kira-kira setengah C++ / setengah Java, dengan sebagian tim juga memakai Python. Apple juga, setahu saya, sebagian besar web service-nya berjalan di atas Java.
Netflix tentu tidak perlu dijelaskan lagi. Hystrix, Zuul, dan Eureka semuanya dibuat oleh Netflix, jadi mungkin itu perusahaan yang paling jago memakai Spring di dunia.
Facebook juga sebagian besar memakai C++ atau Hack, tetapi setahu saya ada beberapa tim yang memakai Java.
Twitter juga, yang awalnya ditulis dengan Ruby, setahu saya kemudian pindah ke Scala, bahasa di ekosistem JVM. Selain itu, di perusahaan besar seperti Atlassian, VMware, Red Hat, dan lainnya, mungkin justru lebih sulit menemukan tempat yang tidak memakai Java.
Karena Kafka, Hadoop, dan sebagainya semuanya berjalan di JVM, bahkan jika Java tidak dipakai untuk layanan secara langsung pun, saya rasa mungkin hampir tidak ada perusahaan yang benar-benar tidak membutuhkan Java.
Tidak ada yang menyangkal bahwa Java banyak digunakan sebelumnya. Sepertinya itu agak jauh dari inti tulisan ini.
Tulisanmu sendiri membahas perusahaan besar secara umum terlepas dari negaranya, tetapi di kolom komentar justru terlihat sangat banyak penyebutan seperti “di Korea memang begitu” atau “itu hanya berlaku di Korea”.
Bukan hanya di Korea Java banyak digunakan, tetapi tampaknya memang benar bahwa Java digunakan secara sangat luas khususnya di Korea. Misalnya, dalam hasil survei JetBrains tahun lalu disebutkan bahwa “Java adalah bahasa yang paling banyak digunakan di Korea, Tiongkok, dan Jerman. Pangsa Java di Korea adalah 53%, di Tiongkok 47%, dan di Jerman 33%.”. Untuk fenomena ini, tampaknya keberadaan e-Government Framework yang juga banyak disebut orang lain di kolom komentar, serta kurikulum pendidikan coding yang didanai pemerintah, kemungkinan memang turut memengaruhi.
Melihat beberapa komentar, saya jadi teringat artikel lama tentang C++ yang pernah diunggah. Sepertinya di komunitas developer Korea, C++ dan Java memang sudah naik ke level yang nyaris sakral, ya wkwk. Begitu mulai mengkritiknya, kelihatannya tombol pemicu banyak orang langsung terpencet...
Tentu ada alasan Java juga sempat mendominasi pasar domestik, tetapi agak kurang pas kalau C++ disatukan dengan Java.. hehe
Istilah “tombol kejang” sepertinya bukan ungkapan yang terlalu baik. Karena itu menggambarkan pihak lain secara buruk.
Saya memberanikan diri menyampaikan ini karena berharap komunitas ini bisa menjadi tempat yang sedikit lebih saling menghormati. Maaf.
Saya setuju. Sepertinya tidak perlu merasa minta maaf.
Saya rasa bukan berarti startup menghindari Java, melainkan kelebihan bahasa/framework lain lebih besar. Namun saya setuju bahwa ekosistem Java/Spring ternyata tidak sebagus yang dibayangkan. Sejujurnya saya developer Spring, tapi tidak terlalu menyukai Spring. Mungkin kesannya jadi lebih parah karena tidak banyak developer yang pernah mengembangkan aplikasi web di lingkungan selain Java (yang pada praktiknya hampir sinonim dengan Spring).
Spring
Java
Kelebihan ekosistem JVM jelas tetap ada, jadi untuk proyek baru saya rasa Kotlin hampir wajib. Dan kalau tidak ada alasan yang benar-benar jelas untuk memakai Spring, akan lebih baik memulai dengan framework ringan seperti ktor. Untuk kekurangan yang saya sebutkan, memang banyak orang yang bilang desainnya yang salah atau pengembangnya tidak benar-benar memahami filosofi Spring, tetapi OOP toh bisa dilakukan juga di bahasa lain..
Di tengah kolom komentar yang sangat berantakan dan penuh serangan, ini adalah komentar yang terasa sangat relatable.
Saya setuju bahwa bahasa dan framework baru perlu diadopsi dengan lebih aktif, tetapi jujur saja, realitas di dalam negeri saat ini adalah bahkan ketika baru memulai proyek baru, masih sangat banyak orang yang secara otomatis memilih Java 8 alih-alih Java 17 yang merupakan versi LTS terbaru, tanpa alasan rasional apa pun. Jika melihat tempat seperti blog Tistory, sangat mudah menemukan artikel seperti “cara mengunduh Java 1.8” yang diposting dengan tanggal tahun ini, 2022. Melihat hal seperti itu, saya jadi merasa sikap banyak orang di sini yang sangat membenci Java mungkin bukan tanpa alasan.
Namun, saya rasa masalah seperti ini tidak semata-mata berasal dari bahasa Java itu sendiri. Sebaliknya, saya berpikir masalah yang lebih besar adalah budaya yang memusuhi perubahan—yang tampaknya особенно parah di dalam negeri—serta maraknya kode salin-tempel tanpa perkembangan apa pun. Sebenarnya saya sedang mengerjakan pemeliharaan beberapa jenis program serupa yang dikembangkan dengan C#, dan meskipun saya merasa bahasanya sendiri lebih baik daripada Java, sehebat apa pun bahasanya, tetap tidak ada cara untuk menahan kengerian kode yang dibuat pendahulu hanya dengan asal menambal lewat salin-tempel dari proyek lama. Bahkan sekarang, karena perubahan di lingkungan eksternal, muncul situasi di mana sebagian besar kode berulang seperti itu harus diganti tanpa syarat sebelum akhir tahun, jadi rasanya makin mengerikan.
Ini topik yang mudah memicu reaksi berlebihan, setidaknya dalam konteks domestik.
Sepertinya akan sulit meninggalkan Java yang sudah lama dipakai, dan karena orang tetap terus dibutuhkan, akademi pelatihan bersubsidi pemerintah terus mencetak calon pekerja Spring dengan kurikulum yang sama..
Saya merasa akan sulit memutus lingkaran seperti ini.
Saya memandang positif upaya-upaya untuk mencoba menggunakan Kotlin + Spring.
Kalau pakai Docker...
ukuran image Docker juga jadi membesar tanpa perlu.
waktu sampai bisa dijalankan juga lama, dan sebagainya...
Belakangan karena semua orang pakai Docker, sepertinya jadi kurang disukai..
Ekosistem Java tidak pernah benar-benar rusak sekali pun.
Ada sangat banyak proyek open source, dan menurut saya melalui peningkatan versi, Java juga mencerminkan tren pengembangan saat ini lebih cepat daripada bahasa lain.
gradle/mavenhanyalah pilihan untuk build tool, bukan keharusan.Ada banyak build tool lain juga, jadi tinggal pakai yang diinginkan.
Mengapa di Node orang memakai
npm? Karena praktis.gradle/mavenjuga banyak dipakai karena praktis.Meskipun Java punya banyak framework, alasan orang memakai Spring adalah karena fleksibilitas dalam ekspansi, kemudahan manajemen proyek, dan performa yang stabil, sehingga popularitasnya terus bertahan sampai sekarang.
Kalau dilihat mengapa startup beralih ke Java saat skala bisnis membesar, kebanyakan memutuskan beralih karena manajemen proyek yang stabil.
Sampai tahap skala kecil, mengembangkan dengan Python atau Node tidak masalah, tetapi ketika bisnis berhasil lalu jumlah developer menjadi 100 atau 1000 orang yang mengerjakan proyek yang sama, kelebihan Python atau Node jadi sulit dimaksimalkan lagi, dan justru kekurangannya menjadi lebih besar.
Saya pikir itulah sebabnya mereka beralih ke Java, yang mampu menjaga kualitas pada proyek berskala besar sekaligus menjamin stabilitas.
Kalau memang ada bahasa pengganti yang lebih baik daripada Java, bukankah orang-orang akan lebih cepat lagi mengadopsi bahasa pengganti itu??
Terakhir, layanan yang dibuat dengan Java punya hambatan masuk awal yang tinggi dan biaya infrastruktur yang tinggi. Karena itu, pada tahap awal startup, kita sering melihat mereka lebih memilih bahasa yang bisa diterapkan dengan mudah dan cepat tanpa perlu menghabiskan banyak biaya dan waktu untuk setup.
Setidaknya jika dibatasi pada pasar domestik, yang kebanyakan justru melimpah hanya pengembang Java. Lebih tepatnya, bukan pengembang Java, melainkan hanya ada pengembang Spring. Karena framework e-government adalah Spring, hampir semua pengembang junior belajar hanya Spring lalu keluar ke industri. Orang-orang seperti itu menumpuk dan penuh dengan pengalaman, jadi jadinya seperti ini. Tidak ada keberagaman, dan ekosistem bahasanya sudah telanjur rusak. Banyak juga orang yang disebut pengembang Java padahal tanpa Spring pun tidak bisa membuat papan buletin.
Inti pertanyaannya adalah "startup"; yang penting bukan "stabilitas/skalabilitas" melainkan "kecepatan pengembangan".
Bagi startup, waktu adalah uang!
(Kalau nanti sudah punya waktu dan uang, pakai Java?)
Dan popularitas Java tampaknya juga bukan kekhususan Korea saja. Bahkan sekarang pun masih masuk top 3 bahasa pemrograman paling populer.
Karena alasan itu, cerita tentang pindah ke Java sepertinya hanya berlaku di Korea.
Karena banyak perusahaan besar yang sudah menggunakan Java, tujuan utamanya paling besar adalah untuk pemeliharaan.
Apakah Oracle muncul atau tidak, sebenarnya bagi sebagian besar perusahaan di garis depan itu tidak terlalu relevan... bahkan Naver, Kakao, Line, Coupang, Baemin pun semua sistem utamanya memakai Java. Perusahaan game seperti Nexon juga menulis jaringan backend internal mereka dengan Java.
Saya sama sekali tidak setuju dengan anggapan bahwa ekosistem Java sudah rusak atau bahwa Gradle itu mengerikan
Saya tidak paham logikanya: hanya karena Java adalah bahasa yang sudah lama dan pengembang Java banyak, lantas berarti mereka tidak mau belajar hal baru atau kualitasnya lebih rendah.
NekarakuBae semuanya menjadikan Java sebagai yang utama, dan belakangan ini Kotlin baru mulai diadopsi sedikit demi sedikit.
Apakah maksudnya para master sejati justru ada di startup? haha
"hotshit" tampaknya punya terjemahan yang lebih tepat.
"Mengatakan bahwa startup baru Anda menggunakan Java pada tahun 2022 sama seperti mengatakan bahwa Anda menggunakan Cobol."
Di Korea, sulit untuk mengalahkan logika bahwa pasokan pengembang Java itu mudah. Kalau soal kualitas pengembang yang direkrut dengan cara seperti itu, ya entahlah.
Katanya ekosistem Java sudah rusak? Kenapa Spring juga dianggap tidak cocok? Dasarnya terlalu lemah.
Jika JVM adalah mata uang kripto, maka Java adalah Bitcoin.
wwwwwwwwwwwwwwwwwwww
Dulu meme soal Java yang butuh 2 orang itu memang bukan muncul tanpa alasan.. Ditambah lagi, karena ini framework standar pemerintah, di proyek SI sektor publik pemerintah penggunaan JAVA itu nyaris seperti dipaksakan....
Agak sulit dipahami kalau dibilang toolchain Java kurang bagus.
Dibanding pengalaman buruk dengan npm, cara pengelolaan Maven/Gradle malah terasa jauh lebih baik...
Saya juga memulai karier dengan Java dan selama sekitar 4 tahun hanya bekerja sebagai developer Java di satu perusahaan. Setelah berpindah-pindah perusahaan dan mencoba berbagai bahasa seperti python, ruby, go, dan lain-lain, belakangan ini saya melanjutkan karier sebagai developer Solidity.
Belakangan ini, ketika banyak startup telah menyelesaikan fase pertumbuhan sampai taraf tertentu dan masuk ke jalur yang stabil, terlihat banyak kasus di mana mereka mengubah infrastrukturnya ke Java. Saat saya memikirkannya baik-baik, rasanya mereka melakukannya hanya karena inersia.
Banyak developer level lead sudah terbiasa dengan Java dan enggan mempelajari bahasa lain, jadi mereka akhirnya hanya menggunakan Java yang familiar bagi mereka. Ketika orang-orang seperti itu berkumpul di startup, sepertinya seluruh infrastruktur pun berubah menjadi berbasis Java.
Secara pribadi, saya tidak begitu memahami mengapa infrastruktur dibongkar-pasang hanya karena alasan "sudah terbiasa", tetapi manusia pada dasarnya memang enggan mempelajari hal baru, dan karena ekosistem Java di Korea Selatan sangat kokoh, tampaknya akan sangat sulit untuk mengubahnya.
Java dan Spring memang bagus untuk menyediakan layanan berskala besar secara stabil, namun layanan startup pada tahap awal skalanya kecil sehingga keunggulan Java sulit terlihat.
Pada tahap awal, startup kadang harus menangani Front dan Back dengan sedikit orang, dan untuk itu lebih praktis menulis semuanya sekaligus dengan Node.js atau JS dibanding Java.
Pada akhirnya, begitu startup menerima pendanaan seri investasi, kebanyakan tetap beralih ke Java dan Spring.
Untuk poin 1 saya kadang tidak begitu paham. Bukan berarti bahasa lain tidak stabil juga. Toh kalau skalanya sudah besar, Java juga tetap harus di-tuning.
Kalau dilihat-lihat, kadang rasanya mereka hanya terbiasa dengannya, lalu menyebut apa yang paling memudahkan mereka untuk melakukan tuning performa dan troubleshooting sebagai sesuatu yang “stabil”.
Seperti yang kita semua tahu, Java sejak versi-versi awal sudah menyediakan berbagai hal yang kini dianggap sangat wajar, seperti pengelolaan memori otomatis. Dan pada 1990-an ketika Java pertama kali muncul, bahasa seperti C atau C++ yang membuat kesalahan kecil dari pengembang lebih mudah berdampak besar pada keandalan keseluruhan aplikasi—misalnya menyebabkan kebocoran memori—jauh lebih banyak digunakan dibanding sekarang. Di masa seperti itu, kemunculan bahasa yang meskipun mungkin mengalami penghentian eksekusi sementara (Stop-the-world), tetapi secara drastis menurunkan kemungkinan layanan mati total akibat masalah memori, konon merupakan sensasi besar. Karena itu, saya rasa Java sejak awal kemunculannya sudah memulai dengan citra sebagai bahasa yang jauh lebih stabil dibanding bahasa lain, dan citra itu terus berlanjut hingga sekarang.
Selain itu, pada saat ini Java juga memiliki tingkat kepercayaan dan akumulasi pengalaman yang dibangun dari penggunaan luas dalam berbagai layanan selama waktu yang lama. Karena itu, seperti yang Anda katakan, Java memudahkan tuning performa maupun troubleshooting, dan tersedia banyak sekali alat serta solusi baik komersial maupun open source. Ekosistem dari produk yang digunakan secara luas dengan sendirinya membuat pemecahan masalah menjadi lebih mudah, dan ketika gangguan terjadi, kemudahan menyelesaikan masalah sehingga downtime bisa dikurangi akan menjadi keunggulan besar bagi pihak yang mengutamakan stabilitas.
Dan untuk Kotlin yang banyak disebut di komentar lain, menurut komentar orang lain di GeekNews, ternyata sampai sekarang masih cukup banyak isu terkait bug kompiler maupun kompatibilitas. Bahasa yang memakai JVM yang sama dan kini sudah hampir 10 tahun sejak dirilis saja masih seperti ini, jadi jika stabilitas dijadikan prioritas utama dalam kriteria penilaian, menurut saya sangat masuk akal untuk sebisa mungkin memilih sesuatu yang sudah cukup teruji lewat waktu yang panjang.
Sebagai referensi, meski saat ini mungkin terasa sangat aneh, ketika Java pertama kali muncul, meminjam ungkapan dari buku karya Lim Baek-jun 『Polyglot Programming』 (2014), Java disebut bahkan “memberikan kesan segar, muda, bahkan seksi”. Terkait hal ini, saya perkenalkan terjemahan tulisan yang ditulis ayah Java, James Gosling, pada 1997.
Saya rasa alasan memilih Spring ada pada kekhasan pasar developer Korea.
Di luar negeri, JVM umumnya sedang beralih ke Kotlin seperti yang disebutkan dalam tulisan ini.
Saya juga jadi punya citra buruk terhadap Java gara-gara para pengikut Spring.
Terutama di Korea, kalau bilang pakai Java, ujung-ujungnya hampir semuanya cuma Spring Boot. Jadi sering ada anggapan Java = Spring Boot.
Saya senang karena saya adalah developer yang tidak bisa Java
Tetap saja, sepertinya kalau mencari orang di startup, ini bakal jadi yang paling cepat..
Namun di Korea...
Saya juga pernah memakai Java, tetapi sekarang kalau bisa saya tidak ingin memakai Java.
Kenapa rasanya sedih tapi juga bikin ketawa..? wkwk
(Dulu di startup sebelumnya pakai Java, tapi sekarang sudah tidak pakai)