Mengapa berguna untuk menemukan kembali roda



Suatu hari, saya mewawancarai seorang pengembang JavaScript yang mengaku sebagai senior. Seorang kolega yang juga hadir dalam wawancara meminta kandidat untuk menulis fungsi yang akan menghasilkan permintaan HTTP dan, jika terjadi kegagalan, coba lagi beberapa kali.

Dia menulis kode segera di papan tulis, jadi itu akan cukup untuk menggambarkan sesuatu perkiraan. Jika dia hanya menunjukkan bahwa dia mengerti dengan baik apa inti dari masalah ini, kita akan benar-benar puas. Namun, sayangnya, ia tidak dapat menemukan solusi yang berhasil. Kemudian, menuliskan ini sebagai kegembiraan, kami memutuskan untuk sedikit meringankan tugas dan memintanya untuk membuat fungsi berdasarkan janji dari fungsi dengan panggilan balik.

Tapi sayang sekali. Ya, sudah jelas bahwa dia telah menemukan kode yang sama sebelumnya. Secara umum, dia tahu bagaimana semuanya bekerja di sana. Sebuah sketsa solusi yang akan menunjukkan pemahaman konsep akan cukup. Namun, kode yang ditulis kandidat di papan tulis sepenuhnya omong kosong. Dia memiliki ide yang sangat kabur tentang apa itu janji JavaScript dan dia tidak bisa menjelaskan mengapa itu diperlukan. Untuk junior, ini bisa dimaafkan, tetapi posisi senior tidak lagi ditarik. Bagaimana pengembang ini bisa mengeliminasi bug dalam rantai kompleks dengan janji dan menjelaskan kepada yang lain apa yang sebenarnya dia lakukan?

Pengembang menganggap kode yang sudah jadi sudah terbukti dengan sendirinya


Dalam proses pengembangan, kami terus menerus menemukan bahan yang dapat direproduksi. Kami mentransfer fragmen kode sehingga kami tidak harus mendaftarkannya setiap kali. Oleh karena itu, dengan memfokuskan semua perhatian kita pada bagian-bagian penting, kita melihat kode yang sudah jadi yang kita kerjakan sebagai sesuatu yang jelas - kita hanya berasumsi bahwa semuanya akan berfungsi sebagaimana mestinya di dalamnya.

Dan biasanya itu benar-benar berfungsi, tetapi ketika kesulitan muncul, pemahaman tentang mekanismenya lebih dari hasil.

Jadi, kandidat kami untuk posisi pengembang senior menganggap objek janji sebagai bukti nyata. Dia mungkin membayangkan bagaimana berurusan dengan mereka ketika mereka bertemu di suatu tempat dalam kode orang lain, tetapi dia tidak mengerti prinsip umum dan tidak bisa mengulanginya sendiri pada saat wawancara. Mungkin dia ingat fragmen itu dalam hati - tidak begitu sulit:

return new Promise((resolve, reject) => { functionWithCallback((err, result) => { return err ? reject(err) : resolve(result); }); }); 

Saya melakukannya juga - ya, kita semua, mungkin, suatu hari melakukannya. Mereka hanya menghafal sepotong kode, sehingga nantinya mereka bisa menggunakannya dalam pekerjaan mereka, sementara hanya secara umum membayangkan bagaimana semuanya bekerja di sana. Tetapi jika pengembang benar-benar memahami konsep tersebut, ia tidak perlu menghafal apa pun - ia hanya akan tahu bagaimana melakukannya, dan akan dengan mudah mereproduksi semua yang diperlukan dalam kode.

Dapatkan ke akar


Pada 2012, ketika dominasi kerangka front-end belum ditetapkan, jQuery aturan dunia dan saya membaca buku Rahasia Ninja JavaScript , yang ditulis oleh John Rezig, pencipta jQuery.

