Mengapa menemukan kembali roda bermanfaat?

Mengapa menemukan kembali roda bermanfaat?

Suatu hari saya mewawancarai seorang pengembang JavaScript yang melamar posisi senior. Seorang kolega, yang juga hadir saat wawancara, meminta kandidat untuk menulis fungsi yang akan membuat permintaan HTTP dan, jika tidak berhasil, coba lagi beberapa kali.

Dia menulis kodenya langsung di papan, jadi itu akan cukup untuk menggambar sesuatu yang mendekati. Jika saja dia menunjukkan bahwa dia paham betul apa masalahnya, kami akan cukup puas. Namun sayangnya, ia tidak dapat menemukan solusi yang berhasil. Kemudian kami, menganggapnya sebagai kegembiraan, memutuskan untuk membuat tugas tersebut sedikit lebih mudah dan memintanya untuk mengubah fungsi dengan callback menjadi fungsi yang dibangun berdasarkan janji.

Namun sayang. Ya, jelas dia pernah menemukan kode seperti itu sebelumnya. Dia tahu secara umum bagaimana segala sesuatunya bekerja di sana. Yang kita perlukan hanyalah sketsa solusi yang menunjukkan pemahaman konsep. Namun, kode yang ditulis kandidat di papan itu benar-benar tidak masuk akal. Dia memiliki gagasan yang sangat samar tentang janji apa yang ada dalam JavaScript dan tidak dapat menjelaskan mengapa janji itu diperlukan. Bagi seorang junior, hal ini bisa dimaafkan, tapi dia tidak lagi cocok untuk posisi senior. Bagaimana pengembang ini dapat memperbaiki bug dalam rangkaian janji yang rumit dan menjelaskan kepada orang lain apa sebenarnya yang dia lakukan?

Pengembang menganggap kode yang sudah jadi sudah terbukti dengan sendirinya

Selama proses pengembangan, kami terus-menerus menemukan materi yang dapat direproduksi. Kami mentransfer potongan kode sehingga kami tidak perlu menulis ulang setiap saat. Oleh karena itu, dengan memusatkan seluruh perhatian kita pada bagian-bagian penting, kita melihat kode selesai yang kita kerjakan sebagai sesuatu yang sudah jelas - kita hanya berasumsi bahwa semuanya akan berjalan sebagaimana mestinya.

Dan biasanya hal ini berhasil, tetapi ketika keadaan menjadi rumit, memahami mekanismenya akan lebih dari sekadar membuahkan hasil.

Oleh karena itu, kandidat kami untuk posisi pengembang senior menganggap objek janji sudah jelas dengan sendirinya. Dia mungkin memiliki gagasan tentang cara menanganinya ketika hal itu terjadi di suatu tempat dalam kode orang lain, tetapi dia tidak memahami prinsip umumnya dan tidak dapat mengulanginya sendiri selama wawancara. Mungkin dia mengingat bagian itu dengan sepenuh hati - tidak terlalu sulit:

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

Saya juga melakukannya - dan kita semua mungkin pernah melakukannya. Mereka hanya menghafal sepotong kode sehingga nantinya dapat digunakan dalam pekerjaan mereka, sementara hanya memiliki gambaran umum tentang bagaimana segala sesuatunya bekerja di sana. Namun jika pengembang benar-benar memahami konsepnya, dia tidak perlu mengingat apa pun - dia hanya tahu bagaimana melakukannya, dan dengan mudah mereproduksi semua yang dia perlukan dalam kode.

Kembali ke akarnya

Pada tahun 2012, ketika dominasi kerangka front-end belum terbentuk, jQuery menguasai dunia, dan saya membaca bukunya Rahasia Ninja JavaScript, ditulis oleh John Resig, pencipta jQuery.

Buku ini mengajarkan pembaca cara membuat jQuery mereka sendiri dari awal dan memberikan wawasan unik tentang proses berpikir yang mengarah pada penciptaan perpustakaan. Dalam beberapa tahun terakhir, jQuery telah kehilangan popularitasnya sebelumnya, tetapi saya masih sangat merekomendasikan buku ini. Yang paling mengejutkan saya tentang dia adalah perasaan yang terus-menerus bahwa saya sendiri bisa memikirkan semua ini. Langkah-langkah yang penulis uraikan tampak begitu logis, begitu jelas sehingga saya mulai berpikir dengan serius bahwa saya dapat dengan mudah membuat jQuery jika saya langsung melakukannya.

