Sebagai seorang programmer, haruskah saya tahu bahasa pemrograman tingkat rendah dan tinggi? [Tutup]

18

Saya dihubungi untuk melakukan beberapa pekerjaan remote mengendalikan tampilan LED melalui TCP / IP, tetapi pengalaman dan persiapan saya kebanyakan tentang bahasa pemrograman tingkat tinggi. Saya mengatakan itu kepada orang yang menghubungi saya tentang pekerjaan itu dan dia mengatakan kepada saya bahwa:

"jika kamu menyebut dirimu seorang programmer kamu harus tahu semua hal ini"

Haruskah seorang programmer benar-benar mengetahui detail pemrograman tingkat rendah? Atau bisakah saya memperlakukannya sebagai konsep kotak hitam, sebagai pengetahuan teoretis tetapi tidak harus melakukannya atau menerapkan solusi bahasa tingkat rendah, mengingat bahwa pemrograman tingkat rendah bukan keahlian saya?

pekerjaan
sumber
8
Saat memprogram pada level tinggi, Anda harus menutupi level abstraksi yang lebih rendah, atau Anda tidak akan menyelesaikan apa pun. Ini cukup berguna untuk dapat bekerja di level yang lebih rendah, tapi jangan mencoba melakukan semuanya dari semua level abstraksi sekaligus. Anda tidak perlu, tetapi jika tidak, jangan melamar pekerjaan tingkat rendah.
1
@ Darnan: Ketika bekerja pada level tinggi, tentu saja perlu untuk menutupi detail level bawah. Namun, saya pikir setiap programmer harus tahu bagaimana mesin pemrograman mereka bekerja pada level yang lebih rendah juga. Pengetahuan tidak perlu terlalu rinci - cukup mengetahui cara membangun komputer dasar dari awal sudah cukup.
Schedler
4
"Jika Anda menyebut diri Anda seorang programmer, Anda harus mengetahui semua hal ini" Jika mereka sangat menginginkan Anda sehingga mereka mengutuk Anda karena kurangnya latar belakang, ada sesuatu yang sangat salah. Saya akan mengabaikan komentar mereka karena tidak masuk akal sama sekali. Entah mereka menginginkan Anda dengan latar belakang Anda, atau mereka tidak menginginkan Anda dan tidak seharusnya mengutuk Anda karena latar belakang yang tidak Anda miliki.
S.Lott
3
Kasus lain, "Wah, senang aku melewatkan peluru itu!" Anda tidak benar-benar ingin bekerja untuk atau dengan sombong seperti itu kan?
Edward Strange
2
@Schedler - dan jika mereka tidak membakar papan mereka sendiri, itu adalah total newb.
Edward Strange

Jawaban:

37

Kontak Anda tidak tahu apa yang mereka bicarakan. Ada banyak bahasa, metodologi, teknologi, dan sebagainya sehingga satu orang tidak mungkin mengetahui semua detail yang diperlukan dengan baik. Apa yang harus Anda ketahui sebagai seorang programmer adalah bagaimana mempelajari apa yang Anda butuhkan untuk menyelesaikan pekerjaan dan memiliki pendekatan pemecahan masalah yang dapat Anda terapkan untuk sampai pada suatu solusi, tidak peduli bahasa pemrograman apa yang perlu Anda gunakan.

Mengakui apa yang tidak Anda ketahui tidak apa-apa, tetapi Anda juga dapat membuktikan bahwa Anda dapat belajar cukup banyak untuk mencapai hasil yang diinginkan, apa pun yang Anda hadapi. Pemrogram yang baik adalah pemecah masalah yang bisa mengimplementasikan solusi mereka dalam berbagai bahasa pemrograman.

Saya tidak akan bekerja untuk seseorang yang memiliki sikap seperti kontak Anda.

Bernard
sumber
4
+1: Komentar itu tidak masuk akal sejak awal.
S.Lott
Meskipun aku berani bertaruh, ada banyak devs khusus majelis yang dengan senang hati akan menagihnya per jam.
Erik Reppen
22

"jika kamu menyebut dirimu seorang programmer kamu harus tahu semua hal ini"

Saya sangat tidak setuju dengan pernyataan ini. Ini seperti meminta koki untuk memasak apa saja, pengemudi untuk mengoperasikan segala jenis kendaraan bermotor, atau dokter untuk mengetahui semua penyakit, yang merupakan asumsi konyol.

Untuk menjadi seorang programmer, seseorang harus tahu bagaimana memberikan perangkat lunak tulis dalam beberapa bahasa untuk melakukan beberapa tugas secara otomatis. Bahasa dan tugas akan bervariasi dari programmer ke programmer seperti hidangan apa yang koki tahu bagaimana membuat, pengemudi tahu bagaimana cara beroperasi, atau dokter tahu bagaimana mendiagnosis akan bervariasi tergantung pada bagaimana spesialisasi seseorang ingin berada di setiap profesi.

