Apa perbedaan pengalaman bertahun-tahun pengembang dengan bahasa? [Tutup]

9

Seperti yang dinyatakan oleh judul, apa perbedaan pengalaman bertahun-tahun dalam bahasa tertentu dalam hal pengembang? Misalnya, jika satu pengembang telah memiliki lima tahun bekerja dengan bahasa A dan pengembang lain telah memiliki dua tahun bekerja dengan bahasa B diikuti dengan tiga tahun bekerja dengan bahasa A, apakah akan ada perbedaan yang dapat dilihat di antara mereka?

rjzii
sumber

Jawaban:

26

"tergantung"

Pengalaman <> pengetahuan atau pemahaman.

Programmer 1 bisa sangat baik, bahkan seorang guru, atau mereka bisa menjadi orang yang meraba-raba dengan bahasa selama 5 tahun terakhir.

Programmer 2 dapat berupa seseorang yang memahami konsep secara independen dari bahasa yang mereka gunakan. Atau seseorang yang menemukan bahasa B terlalu sulit dan berharap A lebih mudah.

Coding Horor "The Years of Experience Myth" layak dibaca

gbn
sumber
6
Seperti yang mereka katakan, pengembang Anda mungkin memiliki pengalaman lima tahun dengan bahasa A - atau ia mungkin memiliki pengalaman satu tahun, diulang lima kali.
Carson63000
1
+1 untuk kebenaran - Saya telah bekerja dengan karyawan baru dengan pengalaman lebih dari 8 tahun yang ternyata rata-rata di terbaik. Sebaliknya, kami baru saja merekrut seorang pria 1 tahun dari universitas dan dia melebihi semua harapan.
Damovisa
4

Tergantung.

Saya punya teman yang cenderung berpegang pada satu bahasa, jadi jika Anda menganggapnya "programmer A" dia punya pengalaman 1 tahun dengan bahasa itu, lima kali.

Bahasa yang berbeda memungkinkan Anda melakukan hal yang berbeda. Satu esai yang sangat saya sukai disebut " Beating the Averages " oleh Paul Graham. Di dalamnya ia berusaha meyakinkan orang untuk belajar bahasa Inggris, tetapi ia juga membuat beberapa poin yang sangat berguna:

Pemrogram sangat terikat pada bahasa favorit mereka, dan saya tidak ingin melukai perasaan siapa pun, jadi untuk menjelaskan hal ini saya akan menggunakan bahasa hipotetis bernama Blub. Blub jatuh tepat di tengah kontinum abstrak. Ini bukan bahasa yang paling kuat, tetapi lebih kuat dari bahasa Cobol atau mesin.

Dan faktanya, programmer Blub hipotetis kami tidak akan menggunakan keduanya. Tentu saja dia tidak akan memprogram dalam bahasa mesin. Untuk itulah kompiler. Dan untuk Cobol, dia tidak tahu bagaimana orang bisa menyelesaikannya. Bahkan tidak memiliki x (fitur Blub pilihan Anda).

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 untuknya, karena dia berpikir dalam Blub.

Ketika kita beralih ke sudut pandang seorang programmer yang menggunakan salah satu bahasa yang lebih tinggi pada kontinum daya, bagaimanapun, kita menemukan bahwa dia pada gilirannya memandang ke bawah pada Blub. Bagaimana Anda bisa menyelesaikan sesuatu di Blub? Bahkan tidak punya y.

Secara umum, saran saya adalah belajar lebih dari satu bahasa, dan mempelajari apa kelebihan dan kekurangan bahasa.

Tangurena
sumber
Saya setuju bahwa penting untuk mengetahui banyak bahasa. Bahasa adalah alat dalam kotak peralatan kami dan mengetahui kekuatan dan kelemahan mereka adalah penting untuk menyelesaikan pekerjaan. Anda dapat menggerakkan kuku dengan obeng atau palu atau tang, tetapi yang satu bekerja jauh lebih baik daripada yang lain. Tentu saja palu buruk untuk melepas sekrup atau mengencangkan atau melonggarkan mur pada baut.
the Tin Man
2

