Jika kompetisi menggunakan 'lingua obscura' untuk pengembangan (mengapa) saya harus khawatir? [Tutup]

16

Saya sedang membaca esai Paul Graham - Beating The Averages (2003) dan inilah yang dia katakan:

Semakin banyak rasa IT yang dimiliki deskripsi pekerjaan, semakin tidak berbahaya perusahaan itu. Jenis teraman adalah yang menginginkan pengalaman Oracle. Anda tidak perlu khawatir tentang itu. Anda juga aman jika mereka mengatakan mereka menginginkan pengembang C ++ atau Java. Jika mereka menginginkan programmer Perl atau Python, itu akan sedikit menakutkan - itu mulai terdengar seperti sebuah perusahaan di mana sisi teknis, setidaknya, dijalankan oleh peretas nyata

Sekarang, ini adalah esai yang bertanggal. Namun, saya gagal melihat bagaimana menggunakan bahasa yang tidak umum (C / C ++ / Java, C #) akan menjadi 'kurang berbahaya' . Jika programmer dari suatu organisasi sangat fasih dengan bahasa pengembangan mereka harus sama-sama mahir dalam mengeluarkan kode pada kecepatan yang layak. Bahkan jika Anda menggunakan bahasa yang tidak umum tidak akan masalah pemeliharaan / peningkatan menghantam wajah Anda karena tidak terlalu banyak programmer akan tersedia, dalam jangka panjang?

Untuk membuat sistem quick-n-dirty saya setuju, bahwa beberapa bahasa memungkinkan Anda lepas landas relatif lebih cepat daripada yang lain. Tetapi apakah esai / komentar Paul Graham masuk akal di tahun 2012 dan selanjutnya? Jika sebuah startup menggunakan bahasa IT tipikal untuk pengembangan, mengapa kompetisinya tidak terlalu khawatir?

Saya gagal melihat bagaimana bahasa itu sendiri membuat perbedaan. IMHO, itu adalah pengalaman pengembang dengan bahasa yang penting dan ketersediaan kerangka kerja sehingga Anda KERING (jangan ulangi diri Anda sendiri) tidak hanya coding dalam bahasa tertentu.

Apa yang saya lewatkan? Apakah ini menyiratkan bahwa para pemula lebih baik memilih bahasa yang tidak bercitarasa IT (bahkan jika para pengembang mungkin sangat mahir dalam hal itu)? Apa kekuatan (pemrograman) ekonomi / pasar di balik klaim ini?

PS: 'lingua obscura' tidak dimaksudkan untuk melukai perasaan siapa pun :)

PhD
sumber
4
Kesenjangan antara bahasa komoditas dan bahasa kekuatan masih sangat besar. Masih mungkin untuk mengungguli Jawa atau kecepatan pengembangan yang sama dengan, katakanlah, Lisp dalam urutan besarnya.
SK-logic
4
@ SK-logic - ada data untuk mendukungnya?
PhD
2
@Nupul, hampir tidak ada penelitian formal tentang produktivitas bahasa pemrograman, jadi saya hanya bisa mengandalkan bukti anekdotal dan pengalaman saya sendiri. Saya telah melihat hanya beberapa kertas, saya akan mencoba menggali nanti. Khusus untuk Lisp, ia berbeda dari bahasa lain dengan cara yang dapat diubah secara harfiah menjadi bahasa apa pun dengan murah dan mudah. Jadi itu menggabungkan semua properti dan keunggulan dari semua bahasa lain, sedangkan bahasa non-daya adalah tetap dan sempit. Ini dapat menjelaskan kesenjangan produktivitas.
SK-logic
8
@ SK-logika benar? Terlepas dari argumen LISPers yang bertentangan, faktanya sangat sedikit program nilai yang telah dibangun menggunakan Lisp - dengan kemungkinan pengecualian Emacs -, dan hampir tidak ada situs web utama - dengan pengecualian ViaWeb sekitar tahun 1997. Jadi, Meskipun ada klaim untuk peningkatan produktivitas yang luar biasa, kebanyakan pendukung LISP semuanya berbicara dan tidak berjalan. Mereka hanya memiliki hal-hal penelitian akademik (lebih banyak tentang penelitian dan kurang pada kualitas produksi), proyek hobi dan beberapa hal internal yang digunakan di beberapa perusahaan.
Hejazzman
2
@ SK-logic Masalahnya adalah kurangnya pengetikan statis, meskipun Anda memiliki kemampuan untuk mengimplementasikan bahasa yang diketik secara statis di lisp.
BenjaminB

