Capstone Week 5: Know-how tidak berguna tanpa 'know-why' dan Cara Belajar Kerangka seperti Jurutera

Belajar bagaimana menggunakan rangka kerja itu sendiri bukan kejuruteraan perisian. Mempelajari masalah penyelesaian masalah dalam domain masalah (s) adalah lebih dekat dengan kejuruteraan perisian. Jika projek yang anda sedang berusaha untuk menimbulkan cabaran yang jauh melangkaui kerangka kerja yang dapat diperbaiki, itu adalah kejuruteraan perisian. Facebook menggunakan React dan begitu juga aplikasi keranjang belanja yang saya bina dalam satu atau dua hari. Facebook adalah kejayaan kejuruteraan; app keranjang belanja saya tidak.

Terdapat beberapa aspek pembelajaran alat atau kerangka baru yang saya nikmati dan beberapa yang tidak saya lakukan. Saya suka belajar tentang penyelesaian rangka kerja masalah atau tradeoffs yang ditimbulkan oleh kaedah penstrukturan yang berlainan. Sebagai contoh, saya dapati corak reka bentuk Flux hanya genius. Membina aplikasi tanpa Fluks menjadi sangat tidak kemas kerana anda perlu lulus keadaan permohonan itu melalui pelbagai komponen, hanya untuk komponen kanak-kanak itu untuk memanggil rantaian panjang fungsi nenek moyang sehingga komponen yang memiliki keadaan diberitahu mengenai peristiwa itu dalam satu anak-anaknya, anak cucu, anak-anak besar, dan sebagainya. Fluks menjadikannya lebih mudah untuk berfikir secara astronomi tentang apa yang dilakukan oleh aplikasinya, bagaimana keadaannya diurus, dan komponen apa pun yang bertanggungjawab walaupun kandungannya bertambah.

Inilah yang harus difokuskan ketika mempelajari kerangka baru: apakah masalah yang dipecahkan dan bagaimana? Apakah falsafah di mana penyelesaiannya dilahirkan? Apakah arsitektur umum dan apakah titik-titik kesakitan yang dilakukan oleh seni bina ini? Apa kepercayaan preskriptif mengenai bagaimana masalah harus diselesaikan memaklumkan penciptaan penyelesaian khusus ini, dan adakah anda berkongsi kepercayaan ini? Sekiranya anda tidak berkongsi, sekiranya anda? Rangka kerja adalah jauh lebih daripada alat: ia merupakan perisytiharan mengenai cara masalah asas, atau banyak masalah asas, harus diselesaikan. Ketika saya ditugaskan mempelajari alat atau kerangka baru, ini adalah pertanyaan yang saya minta. Saya tidak peduli untuk menghafal nuansa sebenar mengkonfigurasi webpack: yang akan datang dengan masa, dan jika tidak, ia adalah sesuatu yang saya boleh dengan mudah menyelidik dalam beberapa minit. Saya boleh bertanya kepada google apa maksud mesej ralat. Saya tidak boleh bertanya kepada google jika keputusan reka bentuk rangka kerja dan pengalihan yang mereka perkenalkan adalah yang saya bersetuju dengannya.

Mempelajari rangka kerja dengan baik dan belajar dengan cepat tidak saling eksklusif jika anda bersenjata dengan pengetahuan mengenai asas-asas domain yang anda sedang kerjakan. Anda juga perlu memberi keutamaan kepada pengetahuan anda mengikut agenda yang telah dibayangkan terlebih dahulu. Agenda saya hampir selalu: "Memahami 'mengapa' sama seperti 'bagaimana'. Alasannya ialah: Anda akan sentiasa lebih mahir dengan alat jika anda tahu sebabnya ada sebab dan alasan untuk membuat keputusan di sebalik reka bentuknya. "Bagaimana?" Dan "Kenapa?" Bukan soalan yang tidak berkaitan, dan sebenarnya, dengan pemahaman yang kuat tentang "Kenapa" akan memperkuat keupayaan anda untuk menggunakan "Bagaimana". Ini kerana jika anda memahami mengapa alat itu mempunyai ciri-ciri khusus yang ada, maka anda tidak hanya memahami alat itu sendiri: anda mempunyai pemahaman tentang proses pemikiran, di mana alat itu merupakan manifestasi. Ini bermakna bahawa apabila anda tidak dapat dielakkan menghadapi cabaran teknikal yang tidak dapat diterima dengan set arahan dan hala, anda boleh menerapkan penalaran di belakang alat itu sendiri dan menavigasi jalan anda ke penyelesaian. Itulah perbezaan antara pengguna rangka kerja dan seorang jurutera.

Oleh itu, kita belajar reaktifJS sebagai satu pasukan minggu ini. Berikan kami satu minggu lagi dan kami mungkin menghantar kod kualiti pengeluaran (dan sebenarnya kita akan diberikan seminggu lagi). Ini kerana kami memahami domain masalah yang cukup untuk mengetahui apa kesilapan yang perlu dipertimbangkan (dan kami tahu bagaimana untuk menguji untuk mengelakkan kesilapan ini). Kami tidak akan, dengan kata lain, melakukan sesuatu seperti membina pertukaran crypto yang bergantung sepenuhnya pada pengesahan pihak klien.