#Personal Experience dan opini pribadi seorang mahasiswa Informatika
Python adalah bahasa pemrograman yang saya gunakan ketika mulai memasuki dunia pemrograman. Saat ini Python banyak digunakan di berbagai Universitas sebagai bahasa pengantar pada mata kuliah Dasar Pemrograman. Tidak seperti Java yang dinilai terlalu banyak memiliki "boilerplate" Python memiliki syntax yang lebih straightforward sehingga lebih mudah untuk pemula.
Dari belajar Python saya menemukan ketertarikan terhadap bidang software development yaitu Back-End Development. Python memiliki sebuah Web Framework yang sudah cukup terkenal yaitu Django. Mulai dari melakukan operasi sederhana seperti CRUD sampai penggunaan WebSocket saya coba untuk pelajari. Syntax dan flow pembuatan aplikasi dengan Django sudah membuat saya nyaman. Namun, rasa ingin tahu membuat saya tertarik untuk mencoba Laravel dengan PHP yang katanya demand-nya masih tinggi.
Belajar framework baru tentu harus diawali dari belajar bahasa pemrograman yang digunakan, jujur sebelum belajar PHP saya menganggap PHP sebagai bahasa yang tidak masuk ke dalam list bahasa yang ingin saya pelajari karena PHP ini sering banget di roasting oleh banyak programmer.
Saya belajar PHP melalui playlist Youtube Programmer Zaman Now, playlist itu sangat lengkap menjelaskan PHP dari dasar, OOP, Web, sampai ke konsep MVC. Untuk dasar PHP terutama sintaksis yang digunakan menurut saya tidak jauh berbeda dengan beberapa bahasa pemrograman yang pernah saya pelajari sehingga tidak terlalu sulit bagi saya untuk beradaptasi, kecuali untuk penggunaan "$" di setiap variabel yang menurut saya cukup menjengkelkan dan menghambat.
Selanjutnya untuk konsep OOP yang digunakan saya rasa lumayan banyak kemiripannya dengan Java, beberapa konsep yang digunakan bahkan bisa membuat saya sedikit me-refresh ingatan saya tentang OOP di Java. Saya mungkin tidak akan membahas mengenai performa di tulisan ini dan lebih mengarah ke opini pribadi saya sebagai bahan pembelajaran bagi saya kedepannya. Ingin membahas performa juga tidak memungkinkan karena ilmu saya belum seberapa 😂
Setelah mempelajari tentang PHP dasar dan juga OOP seharusnya saya mempelajari pembuatan PHP Web secara native dan konsep MVC. Tetapi, pembuatan Web PHP native ini ternyata lumayan complicated dan lama. Berbekal pengalaman saya pernah menggunakan Django dan Express js saya pikir tidak masalah jika saya lewatkan. Untuk konsep MVC juga saya lewatkan karena Django mengadaptasi konsep serupa yaitu MTV. Model, Template, dan View. Pada Django bagian view mendeskripsikan data apa yang akan kita lihat, bukan bagaimana kita melihatnya sehingga sedikit dibalik dengan konsep MVC. Untuk urusan bagaimana kita melihat data akan diurus oleh Template. Seperti yang tertera di official FAQ Django, click here.
Masuk ke framework yaitu Laravel kali ini saya mengikuti playlist Youtube Web Programming UNPAS. Sebenarnya Kang Eko PZN (Programmer Zaman Now) juga memiliki playlist untuk belajar Laravel. Namun, saya rasa isinya terlalu teoritis untuk belajar sebuah framework yang seharusnya lebih banyak praktiknya. Saya memanfaatkan playlist Laravel di PZN untuk belajar mengenai arsitektur dari Laravel, seperti konsep Request Lifecycle, Service Container, Service Providers, dan Facades.
Pada playlist Laravel PZN juga dibahas tentang sebuah Design Pattern yaitu Singleton, kalo dari yang saya pahami mudahnya singleton ini adalah sebuah pattern yang memastikan kita hanya memiliki satu instance/objek dari sebuah class. Jadi jika ada pemanggilan class setelah pembuatan yang pertama akan memanggil instance/objek yang sudah dibuat tadi. Pattern ini banyak digunakan di beberapa framework.
SourceSelanjutnya untuk Request Lifecycle, di atas adalah diagram yang menurut saya paling sesuai dengan dokumentasi official Laravel yang menjelaskan bagaimana Request Lifecycle dari Laravel. Dimulai dari user yang melakukan request pada file index.php di folder public, index.php akan load autoloader dan mengambil instance aplikasi, request menuju http kernel untuk load config dan service provider, service provider akan mem-bootstrap semua komponen penting dari framework, dan akhirnya menuju router.
Terakhir, pengalaman singkat setelah selesai mengikuti playlist Laravel dari WPU saya akan coba menulis beberapa perbedaan antara Laravel dan Django yang saya rasakan.
- Dokumentasi, menurut saya dokumentasi dari Laravel lebih beginner-friendly daripada Django. Dokumentasi Django juga bagus tetapi cenderung lebih berputar-putar jika kita baru memulai.
- Environment, saya merasa library yang terintegrasi dengan Laravel sangat banyak dan bisa meningkatkan produktifitas kita sebagai developer.
- ORM, Django memiliki ORM yang jauh lebih simple dan menurut saya juga lebih readable daripada Eloquent ORM Laravel. Saya suka sekali ketika ingin menggunakan relasi pada Django ORM karena lebih mudah.