Jawaban:

16

Toolchain adalah gejala.

Ketika sebuah perusahaan memilih Oracle, ini merupakan indikasi:

  • Banyak uang untuk dibuang
  • Perusahaan besar
  • Struktur organisasi yang sangat bersarang dengan banyak lapisan manajemen
  • Perusahaan dijalankan oleh 'setelan': baik tipe eksekutif, atau pemasaran dan penjualan
  • Membuat produk perangkat lunak monolitik besar dengan basis kode raksasa
  • Proses formal untuk semuanya

Ketika perusahaan mengambil Python, ini adalah tanda:

  • Perusahaan muda kecil
  • Tidak ada uang cadangan
  • Hirarki datar
  • Perusahaan dijalankan oleh programmer
  • Membuat produk kecil untuk tujuan tunggal dengan basis kode kecil
  • Sebagian besar proses informal

Ketika keduanya bertemu, strategi perusahaan besar adalah untuk menghindari risiko, menggunakan momentum mereka dan memasarkan pesaing. Strategi persaingan kecil adalah untuk pertama-tama mengalahkan persaingan ke pasar, dan kemudian tetap menjadi produk unggulan. Jika perusahaan kecil mengambil pertempuran yang tepat, mereka dapat dengan mudah mengalahkan perusahaan besar hanya dengan menjadi lebih cepat dan lebih reaktif, dan mengambil keuntungan dari kecenderungan perusahaan besar untuk menghindari risiko.

tammmer
sumber
1
Perusahaan yang menggunakan Oracle mungkin akan tetap ada dalam lima tahun ke depan!
James Anderson
3
@ JamesAnderson: tergantung pasar, ya. Jika mereka mencoba menjadi facebook berikutnya, mungkin tidak; jika mereka adalah perusahaan asuransi besar, maka mungkin ya. Tetapi kemudian, jika Anda adalah perusahaan asuransi besar, startup garasi bukanlah sesuatu yang perlu Anda takuti.
tdammers
Jadi sepertinya saya ingin bekerja di toko Python / Ruby / Scala / Clojure ... mmm. Mengingat pengalaman saya, tempat-tempat yang memiliki ujung dibayar kembali cenderung sangat lambat untuk ditingkatkan. Tidak yakin kenapa. Rasa sakit untuk memajukan satu versi seringkali lebih lembut daripada memindahkan beberapa versi ke depan. Perangkat lunak berbayar "biasanya" menawarkan migrasi tetapi migrasi itu biasanya adalah versi ke versi yang mencakup sebagian besar kasus.
Rig
25

Pilihan bahasa yang tidak jelas akan menunjukkan kepercayaan diri teknis yang tidak biasa dalam sebuah startup. Perusahaan yang rela mengabaikan kebijaksanaan umum mungkin mengetahui sesuatu tentang pengembangan perangkat lunak yang tidak dimiliki oleh kebanyakan perusahaan. Kemudian lagi, mereka mungkin hanya wankers.

samwise
sumber
1
Memang, itulah yang dimaksud oleh Graham dengan " yang mulai terdengar seperti sebuah perusahaan di mana sisi teknis, setidaknya, dijalankan oleh peretas nyata " - sebuah perusahaan di mana setidaknya para teknolog mungkin cukup pintar untuk menjadi pesaing nyata baginya.
Ross Patterson
8
Namun saat ini sebagian besar wankers, karena "memilih bahasa yang tidak jelas" adalah tren di kalangan wankers dan dilettantes.
Hejazzman
2
Ini juga menunjukkan bahwa perusahaan mencari ke dalam dan fokus "bagaimana membangun" daripada "apa yang harus membangun". Perusahaan semacam itu tidak menarik banyak pelanggan.
James Anderson
13

Saya melihat komentar PG lebih banyak tentang sikap daripada spesifik bahasa. Orang-orang dengan pola pikir TI internal bermain aman. Mereka menggunakan teknologi berisiko rendah, memiliki proses untuk meminimalkan risiko dan mengambil strategi berisiko rendah. Mereka terlalu sibuk mengkhawatirkan makan siang mereka sendiri untuk memakan milikmu.

