Apa mitos yang paling tidak masuk akal tentang masalah pemrograman?


101

Dengan kata lain ... Kesalahpahaman apa yang paling umum dipegang dan membuat frustrasi tentang pemrograman, Anda temui?

Mitos / kesalahpahaman yang tersebar luas dan lama yang menurut Anda sulit bagi programmer untuk menghilangkan / mengoreksi .

Tolong, jelaskan mengapa ini adalah mitos.


24
Saya ingin melihat Mythbusters mengambil beberapa dari ini.
Spong

8
Adakah yang ingin menggunakan saluran Mythbuggers YouTube? :-)
Tamara Wijsman

1
Ooooh, MythBusters dan kondisi balapan! Meesa suka!

@ TomWij akan sangat menyenangkan memiliki situs web dengan nama seperti itu!
Junior M

Jawaban:


272

Itu karena Anda seorang programmer, Anda tahu cara memperbaiki mesin yang ditunggangi virus [orang].


34
Analogi mobil / keluar klausa: "Saya seorang pembalap bukan mekanik."
Peter Boughton



21
@Tim kalau dia bisa memasak, mulailah menawarkan diri untuk melayani pesta teman-temanmu
Steven A. Lowe

19
Ini bukan berarti saya tidak tahu bagaimana ... Ini yang saya tidak ingin menghabiskan berjam-jam memperbaiki mesin Anda yang akan Anda hancurkan dalam 2 minggu.
ChaosPandion

267

Suatu hal SDM yang umum yang membuat saya gila ketika saya mencari pekerjaan: asumsi implisit bahwa semua keterampilan pengkodean adalah khusus bahasa, bahwa tidak ada keahlian rekayasa perangkat lunak yang melampaui kumpulan perintah. Sepuluh tahun pengalaman di Jawa dan lima lainnya di Perl berarti Anda akan sama sekali tidak berguna pada proyek yang menggunakan, katakanlah, C #.

"Ya, ada kurva belajar. Tapi saya telah membuat transisi yang lebih sulit dari ini. Saya akan membuat kesepakatan, bayar saya 80% untuk bulan pertama dan pada akhir waktu itu jika saya tidak ... oh , tunggu, kami sebenarnya tidak memiliki percakapan ini, karena monyet SDM Anda hanya menghapus aplikasi saya. "


91
+ INF untuk monyet SDM.
Rusty

67
Saya telah meminta seorang SDM untuk menolak peran saya karena saya tahu bagaimana C #, tetapi dia sedang mencari seseorang yang bisa membuat kode di dotNet.
burnt_hand

11
@burnt_hand: Ya, saya tahu dotNet. Saya juga tahu Excel dan Internet Explorer. Saya bisa kontrak sekarang?
Alan Plum

Sementara saya setuju bahwa ada tumpang tindih besar dengan sintaks, struktur, SDLC, dll, antara Java dan C #, jika mereka memberi Anda tes C # yang cukup rumit dalam wawancara Anda, bagaimana Anda akan memberi harga?
JBRWilkinson

2
@ Kyralessa - Saya pikir sekarang saya cukup tahu tentang teori dasar komputasi dan fungsi komputer untuk tidak membuat kesalahan dasar dalam bahasa pemrograman apa pun. Saya dapat membaca dokumentasinya. Namun, sesuatu yang dipekerjakan oleh bahasa tertentu dengan keterampilan / kemauan / kemauan teknik terbatas adalah membuat kesalahan mendasar dalam struktur, desain, kebenaran, skalabilitas, keandalan, dan pemeliharaan program yang berpotensi membutuhkan biaya besar untuk diperbaiki. Jika Anda tidak kehilangan semua pelanggan Anda karena rendahnya kualitas perangkat lunak sementara itu (dengan asumsi proyek Anda benar-benar ada di mana saja).
flamingpenguin

261

Jika Anda tidak mengetik, Anda tidak bekerja.

Saya percaya tatapan kosong zombie dan jalan-jalan kopi sangat penting untuk programer mengatur hal-hal di kepala mereka.


9
Halaman atas, halaman ke bawah ... halaman ke atas, halaman ke bawah ...
adolf bawang putih

139
Saya tidak dibayar untuk mengetik, saya dibayar untuk berpikir. Saya memberikan pengetikan sebagai bonus.
Kevin Laity


11
Inilah sebabnya mengapa saya tidak berpikir sangat tinggi tentang pasar lepas online yang menawarkan rekaman "waktu kerja" dengan screengrabber dan webcam. WTF? Jika menurut Anda kutipan saya bagus, mengapa Anda peduli apa tepatnya yang saya lakukan pada saat saya menagih?
Alan Plum

10
"Jika aku punya lebih banyak waktu untuk kode, aku akan menulis lebih sedikit baris." - lepas landas pada kutipan Abe Lincoln.
JeffO

158

Anda dapat mempercepat proyek yang terlambat, hanya dengan melemparkan lebih banyak orang ke sana.


28
Ah, dari The Mythical Man Month. en.wikipedia.org/wiki/The_Mythical_Man-Month
sepon

2
Sebenarnya, uh, kamu bisa. -1 (yeah, lihat pembawa mitos!)
P Shved

63
Kami menggunakan pepatah berwarna-warni "Anda tidak bisa menempatkan 9 wanita di kamar dan menghasilkan bayi dalam sebulan".
Walter