Tentu saja, pengembang yang memiliki pengalaman bertahun-tahun dalam satu bahasa akan memiliki pemahaman yang lebih baik tentang perpustakaan inti dan keistimewaan bahasa itu. Jika bahasa merangkul paradigma yang sama (imperatif vs fungsional) maka mereka seharusnya tidak memiliki kesulitan mengambil bahasa itu selain belajar itu.

Kesulitan terbesar saya mengambil bahasa baru datang dari mencoba beralih dari C # ke Erlang, karena itu tidak hanya mewakili sintaks baru tetapi cara berpikir baru tentang pemrograman juga.

Watson
sumber
5
Dengan asumsi pengembang kompeten.
gbn
2
@ GBN: Saya benar-benar dapat meyakinkan Anda bahwa dalam kasus saya, Anda tidak dapat membuat asumsi itu :)
Watson
2

Inilah yang saya harapkan / harapkan:

  1. Kefasihan - mereka harus dapat menulis lebih banyak kode dari atas kepala mereka dan lebih sedikit waktu mencari sintaks.
  2. Ketahui perbedaan antara versi sebelumnya dan saat ini dan cara memigrasi kode dari satu ke yang lain.
  3. Memiliki pemahaman yang lebih lengkap tentang kompilasi, distribusi, pengujian, dan membuat peningkatan dan tambalan.
  4. Buat / Sertakan Pengaya ke IDE dan dapatkan efisiensi darinya.
JeffO
sumber
2

Bahasa bukan masalah. Anda dapat mempelajari seluruh bahasa dalam beberapa hari. Yang membutuhkan waktu lebih lama untuk diserap adalah konvensi, API, dan berbagai kerangka kerja pihak ketiga. Ketika orang-orang meminta lima tahun X, mereka tidak peduli tentang bahasa, mereka menginginkan seseorang yang memiliki banyak pengalaman memecahkan masalah di dalam dan dengan bahasa itu sehingga mereka tidak harus membayar untuk setiap kurva pembelajaran.

Jeremy
sumber
Anda dapat mempelajari seluruh bahasa dengan cepat, tetapi jika ada konsep yang tidak Anda ketahui, itu akan memakan waktu. Tidak semua bahasa memiliki konsep yang sama.
David Thornley
2

Keahlian dan praktik yang disengaja.

Jika Anda tidak berlatih dengan sengaja, Anda tidak akan mendapatkan keahlian. (Anda harus memeriksa kesalahan Anda dan memperbaikinya, mempraktikkan apa yang Anda lemah, dan memiliki seorang ahli untuk memberi tahu Anda apa yang Anda lakukan salah juga membantu.)

Jika Anda tidak mencoba untuk meningkatkan, Anda bisa menjadi pendatang baru selamanya!

Setelah sepuluh ribu jam latihan yang disengaja, Anda akan mencapai keahlian. (Temuan dari pendidikan / pelatihan ini semuanya ada di internet.)

Jika programmer Anda A tidak sengaja berlatih, mereka tidak pernah menjadi lebih baik.

Jika programmer B Anda tidak sengaja berlatih, mereka tidak pernah menjadi lebih baik.

Satu temuan lain dari penelitian yang sama: bahwa jika saya punya 15.000 jam dan Anda punya 10.000, dan saya terus berlatih dan Anda juga, Anda tidak akan pernah lebih baik dari saya.

Mengetahui dua bahasa mungkin akan menjadikan B pemrogram yang lebih baik (tunduk pada aturan praktik).

Tim Williscroft
sumber
1

Dan Anda menggunakannya untuk bahasa A, saya kira? (Jelas, akan ada perbedaan dalam bahasa B.)

Sebagian tergantung pada perbedaan antara A dan B (terutama jika kita mempersingkat pengalaman pengembang kedua dengan A). Jika mereka cukup mirip, pada dasarnya tidak akan ada perbedaan dalam pengalaman. Jika A memiliki konsep yang sangat berbeda, tiga tahun kemungkinan masih cukup untuk mempelajarinya. Mengingat perpustakaan sangat besar dan alat yang rumit, mungkin ada perbedaan antara tiga dan lima tahun.