Orang-orang di tepi pendarahan (python 2003) adalah orang-orang yang harus dikhawatirkan. Mereka lapar. Mereka mengambil risiko. Mereka secara intelektual ingin tahu. Tipe orang yang sama begadang belajar bahasa baru yang menarik adalah tipe yang mungkin menjengkelkan industri Anda sebelum Anda melakukannya.

MathAttack
sumber
4
Tentu saja mereka mungkin juga ditelan seluruhnya oleh salah satu risiko yang mereka ambil ...
Michael Borgwardt
3
"" "Orang-orang di tepi pendarahan (python 2003) adalah orang-orang yang harus dikhawatirkan. Mereka lapar. Mereka mengambil risiko. Mereka secara intelektual ingin tahu." "" - atau mereka adalah korban mode yang menggunakan bahasa trendi terbaru, dan memiliki tidak ada sentuhan dengan pragmatik pengembangan.
Hejazzman
2
Keduanya benar. Ini adalah permainan angka. Tapi ambil yang sebaliknya. Terkadang outlier meledak. Terkadang mereka berhasil. Tetapi apakah Anda pernah takut pesaing mendatangi Anda dengan COBOL?
MathAttack
13

Graham berarti tidak terlalu berbahaya baginya sebagai pesaing, tidak hanya kurang berbahaya. Maksudnya bukanlah bahwa Java (atau C ++ pada tahun 2003, atau COBOL pada tahun 1980) kurang berbahaya, melainkan bahwa itu normal , dan bahwa ada kemungkinan yang baik bahwa perusahaan yang mencari keterampilan semacam itu hanyalah pesaing biasa. Tetapi perusahaan yang mencari bakat kuat dalam bahasa yang tidak jelas (atau, lebih tepatnya, bertenaga tinggi dan kurang dikenal) adalah perusahaan yang harus ditonton.

Dan ya, itu masuk akal hari ini. Masuk akal jauh sebelum Graham menulisnya, kami hanya tidak membicarakan Jawa pada masa itu.

Ross Patterson
sumber
6
Kalau saja kita tidak perlu berbicara tentang Jawa hari ini.
DeadMG
8

Mari kita lihat bahasa apa yang pertama kali digunakan oleh startup yang sukses. Daftar tidak ilmiah, dari atas kepala saya. Penelitian acak yang tepat akan lebih baik, jika ada yang punya energi.

  • Facebook: PHP
  • Stackexchange: C #
  • Google: Java dan Python
  • Twitter: Ruby on Rails

Jadi, mungkin, kami menyimpulkan bahwa Facebook dan Stackexchange tidak mengancam pesaing mereka. Tidak terlalu meyakinkan.


Mari kita lihat apakah Paul Graham mempercayainya saat ini. Dia mendirikan YCominator yang mendanai startup. Halaman muka mencantumkan beberapa startup sukses mereka. Saya telah membahasnya secara berurutan, dengan sangat cepat mencoba meneliti bahasa yang mereka gunakan di masa-masa awal.

Nah, ada beberapa tanda preferensi untuk bahasa yang relatif tidak jelas dan kuat. Tetapi Flash, PHP, dan ASP klasik juga terdaftar.


Ini sebuah esai . Ini adalah dorongan hiperbolik untuk bahasa yang relatif tidak dikenal yang dia sukai, dengan saran yang mendasarinya bahwa startup harus mencintai teknologi mereka dan bergerak secepat yang mereka bisa. Cukup adil.

MarkJ
sumber
3
Reddit dimulai di Lisp, tetapi mereka pergi dan menulis ulang semuanya dengan Python sejak awal karena tidak ada yang bisa memahami Lisp.
Mason Wheeler
Google menggunakan banyak bahasa untuk banyak hal yang berbeda. Mereka menggunakan C ++ untuk sebagian besar produk inti mereka seperti pencarian, chrome, dll.
mike30
@ Mike Pertanyaannya adalah tentang startup. Ketika Google adalah startup, bahasa pertama yang mereka gunakan adalah Java & Python.
MarkJ
6

Rata-rata pengembang menggunakan alat rata-rata, karena ia tidak melihat nilai yang lebih kuat:

