Tantangan Pemrograman Terbaik untuk Pemula: Latihan Pemrograman dari Tingkat Mudah hingga Sulit
Ini adalah hal yang tidak pernah diperingatkan kepada Anda. Anda bisa menonton tutorial selama sebulan penuh, mengangguk setuju di setiap video, lalu membuka file kosong dan tidak tahu harus mengetik apa. Saya pernah mengalaminya. Kebanyakan orang yang belajar coding juga pernah mengalaminya.
Solusinya membosankan tapi berhasil: selesaikan sendiri masalah-masalah kecil, meskipun awalnya mungkin kurang sempurna. Jadi panduan ini terdiri dari dua bagian. Bagian pertama adalah kumpulan tantangan pemrograman terbaik pilihan untuk pemula (sepuluh di antaranya, kira-kira dari mudah hingga sulit). Bagian kedua mencakup situs-situs tempat Anda akan menemukan ribuan tantangan lainnya setelah Anda menyelesaikan panduan saya.
Bahasa pemrograman apa pun bisa digunakan. Contoh saya menggunakan Python dan sedikit JavaScript, karena itulah titik awal kebanyakan orang. Kerjakan secara berurutan jika memungkinkan. Setiap soal menyisipkan satu ide baru.
Mengapa Tantangan Pemrograman Membangun Keterampilan Pemrograman yang Nyata?
Apa yang dianggap sebagai tantangan? Sesuatu yang kecil dengan jawaban yang jelas dan benar. "Ambil sebuah kata, ucapkan terbalik." "Berikut daftar angka, mana yang terbesar?" Anda tidak perlu menginstal apa pun atau memilih kerangka kerja. Anda hanya perlu menulis sekitar sepuluh baris.
Menonton tutorial berarti mengikuti proses berpikir orang lain. Tantangan pemrograman membalikkan hal itu, dan itu terasa tidak nyaman namun bermanfaat. Anda menebak, lalu terjadi kesalahan, Anda memicingkan mata melihat kesalahan, lalu Anda mencoba lagi. Lakukan itu selama beberapa minggu dan beberapa hal akan menjadi lebih mudah secara perlahan:
- Kefasihan sintaksis. Tidak perlu lagi mencari di Google cara menulis perulangan for untuk kelima kalinya.
- Keterampilan pemecahan masalah. Anda mulai memecah tugas yang tidak jelas menjadi beberapa langkah sebelum Anda mulai mengetik.
- Berpikir logis. Daftar kosong, bilangan bulat negatif, kata satu huruf. Anda mulai mengharapkan hal-hal tersebut.
- Debugging. Teks kesalahan berwarna merah tidak lagi terasa seperti penghinaan.
- Kepercayaan diri. Setiap masalah yang terpecahkan adalah bukti bahwa Anda dapat menulis program sendiri.
Seseorang pernah mengatakan kepada saya bahwa pemrograman memiliki aturan 80/20 sendiri, dan untuk masalah pemula, aturan itu cukup akurat. Sebagian besar masalah tersebut bergantung pada lima langkah yang sama: perulangan, if/else, memanipulasi string, menghitung elemen dalam kamus, dan menelusuri array. Kuasai langkah-langkah tersebut dan banyak masalah "baru" ternyata hanyalah masalah lama yang diberi sentuhan berbeda.

