Belajar pemrograman 1

Mau Belajar Pemrograman? Yuk, Belajar Menyelesaikan Masalah Terlebih Dahulu

Belajar Menyelesaikan Masalah 1

Photo by Fabian Grohs on Unsplash

Sebagian besar tutorial yang telah kita baca atau tonton selama ini, biasanya menggunakan model ‘menyuapi’. Hal ini tidaklah salah dan boleh-boleh saja, tapi ini kurang bagus jika Anda harus menyelesaikan suatu permasalahan yang nyata.

First, solve the problem. Then, write the code. – John Johnson

Dengan kata lain, Anda perlu mengerjakan suatu solusi di atas kertas secara bertahap. Kemudian mulailah menulis kodenya. Bagi Anda para software engineer pemula, berikut tips dari Geshan Manandhar untuk belajar menyelesaikan masalah terlebih dahulu.

Belajar Menyelesaikan Masalah 2

Photo by Bruce Mar on Pexels

Sering kali kita mendengar software engineer pemula berkata: “Saya bisa mengikuti tutorial dan berpikir saya bisa mengerti konsepnya. Tetapi ketika saya mencoba melakukan hal serupa pada proyek pribadi saya, saya tidak bisa melakukannya. ”

Hal ini terjadi karena ada dua alasan.

Pertama, Anda tidak fokus dan tidak dapat membangun alur sistem penyelesaian. Kedua, Anda terlalu fokus pada kode sehingga Anda tidak fokus pada masalah utama yang Anda coba selesaikan. Masalah seperti ini juga terjadi pada para software engineer bahkan senior software engineer.

Tips terbaik adalah Anda harus tahu kapan harus berhenti atau beristirahat. Kemudian, kembalilah ke masalah dengan cara yang berbeda dan temukan solusinya lebih cepat. Banyak di antara Anda yang mengaitkan hal ini ketika Anda sudah berusaha keras untuk memperbaiki suatu masalah selama berjam-jam. Lalu Anda beristirahat atau tidur sejenak. Kemudian di waktu berikutnya, solusi Anda muncul dalam beberapa menit.

Ini bukan khayalan, tapi ini adalah salah satu cara melihat masalah dari sudut pandang lain.

Mari kita ilustrasikan dengan sebuah contoh

Sebagai contoh, ketika Anda harus melakukan sebuah pekerjaan, misalnya, membuat sistem pengembalian dana (refund) dengan pembayaran (payment).

Anda diberi skema database. Ini adalah tugas back-end dan Anda perlu membuat POST /refund API yang dapat membuat refund dan payment saling terkait. Struktur database-nya adalah sebagai berikut:

Belajar Menyelesaikan Masalah 3

Image by Geshan Manandhar on Medium

Refund selalu memiliki alasan (reason), seperti ‘barang rusak ’atau‘ keterlambatan pengiriman ’.
Anda dapat mendiskusikan API payload dengan salah satu anggota tim. Anda mungkin menyetujui JSON payload di bawah ini:

Belajar Menyelesaikan Masalah 4

Image by Geshan Manandhar on Medium

Skenario umum

Belajar Menyelesaikan Masalah 5

Photo by Christina Morillo on Pexels

Hal yang akan dilakukan kebanyakan software engineer pemula adalah mulai memindai codebase, jika ada. Mereka akan segera menulis beberapa kode. Jika ada budaya pengujian di tempat secara langsung, mungkin mereka menulis beberapa kode pengujian otomatis.

Di sinilah sebagian besar pemula dan bahkan beberapa software engineer yang berpengalaman terjebak. Jangan menulis kode ketika Anda belum menyelesaikan masalahnya.

Langkah yang tepat

Belajar Menyelesaikan Masalah 6

Image by Startup Stock Photos on Pexels

Langkah yang paling tepat adalah duduk dan menyelesaikan masalah di atas kertas secara bertahap. Anda bertanya pada diri sendiri apa yang perlu Anda lakukan. Buat langkah-langkah untuk menyelesaikan masalah itu.

Jika Anda memiliki seseorang yang lebih senior di tim Anda, Anda dapat memvalidasi langkah-langkah Anda dan mendapatkan feedback. Ini juga akan mengurangi waktu review kode.

Jadi bagaimana cara melakukannya?

Pekerjaan yang dijelaskan sebelumnya adalah untuk menulis create/POST API tempat Refunds dengan payments.

Setiap refund dapat memiliki maksimal dua payment. Yang satu bertipe ‘cash’ dan yang lainnya bertipe ‘credit’. Ini juga bisa menjadi satu refund dengan hanya satu pembayaran cash atau credit. Beginilah cara Geshan menulis langkah-langkah penyelesaian tersebut di atas kertas:

  1. Buat metode untuk mendapatkan data dari controller yang dikirim oleh user
  2. Validasi semua input untuk values, refund types, dan reasons
  3. Jika semua validasi lolos, buat nomor alfanumerik acak dengan panjang 10 yang tidak ada dalam tabel refund (recursive check)
  4. Jika validasi gagal merespons dengan pesan kegagalan validasi yang tepat, putuskan struktur respons
  5. Mulai database transaction
  6. Insert the refund related values of refund_nr, reason_reason, is_premium_customer ke tabel refund
  7. Saat berhasil memasukkan, dapatkan id dari insert terakhir
  8. Dengan refund_id, insert payment terhubung dengan values fk_refund, fk_item, amount, is_cash ke tabel payment
  9. Jika semua berjalan lancar lakukan database transaction
  10. Jika ada masalah, kembalikan database transaction
  11. Menanggapi dengan pesan keberhasilan atau kegagalan tergantung pada keberhasilan database transaction dengan struktur yang tepat
  12. Hubungkan controller dan metode ini

Ikuti rencana dalam langkah-langkah, sekarang tulis kodenya

Setelah Anda memiliki rencana langkah-langkah untuk menyelesaikannya, Anda dapat mulai menulis kode. Kemudian, Anda bisa fokus lebih mendalam tentang nama metode, cara mendapatkan koneksi database dan detail lainnya. Bergantung pada bahasa dan framework, Anda juga dapat memutuskan di mana kode validasi berada.

Anda bahkan dapat memecah bagian-bagian tertentu dengan cara yang lebih mudah diselesaikan. Misalnya, logika pengujian dapat berupa sesuatu yang dapat ditulis secara terpisah dan diuji sendiri.

Kesimpulan

Saat Anda menghadapi pekerjaan Anda berikutnya, jangan mengawalinya dengan menulis kode. Pertama, selesaikan masalahnya, lalu buat solusi dengan urutan langkah-langkah. Kemudian, perbaiki solusi Anda dan diskusikan dengan seseorang yang lebih berpengalaman. Ketika Anda puas, terjemahkan solusi tersebut ke kode. Ini agak metodis tetapi sangat efektif.

Karena pemrograman merupakan media untuk solusi, bukan solusi itu sendiri.

Reference

Manandhar, Geshan. 2019. Learning to code? First, learn to solve the problem. [Online] Available at :https://medium.freecodecamp.org/learning-to-code-first-learn-to-solve-the-problem-128475b91301 [Accessed February 11, 2019]

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

One thought on “Mau Belajar Pemrograman? Yuk, Belajar Menyelesaikan Masalah Terlebih Dahulu”