Tentu saja, pada kenyataannya saya tidak akan mampu melakukan hal seperti ini - saya akan memutuskan bahwa itu sangat sulit. Solusi yang saya buat tampaknya terlalu sederhana dan naif untuk diterapkan, dan saya akan menyerah. Saya akan mengklasifikasikan jQuery sebagai hal-hal yang terbukti dengan sendirinya, dalam pengoperasian yang benar yang hanya perlu Anda percayai secara membabi buta. Selanjutnya, saya tidak akan membuang waktu mempelajari mekanisme perpustakaan ini, tetapi hanya akan menggunakannya sebagai semacam kotak hitam.

Tapi membaca buku ini membuatku menjadi orang yang berbeda. Saya mulai membaca kode sumbernya dan menemukan bahwa penerapan banyak solusi sebenarnya sangat transparan, bahkan jelas. Tidak, tentu saja, memikirkan hal seperti ini sendiri adalah cerita yang berbeda. Namun mempelajari kode orang lain dan mereproduksi solusi yang ada akan membantu kita menemukan sesuatu yang kita miliki.

Inspirasi yang Anda peroleh dan pola yang mulai Anda perhatikan akan mengubah Anda sebagai seorang pengembang. Anda akan menemukan bahwa perpustakaan luar biasa yang terus-menerus Anda gunakan dan yang biasa Anda anggap sebagai artefak magis tidak berfungsi sama sekali pada sihir, tetapi hanya memecahkan masalah dengan singkat dan banyak akal.

Kadang-kadang Anda harus mempelajari kode tersebut dengan teliti, menganalisisnya langkah demi langkah, namun dengan bergerak dalam langkah-langkah kecil dan konsisten, Anda dapat mengulangi jalur penulis menuju solusi. Ini akan memungkinkan Anda mendalami proses pengkodean lebih dalam dan memberi Anda lebih percaya diri dalam menemukan solusi Anda sendiri.

Ketika saya pertama kali mulai bekerja dengan janji, bagi saya itu tampak seperti keajaiban murni. Kemudian saya mengetahui bahwa mereka didasarkan pada panggilan balik yang sama, dan dunia pemrograman saya terbalik. Jadi polanya, yang tujuannya adalah untuk menyelamatkan kita dari callback, diimplementasikan dengan menggunakan callback?!

Ini membantu saya melihat masalah ini dengan pandangan berbeda dan menyadari bahwa ini bukanlah sepotong kode yang sulit dipahami di depan saya, kompleksitas yang sangat tinggi yang tidak akan pernah saya pahami dalam hidup saya. Ini hanyalah pola yang dapat dipahami tanpa masalah dengan rasa ingin tahu dan pendalaman yang mendalam. Inilah cara orang belajar coding dan berkembang sebagai pengembang.

Temukan kembali roda ini

Jadi lanjutkan dan temukan kembali rodanya: tulis kode pengikatan data Anda sendiri, buat janji yang dibuat sendiri, atau bahkan buat solusi manajemen negara Anda sendiri.
Tidak masalah jika tidak ada seorang pun yang akan menggunakan semua ini - tetapi sekarang Anda tahu cara melakukannya. Dan jika Anda memiliki kesempatan untuk kemudian menggunakan perkembangan tersebut dalam proyek Anda sendiri, maka ini umumnya bagus. Anda akan dapat mengembangkannya dan mempelajari hal lain.

Intinya di sini bukan untuk mengirimkan kode Anda ke produksi, tetapi untuk mempelajari sesuatu yang baru. Menulis implementasi Anda sendiri atas solusi yang sudah ada adalah cara yang bagus untuk belajar dari programmer terbaik dan dengan demikian mengasah keterampilan Anda.

Sumber: www.habr.com

Tambah komentar