Tidak tau tentang Design pattern seakan-akan menjadi aib ketika di jaman sekarang seorang pengembang perangkat lunak tidak tau apa itu Design Pattern, benarkah?

Tentunya proses belajar setiap orang berbeda-beda dan bisa jadi ada seorang pengembang perangkat lunak yang tidak tau sama sekali tentang Design Pattern sekalipun sudah lama menjadi pengembang perangkat lunak.

Definisi sederhana dari Design Pattern adalah suatu pola atau struktur kode yang dipakai berulang-ulang untuk menyelesaikan suatu masalah yang memiliki pola serupa. Apakah seperti membuatfunction atau method yang dipakai berulang-ulang? apakah itu contoh Design Pattern?

Design Pattern bukan sekedar function atau method, tapi memang 2 hal tersebut adalah bagian dari Design Pattern.

Berdasarkan buku pertama Design Patterns yang dirilis tahun 1994 ada 23 pola desain yang dikelompokan ke dalam 3 bagian yaitu Creational, Structural, dan Behavioral. Saya tidak akan membahas bagian itu satu persatu karena kamu bisa membaca konsepnya dengan jelas di Wikipedia ataupun di sourcemaking.com dan refactoring.guru

Gangs Of Four Design Patterns Book
Gangs of Four Design Patterns is the collection of 23 design patterns from the book β€œDesign Patterns: Elements of Reusable Object-Oriented Software”.

Buku GoF tersebut dirilis tahun 1994 dengan contoh kode yang pada saat itu adalah kode aplikasi desktop atau aplikasi yang memiliki GUI (Graphical User Interface). Sedangkan jika kita melihat di jaman sekarang, sudah banyak pengembang perangkat lunak yang hanya berfokus pada backend tanpa GUI. Sehingga diperlukan contoh implementasi Design Pattern yang mengikuti kondisi saat ini. Namun secara konsep tetap bisa dijadikan bahan “debat kusir” eh.. maksudnya bahan diskusi 😁

Tujuan utama dari Design Patterns adalah agar kode mudah dipelihara khususnya oleh pengembang lainnya, tapi kalau pengembang lain tidak paham design pattern bagaimana ya? sering kali malah bikin berantakan karena implementasinya jadi gak sesuai 😁

Dalam hal implementasi Design Pattern tidak ada yang mutlak benar. Dalam hal ini benar adalah kesepakatan 😱 jadi pastikan diskusi dengan tim kamu dan temukan kesepakatan bersama. Jadi kalau salah implementasi salah rame-rame 🀣

Jadi gimana donk kalau mau belajar design pattern biar gak sesat? πŸ‘Ί

Jika kamu memiliki banyak waktu untuk riset, silahkan mengkonsumsi dan mencerna berbagai macam artikel, buku dan paper terkait Software Design Pattern. Saya tidak akan mendebat kamu jika kamu memilih jalan itu, silahkan πŸƒ

Nah, untuk yang waktunya sempit ato cenderung pemalas πŸ˜…, ikuti tips berikut ini:

Pilih framework yang terpercaya, mumpuni, aktif di kembangkan dan aktif di pelihara oleh komunitas ataupun perusahaan dan memiliki dokumentasi yang mudah diikuti.

Contoh jika kamu seorang Java Developer coba belajar cara menggunakan Spring Framework dengan baik. Atau jika kamu seorang PHP Developer coba belajar cara menggunakan Laravel Framework dengan baik. Atau framework lainnya yang sesuai dengan bahasa pemograman yang kamu pakai sehari-hari.

Ketika kamu menggunakan framework tersebut dengan baik yaitu dengan mengikuti panduan dan best practices dari framework tersebut maka secara tidak langsung kamu sudah menerapkan beberapa Design Pattern. Loh kok bisa? πŸ€”

Hal serupa juga diutarakan oleh salah satu pengembang perangkat lunak dalam negeri yaitu Eko Khannedy dalam JVM meetup November 2019, cuplikannya dapat dilihat disini https://youtu.be/9xp7EIMXIKY.

JVM Meetup #24 with DANA | Sesi 2 | Eko Khannedy: “Don’t use Design Patterns”

Dan juga diutarakan oleh pengembang perangkat lunak luar negeri yaitu Matt Stauffer dalam acara Laravel Conference Online Maret 2020.

But the standard isn’t just a standard, it’s a very good standard. One of the things I love about Laravel is that when people join the Laravel community, they might not know about design patterns and SOLID and all this kinda stuff, or even good OOP, but in order to learn to use Laravel, those things are all baked into Laravel and so you’re learning about design patterns, or interface or whatever else it ends up being, by using Laravel, and people realize that learning Laravel actually teaches them more about architecture than stuff that they’ve learned that’s specifically trying to teach them about architecture.

Matt Stauffer at Laravel Conference Online March 2020

Dan saya yakin masih banyak pengembang perangkat lunak lainnya yang sepakat dengan hal tersebut.

Jadi penting ga penting tentang design pattern? tentunya penting jika melihat tujuan utama dari design pattern. Selama diimplementasikan sesuai dengan konsepnya atau minimal tidak jauh-jauh dari konsepnya. Karena setiap bahasa pemograman biasanya punya cara masing-masing untuk mengimplementasikan design pattern. Kamu bisa pelajari hal tersebut disini sourcemaking.com dan refactoring.guru.

Jadi, bagaimana menurut kamu? 😎

Cover photo by Arif Riyanto on Unsplash

Author

Engineering Manager, Software Engineer, Chatbot Developer, Natural Language Processing Enthusiast, JAMStack Enthusiast.

4 Comments

  1. Dear Pak Freddy,

    Pencarian saya mengenai Creational Design Pattern membawa sy ke page ini. Terima kasih sudah berbagi pengetahuan pada page ini. Jujur saya bukanlah berlatar-belakang IT, hanya seorang lulusan Kimia yang mencoba menerapkan teknologi pengembangan perangkat lunak untuk keperluan natural sciences. Berulang kali hadir di kepala saya mengenai teknologi Low-Code tentang bagaimana membuat teknologi Low-Code ini. Sampai detik ini saya masih ber-asumsi apakah konsep Creational Pattern ini merupakan basis yang digunakan oleh engineer dibalik teknologi Low-Code? Sejalan apa yang saya pelajari tentang OOP, sepertinya asumsi saya memiliki kemungkinan benar. Mohon pencerahannnya.

    Terima kasih.

    Salam Sukses,

    Integra

    • Terimakasih sudah berkunjung ke halaman ini.

      Teknologi low-code ini sudah cukup lama ada dan semakin berkembang hingga saat ini bahkan sudah terintegrasi dengan kecerdasan buatan.
      Low-code adalah suatu perangkat lunak. Layanan low-code berbasis cloud tentunya akan memanfaatkan teknologi JavaScript atau Web Assembly untuk menangani user interaksi seperti drag n drop form dan workflow untuk membuat proses pada suatu aplikasi.

      Teknologi di balik layar atau backend bisa beragam. NodeJS, Java, Python dan lain sebagainya.
      Umumnya design pattern dapat di implementasikan menggunakan bahasa pemrograman berbasis class atau objek.
      Namun konsepnya bisa saja digunakan dalam paradigma functional programming.

  2. Saya baru paham dan sedikit belajar repository pattern di Laravel, memang kelihatan overkill karena ada layer baru. Tapi enak untuk trace error-nya. Terima kasih banyak pak atas ilmunya.

Write A Comment