Saya telah bekerja dengan javascript selama 4 tahun terakhir. Saya sangat yakin dengan kemampuan memecahkan masalah saya dan saya dapat melihat bahwa kualitas kode saya meningkat. Saya mencoba untuk tetap mengikuti perkembangan komunitas dan saat ini saya bekerja dengan ES2015 dan React.js. Namun, saya merasa tidak bisa memahami pola desain pemrograman sama sekali. Saya tahu di mana menemukan sumber daya tentang ini dan saya sudah membaca buku tentang itu. Saya mengandalkan rekan kerja senior saya untuk membuat keputusan tentang struktur proyek tetapi saya tidak punya masalah untuk mengatasinya.
Setiap kali saya perlu memulai sesuatu sendiri, saya mencari dua jalur ini: Jika saya menggunakan perpustakaan besar / kerangka kerja seperti React.js, saya cenderung menyalin apa yang dilakukan komunitas; Jika saya menggunakan sesuatu yang lebih kecil saya akan menggunakan pola modul. Saya tahu bahwa begitu saya mendapatkan pemahaman yang lebih baik tentang hal ini saya akan dapat membuat keputusan yang lebih baik, tetapi untuk sekarang saya benar-benar bingung.
Haruskah saya mencari pendidikan yang unggul tentang ini? Apakah saya perlu seorang mentor tentang hal ini? Apakah saya bodoh? Apakah ini benar-benar sulit dimengerti?
sumber
Jawaban:
Pola Desain Perangkat Lunak adalah solusi terkenal untuk masalah terkenal. Cara Anda memahaminya adalah dengan mempelajari polanya, memahami cara kerjanya, dan mengetahui kapan waktu yang tepat untuk menerapkannya pada desain perangkat lunak Anda.
Cara Anda mempelajari pola desain perangkat lunak adalah dengan mempelajarinya, satu per satu. Ini adalah proses pendidikan berkelanjutan. Jika Anda ingin mengurangi jejak pembelajaran, pelajari pola-pola yang berhubungan langsung dengan teknologi yang Anda gunakan saat ini.
Beberapa hal penting yang perlu diketahui tentang pola desain:
Beberapa pola desain bersifat arsitektur. MVC dan MVVM adalah contoh pola tersebut. Anda menggunakan pola seperti itu ketika Anda membutuhkan manfaat organisasi dan struktural yang mereka berikan.
Beberapa pola desain adalah solusi untuk kekurangan dalam bahasa pemrograman. Anda tidak akan memerlukan pola-pola ini jika Anda menggunakan bahasa pemrograman yang lebih ekspresif, tetapi seringkali Anda tidak bisa membuat pilihan ini. Mayoritas pola GoF termasuk dalam kategori ini .
Gunakan pola perangkat lunak hanya ketika Anda mencoba menyelesaikan masalah yang pola itu secara khusus dirancang untuk dipecahkan. Jika Anda menulis aplikasi dengan menyatukan pola perangkat lunak, Anda salah melakukannya.
Tidak ada pola perangkat lunak yang ada untuk setiap masalah komputasi yang ada. Kalau begitu, pemrograman hanya akan menjadi latihan pencocokan pola.
Beberapa pola sebenarnya anti-pola. Kompleksitas tambahan yang diperkenalkan oleh pola-pola ini melebihi manfaat yang mereka berikan. Anda harus memutuskan sendiri, berdasarkan pola-demi-pola, pola mana yang akan Anda hindari.
sumber
Pendekatan setiap orang untuk belajar sedikit berbeda, dan saya tidak tahu apa pendekatan umum Anda, tetapi saya yakin Anda melakukan hal yang merugikan diri sendiri dengan menyebut diri Anda "bodoh".
Secara pribadi, dari pengamatan saya tentang apa yang oleh banyak orang disebut insinyur perangkat lunak "sukses", desainer dll semua memiliki tema yang sama untuk pembelajaran mereka: "pengalaman". Saya percaya ini menjadi "pendidikan superior" Anda dan Anda akan belajar lebih cepat darinya daripada membeli banyak buku di amazon dan membacanya (kebiasaan buruk saya).
Jadi, misalnya, ambil pola GOF seperti pola perintah dan implementasikan dalam pilihan bahasa Anda. Pahami apa manfaatnya bagi Anda dan kelemahannya. Berbagai buku tentang pola desain akan menjelaskan hal ini kepada Anda, tetapi saya merasa lebih baik untuk menerapkan pengetahuan itu secara praktis dan belajar darinya. Jangan mengabaikan bahan bacaan, mereka memiliki tujuan, tetapi dunia IT bukanlah latihan buku teks. Yang sedang berkata, itulah pendapat dan pandangan saya tentang dunia TI dan sebagian, mewakili perjuangan sendiri ketika memulai karir saya di bidang rekayasa perangkat lunak. Juga, masalah utama yang saya lihat, bahkan dengan pengembang perangkat lunak yang sangat berpengalaman adalah ketidaksabaran dan lupa untuk menikmati apa yang mereka lakukan. Jadi luangkan waktu Anda dengan apa yang Anda pelajari dan ingat untuk benar-benar menikmati apa yang Anda lakukan, jika tidak, mengapa repot-repot menginvestasikan waktu di dalamnya?
Selain itu, manfaatkan pengalaman praktis orang lain. Ada sejumlah besar solusi open source, baik yang buruk maupun yang baik dan Anda bisa belajar darinya. Lihatlah bagaimana mereka menerapkan pola dan pikirkan bagaimana Anda akan mengatasinya secara berbeda.
Jadi, saran umum saya adalah jika Anda merasa pendekatan Anda salah, ubahlah. Lihatlah orang-orang di sekitar Anda yang Anda rasa sedang mempelajari materi yang Anda rasa tidak Anda pahami dan lihat apa yang mereka lakukan atau bahkan tanyakan pada mereka.
sumber
Jawaban singkatnya adalah Anda tidak membutuhkannya . Anda dapat menulis kode tanpa mereka. Seperti yang dikatakan Matius dalam komentar, ini terutama benar dalam JavaScript di mana bahasanya cukup fleksibel dan proyek cenderung lebih kecil. Tetapi jika Anda telah memprogram selama 4 tahun, saya merasa sulit untuk percaya bahwa Anda belum menemukan hal-hal yang terasa berulang atau canggung. Ini adalah area yang Anda temukan kembali atau hilang pola desain.
Contoh: Sistem acara JavaScript seringkali tidak memadai untuk tugas yang dihadapi. Pernahkah Anda menemukan diri Anda ingin dapat menggabungkan atau mengubah aliran acara? Atau bahwa serangkaian acara adalah nilai kelas satu dalam hak mereka sendiri? Anda membutuhkan pola Mediator dan / atau Pengamat. Perlu pengikatan data 2 arah? Cerita yang sama.
Hirarki prototipe getas turun? Pola Mixin / Trait / Subclass Factory untuk penyelamatan.
sumber
Temukan seorang mentor, seseorang dengan pengalaman yang sangat baik untuk belajar. Ajukan dia pertanyaan perhatikan kodenya, kirim beberapa ulasan kode dan coba berkolaborasi dengannya. Ini adalah cara terbaik untuk meningkatkan keterampilan pengkodean Anda.
tambahan:
Berkolaborasi dengan beberapa proyek OSS sederhana yang Anda suka
Ketika ada dua cara untuk memecahkan masalah yang sama, selalu pilih yang lebih sederhana
Bangun pengalaman ekstra dengan proyek sampingan tempat Anda bebas melakukan semua jenis kesalahan aneh, dan Anda akan mempelajari pola desain "jalan yang sulit" (tm)
sumber