“Selama programmer Blub hipotetis kita melihat ke bawah kontinum daya, dia tahu dia melihat ke bawah. Bahasa yang kurang kuat daripada Blub jelas kurang kuat, karena mereka kehilangan beberapa fitur yang dulu. Tetapi ketika programmer Blub hipotetis kita melihat ke arah lain, naik kontinum daya, dia tidak menyadari bahwa dia melihat ke atas. Apa yang dia lihat hanyalah bahasa yang aneh. Dia mungkin menganggap mereka setara dalam kekuatan untuk Blub, tetapi dengan semua benda berbulu lainnya juga dilemparkan ke dalamnya. Blub cukup baik baginya, karena ia berpikir dalam Blub. ”- Paul Graham, Beating the Averages .

(Penekanan milikku.)

Semakin kuat bahasa, semakin sedikit pengembang yang akan menggunakannya, dan semakin tidak umum. Dengan demikian popularitas adalah metrik yang baik tentang seberapa jauh kekuatan suatu bahasa dari rata-rata. Semakin tidak jelas bahasanya, semakin baik peluang bahwa pengembang menggunakannya mengetahui apa yang dia lakukan, dan telah memilihnya untuk alasan yang baik dibandingkan dengan rekan-rekannya yang masih ada — dan pesaing yang cerdas adalah yang berbahaya.

Jon Purdy
sumber
3
Itu belum tentu benar sama sekali. Perkakas, iklan, perpustakaan yang ada, dan bahan pengajaran yang berkualitas, juga dapat mengubah popularitas suatu bahasa.
DeadMG
@DeadMG Yah, ya, tentu saja daya ekspresif bukan satu-satunya faktor. Saya kira saya membuat asumsi diam-diam bahwa semua bahasa dalam kesadaran bersama kira-kira setara dalam hal pemasaran, alat, dan dokumentasi; kalau tidak mereka tidak akan bisa dibandingkan dengan apa pun. Sial, bahkan preferensi pribadi ada banyak hubungannya dengan itu. Jika Anda tahu Haskell lebih baik untuk beberapa tugas tetapi Anda hanya benar-benar menyukai C, maka Anda dapat mengkodekan sesuatu dalam C untuk hal murni itu.
Jon Purdy
Saya kira saya membuat asumsi diam-diam bahwa semua bahasa dalam kesadaran bersama kira-kira setara dalam hal pemasaran, alat, dan dokumentasi ... - Dan Anda akan salah melakukannya. Sebenarnya salah.
Jim G.
1
@ Jim. Bisakah Anda menawarkan contoh spesifik? Mempertimbangkan indeks TIOBE, semua top 10 dan sebagian besar top 50 tampaknya sebanding di area tersebut. Selain itu, orang-orang baik-baik saja membuat perbandingan fitur antara bahasa yang sangat berbeda dalam kekuatan ekspresif, jadi mengapa tidak melakukan hal yang sama untuk aspek lain?
Jon Purdy
5

Pilihan bahasa sulit untuk memulai. Banyak startup yang sangat baik memilih bahasa "umum" untuk kecepatan sampai ke pasar, keakraban pendiri dan kemudahan perekrutan di masa depan.

Memilih bahasa yang digunakan lebih sedikit tidak mengirimkan pertanda baik. Dikatakan Anda siap untuk melakukan pengembangan dengan serius dan berusaha keras untuk merekrut pemrogram khusus. Itu hanya sinyal, startup lebih dari sekadar memilih dalam bahasa.

Intinya adalah pilihan Anda dalam bahasa harus dievaluasi dengan benar dalam konteks Anda. Facebook misalnya tidak apa-apa menggunakan php yang umumnya tidak dianggap sebagai bahasa yang sangat skalabel

Tom Squires
sumber
1
+1 jika hanya untuk pernyataan "Facebook melakukan OK".
MarkJ
5

Tanyakan kepada programmer terbaik dan terburuk yang Anda kenal, dengan kriteria apa pun yang Anda suka, bahasa apa yang mereka tahu. Sekarang, tulis iklan pekerjaan untuk menarik yang pertama, dan Anda punya jawaban. Bahkan jika aplikasi Anda menggunakan C ++, Anda akan mendapatkan kelas programmer yang lebih baik jika Anda mempekerjakan orang yang mengerti bahasa yang tidak diajarkan di sekolah.

Karl Bielefeldt
sumber
2
-1: Hah? Maaf, Anda kehilangan saya.
Jim G.
4