10
Minggu lalu kami menambahkan 4 orang tanpa pengalaman proyek untuk "membantu" memenuhi jadwal yang tidak realistis. Laporan minggu ini dari proyek mengarah ke daftar manajemen atas: "Jadwalkan selip karena: Mengurangi efisiensi karena kurva pembelajaran anggota tim baru" dan "Rencana Pemulihan: Melanjutkan untuk menambah lebih banyak orang di mana ada peluang." Tidak bisa dipercaya.
AShelly

7
@Walter, tetapi Anda dapat memiliki 9 bayi dalam 9 bulan dan tim bisbol liga kecil dalam 7 tahun.
Huperniketes

132

Perangkat lunak penulisan itu mudah.

Bagaimana lagi Anda menjelaskan semua proyek yang berjalan seiring waktu dan melebihi anggaran dan orang-orang (politisi, media, dll) masih terkejut, dan pelanggan mengeluh ketika Anda memberi tahu mereka bahwa "situs web kecil" mereka (atau apa pun) akan benar-benar mengambil 6 bulan untuk mengembangkan dan menelan biaya beberapa ribu dolar (pound, Euro, [masukkan mata uang pilihan])

Dengan persyaratan yang tidak jelas dan selalu berubah, saya terkadang berpikir bahwa luar biasa bahwa perangkat lunak apa pun dapat diselesaikan!

Saya tahu ini sedikit lebih rumit dari itu;)


11
Dan ini adalah saat mereka mencoba mengambil pengembangan ke alternatif lepas pantai yang lebih murah. Hanya untuk mengetahui kemudian ternyata ternyata lebih mahal. Dan kurang dari apa yang sebenarnya mereka butuhkan, karena pemisahan fisik dan tantangan komunikasi antara tim pengembangan dan pelanggan.
7wp

1
Ini bukan hanya masalah di antara manajer, tetapi juga programmer sendiri. Masalah sebenarnya cenderung bahwa waktu yang tidak dihabiskan secara aktif menulis kode sering terlewatkan (mungkin karena LOC luas = mitos kuantifikasi produktivitas).
Alan Plum

3
Bukan karena persyaratannya berubah, itu hanya bukan apa yang mereka pikir inginkan.
JeffO

1
Saya memiliki seseorang yang menolak pemrograman sebagai "hanya sekelompok pernyataan 'jika'". OK, mungkin itu ... dalam hal itu, puisi adalah "hanya sekumpulan kata-kata" ... produksi film adalah "hanya sekumpulan adegan", dll.
JoelFan

2
Saya telah bekerja untuk tipe manajer yang berpikir bahwa sedikit pemrograman adalah bagian yang mudah dari pekerjaan itu. Dan tidak, dia sendiri tidak memiliki pengalaman pemrograman.
Kapten Sensible

114

Kompleksitas aplikasi berbanding lurus dengan kompleksitas UI. Dengan alasan ini, Anda harus dapat membangun Google atau Twitter selama akhir pekan.


2
ini benar, saya bisa membangun Twitter dan Google selama satu pekan. Bukan perangkat lunak mereka yang rumit; untuk Google, itu adalah algoritma pencarian mereka (yang lebih sebanding dengan perpustakaan kode, atau driver basis data), dan Twitter (hingga 1,5 tahun terakhir) sangat sederhana, dengan hanya skalabilitas dan masalah basis data yang kompleks. Sekarang karena lebih kompleks (membutuhkan lebih banyak karyawan), ia juga memiliki UI yang jauh lebih kompleks, dan banyak lagi UI.
orokusaki

3
Saya pikir saya membacanya di blog Joel Spolsky tetapi artikel yang disebutkan hanya menunjukkan sebagai kemajuan GUI dalam kaitannya dengan kemajuan back-end. Dengan begitu Anda bisa memberikan perkiraan kemajuan yang realistis kepada pria berambut runcing yang terlalu bodoh untuk memahami bahwa sebagian besar program terdiri lebih dari sekadar eye candy.
Evan Plaice

3
1+ Ada saat ketika saya mendemokan proyek terkait SharePoint (addon multi-bahasa) ke mantan bos saya, setelah menghabiskan berjam-jam bekerja pada kode backend yang kompleks. Hasil akhirnya tidak banyak dilakukan di UI, yang membuat bos saya percaya bahwa tidak banyak yang telah dilakukan pada proyek. Itu membuatku kesal. Dia bukan orang yang duduk di keyboard selama berjam-jam mencoba mengatasi keanehan SharePoint, serta logika penggantian teks.
Jason Evans

1
Jangan Anda benci ketika permintaan besar, hampir mustahil, diucapkan sebagai "bisakah Anda menambahkan tombol untuk melakukan ..."
JoelFan

Saya bertanya-tanya apa yang telah saya lakukan beberapa tahun terakhir. Semua proyek yang saya kerjakan sepenuh waktu seharusnya selesai dalam waktu singkat, karena mereka tidak memiliki UI sama sekali. :-)
Bart van Ingen Schenau

95

Semua programmer pandai matematika. :-)


Komentator: komentar dimaksudkan untuk mencari klarifikasi, bukan untuk diskusi panjang. Jika Anda punya solusi, tinggalkan jawaban. Jika solusi Anda sudah diposting, harap perbarui. Jika Anda ingin mendiskusikan pertanyaan ini dengan orang lain, silakan gunakan obrolan . Lihat FAQ untuk informasi lebih lanjut.

