Perangkat lunak ada untuk menyelesaikan suatu masalah. Karena itu, pengembang memahami masalah lalu merancang dan mengimplementasikannya sesuai kebutuhan. Dalam proses memahami masalah dan merancang solusi, pemikiran abstrak dan pemikiran struktural adalah senjata yang sangat kuat bagi pengembang.
Biasanya, pemikiran abstrak dan struktural sering dijelaskan secara sulit dipahami atau terlalu samar. Namun, jelas ada metodologi konkret untuk melakukan jenis pemikiran ini. Presentasi ini memperkenalkan cara-cara konkret bagi pengembang untuk berpikir secara abstrak dan struktural, serta cara menggunakan pola pikir tersebut untuk merancang perangkat lunak seperti domain modeling, refactoring, dan arsitektur.
- Pekerjaan pengembang adalah membuat program
- Alasan membuat program adalah untuk menyelesaikan masalah tertentu, dan alasan menyelesaikan masalah adalah untuk bisnis
- Saat membuat program, ada empat tahap utama
- Pemahaman / analisis -> perancangan -> implementasi -> umpan balik
- Semakin senior seorang pengembang, semakin ia terlibat bukan hanya dalam penulisan kode tetapi juga di seluruh tahap ini
- Pengembang senior menyelesaikan masalah dengan cepat melalui intuisi yang dibangun dari pengalaman
- Namun, intuisi bisa berbahaya. Karena itu, penting untuk mempelajari metodologi
- Pemikiran abstrak dan struktural adalah dasar dari metodologi tersebut
- Abstraksi adalah mengekstrak hal-hal yang umum atau yang menjadi perhatian dari elemen-elemen
- Karena itu, abstraksi dapat dipandang sebagai menyederhanakan sesuatu lalu menafsirkannya kembali
- Penyederhanaan dan penafsiran ulang bisa dilakukan melalui cara berpikir reduksionisme elemen
- Bukan hanya elemen, perilaku juga bisa diabstraksikan
- Abstraksi memiliki lapisan
- Kita perlu menentukan tingkat abstraksi yang tepat.
- Abstraksi yang berlebihan tidak baik karena membuat wujud nyatanya tidak terlihat.
- Pemikiran struktural adalah menata isi agar tidak saling tumpang tindih dan tidak ada celah
- Mirip dengan framework MECE
- Yang penting bukan berarti semuanya harus selalu ditata tanpa tumpang tindih dan tanpa celah
- Strukturisasi juga memiliki tahapan seperti abstraksi. Kita bisa melihat dari satu langkah lebih jauh
- Ada metode konkret untuk berpikir secara abstrak dan struktural
- Top-down dan bottom-up
- Model
- Classification
- Abstraction
- Generalization
- Pemikiran framework
- Pemikiran abstrak dan struktural dapat diterapkan pada perancangan perangkat lunak
- Jika tahap implementasi perangkat lunak dibagi besar menjadi tiga, maka dapat dibagi menjadi domain modeling, arsitektur, dan penulisan kode
- Domain modeling memungkinkan kita mengekstrak kebutuhan secara abstrak lalu memperluasnya secara bertahap
- Arsitektur menunjukkan cara pekerjaan dilakukan
- Bagaimana bekerja, bagaimana membaginya
- Arsitektur mengikuti proses kebutuhan -> konsep -> implementasi -> umpan balik
- Konsep arsitektur yang abstrak bisa dibuat semakin konkret secara bertahap
- Paradigma pemrograman adalah sudut pandang dalam melihat komponen penyusun perangkat lunak
- Logika dapat dilihat dari tiga aspek: Function, Usecase, Aspect
- Syntax sugar adalah sintaks pemrograman yang diabstraksikan
- Ini juga bisa menjadi racun
- Refactoring dapat dilihat dari enam perspektif: paradigma, ukuran kode, kepemilikan, ada tidaknya duplikasi, kemungkinan modifikasi, dan dependensi
- Refactoring memiliki tiga pendekatan: abstraksi, strukturisasi, generalisasi
- Untuk mengembangkan kemampuan berpikir abstrak dan struktural, ada baiknya memiliki beragam pengalaman
- Membuat diagram sangat membantu
- Intuisi adalah cara berpikir empiris. Ini dapat menghemat waktu, tetapi juga bisa berbahaya
- Pola membantu dalam mempelajari pemikiran abstrak
- Hal yang abstrak dan struktural tidak selalu menjadi solusi serba guna
10 komentar
Terima kasih atas materi presentasi dan ringkasan isinya.
Dari ID-nya kelihatan Anda memang pembicaranya ya! Saya gagal masuk karena kalah undian di InfoCon, jadi tidak bisa ikut, tapi terima kasih sudah membagikan materi presentasinya :)
Terima kasih. :D Semoga materi saya bisa membantu!
Terima kasih atas ringkasan yang detail.
Ternyata merangkum ini memakan waktu lebih lama dari yang saya kira ^^;; Terima kasih sudah membaca!
Terima kasih atas tulisan dan ringkasannya yang bagus~
Terima kasih telah melihatnya dengan baik :D
Saya membacanya dengan baik!
Anda perlu menentukan tingkat abstraksi yang tepat.
-> Ada salah ketik di sini :)
Terima kasih sudah memeriksanya. :) Namun, sepertinya setelah diposting, tidak bisa diedit T_T
Ah, saya tidak tahu. Terima kasih sudah mengonfirmasi!