00:00:00Tahukah kamu apa yang lebih membuat frustrasi daripada membangun sebuah proyek? Tidak tahu harus membangun apa.
00:00:04Pada titik tertentu dalam perjalananmu sebagai pengembang, kamu akan mencapai fase yang aneh ini.
00:00:08Membangun aplikasi CRUD lainnya dengan framework JavaScript terasa membosankan,
00:00:11tapi membangun sistem operasi dari nol rasanya mustahil. Kamu terjebak di tengah-tengah.
00:00:16Kamu tidak ingin yang terlalu mudah. Kamu tidak ingin yang mustahil. Kamu hanya ingin sesuatu yang bermakna.
00:00:21Sesuatu yang cukup menantang untuk meningkatkan keahlianmu, tapi tidak begitu sulit sampai kamu berhenti di tengah jalan.
00:00:26Percayalah, saya pernah merasakannya. Jadi dalam video ini, saya akan memberikan beberapa ide proyek yang sangat bagus.
00:00:32Saya membagi ini ke dalam tiga level. Level satu, membangun fondasi. Level dua, penyimpanan,
00:00:38database, dan sistem data. Dan level tiga, sistem tingkat lanjut dan internal.
00:00:44Jika kamu membangun proyek-proyek ini, kamu tidak hanya akan menjadi lebih baik dalam coding. Kamu akan mulai berpikir layaknya seorang
00:00:49engineer. Mari kita mulai dengan level satu. Proyek pertama adalah membangun server HTTP milikmu sendiri dari
00:00:55nol. Jika kamu menonton ini, kamu mungkin tahu apa itu server HTTP. Setiap kali kamu membuka
00:01:01sebuah situs web atau memanggil API, ada permintaan dan respons yang terjadi di balik layar.
00:01:06Tapi selama ini, kamu hanya berinteraksi dengannya melalui framework seperti Express. Membangun server
00:01:12HTTP mini sendiri memaksamu untuk memahami apa yang sebenarnya terjadi di bawahnya. Kamu akan belajar bagaimana soket TCP
00:01:19mengirim dan menerima data, bagaimana permintaan HTTP di-parse, bagaimana respons diformat, dan bagaimana banyak
00:01:25permintaan ditangani secara bersamaan. Jika kamu sudah merasa kewalahan tentang bagaimana kamu
00:01:30seharusnya mengerjakan proyek-proyek ini, saya punya sedikit solusi untukmu di akhir video ini. Pastikan
00:01:35jangan sampai terlewatkan. Sekarang mari kita lanjut ke proyek kedua. Membangun shell milikmu sendiri. Kamu pernah menggunakan
00:01:40perintah seperti cd, ls, pwd ratusan kali. Tapi pernahkah kamu berpikir tentang apa yang sebenarnya memproses
00:01:46perintah-perintah itu? Saat kamu membangun shell sendiri, kamu menciptakan sistem itu sendiri. Kamu akan mempelajari hal-hal
00:01:52seperti membaca dan memproses input pengguna, menjalankan proses dan menangani system call, serta
00:01:58memahami konsep tingkat OS seperti proses dan perintah. Dengan membangun shell sendiri dari nol,
00:02:04kamu akan memahami komputer dari level yang mendalam. Sekarang hal-hal mulai menjadi menarik. Kita akan melihat apa saja
00:02:09proyek yang ada di level dua. Proyek pertama di sini adalah membangun Redis milikmu sendiri. Redis adalah
00:02:15penyimpanan data in-memory yang digunakan sebagai cache, database, broker pesan, dan banyak lagi. Ini sangat cepat. Tapi
00:02:21sampai kamu membangunnya sendiri, kamu tidak akan benar-benar mengerti alasannya. Saat kamu mengimplementasikan tiruan
00:02:26Redis milikmu sendiri, kamu akan belajar cara kerja struktur data in-memory. Kamu akan mengimplementasikan perintah dasar Redis. Kamu
00:02:32akan memahami protokol Redis. Kamu akan mengelola banyak koneksi klien secara efisien menggunakan event
00:02:38loop. Ini hanyalah beberapa poin utamanya. Masih banyak hal yang akan kamu pelajari setelah kamu mulai
00:02:43mengerjakan ini. Kamu akan menyadari bahwa rekayasa perangkat lunak lebih dari sekadar membangun aplikasi CRUD.
00:02:48Proyek berikutnya adalah membangun GIT milikmu sendiri. Kamu menggunakan GIT setiap hari. Tapi tahukah kamu cara kerjanya?
00:02:54Saat kamu membangun sistem kontrol versi yang disederhanakan sendiri, semuanya akan menjadi jelas. Kamu akan memahami
00:03:00bagaimana commit disimpan secara internal. Kamu akan mengimplementasikan hashing dan penyimpanan beralamat konten.
00:03:05Kamu akan menyusun snapshot file ke dalam pohon commit. Dan ada banyak lagi yang akan kamu pelajari dan implementasikan.
00:03:11Dan hal hebat tentang membangun dari nol adalah kamu bisa memodifikasinya agar bekerja sesuai keinginanmu.
00:03:16Terakhir, proyek ketiga kita adalah membangun database SQLite milikmu sendiri. SQLite adalah sebuah engine
00:03:22database serverless yang menyimpan semuanya dalam satu file. Tidak seperti MySQL atau Postgres, tidak ada proses
00:03:29server terpisah. Ia ringan namun sangat kuat. Saat kamu membangun versimu sendiri,
00:03:34kamu akan mengerti bagaimana data diatur menggunakan struktur seperti B-tree. Kamu akan mem-parse dan menjalankan
00:03:39query sederhana. Kamu akan mengimplementasikan pengindeksan untuk pengambilan data yang lebih cepat. Sebagai pengembang, kamu tidak bisa lepas dari
00:03:45database. Tapi begitu kamu memahami cara kerjanya secara internal, kamu akan menjadi bagian dari segelintir pengembang ahli.
00:03:52Sekarang di level tiga, kita masuk lebih dalam. Proyek pertama di sini adalah membangun bahasa pemrograman mini milikmu sendiri.
00:03:58Ya, bahasamu sendiri. Kamu akan membuat sesuatu yang membaca kode, memahaminya, dan menjalankan
00:04:04instruksi. Dan meskipun terdengar menakutkan, ini adalah salah satu proyek paling memuaskan yang bisa kamu bangun.
00:04:10Kamu akan belajar dan mengimplementasikan hal-hal seperti Lexer, Parser, dan Abstract Syntax Tree. Yang terpenting, kamu akan
00:04:17memahami bagaimana interpreter dan compiler sebenarnya bekerja. Ini adalah proyek yang luar biasa karena akhirnya kamu akan
00:04:22mengerti bagaimana kita sebenarnya berkomunikasi dengan komputer. Dan kamu juga bisa pamer bahwa kamu menciptakan
00:04:27sebuah bahasa pemrograman dan menamainya sesuka hatimu. Lalu proyek kedua adalah membangun
00:04:32klien BitTorrent-mu sendiri. Di sinilah sistem terdistribusi mulai berperan. BitTorrent adalah sistem
00:04:38berbagi file peer-to-peer di mana pengguna mengunduh potongan file dari banyak rekan, bukan dari satu server.
00:04:44Saat kamu membangun ini, kamu akan mengimplementasikan penemuan peer, mengelola koneksi antar node, membagi file menjadi
00:04:50potongan-potongan, memastikan integritas file, dan menangani komunikasi terdistribusi. Ini bukan proyek yang mudah.
00:04:57Saya yakin kamu bahkan tidak mengerti setengah dari apa yang baru saja saya katakan. Tapi ini mengajarkanmu bagaimana sistem terdistribusi
00:05:02skala besar sebenarnya berfungsi. Dan akhirnya, proyek terakhir kita adalah membangun asisten coding
00:05:08milikmu sendiri. Sesuatu yang mirip dengan Claude code. Alat AI modern terasa hebat. Namun di balik layar, mereka adalah
00:05:14sistem yang mengintegrasikan model bahasa besar (LLM) dengan arsitektur perangkat lunak tradisional. Saat kamu membangunnya
00:05:20sendiri, kamu akan mengintegrasikan API LLM ke dalam sebuah aplikasi. Kamu akan mem-parse dan mengindeks file proyek
00:05:27untuk memberikan konteks. Kamu akan mengelola prompt dan mengontrol respons. Kamu akan merancang sistem yang
00:05:32memadukan AI dengan prinsip-prinsip rekayasa yang nyata. Dan setelah kamu mulai mengerjakan ini, kamu akan mengerti
00:05:38bagaimana alat coding AI populer ini sebenarnya bekerja di balik layar. Dan tidak hanya itu, karena AI sangat
00:05:44populer saat ini, ini adalah proyek yang sangat bagus dan menantang yang dapat membuatmu menonjol. Mari kita jujur.
00:05:50Beberapa dari proyek ini sulit. Membangun Redis, Git, atau klien BitTorrent milikmu sendiri bukanlah
00:05:55sesuatu yang bisa kamu selesaikan santai dalam satu akhir pekan. Kamu akan buntu. Kamu akan meragukan dirimu sendiri. Terkadang
00:06:01kamu bahkan tidak tahu apakah kamu mengimplementasikannya dengan benar. Dan di situlah biasanya kebanyakan orang
00:06:05berhenti. Jadi untuk mengatasi hal ini, ada sebuah platform bernama CodeCrafters. Ini adalah platform belajar
00:06:11berbasis proyek di mana kamu membangun kembali alat-alat seperti Redis, SQLite, server DNS, server HTTP, langkah demi langkah. Mereka tidak
00:06:19memberimu solusinya. Mereka memberimu pengujian dan pencapaian terstruktur. Dan kamu mengimplementasikan semuanya
00:06:23sendiri. Saya pribadi menggunakannya saat mengerjakan proyek-proyek ini. Dan sejujurnya, memiliki arahan yang
00:06:29terstruktur membuat perbedaan antara berhenti di tengah jalan dan menyelesaikannya. Jadi jika kamu menyukai ide proyek ini tetapi
00:06:34ingin bimbingan sambil tetap melakukan pekerjaan yang sebenarnya, saya akan menyertakan link di deskripsi. Tapi entah kamu menggunakan
00:06:39sebuah platform atau belajar sepenuhnya sendiri, hal yang penting adalah kamu benar-benar membangunnya sendiri. Jika kamu juga
00:06:45telah menjelajahi seluruh internet, mencari proyek berikutnya untuk dibangun, saya harap ini memberimu kejelasan.
00:06:51Mungkin terasa menakutkan pada awalnya, tetapi air dingin tidak akan terasa hangat sampai kamu melompat ke dalamnya. Jika kamu menyukai
00:06:57video semacam ini, pastikan untuk like, subscribe, dan beri tahu saya proyek mana yang akan kamu mulai.
00:07:02Sampai jumpa di video berikutnya.