# Teknologi Itu Alat, Engineering Itu Pola Pikir

Banyak pengembang pemula (junior dev) sering kali terjebak dalam pertanyaan: *"Framework apa yang harus saya pelajari?"* atau *"Apakah React lebih baik dari Angular?"*

Meskipun pertanyaan ini wajar, ada satu prinsip penting yang perlu dipahami: teknologi hanyalah alat. Yang lebih penting dari memilih framework tertentu adalah memahami konsep mendasar dalam pengembangan perangkat lunak.

🔹 **Mengapa Memahami Konsep Lebih Penting?**

Framework dan bahasa pemrograman akan selalu berubah. React hari ini mungkin akan digantikan oleh sesuatu yang baru esok hari. Tapi prinsip-prinsip seperti arsitektur perangkat lunak, pola desain (design patterns), dan praktik penulisan kode yang bersih akan selalu relevan.

Seorang engineer yang baik:

* Memahami bagaimana membangun sistem yang scalable dan maintainable.
    
* Mengerti prinsip SOLID dan bagaimana mengaplikasikannya.
    
* Bisa membaca dan memahami kode, meskipun bahasa atau framework-nya belum pernah ia gunakan sebelumnya.
    

🔹 **Mulai Dari Mana?**

Daripada terjebak memilih teknologi tertentu, mulailah dengan mempelajari hal-hal berikut:

1. **Arsitektur Perangkat Lunak**:
    
    * **Monolithic vs Microservices**: Memahami perbedaan arsitektur monolitik (satu kesatuan) dan microservices (terpisah menjadi layanan-layanan kecil).
        
    * **Layered Architecture**: Mengenal konsep lapisan seperti presentation layer, business logic layer, dan data layer.
        
    * **Data Flow**: Bagaimana data mengalir dari satu komponen ke komponen lain, termasuk konsep state management.
        
2. **Pola Desain**:
    
    * **Singleton**: Memastikan sebuah class hanya memiliki satu instance dan menyediakan titik akses global ke instance tersebut.
        
    * **Factory**: Mempermudah pembuatan objek tanpa menentukan class secara eksplisit.
        
    * **Observer**: Memungkinkan satu objek menginformasikan perubahan ke objek lain, sering digunakan dalam event-driven programming.
        
3. **Prinsip Kode Bersih**:
    
    * **SOLID**: Lima prinsip dasar desain berorientasi objek untuk membuat kode lebih fleksibel dan mudah dikembangkan.
        
    * **DRY (Don't Repeat Yourself)**: Menghindari duplikasi kode dengan membuat fungsi atau modul reusable.
        
    * **KISS (Keep It Simple, Stupid)**: Menekankan pentingnya membuat solusi sesederhana mungkin untuk menghindari kompleksitas yang tidak perlu.
        

🔹 **Kesimpulan**

Framework adalah alat, bukan tujuan. Jika Anda memiliki fondasi rekayasa perangkat lunak yang kuat, Anda bisa mempelajari framework apa pun dengan cepat.

Jadi, daripada bertanya *"React atau Angular?"*, mulailah bertanya *"Bagaimana saya bisa membangun perangkat lunak yang baik dan berkelanjutan?"*.

Karena teknologi akan berlalu, tapi prinsip rekayasa akan selalu abadi.