Buku ini mengajarkan pembaca cara membuat jQuery Anda sendiri dari awal dan memberikan kesempatan unik untuk bergabung dalam kereta pemikiran yang mengarah pada penciptaan perpustakaan. Dalam beberapa tahun terakhir, jQuery telah kehilangan popularitasnya sebelumnya, tetapi saya masih sangat merekomendasikan buku itu. Yang paling mengejutkan saya tentang dia adalah perasaan gigih bahwa saya bisa memikirkan semua ini sendiri. Langkah-langkah yang penulis lukiskan tampak sangat logis, dapat dimengerti sehingga bagi saya tampak serius bahwa saya dapat dengan mudah membuat jQuery, andai saja saya terjun ke bisnis.

Tentu saja, pada kenyataannya, saya tidak akan menguasai hal seperti ini - saya akan memutuskan bahwa itu sangat sulit. Keputusan saya sendiri tampaknya bagi saya terlalu sederhana dan naif untuk bekerja, dan saya akan menyerah. Saya akan mengaitkan jQuery dengan hal-hal yang terbukti dengan sendirinya, operasi yang benar yang hanya perlu Anda yakini secara membuta. Selanjutnya, saya hampir tidak akan membuang waktu untuk mempelajari mekanisme perpustakaan ini, tetapi hanya akan menggunakannya sebagai semacam kotak hitam.

Tetapi mengenal buku ini membuat saya menjadi orang yang berbeda. Saya mulai membaca kode sumber dan menemukan bahwa implementasi banyak solusi sebenarnya sangat transparan, bahkan jelas. Tidak, tentu saja, untuk memikirkan hal seperti itu sendiri - ini dari opera lain. Tapi itu adalah studi tentang kode orang lain dan reproduksi solusi yang ada yang membantu kita menghasilkan sesuatu dari kita sendiri.

Inspirasi yang Anda gambar dan pola yang Anda mulai perhatikan akan mengubah Anda sebagai pengembang. Anda akan menemukan bahwa perpustakaan indah yang terus-menerus Anda gunakan dan yang Anda anggap sebagai artefak magis, tidak bekerja sama sekali dengan sihir, tetapi hanya menyelesaikan masalah dengan singkat dan banyak akal.

Kadang-kadang akan diperlukan untuk meneliti kode, membongkar langkah demi langkah, tetapi seperti ini, bergerak dalam langkah-langkah kecil berturut-turut, Anda dapat mengulangi jalan penulis ke solusi. Ini akan memungkinkan Anda untuk menyelami proses penulisan kode dan lebih percaya diri saat mencari solusi Anda sendiri.

Ketika saya mulai bekerja dengan janji-janji, bagi saya tampaknya ini adalah sihir murni. Kemudian saya menemukan bahwa mereka didasarkan pada panggilan balik yang sama, dan dunia pemrograman saya terbalik. Artinya, sebuah pola yang tujuannya untuk menyelamatkan kita dari panggilan balik itu sendiri diimplementasikan menggunakan panggilan balik ?!

Ini membantu saya untuk melihat masalah ini dengan mata yang berbeda dan menyadari bahwa tidak ada potongan kode yang tidak masuk akal di depan saya, kompleksitas transenden yang tidak akan pernah saya pahami dalam hidup saya. Ini hanyalah pola-pola yang dapat dengan mudah dipahami dengan rasa ingin tahu dan pencelupan yang dalam. Inilah cara orang belajar memprogram dan tumbuh sebagai pengembang.

Temukan kembali roda ini


Jadi jangan ragu untuk menemukan kembali roda: tulis kode untuk data yang mengikat diri sendiri, buat janji yang dibuat sendiri atau bahkan buat keputusan untuk mengelola kondisi Anda dengan tangan Anda sendiri.
Tidak masalah bahwa tidak seorang pun akan menggunakan semua ini - tetapi sekarang Anda dapat melakukannya. Dan jika Anda memiliki kesempatan untuk selanjutnya menggunakan perkembangan tersebut dalam proyek Anda sendiri, maka ini umumnya bagus. Anda dapat mengembangkannya dan belajar sesuatu yang lain.

Intinya di sini bukan untuk mengirim kode Anda ke produksi, tetapi untuk mempelajari sesuatu yang baru. Meresepkan penerapan solusi yang ada pada Anda sendiri adalah cara yang bagus untuk belajar dari programmer terbaik dan dengan demikian mengasah keterampilan Anda.

Source: https://habr.com/ru/post/id472006/


All Articles