Ada dua hal berbeda yang harus Anda khawatirkan jika pesaing menggunakan bahasa yang tidak biasa:

  • Keunggulan produktivitas - Ada pro dan kontra bahasa yang tidak biasa, tetapi dengan asumsi kompetisi telah memilih dengan baik untuk domain masalah yang diberikan maka mereka mungkin memiliki keunggulan produktivitas asli. Sebagai contoh, kemampuan meta-pemrograman di Lisps mungkin akan memberi Anda keuntungan nyata dan substansial di mana pun yang Anda perlukan untuk melakukan sejumlah besar pembuatan kode otomatis secara langsung.
  • Keuntungan budaya - jika sebuah perusahaan menggunakan bahasa yang tidak biasa bagi peretas hebat, maka mereka mungkin berada dalam posisi untuk menarik dan mempertahankan peretas hebat. Perusahaan hidup dan mati oleh kualitas orang-orangnya, jadi jika ini berarti keuntungan bakat jangka panjang maka itu bisa sangat signifikan.

Kedua keunggulan ini mungkin tidak berlaku dalam situasi apa pun. Misalnya, startup dapat dengan mudah mengadopsi bahasa "karena itu keren" tanpa benar-benar memikirkan apakah itu pilihan yang tepat. Mereka dapat dengan mudah melakukan kesalahan dalam merekrut. Mereka dapat dengan mudah menembak diri sendiri dengan menyalahgunakan bahasa "kuat".

Tetapi jika pesaing memilih bahasa yang tidak biasa dan menggunakannya dengan baik maka ya, Anda mungkin memiliki ancaman yang signifikan di tangan Anda.

Saya pikir prinsip ini cukup abadi dan sama benarnya dengan tahun 2003 - bahasa dan paradigma tertentu dapat datang dan pergi tetapi gagasan untuk memilih bahasa yang kuat dan ekspresif yang sesuai dengan domain masalah Anda menggunakan bahasa tujuan umum yang aman, umum mungkin akan selalu pantas mendapat pertimbangan serius.

mikera
sumber
0

Jika pelanggan Anda tidak dikunci, maka ya . Anda harus khawatir tentang pesaing yang menggunakan bahasa yang kuat.

Java, C #, C ++, secara verbose relatif, dan memiliki siklus edit / tes yang relatif lambat. Ini membatasi kecepatan yang bahkan pengembang tercepat dapat memberikan fitur. Bahasa yang lebih ekspresif, dengan built-in meta-pemrograman yang kuat, dan waktu kompilasi nol, memungkinkan pengembang ahli untuk membangun fitur secepat mungkin. Jika Anda bersaing untuk mendapatkan pangsa pasar, dengan hadiah besar kepada pemenang, masuk akal untuk merekrut pengembang terbaik yang dapat Anda temukan, dan menggunakan bahasa apa pun yang akan membuat mereka menjadi lebih cepat. Anda bisa khawatir tentang skalabilitas nanti.

kevin cline
sumber
1
-1: C #, ketika ditulis dengan pustaka Visual Studio, Resharper, LINQ, dan .NET 4.0 memiliki siklus edit / tes yang lambat relatif terhadap bahasa lain?
Jim G.
1
@ Jim: tidak yakin apa pembanding Anda tetapi dibandingkan dengan Ruby, Groovy, Clojure dan bahasa dinamis modern lainnya yang saya gunakan C # jelas lebih dekat dengan Java dan C ++ dalam hal gaya pengembangan dan kecepatan iterasi. YMMV tapi saya tidak berpikir downvote Anda pantas - karakterisasi OP secara luas adil. Cobalah "bahasa ekspresif", Anda mungkin akan terkejut dengan apa yang mungkin terjadi .....
mikera
@ Jim G., ya, dibandingkan dengan Common Lisp, siklus C # edit / tes lambat. Anda tidak dapat mengubah sistem yang sedang berjalan. Dan Anda harus menulis kode jauh lebih banyak di C #, yang memperlambat segalanya lebih.
SK-logic
1
Tidak, misalnya Erlang memungkinkan modifikasi runtime dan merupakan bahasa yang dikompilasi.
Ricky Clarkson
2
@ Jimg., Common Lisp adalah bahasa yang dikompilasi (well, sebagian besar implementasinya adalah kompiler murni). Kompilasi tambahan memungkinkan untuk melakukan semua trik yang sama seperti juru bahasa, sedangkan dengan kompilasi terpisah mereka hampir tidak mungkin.
SK-logic