Saya pikir kemampuan dalam matematika entah bagaimana terkait dengan keterampilan pemrograman.
Diego

@Diego: Meskipun demikian tidak selalu berarti semua programmer mahir dalam matematika.
Omega

95

Setiap anak remaja yang meretas dengan komputer setara (atau unggul) dalam keterampilan dengan programmer yang bekerja veteran.

Keponakan saya yang berusia 14 tahun baik dengan komputer dan saya membayarnya $ 10 / jam untuk memotong rumput saya. Mengapa saya harus membayar Anda enam angka untuk menulis FaceBook berikutnya?


5
Mereka mungkin berada di lingkungan mereka sendiri, yaitu bekerja sendiri sesuai standar mereka sendiri. Tempatkan mereka di tim di mana mereka harus berkomunikasi dan di situlah mereka menderita.
Adolf bawang putih

36
Pertanyaan balasan bisa berupa: "Apa yang akan Anda bayar kepadanya untuk membangun rumah Anda?"

7
Seorang anak tanpa kualifikasi tetapi menulis kode yang rapi dapat mengalahkan Mr. Spaghetti setiap hari.
Zaz

13
Saya menyalahkan hollywood untuk itu
MAK

6
Ketika saya mulai, saya berharap bahwa apa yang telah saya pelajari sendiri dan diambil di uni hanya akan menjadi awal, dan saya akan bekerja dengan orang-orang yang lebih berpengalaman yang merupakan programmer yang lebih baik dan pengembang yang lebih berpengetahuan, dan saya akan belajar banyak dari mereka. Pengalaman mengajari saya sebaliknya. Ini benar-benar penting, tetapi tanpa keterampilan dan hasrat, pengalaman hanya membuang-buang waktu.
Peter Boughton

69

Yang real-time berarti cepat.

Menyatakan "Paket-paket harus diproses secara real-time." tidak berharga dan si kembar jahat ... menjawab "Seberapa cepat X perlu terjadi?" dengan "Real-time" mungkin kurang berharga ... berbatasan dengan bodoh daripada bodoh.

Real-time berarti bahwa, secara sederhana, fungsi Y akan selalu mengambil jumlah waktu X dan bahwa setiap penyimpangan menunjukkan kesalahan serius. Durasi X tidak mendefinisikan "waktu nyata" itu bisa enam mikrodetik atau enam hari. Anda dapat menentukan fungsi Y akan membutuhkan waktu X mendefinisikan "waktu nyata". Sistem waktu nyata ditentukan oleh definisi ini.

Jadi hentikan ..


real-time = dekat-waktu
brian chandley

4
Saya selalu berpikir waktu sebenarnya berarti apa pun yang terjadi sedang terjadi saat Anda membutuhkannya, bukan referensi waktu yang diambil.
burnt_hand

14
Ini mungkin hanya salah satu dari kasus-kasus di mana konsep yang disebut buruk berkontribusi pada kebingungan.
JohnFx

2
@ JohnFx Baiklah. Konsep perlu Konteks.
Rusty

2
@ Richard: Memang, iTunes selalu membutuhkan beberapa menit sebelum memainkan apa pun. Oh, bukan itu maksudmu?
konfigurator

69

Mengapa kalian tidak menuliskannya dengan benar kali pertama, daripada menghabiskan begitu banyak waktu mengetik kode kereta dan kemudian membaca kode mencoba menemukan bug?

:-) :-) :-) :-)


34
Terus terang, itu pertanyaan yang bagus. Waktu termudah untuk membuat kode menjadi baik adalah ketika sedang ditulis untuk pertama kalinya.
DJClayworth

10
Kami memiliki pengaturan dalam konfigurasi aplikasi: <add Key = "Bugs" Value = "true" />
burnt_hand

1
@DJClayworth - itu tidak selalu berhasil. Dalam beberapa kasus, masalahnya sangat besar, tidak jelas atau sulit sehingga mendekati "benar" untuk pertama kalinya terlalu banyak untuk diharapkan. Dalam kasus seperti itu, lebih baik menulis "potongan pertama" yang tidak sepenuhnya salah, daripada menghabiskan berhari-hari / minggu / bulan tanpa henti mendesain dan mendesain ulang dalam upaya untuk memperbaikinya pertama kali.
Stephen C

Ini bisa menjadi versi awam dari "Mengapa kalian tidak melakukan TDD?" Yang, untuk menjadi adil, adalah pertanyaan yang sangat bagus, jika terlalu sederhana untuk pengembangan dunia nyata.
Dan Ray

1
@Stephen C: ya, tetapi ada perbedaan dalam membuatnya sebagian besar benar (bukan benar) vs melakukan sebagian besar apa pun kiri dan kanan hanya untuk membuatnya bekerja. Saya tahu ini bukan apa yang Anda katakan tetapi saya masih berpikir itu perlu dikatakan.
n1ckp

65

Jika Anda belum kuliah, Anda tidak cocok untuk pekerjaan itu


