Kode kata adalah konsep yang mengusulkan untuk mengasah keterampilan programmer dengan melakukan masalah kecil berkali-kali mencoba untuk memperbaiki kode di setiap iterasi. Nama ini berasal dari analogi kata seni bela diri di mana bentuk (alias kata) adalah praktik yang dilakukan berulang-ulang yang mengarah ke perbaikan.
Dari reaksi yang saya dapatkan pada pertanyaan terakhir saya tentang topik ini, saya ingin tahu apa yang menjadi kelemahan pendekatan ini?
Jawaban:
Pada prinsipnya, saya tidak melihat kekurangan dalam kode kata. Anda mencoba menyelesaikan tugas yang sama berkali-kali, dengan pendekatan dan bahasa yang berbeda. Tapi
sumber
Saya pikir pemrograman kata, seperti kata seni bela diri, terutama tentang bentuk daripada fungsi. Mungkin mengajarkan Anda untuk menulis kode yang elegan, tetapi itu tidak akan mengajarkan Anda untuk memecahkan masalah Anda menulis kode. Saya pikir cara yang lebih baik untuk meningkat sebagai programmer adalah dengan memecahkan teka-teki yang membutuhkan penyelesaian masalah aktual, dan untuk bekerja pada proyek yang lebih besar yang akan mengajarkan Anda nilai kode yang diperhitungkan dengan baik sehingga kode kata tidak akan pernah bisa mengajari Anda.
Sebagai tambahan, saya pikir istilah-istilah seperti 'kode kata' dan 'pengerjaan perangkat lunak' lebih tentang romantisasi profesi kita daripada tentang menggambarkan sesuatu yang novel atau berguna.
sumber
Kode kata hanya membutuhkan waktu.
Menjadi pengembang dan ayah penuh waktu, saya tidak ingin menjadikan komputasi hobi.
Dan saya tidak membayangkan bos saya akan membayar saya untuk mengembangkan aplikasi yang tidak terkait dengan proyek saya saat ini.
sumber
Sebagai seorang petinju, saya harus tidak setuju dengan prinsip di balik kata tersebut. Terlalu kaku untuk menjadi berguna. Di atas ring, Anda harus memahami bagaimana menerapkan prinsip-prinsip yang telah Anda pelajari di lingkungan yang mengalir bebas.
Ini bukan untuk mengatakan bahwa pembelajaran dan peningkatan teknik tidak boleh dilakukan. Berlatih pada tas memungkinkan Anda untuk bekerja menggunakan pukulan dan merasakan bagaimana Anda melemparkannya, sama seperti kata. Tapi itu tidak sekaku itu. Anda sedang berlatih banyak hal pada saat yang sama, bergerak di sekitar tas, melempar dari platform yang stabil, membidik, bernapas, daftarnya berlanjut.
Yang paling penting, semuanya dipelajari bersama cara itu akan benar-benar digunakan. Jika Anda dapat menulis yang paling indah untuk loop, tetapi Anda tidak dapat memahami bagaimana cara memasangnya ke dalam sebuah program, lalu apa gunanya itu?
Saya akan mengatakan bahwa hal yang lebih baik untuk dilakukan jika Anda ingin latihan adalah membangun alat sendiri, atau mengerjakan alat yang Anda gunakan. Ini membutuhkan melatih semua keterampilan Anda dan pada akhirnya Anda mungkin memiliki sesuatu yang bermanfaat.
sumber
Dari sudut pandang saya, kelemahan utama adalah hal itu akan sangat membosankan. Pemrogram juga tampaknya berkembang dalam mengembangkan perangkat lunak yang melakukan sesuatu yang bermanfaat atau keren. Pendekatan kata kode tampaknya akan menjadi kebalikan dari itu.
sumber
Kata berarti kebalikan dari apa yang harus Anda perjuangkan.
Istilah Kata (Asal: 1950-55; <Jepang: bentuk, pola) seperti yang digunakan dalam seni bela diri, dan pertanyaan Anda adalah tentang menghafal memori otot seperti mengetik sentuhan .
Dalam Karate Kid asli, waxing mobil, pengamplasan lantai, lukisan pagar ini semua Katas yang diajarkan, benar-benar di luar konteks dan dalam hal ini tanpa penjelasan hanya untuk memberikan memori otot. Tidak sampai seorang sensei masuk dan memberikan konteks kegiatan kosong ini yang mereka maksudkan.
Saya pikir hal yang sama berlaku di sini, tanpa mentor untuk menempatkan sesuatu dalam konteks melakukan kembali penyelesaian masalah yang salah dalam berbagai bahasa tidak lebih baik daripada satu pun. Tanpa mentor untuk memberi tahu Anda di mana untuk meningkatkan mereka hanya membuang-buang waktu.
Ini adalah kebalikan dari pemecahan masalah secara kreatif dengan mempelajari variasi idiom dan semantik baru dari suatu bahasa atau platform.
Jika Anda ingin dapat mengetik
System.out.println()
semudah mungkin, maka berlatihlah itu menjadi Kata.Jika Anda ingin meningkatkan solusi untuk masalah dalam implementasi yang berbeda , untuk mengurangi waktu dan / atau persyaratan ruang atau menerapkan prinsip-prinsip yang lebih idiomatis, itu bukan sesuatu yang Kata akan membantu Anda.
Sudah ada istilah industri yang diterima untuk menerapkan kembali hal yang sama berulang kali setelah itu bekerja keras untuk peningkatan bertahap kecil dan manfaat kesempurnaan yang dipertanyakan, ini disebut Pelapisan Emas !
Istilah yang seharusnya mereka gunakan adalah Refactoring bila diterapkan pada bahasa / runtime / platform yang sama. Dan Porting saat memindahkan program kerja ke bahasa / runtime / platform yang berbeda. Kata mungkin dipilih secara keliru karena kedengarannya hipster, keren, dan mistis tanpa sepenuhnya memahami semantik.
Memecahkan berbagai masalah sulit dengan sedikit perencanaan, pengalaman, atau panduan adalah apa yang dilakukan sebagian besar pengembang, terutama pengembang junior setiap hari.
Hanya akademisi yang dapat melakukan latihan yang sama berulang-ulang hanya demi mengasah solusi tertentu. Keterampilan dalam memiliki karier yang sukses sebagai pengembang adalah dalam adaptasi , bukan pengulangan.
Siapa bilang tidak ada orang pintar yang tidak perlu belajar setelah bekerja, dan dapat mempelajari semua yang perlu diketahui dan kadang-kadang lebih dari 8 jam di tempat kerja?
sumber
Saya setuju bahwa metafora "kata" mungkin bukan yang terbaik. Sebuah kata dalam karate dilakukan dengan tujuan untuk mempraktikkan gerakan tertentu, diskrit hingga dapat dilakukan dengan sempurna, cepat, dan otomatis. Ini tidak diterjemahkan dengan baik ke kegiatan di mana pemikiran kritis dan kreativitas diperlukan. (Ini akan menerjemahkan lebih baik untuk, katakanlah, mengetik).
Yang mengatakan, kegagalan nama bukanlah kegagalan dari aktivitas. Kelemahan apa yang mungkin ada untuk mempraktikkan sesuatu di mana seseorang ingin menjadi lebih baik? Saya kira orang dapat mengatakan bahwa waktu yang dihabiskan untuk melakukannya adalah kelemahan, dari perspektif biaya peluang, tetapi sungguh, ini adalah investasi. Jadi, waktu yang dihabiskan untuk mempraktikkan pengembangan perangkat lunak adalah untuk pengembang perangkat lunak karena uang yang dihabiskan untuk ekuitas atau obligasi adalah untuk penabung / investor jangka panjang. Ini bukan 'kelemahan' - ini taruhannya meja.
sumber
Anda menjadi lebih baik dengan mencoba hal-hal yang sulit dan hanya di luar jangkauan kemampuan Anda; menantang dirimu sendiri. Melakukan "kode kata" yang sama berulang kali, seperti bentuk seni bela diri, tidak melakukan itu. Saya pikir itu menghambat kemampuan Anda alih-alih membantu mendorong keterampilan Anda ke depan.
Ini digunakan sebagai metode latihan pertama kali, tetapi terbatas. Saya memberitahu orang untuk menggunakan proyek Euler sebagai gantinya. Lebih banyak masalah dan lebih menantang.
sumber
Bagi saya, kelemahan utama dari teknik ini seperti yang saya lihat adalah penggunaan waktu Anda yang tidak optimal.
Nilai pembelajaran dari latihan ini juga dipertanyakan: ketika Anda melakukan sesuatu secara berlebihan untuk menjadi lebih baik, umpan balik ahli sangat penting. Tanpa umpan balik berkualitas tinggi Anda akan belajar sesuatu juga, tetapi ada peluang untuk mempelajari hal yang salah dengan sangat baik.
Jangan salah paham, berlatih tetap merupakan satu-satunya cara untuk menjadi baik dalam pemrograman, dan kata jelas merupakan bentuk latihan. Tetapi begitu juga memecahkan masalah pengkodean kompetisi, menulis "proyek menyenangkan" Anda sendiri, mempelajari bahasa pemrograman baru, dan sebagainya. Pada akhirnya, Anda perlu memilih teknik yang paling nyaman bagi Anda, dan pastikan bahwa Anda memiliki panduan yang jelas di sepanjang jalan.
sumber
Saya percaya tanpa beberapa bentuk Kata Anda tidak akan pernah menjadi pembuat kode yang hebat. Kata adalah latihan, itulah arti sebenarnya. Ambil ini sebagai contoh: Seorang atlet mengatakan "Saya hanya akan muncul dan menjalankan lari 100 meter, latihan sekrup". Apakah itu terdengar seperti strategi kemenangan? Apakah pernah dilakukan dengan cara ini?
Saya menyarankan orang untuk membaca " The Clean Coder " dari Paman Bob , ia membahas secara mendalam tentang topik profesionalisme di bidang pemrograman ini.
Oh dan argumen yang diajukan bahwa Anda tidak dapat melakukan Kata dan membesarkan keluarga hanyalah alasan. Berbicara dari pengalaman: anak-anak tidur di beberapa titik ...
sumber
Hanya melakukan katas, dalam konteks seni bela diri, tidak ada gunanya. Seperti yang dikatakan sebelumnya, katas adalah choregraphy dari gerakan yang mengajarkan Anda bentuk. Anda tahu gerakannya tetapi Anda tidak tahu cara menerapkannya. Anda tidak tahu dalam situasi apa mereka berguna. Jika Anda benar-benar ingin melakukan sesuatu yang berguna dengan mereka, Anda memerlukan aplikasi, yaitu Bunkai .
Dalam konteks perangkat lunak, kata kata akan berupa algoritma, alat, pola desain, atau teknologi lainnya. Mengetahui itu baik, tetapi Anda perlu menerapkannya untuk memahaminya. Anda perlu menggunakannya dalam konteks yang berbeda untuk benar-benar menguasainya. Bunkai akan menjadi situasi konkret di mana kata atau bagian dari kata itu berguna.
Saya tidak melihat ada yang salah dengan metodologi itu, beginilah cara menguasai sesuatu: pelajari sesuatu, latihlah, tambahkan detail, latih, tambahkan detail lain, latih, dll.
sumber
Pemrograman adalah seni lukis atau musik. Ketika seseorang menjadi musisi atau artis untuk mendapatkan uang yang bisa Anda beri tahu, tidak ada inspirasi, pertunjukan tidak benar-benar sepadan dengan waktu Anda. Jika Anda tertarik pada seni, tidak ada yang bisa menghentikan Anda dari berlatih dan terus-menerus memperbaikinya - setiap hari menyempurnakan teknik tunggal, memperhatikan nuansa yang kebanyakan orang tidak akan pernah melihat.
Selalu ada ruang bagi orang-orang yang senang menjadi musisi bar dan pelukis rumah, tetapi mereka adalah kelas bakat yang sangat berbeda. Saya kira sebagian besar pelukis rumah akan menertawakan gagasan berlatih, tetapi saya bertaruh seorang pelukis yang melakukan penelitian dan mempraktikkan teknik - pada dasarnya mengakui pekerjaan mereka sebagai seni akan melakukan pekerjaan yang jauh lebih baik, bahkan pada sesuatu yang biasa seperti mengecat rumah Anda. .
Beberapa orang akan mengenali nilai praktik yang tidak biasa. Itu saja harus bernilai jika Anda berada dalam posisi untuk mengevaluasi dan Anda mencari orang yang dapat membuat seni (lean, sederhana, kode dimengerti) dan bukan hanya solusi.
ps. Saya tidak menyebut diri saya artistik yang luar biasa atau apa pun - saya tidak melakukan Kata pada masalah abstrak tetapi saya mengenali nilai dan saya mencoba untuk sedikit refactor kode produksi saya.
sumber