Kesalahan Saya Dalam Menggunakan Django

Kesalahan Saya Dalam Menggunakan Django

Django bukanlah framework pertama saya, bukan pula framework yang membuka jalan masuk ke dalam profesi ini, tapi saya bisa bilang bahwa django merupakan framework favorit saya. Setelah sekian tahun menggunakan Django saya baru sadar diri bahwa pendekatan yang saya lakukan sepertinya tidak perlu atau belum perlu untuk dilakukan, nah berdasarkan pengalaman saya inilah beberapa yang saya anggap sebagai kesalahan dalam menggunakan Django.

Menambah Abstraksi

Django (dan juga "fullstack" framework lainnya) sudah memiliki aturannya sendiri atau umumnya disebut opinionated, dari struktur folder, alur programming, penggunaan fitur a, b, c dan lainnya.

Saya, dulu cukup mengikuti pattern-patttern dan cenderung main hajar aja dari pemahaman seadanya, akhirnya menambahkan abstraksi lainnya. Django sudah ada berbagai macam views malah nambah satu lagi yang mengabstraksi salah satu jenis views yang hasil akhirnya belum tentu lebih baik.
Karena menambahkan abstraksi baru menurut saya mengurangi fleksibilitas framework, karena ketika ada anggota baru dan join dia gak bisa langsung jump in bahkan jika dia punya pengalaman django sebelumnya juga, karena kode yang dipake kode abstaksi bikinan sendiri sedangkan membuat dokumentasi bukanlah hal yang sering saya lakukan sehingga transfer knowledge semakin lama.
Kalau ujung-ujungnya banyak kustomisasi saya kira lebih baik menggunakan flask atau fastapi saja biar lebih fleksibel.


Jadi saya belajar selama belum perlu, gunakan saja alur default yang disediakan framework.

Asal Menggunakan fitur

Hanya karena ada, bukan berarti harus. Django itu punya banyak yang saya sebut fitur "magic", salah satunya adalah Signal. Signal sebenarnya tidak magic-magic amat sih, over simplifiednya itu adalah (semacam database) trigger di level app. Signal perlu diakui memberikan kemudahan, tapi... tanpa tahu dan mempeljari fitur dengan benar yang saya alami kemudahan di awal kesulitan di akhir.

Percayalah debugging di signal django bukanlah hal yang menyenangkan.

Takut Dengan Database

Backend? Takut dengan database?

Betul bahwa django memberikan kemudahan dalam mengelola database dengan orm dan migrationsnya itu mengakibatkan saya cenderung malas tipis-tipis takut malah, ada field baru oke tambahkan di model dan migration, datanya harus unique tapi ini field baru? Kayanya kita gunakan saja validasi di method clean model lalu ada race condition...


Intinya dengan migrations cenderung menghindari database secara langsung, padahal kenapa harus takut kalau emang dibutuhkan, field diubah jadi unique? Ya lakukan cleansing dong kalau emang sebelumnya belum unique.


ORM membantu kita menulis query dengan mudah, tapi balik lagi pokoknya pake ORM django udah nyediain ORM harus kita pake dong, tapi akhirnya menambah abstraksi-abstraksi lainnya, nemu N+1 problem deh, ratusan query untuk nampilin data "sederhana" sedangkan ketika menulis query mungkin hanya beberapa baris saja, dan fyi nih django juga menyedian raw query!.

Jadi...?

Jadi baca dokumentasi ya memang harus agar bisa mengurangi kesalahan-kesalahan, karena pasti di dokumentasi ada juga best use case untuk fiturnya, cocoknya di mana, tidak cocoknya di mana. Jadi apakah saya masih pake django? Ya kalau ada kesempatan masih, justru dengan pengalaman melakukan kebodohan ini saya lebih pede karena setidaknya saya bisa menghindari kesalahan yang sama.

Ya segitu saja curhatan saya.

Show Comments