JB King
sumber
2
Ya, sampai abstraksi rusak dan mereka tidak tahu mengapa kode mereka menunjukkan masalah kinerja, mengapa beberapa perpustakaan eksternal mengalami kerusakan / kerusakan data, dll. Dalam pengalaman saya programmer yang hanya tahu bahasa tingkat tinggi sama sekali tidak sebagus di pekerjaan mereka sebagai orang yang bisa melakukan keduanya.
Ed S.
4
Anda melewatkan intinya. Ya programmer tingkat tinggi harus dapat memiliki pemahaman tentang aspek-aspek tingkat rendah tetapi haruskah ia tahu cara menulis upgrade firmware untuk router Linksys?
maple_shaft
7
Saya pikir mereka harus tahu bagaimana mencari tahu caranya. Sebagian besar dari pemrograman modern adalah mengetahui apa yang harus diingat dan apa yang harus diajukan sebagai referensi.
Michael K
8

Diucapkan seperti orang yang tidak pernah menulis sebaris kode pun dalam hidupnya. Ini akan menjadi orang yang sama yang akan merasa Anda harus dapat melakukannya dalam setengah waktu yang Anda kutip. Jangan berdebat dengan orang idiot.

Anda menunjukkan lebih banyak pengetahuan dan karakter dengan mengetahui keterbatasan Anda. Orang ini berbicara tentang hal-hal yang tidak diketahuinya.

Saya kira setiap tukang kayu harus tahu cara mengukir furnitur hiasan. Jika seorang pilot dapat menerbangkan satu pesawat, ia dapat menerbangkan semuanya.

JeffO
sumber
Saya setuju, saya suka mengatakan bahwa karena Anda seorang dokter, Anda harus tahu cara melakukan operasi jantung terbuka. Tetapi dalam kehidupan nyata Anda tahu dia harus menjadi spesialis untuk melakukannya, tetapi dalam pemrograman perbedaan sulit untuk mengetahui kapan Anda hanya melihatnya dari luar sebagai 'semua programmer perkasa'.
pekerjaan
6

Sebagian besar program CS di sekolah akan memberi Anda pengetahuan tentang pemrograman tingkat rendah. Saya, misalnya, memiliki kelas assembler menggunakan prosesor 8088 (OK ... jadi tanggal saya sedikit). Saya pikir, bagaimanapun, bahwa banyak sekolah perdagangan hari ini memotong pengetahuan itu - sambungkan dengan komentar jika itu tidak benar.

Intinya, itu selalu baik untuk mengetahui apa yang terjadi pada level chip - selain itu, bahasa tingkat tinggi Anda akhirnya akan berakhir di sana ketika dijalankan.

Namun, meminta seseorang memberi tahu Anda bahwa Anda bukan seorang programmer karena saat ini Anda tidak tahu pemrograman tingkat rendah itu bodoh. Jika Anda perlu memiliki keterampilan tersebut untuk proyek saat ini, maka Anda harus memiliki kecerdasan atau motivasi yang cukup untuk mempelajari keterampilan yang Anda butuhkan dan kemudian menerapkannya.

Saya harus mempertimbangkan dengan serius untuk tidak mengambil proyek itu jika klien sudah berbicara dengan Anda seperti itu - Anda tidak pernah tahu ke mana bisa pergi.

Catchops
sumber
6

Saya benar-benar membenci itu ketika orang mengatakan "Anda perlu tahu X untuk menyebut diri Anda seorang programmer." Betulkah? Yah beberapa orang bekerja di COBOL sepanjang hari dan MENYUKAINYA. Mereka mungkin sudah begitu mahir dalam hal itu dan domain masalah mereka sehingga di sebelah mereka kita semua berpura-pura.

Serius, beri orang hormat untuk memecahkan masalah yang mereka hadapi dengan cara yang keren dan menarik. Memahami bahwa pemecahan masalah yang hebat datang dari beragam latar belakang. Bukan apakah mereka sudah menguasai "daftar periksa" keterampilan yang seharusnya diketahui semua orang sehingga mereka semua dapat berpikir dengan cara yang sama. Itulah PELUANG TEPAT dari apa yang kita inginkan. "Daftar periksa" setiap orang adalah dan harus berbeda. Semakin berbeda semakin baik. Pemrograman adalah pemecahan masalah hari ini. Hormati mereka yang melakukannya dengan baik dan pahami bahwa setiap orang datang ke meja dengan kekuatan yang berbeda. Itulah satu-satunya cara kita akan saling membantu bekerja secara efektif sebagai sebuah tim. Hanya karena mengetahui "C" atau sesuatu yang benar-benar membantu orang ini menjadi luar biasa, bukan berarti karena Anda tidak

