How to think like a programmer — lessons in problem solving

How to think like a programmer — lessons in problem solving


Jika andatertarik pada pemrograman, anda mungkin pernah melihat kutipan ini sebelumnya:


“Everyone in this country should learn to program a computer, because it teaches you to think.” — Steve Jobs


Anda mungkin juga bertanya-tanya apa artinya, tepatnya, berpikir seperti seorang programmer? Dan bagaimana Anda melakukannya ?? Intinya, ini semua tentang cara yang lebih efektif untuk pemecahan masalah. Dalam posting ini, tujuan saya adalah mengajari anda seperti itu. Pada akhirnya, Anda akan tahu persis langkah apa yang harus diambil untuk menjadi pemecah masalah yang lebih baik.


Mengapa ini penting?  Pemecahan masalah adalah meta-skill.  Kita semua memiliki masalah. Besar dan kecil. Bagaimana kita berurusan dengan mereka kadang-kadang, yah ... cukup acak. Kecuali Anda memiliki sistem, cara Anda "memecahkan" masalah mungkin adalah seperti ini :


1. Mencoba sebuah solusi.

2. Jika itu tidak berhasil, coba cari cara yang lain.

3. Jika itu tidak berhasil juga, ulangi langkah 2 sampai berhasil.


Ini adalah cara terburuk untuk menyelesaikan masalah! Dan sangat, sangat buang waktu. Cara terbaik untuk memecahkan sebuah masalah melibatkan a) memiliki kerangka kerja (framework) dan b) berlatih.


a) Kerangka kerja (Framework)

Jadi, apa yang harus Anda lakukan ketika Anda menghadapi masalah baru? Berikut langkah-langkahnya:


1. Pahami

Tahu persis apa yang ditanyakan. Sebagian besar masalah terasa sulit karena anda tidak memahaminya (karenanya mengapa ini adalah langkah pertama). Bagaimana cara mengetahui saat anda memahami suatu masalah? Ketika anda bisa menjelaskannya secara sederhana.


Apakah anda pernah terjebak pada suatu masalah, anda mulai menjelaskannya pada orang lain, dan anda langsung melihat celah dalam logika yang tidak anda lihat sebelumnya? Kebanyakan programmer mengetahui perasaan ini. Inilah sebabnya mengapa anda harus menuliskan masalah anda, menggambar diagram, atau memberi tahu orang lain tentang hal itu .

“If you can’t explain something in simple terms, you don’t understand it.” — Richard Feynman


2. Buat Rencana

Jangan terjun langsung ke penyelesaian tanpa rencana, anda harus merencanakan solusi Anda! Tidak ada yang dapat membantu Anda jika Anda tidak dapat menuliskan langkah-langkah yang tepat. Berikan waktu pada otak Anda untuk menganalisis masalah dan memproses informasi.


3. Membagi masalah menjadi bagian kecil

Perhatian. Ini adalah langkah terpenting. Jangan mencoba memecahkan satu masalah besar. Kamu akan kesulitan. Alih-alih, pilah menjadi sub-masalah. Sub-masalah ini jauh lebih mudah untuk dipecahkan. Kemudian, selesaikan setiap sub-masalah satu per satu. Mulailah dengan yang paling sederhana. Paling sederhana berarti yang anda tahu jawabannya.

Misalnya, anggaplah anda seorang programmer baru dan anda diminta untuk menulis sebuah program yang membaca sepuluh angka dan mencari tahu angka mana yang tertinggi ketiga. Untuk programmer baru, itu bisa menjadi tugas yang sulit, meskipun itu hanya membutuhkan sintaks pemrograman dasar.

Jika anda bingung, anda harus mengurangi masalahnya menjadi sesuatu yang lebih sederhana. Alih-alih angka tertinggi ketiga, bagaimana dengan menemukan keseluruhan tertinggi? Masih terlalu sulit? Bagaimana dengan menemukan yang terbesar dari hanya tiga angka? Atau lebih besar dari dua?

“Reduce the problem to the point where you know how to solve it and write the solution. Then expand the problem slightly and rewrite the solution to match, and keep going until you are back where you started.” — V. Anton Spraul


4. Terjebak?

Bagaimana jika anda sudah mencoba membagi masalah ke bagian – bagian kecil atau sub-masalah tapi masih terjebak dan tidak bias menyelesaikannya ? Jangan khawatir, karena hal Ini terjadi pada semua orang! Berikut adalah tiga hal yang harus dicoba ketika anda ada dalam posisi ini :


• Debug: Telusuri langkah demi langkah pada solusi yang anda terapkan sampai anda menemukan di mana anda melakukan kesalahan. Programmer menyebut hal ini dengan istilah debugging .


• Tinjau kembali: Ambil langkah mundur. Lihatlah masalah dari perspektif lain. Adakah sesuatu yang dapat diabstraksi menjadi pendekatan yang lebih umum?


• Research: Google ! Apa pun masalah yang anda miliki, orang lain mungkin sudah pernah memecahkan masalah tersebut. Bahkan kalaupun anda sudah memecahkan masalah yang anda miliki, anda bisa mempelajari cara orang lain memecahkan permasalahan yang sama. Karena perspektif setiap orang bisa berbeda dalam memecahkan sebuah masalah yang sama.


Peringatan: Jangan mencari solusi untuk masalah besar. Hanya mencari solusi untuk sub-masalah. Mengapa? Karena kalau anda tidak “struggle” dalam mencoba memecahkan sebuah masalah, anda tidak akan belajar apa pun. Jika Anda tidak belajar apa pun, anda hanya membuang-buang waktu. Istilahnya “gak kotor ga belajar”.


b) Berlatih

Jangan berharap menjadi hebat setelah hanya dalam satu minggu. Jika anda ingin menjadi pemecah masalah yang baik, pecahkan banyak masalah! Ada banyak cara untuk berlatih memecahkan masalah, seperti catur, Sudoku, video games, puzzle dan banyak lainnya. Bukan berarti anda banyak bermain, tapi cari permainan yang membantu anda mengasah keterampilan dalam menyelesaikan masalah.


Sumber : https://www.freecodecamp.org/news/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2/


  • Share: