Saya dan seorang teman saya membahas kemarin tentang perbedaan antara menulis perangkat lunak C ++ besar dan memahaminya sebagai karyawan baru.
Apakah mungkin karena suatu perangkat lunak dilakukan satu baris pada satu waktu dan proses ini menyerupai bagaimana kita (manusia) mempelajari sesuatu dan membangun sesuatu di atas yang lain, menulis perangkat lunak besar sebenarnya lebih mudah daripada membacanya dan memahami apa fungsinya (melangkah melalui kode membantu tetapi Anda perlu mengingat beberapa kelas / file sumber bersama-sama Anda bahkan tidak tahu apa yang telah mereka tulis, kode multithreaded menambah poin malus)?
Ini kedengarannya aneh pada awalnya, tetapi setelah kami berpikir sedikit rasanya masuk akal
programming-languages
c++
learning
programming-practices
Makane Elhay
sumber
sumber
Jawaban:
Berdasarkan pengalaman saya, saya akan memberi peringkat kegiatan berikut ini dari yang paling mudah ke yang paling sulit.
Peringkat di atas mengarah ke 2 kesimpulan
Tentu saja, kode yang baik dan kode yang buruk adalah generalisasi yang luas. Saya merekomendasikan Kode Lengkap dan Kode Bersih untuk detail lebih lanjut tentang kode yang baik.
sumber
Pertanyaan ini menarik bagi Konsensus Salah. http://en.wikipedia.org/wiki/False-consensus_effect
Orang yang berbeda belajar dan menyerap informasi secara berbeda. Ini mirip dengan pelajar auditori, pelajar visual dan pelajar kinestetik. Bagi sebagian orang, membaca kode lebih mudah, bagi yang lain, membuat kode lebih mudah. Bagi saya, ini yang terakhir. Bagi orang lain di tim saya, ini adalah yang pertama. Saya tidak percaya menemukan semacam konsensus atau mayoritas berguna. Lebih baik untuk memahami bagaimana otak Anda menyerap dan mempelajari informasi dan menggunakan pengetahuan itu untuk membuat diri Anda lebih baik dan belajar untuk menerima orang lain yang berbeda.
sumber
Ini tidak sama dengan perbedaan antara perangkat lunak membaca dan menulis. Ketika Anda baru mengenal suatu proyek (dan terutama ketika Anda baru mengenal sebuah perusahaan), Anda harus belajar lebih banyak dari sekadar apa yang dilakukan oleh kode. Memahami mengapa kode melakukan apa yang sering dilakukan memerlukan pemahaman tentang bagaimana bisnis bekerja dan bagaimana proyek terkait dengan seluruh organisasi. Singkatnya, membaca kode tanpa manfaat pengetahuan latar belakang adalah tugas yang lebih lambat dan lebih sulit daripada membaca kode ketika Anda sepenuhnya memahami konteks di mana kode bekerja.
Ada adalah perbedaan antara menulis merek kode baru pada proyek greenfield dan membaca dan memodifikasi kode yang ada, tapi saya tidak akan mengatakan yang satu ini tentu lebih mudah daripada yang lain, hanya berbeda. Ketika Anda membuat sesuatu yang baru, Anda tidak perlu khawatir tentang bagaimana membuat kode Anda bekerja dengan apa yang sudah ada, tetapi Anda harus khawatir tentang membuat proyek Anda cukup luas dan mudah beradaptasi sehingga akan tetap berguna di masa depan . Ketika Anda mengerjakan proyek yang sudah ada, Anda sering dapat menggunakan apa yang sudah ada sebagai panduan, tetapi Anda harus terlebih dahulu memahami apa yang ada di sana.
Sebagai "rekrut baru" biasanya lebih baik bekerja pada proyek yang sudah ada secara khusus karena ini membantu Anda untuk mempelajari semua hal yang tidak Anda ketahui: bagaimana bisnis bekerja, bagaimana berbagai proyek bekerja sama, mengkode standar dan praktik, dan bahkan (terutama) apa yang bisa diperbaiki.
sumber
Ini pertanyaan yang menarik, tetapi saya cenderung cenderung lebih mudah membaca dan memahami daripada membuatnya.
Jika Anda seorang veteran, programmer berpengalaman, maka Anda cenderung membaca kode dan pergi "Ya, pilihan yang baik, periksa, oh, saya mungkin telah melakukan X daripada Y", dll. Anda dapat memodifikasi atau tweak, tetapi itu akan menghemat waktu lebih banyak daripada menulis dari awal (Kecuali ada alasan untuk melakukannya).
Jika Anda seorang programmer yang lebih baru, maka "Anda tidak tahu apa yang tidak Anda ketahui", maka Anda harus menemukan / mempelajari semua hal kecil, dan sangat mungkin Anda akan memiliki beberapa inefisiensi dalam kode. Anda mungkin akan mengembangkan pemahaman bahasa yang lebih besar.
Tetapi dalam kedua kasus itu, akan lebih mudah untuk membaca kode dan pergi dari sana daripada menulisnya sepenuhnya dari awal.
sumber
Kebanyakan programmer merasa lebih mudah untuk memahami kode yang mereka tulis sendiri dibandingkan dengan kode yang ditulis orang lain. Ini karena pembelajaran garis-demi-garis yang Anda sebutkan, juga hanya masalah gaya dan bakat individu. Itulah sebabnya begitu banyak reinvention roda terjadi.
Namun, itulah pemandangan pepohonan. Pandangan hutan adalah bahwa lebih mudah untuk membaca kode daripada menulisnya dari awal. Misalnya, apakah lebih mudah untuk menulis pengolah kata baru dari awal, atau mempelajari basis kode yang ada dengan cukup baik untuk melakukan perbaikan?
Ketika Anda mulai membaca kode, Anda dapat memikirkan bazillion cara untuk membuat kode lebih mudah bagi Anda untuk dibaca. Anda menghabiskan pertama saat hanya menelusuri kode, mencoba mencari tahu letak tanah, kadang-kadang dalam arsitektur benar-benar laknat tentang bagaimana Anda ingin melakukannya. Tetapi bahkan dalam basis kode yang sangat besar, Anda mungkin akan menghabiskan 40-80 jam memutar roda Anda, dibandingkan dengan ratusan ribu jam kerja yang telah diinvestasikan untuk membuat aplikasi itu.
sumber
Orang yang menulis perangkat lunak hampir selalu memiliki pemahaman terbaik tentang program hanya karena mengetahui logika dan proses berpikirnya saat menulisnya.
Saya tidak berpikir bahwa menulis kode sama sekali dapat dibandingkan dengan membaca kode dalam hal kemudahan pemahaman. Di satu sisi, hanya menulis perangkat lunak memberikan pemahaman yang lebih besar tentang perangkat lunak tertentu karena pengetahuan tentang konteks yang terkait dengan masing-masing bagian kode, pustaka yang digunakan, dll. Namun, membaca kode yang ditulis orang lain mungkin sulit dipahami dalam hal perangkat lunak yang sebenarnya, tetapi dalam hal memahami bahasa itu dapat memberikan wawasan tentang cara-cara baru dalam melakukan sesuatu atau menggunakan perpustakaan yang mungkin tidak Anda pertimbangkan untuk digunakan, yang dapat membuat hidup Anda lebih mudah menulis kode.
Dalam hal membangun pengetahuan, saya pikir membaca kode dan menulis kode sangat terhubung dan dalam banyak hal membangun satu sama lain. Kode penulisan pengalaman memberikan kemudahan memahami kode orang lain, dan kode membaca memungkinkan Anda memiliki waktu yang lebih mudah untuk menulis kode (melalui konsep logika baru, penggunaan perpustakaan, dll).
sumber
Ini adalah sesuatu yang secara pribadi saya rasa sudah terbukti dengan sendirinya, tetapi saya tidak pernah sepenuhnya yakin bahwa hal itu berlaku untuk masyarakat pemrograman secara keseluruhan. Sebagai contoh, saya mengenal beberapa pembuat kode yang sangat berbakat yang alih-alih membaca dokumentasi, dengan senang hati dapat mengambil kode orang lain dan memahaminya seolah-olah itu adalah kode mereka sendiri.
Ini mengarah pada pertanyaan: apakah ini penting?
Jika Anda membaca kode, kemungkinan Anda membuat perubahan daripada menulis ulang. Bahkan jika Anda menulis ulang, Anda kemungkinan akan menulis ini dalam bahasa / versi baru sehingga Anda mungkin tidak perlu membuat kode dengan cara yang sama. Maksud saya adalah bahwa tidak selalu perlu untuk memahami semua kode sepanjang waktu.
Semua ini benar, metodologi pengembangan yang lebih baru misalnya BDD mengakui bahwa penting bagi logika bisnis untuk lebih jelas dari kode daripada kode hanya menjadi sarana untuk menggerakkan mesin. Ini tentu saja bukan hal yang baru - konsep ini telah ada sejak karya mani Donald Knuth: Programate Literate .
sumber
Saya masuk ke jawaban StMotorSpark, hanya menambahkan:
Tergantung pada banyak faktor, itu tidak bisa menjadi pertanyaan ya atau tidak, misalnya:
sumber