10 Tantangan Pemrograman Mudah untuk Pemula yang Harus Diselesaikan Terlebih Dahulu
Tak satu pun dari ini orisinal, dan itulah intinya. Semua ini muncul di hampir setiap kursus pemula karena memang efektif. Lima yang pertama hanya membutuhkan perulangan, kondisi, dan sedikit penanganan string atau daftar, sementara lima yang terakhir membuat Anda berpikir tentang struktur data mana yang akan digunakan sebelum mengetik apa pun. Apa pun yang terjadi, cobalah untuk tidak mencari di Google setidaknya selama dua puluh menit, meskipun terasa sia-sia.
Tantangan 1: FizzBuzz
Tugasnya adalah mencetak angka 1 hingga 100, tetapi setiap kelipatan tiga muncul sebagai "Fizz", setiap kelipatan lima sebagai "Buzz", dan angka yang merupakan kelipatan dari keduanya malah muncul sebagai "FizzBuzz".
Saya ingat berpikir betapa sederhananya kedengarannya, sampai-sampai terasa menghina. Namun, sebenarnya tidak sesederhana itu, itulah mengapa para pewawancara menyukainya begitu lama. Orang-orang yang banyak membaca tentang pemrograman tetapi hanya sedikit menulis biasanya tersandung pada urutan pengecekan. Versi saya dalam Python terlihat seperti ini:
python untuk n dalam rentang (1, 101): jika n % 15 == 0: cetak("FizzBuzz") jika n % 3 == 0: cetak("Fizz") jika n % 5 == 0: cetak("Buzz") jika tidak: cetak(n)
Setelah berhasil, seret baris % 15 ke bawah, jalankan, dan lihat berapa banyak FizzBuzz yang bertahan. Spoiler: tidak ada.
Tantangan 2: Membalikkan String
"hello" masuk, "olleh" keluar.
Hampir setiap bahasa pemrograman memiliki jalan pintas, seperti s[::-1] di Python atau split("").reverse().join("") di JavaScript, dan tidak masalah untuk menuliskannya sekali saja untuk melihat cara kerjanya. Setelah itu, jujur saja, saya akan menghapusnya dan melakukan versi yang membosankan dengan perulangan yang menambahkan satu karakter setiap kali. Di situlah Anda menyadari bahwa di sebagian besar bahasa pemrograman, string tidak dapat diubah di tempatnya, yang membingungkan banyak orang nantinya jika mereka tidak pernah mempelajarinya di sini.
Tantangan 3: Pemeriksa Palindrom
Palindrom adalah kata seperti "racecar" atau "noon" yang dibaca sama dari kedua arah, jadi fungsi Anda harus menjawab ya untuk kata-kata tersebut dan tidak untuk "hello".
Ketika itu berhasil, ini adalah momen yang tepat untuk meningkatkan kemampuan coding Anda dengan memasukkan "A man, a plan, a canal: Panama", yang hanya akan berhasil setelah Anda mengubah teks menjadi huruf kecil dan menghilangkan spasi serta tanda baca. Anda dapat meminjam kode pembalik string dari tantangan sebelumnya untuk ini, yang terasa menyenangkan.
Tantangan 4: Deret Fibonacci
Anda mungkin pernah melihat urutan angka ini sebelumnya: 0, 1, 1, 2, 3, 5, 8, 13, dengan setiap angka merupakan jumlah dari dua angka di depannya. Fungsi Anda harus mengembalikan n angka pertama dari urutan tersebut.
Dua variabel dan sebuah perulangan sudah cukup. Keseruannya dimulai ketika Anda menulis ulang kode tersebut dengan rekursi, sehingga fungsi tersebut memanggil dirinya sendiri, dan kemudian meminta n = 35. Di sebagian besar laptop, Anda akan menunggu cukup lama, dan mencari tahu mengapa hal itu terjadi adalah pengenalan awal yang lembut tentang pemrograman dinamis. Ini adalah salah satu momen kecil "oh, jadi begitulah" yang akan selalu diingat.
Tantangan 5: Memutar Array
Ambil sebuah array dan sebuah angka k, lalu geser setiap elemen sebanyak k tempat ke kanan, dengan elemen yang berada di ujung akan kembali ke depan. Dengan [1, 2, 3, 4, 5] dan k = 2, Anda akan mendapatkan [4, 5, 1, 2, 3].
Sebagian besar percobaan pertama gagal ketika k lebih besar dari daftar. Memutar lima item sebanyak 7 kali sebenarnya hanya memutarnya sebanyak 2 kali, yang akan terlihat jelas setelah Anda melihatnya dan tidak terlihat sampai saat itu.
Jika Anda berhasil melewati kelima soal itu tanpa terlalu banyak kesulitan, bagus sekali. Soal-soal selanjutnya akan sedikit lebih menantang.
Tantangan 6: Temukan Bilangan Bulat Terbesar dalam Sebuah Array
Mencari angka terbesar itu mudah jika Anda diperbolehkan menggunakan `max()`, jadi Anda tidak menggunakannya. Lakukan dengan menggunakan perulangan, lalu cari juga angka terbesar kedua tanpa harus menelusuri daftar dua kali. Sekarang Anda harus melacak dua nilai dan harus berhati-hati tentang nilai mana yang akan diperbarui terlebih dahulu.
Angka duplikat dan angka negatif adalah hal yang baik untuk diuji, karena banyak solusi awal diam-diam gagal saat menghadapi hal tersebut.
Tantangan 7: Menghitung Huruf Vokal dalam Sebuah Kalimat
Menghitung huruf vokal adalah pemanasan. Latihan sebenarnya adalah menghitung setiap huruf vokal secara terpisah dan menghasilkan sesuatu seperti {"a": 3, "e": 5, "i": 1, "o": 2, "u": 0}.
Bagi banyak pemula, inilah saat di mana kamus (atau objek dalam JavaScript) akhirnya masuk akal, dan itu penting, karena kemungkinan besar ini adalah struktur data yang akan paling sering Anda andalkan selama setahun ke depan.
Tantangan 8: Pemeriksa Anagram
Anagram menggunakan huruf yang persis sama tetapi dengan urutan yang berbeda, seperti "listen" dan "silent", jadi Anda menulis fungsi yang memberi tahu apakah dua string memenuhi syarat.
Ada dua cara yang masuk akal yang saya ketahui. Anda dapat mengurutkan kedua string dan membandingkan hasilnya, atau Anda dapat menghitung berapa kali setiap huruf muncul dan membandingkan jumlah tersebut. Menulis keduanya lalu mempertimbangkan mana yang membutuhkan lebih sedikit pekerjaan pada dasarnya adalah langkah pertama Anda untuk memikirkan efisiensi.
Tantangan 9: Jumlah Dua
Dengan daftar seperti [2, 7, 11, 15] dan target 9, Anda mengembalikan posisi dari dua angka yang jika dijumlahkan hasilnya sama dengan target, yaitu [0, 1].
Kebanyakan orang memulai dengan dua loop bersarang yang mencoba setiap pasangan, dan itu tidak masalah untuk daftar pendek tetapi akan cepat menjadi lambat. Pendekatan yang lebih cepat menyimpan angka yang sudah Anda lihat dalam kamus sehingga Anda dapat mencarinya secara instan. Bukan kebetulan LeetCode menempatkan ini di urutan pertama, karena ini menunjukkan dengan sangat jelas betapa pentingnya struktur data yang tepat.
Tantangan 10: Permainan Tebak Angka
Di sini, komputer memilih angka rahasia antara 1 dan 100, Anda terus menebak, dan komputer akan memberi tahu Anda "terlalu tinggi" atau "terlalu rendah" sampai Anda menebaknya dengan benar, beserta jumlah percobaan yang dibutuhkan.
Ini bukan sekadar teka-teki pemrograman sederhana, melainkan lebih seperti aplikasi kecil dengan input pengguna, perulangan while, dan angka acak. Pada akhirnya, seseorang akan mengetik "pisang" alih-alih angka, jadi Anda juga akan berurusan dengan input yang salah. Dan tidak seperti yang lain, ini adalah permainan yang benar-benar bisa Anda berikan kepada teman untuk dimainkan.
Situs Web Terbaik untuk Tantangan Pemrograman Online
Setelah sepuluh kali percobaan saya berakhir, Anda pasti menginginkan persediaan tanpa batas dengan pengecekan otomatis. Semua situs tantangan pemrograman online ini menawarkan hal itu. Hanya saja, semuanya terasa sangat berbeda.
| Platform | Terbaik untuk | Format | Biaya |
|---|---|---|---|
| Edabit | Pemula mutlak | Tantangan pemrograman singkat di browser. | Tingkat gratis |
| Codewars | Latihan yang digamifikasi | "Kata" yang diberi peringkat dengan solusi dari komunitas. | Bebas |
| Olahraga | Mempelajari kebiasaan baik | Program pembelajaran bahasa dengan pilihan pendamping manusia. | Bebas |
| Kamp Kode Gratis | Pembelajaran terstruktur | Kurikulum dengan latihan dan sertifikasi terintegrasi | Bebas |
| HackerRank | Jalur keterampilan dan persiapan kerja | Soal-soal berbasis topik dengan label tingkat kesulitan | Gratis untuk pelajar |
| Kode Leet | Persiapan wawancara | Soal-soal algoritmik yang diberi label Mudah/Sedang/Sulit | Tingkat gratis |
| CodeChef | Menuju kompetisi | Lintasan latihan plus kontes reguler | Tingkat gratis |
| Proyek Euler | Para pecinta matematika | Teka-teki yang banyak menggunakan matematika, hanya jawaban yang dikirimkan. | Bebas |
| Kemunculan Kode | Kesenangan musiman | Teka-teki harian berbasis cerita setiap bulan Desember | Bebas |
Edabit
Jika seorang teman bertanya kepada saya dari mana harus memulai, saya akan mengatakan Edabit. Soalnya singkat, semuanya berjalan di browser, dan Anda mengumpulkan XP. Python, JavaScript, Java, C++ dan beberapa bahasa lainnya tercakup, dan label "sangat mudah" benar-benar berarti sangat mudah.
Codewars
Codewars menyebut soal-soalnya sebagai kata (istilah bela diri untuk latihan). Soal-soal tersebut diberi peringkat dari 8 kyu, yang paling mudah, hingga 1 kyu. Keajaibannya terjadi setelah Anda mengirimkan jawaban. Anda dapat melihat jawaban orang lain, dan membandingkan sepuluh baris kode Anda yang kaku dengan dua baris kode orang lain yang rapi akan mengajarkan Anda lebih banyak daripada kebanyakan tutorial.
Olahraga
Exercism dijalankan sebagai organisasi nirlaba dan sepenuhnya gratis. Tersedia jalur pembelajaran untuk lebih dari 80 bahasa pemrograman, dan mentor sukarelawan akan memeriksa kode Anda jika Anda memintanya. Anda dapat tetap menggunakan browser atau mengunduh latihan ke komputer Anda sendiri. Saya sarankan Anda memilih opsi kedua pada akhirnya, karena akan membuat Anda terbiasa dengan Visual Studio Code dan terminal.
Kamp Kode Gratis
Ini bukan situs tantangan murni. Ini adalah kurikulum lengkap, tetapi dibangun dari ratusan latihan pemrograman kecil, jadi cocok. Sangat bagus jika Anda menyukai struktur: JavaScript, Python, desain web responsif, dan banyak lagi, dengan proyek sertifikasi di akhir setiap jalur.
HackerRank
HackerRank mengelompokkan soal-soal ke dalam jalur keahlian (Python, SQL, struktur data, algoritma) dan memberi tahu Anda seberapa sulit setiap soal dan berapa banyak orang yang telah menyelesaikannya. Banyak perusahaan menyeleksi kandidat berdasarkan platform ini. Membiasakan diri dengan antarmuka sekarang akan menyelamatkan Anda dari stres di kemudian hari.
Kode Leet
Ini adalah tempat persiapan wawancara. Soal-soal diberi label Mudah, Sedang, dan Sulit, dan bahkan "Mudah" pun mengasumsikan Anda sudah menguasai dasar-dasarnya. Saya akan menganggap tantangan pemrograman di sini sebagai tujuan akhir, bukan titik awal. Kembali lagi ketika sepuluh soal saya terasa rutin.
CodeChef
CodeChef berkembang sebagai situs pemrograman kompetitif. Saat ini, situs ini juga memiliki jalur latihan untuk pemula yang berdampingan dengan kontes regulernya, jadi jika kompetisi berwaktu terdengar menyenangkan, ini adalah tempat yang tepat untuk mencobanya.
Proyek Euler
Soal matematika yang membutuhkan kode untuk dipecahkan. Tidak ada editor di situs ini. Anda menulis program di mana pun Anda suka dan cukup mengetikkan angka akhirnya. Para ahli matematika menyukainya. Sedangkan yang lain cenderung tidak tertarik.
Kemunculan Kode
Setiap bulan Desember, Anda mendapatkan teka-teki dua bagian setiap hari, yang dihubungkan oleh cerita yang lucu. Baru-baru ini, jumlah hari permainan dikurangi dari 25 menjadi 12 hari dan papan peringkat global dihilangkan, jadi saat ini sebagian besar peringkatnya bersifat pribadi dengan teman atau rekan kerja. Teka-teki lama tetap tersedia sepanjang tahun, dan arsipnya merupakan perpustakaan latihan yang fantastis.
Anda juga akan mendengar tentang Coderbyte, yang menggabungkan tantangan dengan kursus wawancara, dan Topcoder, yang memang ditujukan untuk pengembang berpengalaman.
Satu peringatan. Banyak daftar lama masih mengarahkan Anda ke Google Code Jam dan Kick Start. Google menutup keduanya pada tahun 2023, dan hanya arsip masalahnya yang tersisa.