Doug T.
sumber
3

Saya sarankan Anda membaca ini:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

Seperti yang dijelaskan, ketika Anda menggunakan abstraksi, apa yang tingkat bawah selalu memiliki pengaruh pada apa yang Anda lakukan. Ini bisa berkinerja buruk, penyebab kegagalan, alasan keamanan, dan sebagainya.

Jadi secara definitif, Anda sekarang harus tentang barang-barang ini. Tidak terutama menjadi spesialis arsitektur asm atau CPU. Tetapi cukup mengetahui untuk mendokumentasikan diri sendiri ketika Anda perlu tahu lebih banyak, memang, harus dimiliki.

deadalnix
sumber
Mungkin saya perlu mengklarifikasi bahwa saya tahu cara kerja TCP / IP =), maksud saya adalah menerapkan sesuatu seperti soket di atas TPC / IP berada di luar pengetahuan saya, dapatkah saya mempelajarinya dengan cepat? tentu saja, apakah saya ingin mempelajarinya? tidak juga, terutama karena saya tidak merasa yakin bahwa hasil akhir akan sepenuhnya terbukti untuk lingkungan produksi atau akan memenuhi semua persyaratan dalam waktu yang diberikan. Saya hanya berpikir dalam waktu yang saya perlukan untuk mencapai tingkat keahlian dalam bahasa tingkat tinggi, dan saya tidak berpikir waktu yang diberikan akan cukup untuk mengetahui semua Gotcha, yang memberi saya sensasi berisiko.
pekerjaan
Inilah intinya: Anda tidak perlu menjadi seorang ahli. Tapi Anda perlu tahu dasar-dasarnya. Jadi, Anda akan tahu apa batas abstraksi yang Anda gunakan - itu minimum, dan tahu cara mendokumentasikan diri sendiri ketika batas tercapai.
deadalnix
2

Argumennya adalah contoh yang baik dari kesalahan logis No True Scotsman .

Namun, perbedaan antara pemrograman tingkat rendah dan tinggi bukan bahasa, itu adalah domain pengetahuan aplikasi. Menetapkan nilai true dapat berarti menyalakan LED atau mengaktifkan acara klik mouse pada widget. Bahasa tidak peduli.

Misalnya, lihat perpustakaan ini untuk bekerja dengan matriks LED pada arduino. Ini bukan ilmu roket di sini, dan benar-benar setiap programmer akan dapat memahaminya dengan sedikit usaha jika mereka tidak memasang "tingkat rendah oh tidak!" blok mental.

Karl Bielefeldt
sumber
1

Setiap Bahasa Pemrograman memiliki pro dan kontra sendiri. Belajar beberapa, akan memberi Anda persepsi yang bagus tentang apa yang harus digunakan dan bagaimana menggunakannya secara efektif ketika diberi proyek.

Sebagai seorang programmer, Anda dapat mengkhususkan pada PL tertentu, menggunakannya sebagai satu-satunya alat Anda untuk menyelesaikan masalah, Anda juga dapat mengetahui banyak PL tetapi mengkhususkan pada tidak ada dan lebih banyak di antara yang ekstrem ini.

Mungkin orang yang mengatakan kepada Anda bahwa "Frasa" frustrasi, mungkin Anda bukan satu-satunya penghubung yang telah ia ajak bicara.

mengetahui masalah dan mengetahui keahlian apa yang dibutuhkan untuk dapat menyelesaikan masalah secara efektif adalah salah satu sifat yang baik dari seorang programmer. Sayangnya pada kasus Anda, karena Anda tidak memiliki keahlian yang diperlukan, Anda mungkin dapat merujuk orang kontak Anda ke programmer lain dengan keahlian yang diperlukan.

Bersulang,

Wardy

Dorward Villaruz
sumber
1

Memiliki pengetahuan teoritis itu baik. Mampu mempelajari bahasa tingkat rendah saat diperlukan sangat penting.

Tetapi untuk "jika Anda menyebut diri Anda seorang programmer Anda harus tahu semua hal ini", siapa yang bisa tahu segalanya tentang segalanya? Bahkan sebelum mereka melakukannya?

FrustratedWithFormsDesigner
sumber
-2

Saya akan ulang frase

"jika kamu menyebut dirimu seorang programmer kamu harus tahu semua hal ini"

UNTUK

"Jika Anda menyebut diri Anda seorang programmer, Anda harus cukup tahu sehingga Anda dapat dengan cepat mempelajari semua hal ini"

Parag
sumber