27
Juga: seorang programmer dengan gelar lebih baik daripada seorang programmer tanpa dan harus dibayar sesuai. Hal yang sama mungkin terjadi pada usia dan seksisme. Omong kosong semacam ini membuat saya marah - jika Anda tidak tahu bagaimana menulis kode yang baik, saya tidak peduli tentang ke mana Anda pergi dan apa yang Anda lakukan. Ini mungkin kasus lain dari budaya programmer / kutu buku (skill == otoritas) yang berbenturan dengan budaya perusahaan (pangkat == otoritas).
Alan Plum

1
Namun orang-orang yang mengajar di Universitas juga tampaknya berpikir bahwa mereka dapat menggeneralisasi perilaku programmer dan proyek dengan mengamati bagaimana siswa beroperasi ketika bekerja sama. Komunikasi ACM baik untuk 4-6 artikel per tahun.
MIA

1
@Billy Bagaimana kalau di sini, di mana ijazah perguruan tinggi berarti jack, tetapi ijazah universitas akan memberi Anda segalanya? Keduanya bersekolah, keduanya bisa dibilang lebih baik dari yang lain, tetapi ada perbedaan sosiologis
Tarka

4
@ Billy: di Kanada, universitas memberikan Anda gelar dan perguruan tinggi memberikan Anda diploma. Perguruan tinggi lebih seperti "sekolah tempat Anda belajar hal-hal praktis". Pikirkan community college di AS vs college / universitas normal. Di sini mereka biasanya memiliki program terapan khusus dua tahun. Anda tidak bisa mendapatkan gelar sarjana (master, dll.) Dari perguruan tinggi. Pada dasarnya, Anda akan kuliah untuk belajar cara menulis perangkat lunak dan ke universitas untuk belajar ilmu komputer. Gelar universitas diberikan preferensi yang jauh lebih kuat dalam perekrutan.
Adam Lear

4
Universitas mengajarkan setidaknya satu hal penting: pola pikir . Ini sangat penting, tetapi mereka yang tidak tahu itu ... yah, tidak tahu itu.

61

Optimasi prematur itu berarti Anda tidak boleh mengoptimalkan sama sekali. Saya telah melihat database yang lebih buruk karena tidak ada yang ingin mempertimbangkan kinerja (penting untuk sistem basis data apa pun) dalam desain karena itu adalah optimasi prematur daripada masalah desain database lainnya. Sampah, ada pembunuh kinerja yang dikenal, berhenti menggunakannya sebagai pilihan pertama Anda.

Mitos lain, terlalu sulit untuk memperbaiki database. Tidak, tetapi Anda harus mempertimbangkan bagaimana melakukan refactoring pada fase desain untuk melakukannya secara efektif. Dan BTW, semakin lama Anda menunggu untuk memperbaiki masalah kinerja berbasis desain yang menjengkelkan itu, semakin sulit untuk memperbaikinya.

Mitos buruk lainnya, desain database harus mencerminkan prinsip-prinsip OOP. Tidak, basis data dirancang untuk bekerja dengan set bukan prinsip OOP. Beberapa hal OOP akan menyebabkan masalah kinerja yang mengerikan dan yang lain hanya sangat konyol dalam hal basis data.

Akhirnya, Anda harus menegakkan integritas data dalam aplikasi. Basis data akan bertahan melewati aplikasi dan akan kehilangan aturan ketika aplikasi diganti, aplikasi mulitple akan mengaksesnya dan sering kali ada kebutuhan untuk menjalankan kueri langsung untuk memperbaiki hal-hal yang tidak melalui aplikasi. Saya belum pernah melihat database yang menolak untuk menegakkan integritas data dalam basis data yang memiliki data yang baik.


+1 secara khusus untuk komentar seputar pemeriksaan integritas basis data.
Frank Shearar

+1 Khusus untuk paragraf terakhir. Saya telah mengalahkan drum itu lebih dari sekali.
Binary Worrier

5
+1 untuk paragraf pertama. Optimalisasi prematur adalah akar dari semua kejahatan; menulis kode buruk tanpa alasan berdarah bahkan lebih buruk.
konfigurator

3
"Beberapa hal OOP akan menyebabkan masalah kinerja yang mengerikan dan yang lain hanya sangat konyol dalam hal basis data" - bisakah Anda mengatakan yang mana? Saya tahu tentang OOP, tetapi tidak banyak tentang database, dan saya tertarik pada seberapa jauh saya bisa membawa ide dari setiap sisi ke sisi lain.
Tom Anderson

@HLGEM Saya juga akan tertarik pada contoh-contoh @ Tom bertanya-tanya tentang ...
Armand

53

Bahwa ada beberapa sumber mitos praktik terbaik mutlak.

Tidak ada penyimpangan yang bisa dibenarkan.

Tidak ada dokumen yang mengklaim mendefinisikan sesuatu sebagai praktik terbaik yang dapat dipertanyakan.


1
lebih baik anggota tim daripada manajer Anda ...
Bill

5
Bisakah Anda meneruskan dokumen itu kepada saya?
AShelly

1
Setuju. Siapa yang peduli jika Anda mencampur tab dan spasi dalam kode Python?
Zaz

4
@Josh - seseorang yang harus melihat kode sumber Anda menggunakan rantai alat yang memiliki gagasan berbeda tentang posisi tab.
Stephen C

1
Saya menafsirkan "ini praktik terbaik" sebagai "saya tidak bisa membenarkan ini". Saya sendiri pasti menggunakannya seperti itu.
Tom Anderson