Cara Berlatih Tantangan Pemrograman Tanpa Kelelahan
Menandai sepuluh situs sebagai favorit tidak membuat Anda lebih baik. Kebiasaanlah yang membuat Anda lebih baik. Kira-kira beginilah yang akan saya lakukan:
- Pilih satu bahasa pemrograman dan tetaplah menggunakannya. Python biasanya menjadi pilihan karena kodenya hampir seperti bahasa Inggris. JavaScript masuk akal jika Anda ingin membangun situs web.
- Siapkan editor kode sungguhan. Editor berbasis browser tidak masalah untuk minggu pertama. Menginstal Visual Studio Code sejak awal akan mengajarkan Anda cara menjalankan file, membaca kesalahan di terminal, dan memeriksa berbagai hal dengan debugger.
- Selesaikan satu hingga tiga soal per hari. Latihan coding harian dalam porsi kecil lebih efektif daripada belajar intensif enam jam di hari Minggu. Pola akan lebih mudah dipahami di antara sesi latihan, dan target kecil akan sulit untuk dilewati.
- Setelah Anda selesai, bacalah solusi lain. Di Codewars atau Exercism, lihat dua atau tiga jawaban lain. Anda akan mendapatkan praktik terbaik dan beberapa trik cerdas yang layak ditiru.
- Tinjau kembali soal-soal lama. Seminggu kemudian, kerjakan ulang salah satu soal tersebut dari ingatan. Jika Anda tidak bisa, berarti Anda hanya menghafalnya, bukan memahaminya.
- Mulailah dengan proyek-proyek kecil. Sekitar 30 hingga 50 masalah, buatlah sesuatu: daftar tugas, aplikasi cuaca menggunakan API gratis, atau game petualangan berbasis teks. Di situlah berbagai keterampilan mulai bekerja sama.
Apa yang Harus Dilakukan Saat Anda Terjebak dalam Tantangan Pemrograman
Anda akan menemui kesulitan. Pengembang senior pun sering menemui kesulitan sebelum makan siang. Mereka punya cara untuk mengatasi kesulitan tersebut, jadi tirulah salah satunya:
- Nyatakan kembali masalah tersebut dengan kata-kata Anda sendiri. Banyak sekali momen "Saya tidak bisa menyelesaikan ini" sebenarnya adalah "Saya salah menafsirkannya."
- Kerjakan contoh secara manual. Gunakan input kecil, pena dan kertas, dan catat setiap langkah yang Anda ambil. Selamat, itulah algoritma Anda.
- Tulis pseudocode terlebih dahulu. "Untuk setiap angka, jika lebih besar dari angka terbesar saya saat ini, simpan angka tersebut." Bahasa Inggris sederhana lebih mudah diperbaiki daripada kode.
- Cetak semuanya. Sebagian besar bug disebabkan oleh variabel yang menyimpan sesuatu yang berbeda dari yang Anda duga. Cetak variabel tersebut dan cari tahu.
- Jelaskan dengan lantang. Telusuri kode Anda baris demi baris, kepada seseorang atau bebek karet. Kesalahan perangkat lunak sering kali muncul di tengah kalimat.
- Gunakan petunjuk secara bertahap. Banyak platform menawarkan petunjuk sebelum jawaban lengkap. Ikuti petunjuknya, lalu coba lagi.
Apa pun yang Anda lakukan, jangan menyalin solusi, melihatnya lolos, lalu melanjutkan. Saya pernah melakukan itu untuk sementara waktu dan tidak membuahkan hasil. Jika Anda membaca sebuah jawaban, tutup tab tersebut, tunggu satu jam, dan buat ulang sendiri.
Tantangan Pemrograman Bertema Kripto untuk Pemula Blockchain
Mungkin pembayaran kripto atau blockchain adalah alasan utama Anda ingin belajar pemrograman. Kalau begitu, berlatihlah dengan soal-soal dari dunia tersebut. Dasar-dasarnya identik (string, integer, API), tetapi tugas-tugasnya jauh lebih mirip dengan pekerjaan teknis di dunia nyata. Anda tidak perlu memahami algoritma konsensus untuk semua ini.
- Dapatkan harga koin secara langsung. Akses API harga kripto publik gratis, cetak harga Bitcoin saat ini, dan perbarui setiap menit. Selamat datang, permintaan HTTP dan JSON.
- Validasi format alamat dompet. Periksa apakah string tersebut terlihat seperti alamat yang masuk akal: panjang yang tepat, awalan yang tepat, hanya karakter yang diizinkan. Latihan string yang bagus, dan pengantar yang mudah untuk ekspresi reguler.
- Buatlah konverter satuan. Satoshi ke BTC (1 BTC = 100.000.000 satoshi), wei ke ETH (1 ETH = 10¹⁸ wei). Anda akan segera mengetahui mengapa bilangan floating point dan uang tidak cocok, dan mengapa pengembang menyimpan jumlah sebagai bilangan bulat.
- Lakukan hashing pada sebuah string menggunakan SHA-256. Lakukan hashing pada sebuah kalimat menggunakan pustaka standar Anda, ubah satu huruf, lalu lakukan hashing lagi. Hasilnya akan sangat berbeda. Sifat ini merupakan bagian penting yang menyatukan blockchain.
- Buat halaman pembayaran sederhana. Halaman produk dengan tombol "Bayar dengan kripto" yang membuat faktur uji melalui API gerbang pembayaran.
Yang terakhir itu menyatukan semuanya: sebuah formulir, panggilan API, penanganan kesalahan, dan menampilkan hasilnya kepada pengguna sebenarnya. Gateway seperti Plisio menerbitkan API dan dokumentasi yang dapat Anda gunakan di toko latihan, yang membuat latihan bagi pemula terlihat sangat mirip dengan integrasi e-commerce yang sebenarnya.
Mulailah Latihan Pemrograman Anda dengan Satu Soal Hari Ini
Ketika saya mengingat kembali apa yang sebenarnya membantu saya keluar dari kebuntuan sebagai pemula, itu bukanlah masalah yang sangat sulit. Tantangan pemrograman terbaik untuk pemula ternyata adalah tantangan-tantangan kecil yang membosankan yang benar-benar saya selesaikan, biasanya larut malam dengan teh dingin di samping laptop.
Jadi, buka editor malam ini dan jalankan FizzBuzz, termasuk kode yang jelek sekalipun. Teruslah ikuti daftar saya selagi masih menyenangkan, dan ketika sudah tidak menyenangkan lagi, beralihlah ke situs mana pun dari tabel yang terlihat paling ramah. Pertahankan kebiasaan ini agar tidak sampai melewatkannya. Sebulan dari sekarang, beberapa di antaranya akan terasa hampir membosankan, dan kebosanan itulah yang dirasakan dari dalam saat memiliki keterampilan pemrograman yang sesungguhnya.