Tentu saja, yang paling penting di sini adalah individu. Pengembang yang baik dapat mempelajari platform baru secara menyeluruh dalam tiga tahun, jadi ini seharusnya tidak menjadi masalah.

David Thornley
sumber
1

Saya setuju bahwa bahasa adalah bahasa dan konsep adalah konsep.

Masalah saya adalah bahwa ada sejumlah besar pemrogram hari ini yang tanpa IDE canggih mereka tidak dapat memprogram sama sekali. Mereka benar-benar bukan programmer tetapi lebih seperti desainer.

Saya tahu dari pengalaman pribadi bahwa ada banyak orang yang telah tergoda oleh lingkungan pengembangan Microsoft yang drop - droppy. Bukan salah bahwa mereka menjatuhkan kotak teks ke layar kemudian mengatur properti dengan wizard dan menyeret data dari gambar database, tetapi apakah mereka benar-benar coders dalam bahasa apa pun jika semua yang mereka lakukan adalah mengatur tes kesetaraan dasar?

Orang-orang itu tidak akan pernah bisa mengambil Konsep yang telah mereka pelajari dan menerapkannya ke bahasa lain.

Ketika saya mewawancarai orang-orang, saya lebih tertarik pada bagaimana mereka melakukan pengembangan dan kerangka kerja apa yang mereka gunakan. Saya suka mengajukan pertanyaan seperti, "Bagaimana Anda menulis event handler?", "Bagaimana tepatnya Anda memasukkan data ke dalam DB?", Atau bahkan "Bagaimana cara mengubah tombol warna ungu ini ketika saya mengkliknya?" ini akan dengan cepat menyingkirkan desainer dan meninggalkan programer. Saya telah menemukan bahwa 3 atau 4 tahun sebenarnya pemrograman dengan satu tahun dalam bahasa pilihan saya sudah cukup untuk apa yang saya butuhkan.

Pendapat lain,

Tal

Tal Cameron McMahon
sumber
1

"Pengalaman bertahun-tahun dalam bahasa X / platform" sebagian besar merupakan patologi rekrutmen ...

Ini terbuka untuk interpretasi dan tidak sedekat berguna seperti yang terlihat pada pandangan pertama. Seperti yang telah dikatakan, Mitos Tahun Pengalaman adalah bacaan yang bagus.

Juga, yang terpenting, pengukuran "tahun pengalaman" itu sendiri bisa sangat tidak akurat. Berikut ini contoh dari pertunjukan saya saat ini: tugas utama saya adalah mengembangkan dan memelihara aplikasi web Java. Namun, ini berjalan dari ujung belakang yaitu MFC / C ++ / SQL Server. Akibatnya saya berurusan dengan kode C ++ hampir setiap hari juga. TETAPI - pengalaman C ++ ini relatif dangkal dan berorientasi pada pemeliharaan, dan saya tidak benar-benar menulis seluruh komponen besar atau program dari awal di MFC / C ++ lagi (saya dulu dalam peran sebelumnya).

Apakah saya masih dapat menghitung 5 tahun terakhir ini sebagai "5 tahun pengalaman C ++"? Mungkin. Mungkin tidak. Bergantung pada bagaimana saya ingin menjualnya untuk mengamankan peran tertentu, saya dapat dengan mudah memainkannya tanpa berbohong, atau saya bisa mengakui bahwa itu bukan 5 tahun "pengalaman C ++ yang solid". :) Saya yakin banyak kasus di luar sana yang sama-sama terbuka untuk masalah "ketidaktepatan pengukuran" semacam ini. Kedalaman pengalaman bisa sangat mengaburkan kualitas pengalaman. Jadi "jumlah waktu X yang dihabiskan dengan C ++" tidak berarti banyak dalam dirinya sendiri.

Tabel Bobby
sumber
-1

Ya, Programmer 1 tidak memiliki pengetahuan sintaksis bahasa B.

Konsep pemrograman adalah konsep pemrograman. Bahasa hanyalah sintaks.

Michael Riley - AKA Gunny
sumber
5
oh, sangat salah ...
Javier
Javier benar, bahasanya jauh lebih dari sekadar sintaksis ... ada konvensi, pustaka pihak ke-3, API, yang Anda pelajari dengan pengalaman.
Daniel S