51

Fakta bahwa pemasaran tampaknya berpikir bahwa menambahkan satu ton fitur kecil lebih sedikit bekerja daripada menambahkan fitur tunggal, tetapi agak berat. Yang mungkin adalah kasus yang lebih spesifik dari kesalahpahaman bahwa "pengalihan tugas tidak memiliki overhead".


12
Dan hal yang lebih menyenangkan dari pemasaran tidak memiliki ide fitur mana yang mudah dan mana yang hampir mustahil.
derobert

4
@derobert Persis, saya sering memiliki pengalaman bahwa beberapa orang pemasaran yang lebih perhatian sebenarnya takut untuk bertanya tentang beberapa fitur sederhana / mudah yang mereka pikir sangat sulit untuk diterapkan. Meskipun saya mengalami kebalikannya lebih sering: inilah sejumlah fitur X "mudah" yang telah kami jual kepada pelanggan, tolong selesaikan kemarin ....
Giel

50

Kode komentar itu tidak perlu, atau bahwa "kode yang baik tidak perlu komentar". Terkadang Anda perlu menjelaskan apa yang dilakukan sedikit kode kompleks. Lebih jauh lagi, mengomentari bagian kode membantu Anda membaca sepintas lebih efektif.


14
@ DisgruntledGoad - Memang benar. Kesalahpahaman dalam "mitos" ini berasal dari kenyataan bahwa terlalu banyak programmer menganggap kode membingungkan monolitik mereka sebagai "baik". if user.is_logged_in: print('Welcome')tidak perlu komentar.
orokusaki

3
@orokusaki Tidak semua algoritma sesederhana itu.
Jouke van der Maas

25
@orokusaki Anda salah "kode baik tidak perlu komentar" dengan "kode sederhana tidak perlu komentar". Kode yang baik tidak selalu sederhana.
DisgruntledGoat

3
@ Jouke van der Mass: tentu saja. Tetapi tidak masalah seberapa rumitnya algoritma, tujuannya adalah untuk mengekspresikan algoritma secara sederhana. yaitu kode yang baik mengekspresikan algoritma, aturan, optimisasi yang kompleks, dengan cara yang sederhana dan mudah dipahami. Mengekspresikan hal-hal sederhana itu relatif mudah. Mengekspresikan hal-hal kompleks dengan sederhana adalah tempat keahlian itu berada.
flamingpenguin

2
@orokuskai: kode yang baik itu sederhana. Hal-hal yang dilakukannya mungkin rumit tetapi kesederhanaan (keanggunan) dari kode adalah apa yang membuatnya baik menurut saya! Tentu saja, kode melakukan banyak hal lain, dan kode sampah dapat menghasilkan banyak uang. Tetapi tujuan saya adalah menulis kode sederhana bahkan dalam situasi yang kompleks.
flamingpenguin

50

Mitos terburuk: Jika Anda pemrograman untuk waktu yang lama maka Anda bisa menjadi Manajer Proyek dengan mudah.

Dan Anda harus menjadi manajer proyek jika Anda telah memprogram untuk waktu yang lama.


3
Atau bahkan lebih buruk, jika Anda belum pernah memprogram atau mengelola proyek pemrograman, membaca beberapa buku dan secara ajaib akan membuat perangkat lunak terjadi. Sudah jalan dengan PM sebelumnya dan tidak peduli untuk mengulanginya selama saya hidup.
Evan Plaice

4
Lebih buruk lagi: Karena semua programmer hebat di tim lebih suka menulis kode daripada menulis laporan, kita harus mempromosikan programmer yang biasa-biasa saja ke Project Manager. Pikirannya adalah dia akan "cukup teknis". Faktanya adalah ia akhirnya menjadi filter disinformasi antara tim dan manajemen atas.
AShelly

2
Juga: jika Anda adalah programmer terbaik, Anda jelas harus menjadi manajer proyek dan sejak saat itu berhenti melakukan pemrograman yang sebenarnya sendiri! Tidak, terima kasih banyak, tapi saya akan tetap menerima kenaikan gaji. Catatan: Saya tidak berbicara tentang menjadi pemrogram utama atau semacamnya, saya berbicara tentang manajer yang berpikir itu ide yang cerdas untuk mempromosikan semua orang ke tingkat ketidakcakapan yang cukup.
Alan Plum

1
Juga dikenal sebagai Prinsip Peter. en.wikipedia.org/wiki/Peter_Principle
Spoike

kata baik memang
Michael Easter

50

Jika kami menggunakan sesuatu selain Java, C # dan C ++ dalam proyek kami, kami tidak akan menemukan programmer untuk mendukungnya.


Saya belum pernah mendengar tentang itu, tetapi ini valid. Tentu saja jika Anda menggunakan bahasa yang tidak jelas itu akan terjadi.
Maniero

5
@Bigown, "tidak jelas"? Bagaimana tidak jelas? Apakah TCL tidak jelas? Haskell? Pascal (Delphi)? Python? Saya pikir mereka tidak jelas. Banyak orang berpikir demikian, dan hanya satu set bahasa yang sangat sempit (C ++, C # dan Java) yang diizinkan dalam pengembangan "serius".
P Shved

5
@ Bigown: oh, maksudmu tidak jelas seperti COBOL? : p
AnonJr

2
Saya pernah bekerja untuk perusahaan kecil yang melakukan kode Objective-C di Linux. CEO - yang bukan insinyur tetapi memiliki pengetahuan teknis - tidak bisa percaya bahwa ada programmer ObjC di sekitar atau orang lain yang menggunakannya. Bahkan mereka tidak pernah memiliki masalah dalam merekrut pengembang yang baik.

4
Saya telah membaca argumen yang justru sebaliknya: untuk bahasa yang tidak jelas (atau setidaknya tidak signifikan secara komersial) tetapi keren, menyenangkan, dan menarik (yang dalam konteks itu berarti Python dan Ruby), ada lebih banyak programmer daripada pekerjaan. Plus, mereka semua adalah orang-orang yang menyukai bahasa keren, menyenangkan, dan menarik, jadi mereka harus pintar. Jadi sebenarnya, bekerja dengan Python berarti Anda akan lebih mudah untuk menyewa programmer pintar daripada jika Anda bekerja di Jawa. Tidak tahu apakah saya memercayainya, tapi setidaknya masuk akal seperti ide ortodoks!
Tom Anderson

42

Java hanya C ++ dengan kelas yang berbeda.


57
+1 Saya pernah memiliki seorang pewawancara bertanya kepada saya, "apa perbedaan antara C ++ dan Java?" Jadi saya mendaftarkan beberapa perbedaan. Kompiler asli vs JVM, standar ANSI vs. kepemilikan, pengumpulan sampah, classloader, dll. Dia meraung, "SALAH! Tidak ada perbedaan! Mereka identik!" Dia bukan mahasiswa, dia adalah manajer teknik.
Bill Karwin

11
@Bill, tanggapan saya kemudian adalah, "lalu mengapa merujuk mereka dengan nama yang sama sekali berbeda?"
Jesse C. Slicer

2
@ Bill, jadi Anda gagal tes dan dipekerjakan?

20
Tanggapan saya adalah "Selamat tinggal."
Bodoh

6
@ Bodoh Bukankah maksudmu System.exit (1)?
Barry Brown


33

Mungkin yang paling berbahaya yang pernah saya lihat, karena dapat diterima dengan mudah, adalah kemampuan untuk menulis kode dengan cepat adalah baik, dan oleh karena itu semakin cepat Anda dapat membuat kode [memasukkan fitur di sini] dalam bahasa yang diberikan, semakin baik bahasanya aku s.

Ini adalah contoh serius dari optimasi prematur, karena jauh lebih banyak pekerjaan yang dilakukan untuk mempertahankan kode daripada membuatnya. Ini berarti bahwa jauh lebih penting untuk menulis kode yang mudah dibaca, dipahami, dan didebug daripada kode yang mudah ditulis dengan cepat, dan memfasilitasi kode yang mudah dibaca adalah pengukuran kualitas bahasa yang jauh lebih berguna.


14
inilah tepatnya yang terjadi pada salah satu produk perusahaan tempat saya bekerja; perkembangan yang terburu-buru dilihat sebagai sesuatu yang brilian. Produk TERLIHAT ok dan pengembang sangat dipuji oleh manajemen atas. Pengembang junior lain kemudian ditugaskan untuk memperbaiki bug "kecil", dan setelah seminggu mencoba memahami kode, menyerah dan mencari bimbingan dari seorang senior .. yang tidak percaya betapa sampah kode itu. Manajemen atas menolak untuk menerima adalah sebagai masalah utama selama dua tahun, setelah itu akhirnya setuju itu adalah tumpukan sampah dan perlu dikodekan lagi dari awal - dan saat ini
Sk93

4
Ada mitos mapan di antara manajer teknis bahwa pengembang terampil Anda sepuluh kali lebih produktif daripada pengembang tidak terampil. Hasil langsung dari mitos ini adalah bahwa setiap pengembang yang dapat menghasilkan kode dengan cepat - terlepas dari seberapa sulit atau sulitnya mempertahankan - mendapat pujian dan promosi.
rtperson

3
Anda MEMBUTUHKAN bahasa yang kuat. Lihat diskusi Paul Grahams tentang bahasa dan apa yang memungkinkan Anda melakukannya: paulgraham.com/power.html

4
@ Thorbjørn: Saya sudah membaca artikel itu, dan Paul Graham salah. Dia seorang advokat Lisp, jadi dia memutarbalikkan fakta menjadi argumen yang mementingkan diri sendiri untuk membuat Lisp terlihat baik. Mungkin bahkan tidak dengan saksama, karena itu benar-benar tidak perlu banyak memutar. Ada banyak tumpang tindih antara keterbacaan dan kesederhanaan, saat ia menunjukkan di akhir artikel. Tetapi kesimpulan yang ditariknya benar-benar tidak selaras dengan keadaan pengembangan perangkat lunak di dunia nyata. Ya, Anda membutuhkan bahasa yang kuat, tetapi dia mengukur kekuatan dengan kriteria yang salah, dan itu berbahaya untuk percaya apa yang dia katakan.
Mason Wheeler

3
@ petugas: Produktivitas yang dapat bervariasi dengan faktor sepuluh bukanlah mitos. Bahwa orang yang selesai dengan cepat tentu lebih produktif.
David Thornley

31

Pelajaran manufaktur dapat diterapkan untuk proses pengembangan perangkat lunak.


6
Tergantung pelajarannya. Ketika saya bekerja di pabrik kasur, kami mengetahui bahwa pengalihan tugas berbahaya bagi produksi kami. Agak penting karena kami dibayar oleh jumlah kasur yang dibuat dan bukan oleh jam ... dan pelajaran yang berlaku di sini juga untuk banyak alasan yang sama.
AnonJr

Ini adalah mitos yang terus-menerus ketika Anda bekerja di tempat yang kebanyakan membuat perangkat keras. Lingkaran yang kami lewati agar sesuai dengan perangkat lunak kami 'membangun' ke dalam model yang sama dengan 'bagian' perangkat keras luar biasa ...
AShelly

5
Masalahnya, pembuatan perangkat lunak itu sepele. Sangat mudah untuk membuat salinan, dan tidak memerlukan biaya banyak untuk menghasilkan jutaan salinan. Ini membuat orang mengabaikan bagian manufaktur sama sekali, dan mencoba menerapkan manufaktur ke proses desain.
David Thornley

100 untuk ini, terutama orang-orang yang mempelajari ekonomi berpikir ini
Kugel

1
Setiap orang harus membaca Jack Reeves: developerdotstar.com/mag/articles/reeves_design_main.html - ini adalah asal (atau setidaknya pernyataan awal dan kuat) dari gagasan bahwa kode sumber adalah desain bukan produk . Programmer seperti desainer di ruang penyusunan, bukan masinis di lantai pabrik, dan manajemen pemrograman harus seperti manajemen jenis desain teknik lainnya, bukan manufaktur.
Tom Anderson

31

bahwa sebagai seorang programmer Anda tahu segalanya tentang tren perangkat keras terbaru, overclocking, mod case, dll. teman dan kerabat berkonsultasi dengan Anda ketika mereka membeli peralatan mereka.


5
Saya dulu selalu mengikuti beberapa hal ini di sekolah menengah, tetapi saat ini saya menemukan bahwa mereka pada umumnya tidak relevan dengan apa yang saya lakukan dan sementara beberapa rapi, saya lebih suka membayar seseorang yang mengetahui barang-barang mereka dan menggunakan waktu saya. simpan melakukan apa yang saya suka (yaitu menulis kode). Mungkin kesalahpahaman "baik dengan komputer" lain.
Alan Plum

2
+1, atau sedikit menyinggung - Karena Anda seorang programmer, Anda memiliki kipas angin berputar LED super duper berpendingin air 300 bagian atas kisaran merek yang baru dikirim dari pabrik sebelum case yang dirilis. Mm tidak juga! Ini adalah mesin yang cepat, dalam kasus hitam yang sangat murah. Jangan terlalu peduli akan hal itu!
Coder Bedah

Tertawa, ada asisten PM di tempat kerja yang memiliki beberapa rig gaming yang maha kuasa di rumah, selalu berguling ke area Dev untuk menanyakan apakah ia harus membeli (Produk A) atau (Produk B) ... dengan catatan yang tidak terkait, ia juga mengasumsikan tim dev semua nongkrong di 4Chan, (yang sebenarnya dia lakukan.) - sigh
ocodo

+1 Word. Ini tepat. Saya seorang pengembang perangkat lunak dan saya telah diminta untuk mengkonfigurasi internet seseorang berkali-kali dan pada dasarnya semua yang saya lakukan adalah trial and error plus pencarian Google. Saya paling suka ketika sesuatu yang sama sekali tidak berhubungan rusak setelah Anda melakukan bantuan seseorang dan kemudian itu kesalahan Anda.
Anne Schuessler

30

Bahwa ketika programmer mengatakan itu sangat sulit untuk dilakukan / tidak mungkin, HR mengira mereka malas dan tidak termotivasi


2
Termasuk manajemen juga
Prasham

Ketika Anda mengatakan tidak, mereka pikir Anda hanya orang yang sulit untuk diajak bekerja sama.
Kapten Sensible

+100, dan dengan "motivasi" yang cukup, mereka dapat mengubah jawaban Anda. Atau pergilah ke pengembang [yang kurang berpengalaman] lainnya dan dengan sengaja meninggalkan separuh detailnya untuk membuatnya mengatakan ya, hanya untuk berakhir di pertengahan pengembangan dan bertemu dengan masalah yang Anda peringatkan kepada mereka.
wildpeaks

28

Harus ada program sumber terbuka untuk bisnis saya. Tidak bisakah Anda mengunduhnya dan mengubah persyaratan saya.


2
+1. Oh, ya, apa pun yang perlu kita lakukan harus sudah dalam open source.
sharptooth

7
banyak waktu ada ... setidaknya itu berlaku untuk pengembangan web.
WalterJ89

@ WalterJ89: Mungkin ada di sana, tetapi itu tidak berarti itu ide yang baik untuk menggunakannya. Sumber terbuka tidak secara otomatis berarti kode yang baik.
Alan Plum

benar .. tetapi dalam kasus Wordpress, Drupal, jQuery, ... mungkin ada area di mana gratis tidak bagus, seperti e-Commerce tetapi lebih sering web tidak sangat terbuka, dan saya merasa saya senang bekerja dengan komunitas open source jauh lebih dari sekadar meja bantuan propietory.
WalterJ89

7
Yang sebaliknya adalah mitos juga. Bahwa Anda tidak dapat menggunakan FOSS untuk memenuhi kebutuhan bisnis Anda.
terminus

27

Saya sudah memiliki lebih dari satu orang yang bertanya kepada saya tentang bagaimana rasanya memprogram hanya untuk menyadari di tengah-tengah percakapan bahwa mereka pikir kita memprogram secara langsung dalam biner atau menggunakan simbol-simbol matematika.

Saya tidak tahu apakah saya ingin menghilangkan mitos itu, itu membuat saya terlihat sangat pintar!


6
Itu tidak membantu bahwa kebanyakan orang bahkan tidak tahu apa sebenarnya pemrograman itu ... mereka memiliki gagasan yang samar-samar bahwa ini menciptakan perangkat lunak ... tetapi mereka tidak benar-benar memiliki gagasan yang jelas tentang perangkat lunak apa ...
Spudd86

7
"Kami menulis resep rajutan". Nenek cenderung mengerti itu.

Saya tahu orang-orang yang akan menulis sebuah program dalam bahasa C, kemudian mengulangi bagian-bagian paling kritis dalam kinerja di Assembly.
Zaz

1
@Josh - kecuali ada masalah kinerja, itu sepertinya buang-buang waktu.
JohnFx

1
@ oosterwal - Majelis bukan biner, juga tidak menggunakan simbol matematika.
JohnFx

26

Saya pikir kesalahpahaman terbesar adalah bahwa lebih penting untuk dapat menulis kode dengan mudah daripada membaca dan memahami kode.


5
* v (int) (batal) ++
Rusty

1
@ Cepat: Saya dapat memberikan banyak contoh yang jauh lebih buruk jika saya bahkan tidak harus benar secara sintaksis.

4
Ahh, ya, kode "Tulis saja" ...
Paddyslacker

24

Pemrograman sama seperti kerja jalur perakitan. Anda sedang mengerjakan suatu produk untuk waktu tertentu (mungkin dengan rekan kerja) dan akhirnya Anda mengirimkannya. Sama seperti membangun rumah batu bata.

Kontra: Pemrograman mengandung banyak kreativitas dan perencanaan. Itu seni. Seperti tukang batu, seorang programmer juga mengetahui perbedaan antara membentuk batu bata dan merencanakan sebuah katedral yang utuh.


6
Setuju tentang perbedaan dari pekerjaan perakitan - tetapi dalam banyak hal saya tidak berpikir itu jauh berbeda dari membangun rumah.
Billy ONeal

24

Porting suatu program ke C ++ akan secara otomatis membuatnya berjalan lebih cepat.


Saya akan memperluas ke bahasa tingkat rendah lainnya. Mungkin sebaliknya jika programmer tidak tahu apa yang dilakukannya.
Maniero

2
Varian umum lainnya adalah beralih ke arsitektur client-server. "Meng-upgrade ke SQL akan membuat aplikasi saya lebih cepat!" Belum tentu.
JohnFx

Ya, itu sangat berlawanan berkali-kali. Database jenis SQL baik untuk menjadi ASAM atau hampir itu, ia datang dengan harga. Dan bisa jadi yang terburuk, pemikiran yang salah tentang teknik SQL dapat merusak kinerja.
Maniero

6
Porting ke C ++ / C untuk yang ditulis dengan Python / Perl / Ruby / etc. Porting ke asm untuk yang ditulis dalam C / C ++: P. Saya ingin tahu apa yang akan Anda port asm? mendesainnya ke dalam perangkat keras?
MAK


21

Lingkungan pemrograman apa pun dengan perancang visual semacam itu akan membuatnya sehingga pengguna bisnis dapat "menulis" program dan pemrogram yang sebenarnya tidak diperlukan.


9
Ah iya. Itu selalu menyenangkan ketika beberapa perusahaan membuat alat penulisan baru untuk membuat pemrogram berlebihan dan kemudian semua orang yang mengadopsinya maju terus dan mempekerjakan spesialis <authoring tool> yang dibayar tinggi untuk benar-benar menggunakannya. Contoh kasus: Joomla! dan semua itu tidak masuk akal.
Alan Plum

HA HA HA HA HA HA HAAA HA +1 :)
Billy ONeal

Cobol sudah mencobanya :)
Carra

20

OOP digunakan kembali. Ini kesalahan terbesar yang dipasarkan dalam pemrograman.


1
Baik. HP XL WESM kira-kira 85% sama dengan Symbol WS5100 (ada OEM yang terjadi). Apakah Anda ingin saya menyalin dan menempelkan persentase pemantauan dan kode konfigurasi saya sehingga ada dua kali lebih banyak bug, atau Anda lebih suka bahwa saya menulis ulang dari awal dan mengambil empat puluh kali lebih lama dan ada lima kali lebih banyak? Atau apakah Anda hanya ditekan oleh manajemen bodoh yang berpikir bahwa itu adalah salah satu dari beberapa obat mujarab untuk membuat $ proyek lebih cepat?

1
Penggunaan kembali dalam yang kecil diselesaikan 40 tahun yang lalu dan lebih. Penggunaan kembali dalam ukuran besar sulit dan belum diselesaikan IMHO. Seperti yang dikatakan Robert Glass dalam Fakta dan kekeliruan dalam rekayasa perangkat lunak
MarkJ
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.