Pedoman pribadi · disusun dari riset & diskusi mendalam · Juli 2026

Dari Laravel ke Backend Go Kelas Dunia

Satu halaman berisi semuanya: peta karier 6 negara, komparasi bahasa & stack, alasan jujur memilih Go, roadmap 8 fase, 90 mini proyek ber-requirements, kamus konsep, dan 40 ide automasi bernilai industri.

6
negara diriset untuk peluang karier
8
fase belajar, dari setup sampai produksi
90
mini proyek dengan requirements jelas
40
ide automasi bernilai bagi perusahaan

Cara pakai pedoman ini: jangan dibaca habis sekali duduk. Ikuti roadmap fase demi fase, kerjakan proyeknya sampai requirements terpenuhi, dan buka bagian lain saat dibutuhkan. Kualitas > kecepatan. Bikin > baca.

01 · Peta Karier

Peluang Karier di 6 Negara

Angka hasil riset Juli 2026 — perlakukan sebagai arah, bukan kebenaran abadi. Verifikasi berkala lewat LinkedIn Jobs, Levels.fyi, dan situs karier perusahaan.

🇮🇩 Indonesia

Pasar rumah

Go + Java = tulang punggung backend startup. Rata-rata Go dev ~$21.6K/th, permintaan tumbuh ~15%/th.

Pemakai: Gojek, Tokopedia, Grab, Stockbit, Ayoconnect, Halodoc, Telkomsel. Titik mulai paling realistis untuk bangun jam terbang.

🇸🇬 Singapura

Premium + EP

Rata-rata engineer ber-skill Go ~S$84K. Grab & TikTok aktif hiring Go.

EP 2026: gaji min S$5.600/bln (S$6.200 finansial), naik dengan umur, wajib lulus poin COMPASS. Kabar baik: role tech = Shortage List (+15–20 poin); EP 5 tahun untuk tech ≥S$10.5K. Ijazah berpengaruh besar — cek daftar MOM lebih awal.

🇲🇾 Malaysia

Hub berkembang

KL / Petaling Jaya jadi hub engineering. Grab membangun backend microservices Go di sini.

Banyak role dari perusahaan crypto & regional. Jarak budaya & bahasa paling dekat dari semua opsi luar.

🇦🇺 Australia

Bayaran tertinggi regional

Golang dev rata-rata AU$148K (entry ~117K, senior ~178K). Permintaan Go +60% dalam 2 tahun.

Java/.NET kuat di enterprise & pemerintah (~$120–160K). 1.800+ role bersponsor visa (TSS 482), terpusat di Sydney & Melbourne.

🇯🇵 Jepang

Kekurangan talenta akut

Defisit 530K engineer → proyeksi 790K (2030). Engineer asing terspesialisasi ¥10–15jt+.

Java dominan mutlak di enterprise/bank (modernisasi legacy bertahun-tahun). Go = perusahaan modern & tim berbahasa Inggris — pintu masuk paling ramah asing. .NET paling lemah untuk pelamar asing.

🇺🇸 Amerika Serikat

Pusat gravitasi

Pasar terbesar & termahal. Go premium 15–25% di atas median Python, 20–30% di atas JS untuk backend.

Mayoritas tooling cloud-native lahir di sini. Remote role Go: $100–120K rata-rata, senior $180K+ — hampir semua nyari mid-senior.

Komparasi cepat

NegaraVolume lowongan GoGaji relatifRemote-friendlyJalur masuk/visaCatatan kunci
🇮🇩 IDTinggi (startup)BaselineSedangTempat bangun fondasi & portfolio
🇸🇬 SGSedangTinggiSedangEP + COMPASS (tech = shortage)Butuh gaji & kualifikasi; sponsor dari employer
🇲🇾 MYSedangMenengahSedangRelatif mudah regionalBatu loncatan regional
🇦🇺 AUSedang (tumbuh +60%)Sangat tinggiBaikTSS 482 (1.800+ role sponsor)Go premium; Java/.NET volume
🇯🇵 JPSedang (Java >> Go)Tinggi utk asingRendah–sedangKekurangan akut; sebagian role ENJava utk volume, Go utk lingkungan modern
🇺🇸 USTinggiTertinggiSangat baikSulit (visa) → jalur remoteTarget remote jangka menengah

🎯 Yang sebenarnya membuka pintu

Bahasa bukan tiket utama. Yang menentukan: seniority, portfolio nyata, bahasa Inggris, dan (untuk onsite) kualifikasi/ijazah. Bahasa hanya menempatkanmu di lajur yang benar.

🗓️ Timeline realistis

0–2 th: fondasi + pengalaman produksi. 2–4 th: mid-level, mulai coba remote/kontrak kecil. 4+ th: remote bergaji baik & EP jadi realistis. Ini maraton, bukan sprint.

02 · Bahasa & Stack

Go vs Java vs .NET — Komparasi Jujur

Ada dua jenis "tenang": tenang karena besar (Java/Python/.NET — lowongan banyak, pesaing banyak) dan tenang karena stabil & langka (Go — lowongan lebih sedikit, pesaing jauh lebih sedikit, bayaran per posisi lebih tinggi).

KriteriaGoJava.NET
Total lowongan globalLebih sedikitSangat banyakBanyak
Gaji per posisiPremium (+15–25% vs Python)SolidSolid
Ramah entry-levelSempit — skew mid/seniorLebar (banyak titik masuk)Lebar
AustraliaPremium, tumbuh +60%Volume besar (enterprise)Sangat kuat (gov/enterprise)
JepangPerusahaan modern, ramah asingDominan mutlak (bank/SIer)Terlemah utk asing
Remote globalSangat baik (63% employer Go remote-friendly)BaikSedang
Habitat khasStartup, product co, fintech, infraKorporat, bank, enterpriseKorporat, pemerintahan
Transisi dari LaravelPaling mulus (bahasa kecil)Berat (enterprise OOP)Berat
Outlook 5–10 thKokoh di niche (terikat K8s/cloud)Kokoh (legacy tak akan mati)Kokoh di habitatnya

Pilih Go kalau…

Target startup/product company/fintech, mau bayaran premium per posisi, transisi mulus dari Laravel, dan tertarik infra/microservices.

Pilih Java kalau…

Mau volume lowongan & jalur visa terbanyak, target korporat/enterprise — apalagi kalau Jepang serius masuk radar.

Pilih .NET kalau…

Fokus spesifik Australia (enterprise & pemerintahan). Untuk Jepang, ini pilihan terlemah bagi pelamar asing.

Strategi jangka panjang

Kombinasi terkuat: satu bahasa fondasi + Go sebagai spesialisasi. Tapi jangan dua-duanya sekaligus — kuasai satu sampai nyaman, baru tambah. Korporat/enterprise → mulai Java/.NET. Startup/product/fintech → mulai Go. Dan ingat: yang menentukan lingkungan kerjamu bukan bahasanya, tapi model bisnisnya — software house menjual jam, product company merawat produk.

03 · Alasan & Bukti

Kenapa Go — Bukti, Inferensi, dan Sisi Jujurnya

Dipisah tegas: mana yang terbukti sekarang, mana yang cuma prediksi masuk akal, dan mana yang melawan Go. Skeptisisme itu sehat.

✓ Terbukti (fakta sekarang)
  • • 18.000+ perusahaan pakai Go: Google, Uber (170K query/detik), Cloudflare, Monzo (bank UK, backend hampir full Go), PayPal, Netflix, Dropbox.
  • • 63% dari 58 perusahaan yang aktif hiring Go bersifat remote-friendly (Cloudflare, Datadog, Shopify, HashiCorp…).
  • • Gaji konsisten 15–25% di atas median Python, 20–30% di atas JS untuk backend.
  • • Stack Overflow 2025: Go masuk paling dikagumi sekaligus bergaji tinggi.
  • • Kubernetes, Docker, Terraform, NATS — semuanya ditulis pakai Go.
≈ Inferensi (masuk akal, bukan bukti)
  • • "Go bertahan 5–10 th" = prediksi. Dasarnya kuat: terikat infrastruktur cloud yang mahal diganti & bergerak lambat.
  • • Janji kompatibilitas Go → kode hari ini tetap jalan bertahun-tahun.
  • • Era AI menguntungkan Go di layer serving/agent: konkurensi + strong typing cocok untuk API AI produksi; kesederhanaannya bikin kode AI-generated mudah direview.
  • • Rust naik di systems programming, tapi beda sweet spot — kemungkinan hidup berdampingan.
✗ Sisi yang melawan Go
  • • Lowongan total jauh lebih sedikit dari Java/Python/JS.
  • • Hampir tak punya "ujung murah": posisi entry-level Go menuntut pengalaman terbukti — pintu lebih sempit di awal.
  • • TIOBE: turun #7 → #16 sepanjang 2026 (popularitas ≠ adopsi produksi, tapi tetap sinyal).
  • • Layoff senior di Pintu = risiko startup yang bakar funding, bukan risiko bahasa. Pelajarannya: nilai kesehatan finansial perusahaan, bukan hindari Go.

Verifikasi sendiri — jangan percaya AI begitu saja

① LinkedIn/Indeed: filter "Golang + Remote", bandingkan volumenya dengan "Java remote" & "Python remote".

② Buka halaman karier Cloudflare, Monzo, Datadog, HashiCorp — cek kebijakan remote & requirement.

③ Baca Stack Overflow Developer Survey langsung dari sumbernya.

④ Cek Levels.fyi / web3.career untuk angka gaji mentah.

Verdict: Go = taruhan solid & struktural aman — tapi hanya berguna di atas kemampuan nyata. Layak, bukan jimat. Dan soal AI: yang tergantikan adalah orang yang cuma memproduksi kode; yang bertahan adalah yang paham sistem & bisa mengorkestrasi agent. Kerja arsitektur & schema yang sudah kamu lakukan justru tier yang tidak diotomasi.

04 · Roadmap

Jalur Belajar — 8 Fase

Go itu bahasa kecil — cuma 25 keyword. Yang bikin terasa banyak adalah mengeborong ujungnya duluan. Ikuti urutan ini, dan jangan pindah fase sebelum lolos tes: bisa bikin latihannya dari nol tanpa nyontek?

0

Setup · ½ hari

Install Go + VS Code + format on save. Paham go run & go mod init.

✓ Siap lanjut: "Hello World" jalan di terminalmu.

1

Fondasi · 3–5 hari

Variabel (:= vs var), tipe dasar, if/for (tak ada while), fungsi + multiple return, error sebagai nilai (if err != nil). Kerjakan A Tour of Go sampai sebelum Methods.

✓ Siap lanjut: bisa nulis fungsi ber-return (value, error) tanpa contoh.

2

Struktur Data · ~1 minggu

Struct, slice (+append/len/cap), map (+make/comma-ok), pointer (&/* — link vs salinan), range. Di titik ini kamu sudah bisa bikin program beneran.

✓ Siap lanjut: program daftar user (tambah, cari, print) dari nol.

3

Mengorganisir Kode · 1–2 minggu

Method & receiver (value vs pointer), packages/modules, interface dasar (implicit implementation), Stringer. Interface & closure butuh waktu buat "klik" — wajar lambat di sini.

✓ Siap lanjut: paham kenapa interface bikin satu fungsi jalan untuk banyak tipe.

4

HTTP + Postgres · 2–3 minggu

net/http Go 1.22+ (GET /users/{id}, r.PathValue), JSON, pgx + sqlc (bukan GORM), migrasi, context.Context di semua I/O. Stdlib dulu — chi nanti kalau butuh; gin/echo abaikan.

✓ Siap lanjut: CRUD API nyambung Postgres, balikin JSON dengan status code benar.

5

Kualitas · ~2 minggu

Error wrapping (%w, errors.Is), table-driven test + httptest, layering ringan handler→service→repository, middleware, validasi, config via env, structured logging.

✓ Siap lanjut: go test ./... lulus dengan test bermakna.

6

Concurrency · ~2 minggu — JANGAN buru-buru ke sini

Goroutine, channel, select, WaitGroup, Mutex, context cancellation, go test -race. Ini alat untuk masalah spesifik (I/O paralel, throughput) — bukan default. Masuk kecepetan = bingung tanpa manfaat.

✓ Siap lanjut: satu program konkuren dengan -race bersih.

7

Produksi · 1–2 minggu

Dockerfile multi-stage (image ~15MB), graceful shutdown, README, deploy. Skill VPS-mu langsung kepake di sini.

✓ Selesai: docker build + run jalan, service start/stop bersih.

Total ~2–3 bulan sampai bisa bikin & deploy API Go layak (5–7 jam/minggu sambil kerja). Bukan lomba.

Jebakan dari PHP: jangan cari "Laravel-nya Go". Tak ada magic/facade/Eloquent — semua eksplisit, dan itu desainnya.

Router: stdlib sampai kerasa sakitnya → chi (100% kompatibel). gorilla/mux tak perlu lagi; gin/echo bikin belajar framework, bukan Go.

05 · Latihan

90 Mini Proyek ber-Requirements

Requirements = kontrak: jalan tapi melanggar satu aturan → belum selesai. Prinsip untuk semua: input tak valid → error bukan panic; tangani slice/map kosong & nilai batas; uang selalu int (sen); mulai Fase 5 test wajib; seluruh Fase 6 harus bersih di go test -race. Difficulty bersifat relatif per fase.

Cakupan: variabel, fungsi, error, struct, slice, map, pointer, rekursi. Tanpa interface/goroutine/HTTP — batasan disengaja biar fondasi kuat. 🟢10 · 🟡35 · 🔴5

1. Penilai Huruf Easy

Skor 0–100 → huruf A–E.

  • • nilaiHuruf(skor) (string, error); di luar rentang → error
  • • Versi kedua: slice skor → slice huruf + rata-rata kelas
2. Statistik Angka Easy

Min, max, jumlah, rata-rata, median dari slice.

  • • Slice kosong → error; median benar utk genap & ganjil
  • • Sort manual (tanpa lib) & jangan ubah slice asli — salin dulu
3. Validator Password Easy

Cek aturan kekuatan password.

  • • Min 8 char, ≥1 besar/kecil/angka/simbol
  • • Error sebutkan SEMUA aturan yang gagal; iterasi []rune
4. Frekuensi Kata Easy

Hitung kemunculan kata → map[string]int.

  • • Case-insensitive; buang tanda baca ujung kata
  • • Fungsi kata tersering (tangani seri konsisten)
5. Pengubah Suhu Easy

Konversi C ↔ F ↔ K.

  • • Kelvin < 0 → error (nol mutlak); skala asing → error
  • • Pembulatan 2 desimal konsisten
6. Pembuat Slug URL Easy

"Hello World!" → "hello-world".

  • • Lowercase, spasi → -, buang tanda baca
  • • Tanpa - ganda / - di ujung; string kosong → error
7. Pemecah Kembalian Easy

Nominal → jumlah tiap pecahan (greedy).

  • • Output map[int]int; proses pecahan besar → kecil
  • • Tak bisa pas → error / laporkan sisa (tentukan & patuhi)
8. Kabisat & Hari Bulan Easy

Tahun kabisat + jumlah hari per bulan.

  • • Aturan lengkap (4/100/400); bulan di luar 1–12 → error
  • • Februari menyesuaikan kabisat
9. Pembalik Kalimat Easy

Balik urutan kata & balik huruf tiap kata.

  • • Rapikan spasi ganda
  • • Gunakan []rune saat membalik huruf (aman unicode)
10. Penghitung Karakter Easy

Vokal, konsonan, digit, lainnya.

  • • Kembalikan sebagai struct, bukan 4 return
  • • Iterasi rune, bukan byte; case-insensitive
11. Manajer Kontak (CRUD) Medium

Kontak{Nama,Telepon,Email} di slice.

  • • Telepon wajib unik; update WAJIB via pointer
  • • Hapus dari tengah tanpa elemen hantu; validasi email @
12. Angka Romawi 2 Arah Medium

int ↔ Romawi, rentang 1–3999.

  • • "IIII"/"VV" → error; algoritma nilai-simbol, bukan tabel penuh
  • • Uji bolak-balik keAngka(keRomawi(n)) == n
13. Inventaris Toko Medium

Produk{SKU,Nama,Harga,Stok} di map.

  • • Jual > stok → error, stok tak berubah; stok tak boleh negatif
  • • Laporan: total nilai + daftar stok menipis
14. Pelacak Pengeluaran Medium

Catat & analisis pengeluaran (sen).

  • • Total per kategori (map), terbesar, rata-rata harian
  • • Filter per kategori; jumlah ≤ 0 → error
15. Buku Nilai Siswa Medium

Siswa{Nama; Nilai map[mapel]nilai}.

  • • Rata-rata per siswa & per mapel; ranking SORT MANUAL
  • • Siswa tanpa nilai → jangan bagi nol
16. Parser CSV Medium

Baris "nama,umur,email" → struct + error list.

  • • Jangan berhenti di error pertama — proses semua
  • • Kembalikan hasil valid DAN daftar error (baris + alasan)
17. Kalkulator RPN Medium

Evaluasi postfix "3 4 + 5 *" = 35.

  • • Slice sebagai stack; bagi nol → error
  • • Operan kurang / sisa > 1 angka → error jelas
18. Antrian Bank Prioritas Medium

Enqueue + panggil prioritas tertinggi.

  • • Seri → yang datang duluan; antrian kosong → error
  • • Keluarkan dari tengah slice dengan benar
19. Analisis Teks Medium

Karakter, kata, kalimat, kata unik, tersering.

  • • Map sebagai set utk kata unik; case-insensitive
  • • Teks kosong → semua nol, tanpa panic
20. Konversi Basis Medium

Antar basis 2/8/10/16.

  • • Inti algoritma tulis sendiri (bukan strconv)
  • • Digit ilegal utk basisnya → error
21. Perpustakaan Medium

Buku (map) + peminjaman (map anggota→ISBN).

  • • Pinjam tak tersedia → error; maks 3 buku/anggota
  • • Pengembalian menjaga state konsisten dua map
22. Kelompok Anagram Medium

Kelompokkan kata → map[string][]string.

  • • Kunci via FREKUENSI huruf (bukan sort huruf)
  • • Case-insensitive; fungsi grup terbesar
23. Mesin Kasir & Struk Medium

Katalog map + keranjang slice.

  • • Diskon berlapis + pajak setelah diskon; semua int (sen)
  • • Pembulatan konsisten; item tak ada → error
24. Penjadwal Tugas Medium

Tugas{ID,Judul,Prioritas,Selesai} di slice.

  • • ID auto-increment; tandai selesai via pointer
  • • Filter belum selesai; sort prioritas manual; statistik
25. Sieve of Eratosthenes Medium

Semua prima ≤ N.

  • • Wajib bool slice (saringan), bukan uji bagi per angka
  • • N < 2 → slice kosong, bukan error
26. Faktorisasi Prima Medium

n → map faktor→pangkat (360 → {2:3,3:2,5:1}).

  • • n < 2 → error
  • • Uji rekonstruksi: kalikan balik harus == n
27. Caesar Cipher Medium

Enkripsi/dekripsi geser huruf.

  • • Wrap alfabet; pertahankan case & non-huruf
  • • Dekripsi = geser negatif; uji bolak-balik
28. Vigenère Cipher Medium

Cipher berbasis kata kunci.

  • • Kunci berulang sepanjang teks; hanya huruf digeser
  • • Kunci kosong/non-huruf → error; uji bolak-balik
29. Run-Length Encoding Medium

"aaabb" ↔ "a3b2".

  • • Dekompres harus rekonstruksi persis
  • • Tentukan aturan utk input berisi angka & patuhi
30. Jarak Levenshtein Medium

Min operasi ubah string A → B.

  • • Wajib matriks DP [][]int
  • • Uji: jarak("kitten","sitting") == 3
31. Validator Luhn Medium

Keabsahan nomor kartu (algoritma Luhn).

  • • Gandakan digit ganjil-dari-kanan; cek habis 10
  • • Non-digit → error; bonus: hasilkan digit cek
32. Kolom Excel Medium

1→A, 27→AA, 703→AAA & sebaliknya.

  • • Basis-26 bijektif (tanpa digit nol) — hati-hati
  • • Input ≤0 / non-huruf → error; uji bolak-balik
33. Formatter Durasi Medium

Detik ↔ "1d 2h 3m 4s".

  • • Hilangkan unit nol (90 dtk → "1m 30s")
  • • Parse balik ke detik; format salah → error
34. Binary Search + Sisip Medium

Cari di slice terurut; tak ada → posisi sisip.

  • • Iteratif, bukan rekursif
  • • Return (index, ketemu bool)
35. Linked List (Singly) Medium

Node{Nilai; Next *Node} — latihan pointer terbaik.

  • • Tambah depan/belakang, hapus, cari, BALIK list, panjang
  • • Tangani list kosong & node terakhir
36. Operasi Himpunan Medium

Union/intersection/difference/subset via map[T]bool.

  • • Input slice → buang duplikat otomatis
  • • Hasil slice terurut (deterministik)
37. Operasi Matriks Medium

[][]int: tambah, kali, transpose.

  • • Validasi dimensi (kali: kolomA == barisB) → error
  • • Matriks tak beraturan → error
38. Spiral Matriks Medium

Cetak NxM urutan spiral searah jarum jam.

  • • Murni logika indeks (batas menyusut)
  • • Uji dengan matriks non-persegi
39. Evaluator Tic-Tac-Toe Medium

Papan 3x3 → menang/seri/jalan.

  • • Deteksi 8 garis kemenangan
  • • Papan ilegal (selisih X-O janggal) → error
40. Papan Minesweeper Medium

Posisi ranjau → grid angka tetangga.

  • • Ranjau = -1; lainnya hitung 8 tetangga
  • • Tepi & sudut dihitung benar
41. Sandi Morse Medium

Encode teks ↔ decode morse.

  • • Pisah huruf spasi, kata "/"
  • • Karakter tak didukung → error; uji bolak-balik
42. Keseimbangan Kurung Medium

Validasi ()[]{} via stack.

  • • Kembalikan POSISI karakter yang gagal
  • • Karakter lain diabaikan (hanya cek kurung)
43. Parser Konfigurasi Medium

Baris key = value → map.

  • • Abaikan komentar # & baris kosong; trim spasi
  • • Baris tanpa = → error dengan nomor baris
44. Kalkulator Pecahan Medium

Pecahan{Pembilang,Penyebut}: + − × ÷.

  • • Hasil selalu disederhanakan (GCD sendiri)
  • • Penyebut 0 → error; tanda negatif konsisten
45. Angka ke Kata (ID) Medium

0–9999 → "seribu dua ratus tiga puluh empat".

  • • Aturan "se" (seratus/seribu), "belas", "puluh"
  • • Di luar rentang → error
46. Kalkulator Infix Hard

"3 + 4 * (2 - 1)" = 7 dengan presedensi & kurung.

  • • Tokenize → shunting-yard 2 stack / recursive-descent
  • • Error: kurung tak seimbang, bagi nol, karakter ilegal; TANPA library eval; ≥10 test
47. Game of Life Hard

Otomata seluler Conway di grid 2D.

  • • Aturan 2–3 bertahan, 3 lahir; luar grid = mati
  • • BIKIN GRID BARU saat menghitung (jangan mutasi in-place)
  • • Uji blinker (osilasi) & block (diam)
48. Sudoku Solver Hard

Selesaikan 9x9 dengan backtracking.

  • • Validasi papan awal legal → error jika tidak
  • • Coba 1–9 valid per sel kosong, mundur jika buntu
  • • Tak terpecahkan → laporkan, bukan loop selamanya
49. BFS Pathfinding Hard

Jarak terpendek A→B di grid berdinding.

  • • Wajib BFS: slice sebagai queue + penanda dikunjungi
  • • Kembalikan panjang + jalur; tak terjangkau → error
50. Kompresi Huffman Hard

Bangun pohon Huffman, encode + decode.

  • • Gabung 2 node terkecil berulang (struct + pointer)
  • • Decode balik harus persis; laporkan rasio kompresi

Fase 3 — Method, Interface, Package: fondasi arsitektur (Repository, Strategy, State Machine) yang bikin Fase 4 rapi. 🟢2 · 🟡8 · 🔴2

1. Library Geometri Easy

Interface Shape{Area;Perimeter} + ≥4 implementasi.

  • • Fungsi terima []Shape hitung total area tanpa tahu tipe konkret
  • • Package terpisah; dimensi negatif → error saat pembuatan
2. Domain Error Types Easy

ErrNotFound/ErrConflict/ErrValidation yang benar.

  • • Dukung errors.Is & errors.As; bungkus dengan %w
  • • Pola yang dipakai di SEMUA API nanti — kuasai sekarang
3. Repository Pattern (In-Memory) Medium

interface UserRepository + implementasi map.

  • • Semua operasi terima context.Context
  • • Kembalikan ErrNotFound saat ID tak ada; pemakai bergantung ke interface, bukan implementasi
4. Event Bus / Pub-Sub Medium

Publisher → subscriber via interface Handler.

  • • Subscribe per topik; publish panggil semua handler
  • • Error satu handler tak menghentikan yang lain (kumpulkan)
5. Validation Engine Medium

Aturan validasi yang bisa dikomposisi.

  • • interface Rule{Validate}; required/minLen/email/range
  • • Kembalikan SEMUA error field sekaligus; tanpa reflection
6. Package Money Medium

Value type uang yang aman.

  • • int64 sen + kode mata uang; Add/Sub/Mul/String
  • • Antar mata uang beda → error; immutable; implement Stringer
7. State Machine (Order) Medium

draft → submitted → approved/rejected → completed.

  • • Transisi ilegal → error; riwayat transisi (siapa/kapan/dari→ke)
  • • Larangan ubah status langsung tanpa method transisi
8. Processor Pipeline Medium

Rantai interface Processor{Process} berurutan.

  • • Gagal → berhenti, error dipropagasi dengan konteks
  • • Bisa sisip processor baru tanpa ubah yang lain
9. Serializer Abstraction Medium

interface Serializer: JSON & CSV.

  • • Pemakai pilih implementasi saat runtime, sisanya tak berubah
  • • Data tak kompatibel format → error jelas
10. Pricing Engine (Strategy) Medium

interface DiscountStrategy dengan ≥3 strategi.

  • • Persentase, potongan tetap, beli-X-gratis-Y
  • • Semua int (sen); diskon tak boleh > subtotal
11. Mini DI Container Hard

Register & resolve dependency by interface.

  • • Dependency belum terdaftar → error (bukan nil diam-diam)
  • • Dukung singleton vs factory
12. Extensible Expression Evaluator Hard

Evaluator + fungsi yang bisa didaftarkan.

  • • interface Function{Call}; daftarkan sqrt/max/min
  • • Variabel via map injeksi; fungsi tak terdaftar → error; package rapi (parser/evaluator/registry)

Fase 4 — HTTP + Postgres: pola API produksi nyata. 🟢2 · 🟡6 · 🔴2

13. JSON REST API (In-Memory) Easy

CRUD satu resource via HTTP tanpa DB.

  • • Status code benar (200/201/204/400/404); envelope error JSON konsisten
  • • Body invalid → 400 dengan pesan jelas; pakai repository Fase 3 #3
14. Health & Readiness Easy

Endpoint operasional standar produksi.

  • • /healthz, /readyz (cek dependency, 503 jika belum siap)
  • • /version dari variabel build
15. CRUD + Postgres (pgx+sqlc) Medium

API persisten sungguhan — proyek inti fase ini.

  • • Pool pgx; query type-safe via sqlc dari SQL asli; migrasi skema
  • • Semua query terima context; ErrNotFound → 404; data selamat setelah restart
16. Pagination, Filter, Sort Medium

Endpoint list layak produksi.

  • • Offset DAN cursor-based (jelaskan trade-off di README)
  • • Filter parameterized (anti SQL-injection); sort whitelisted → sisanya 400
17. Auth: Register & Login (JWT) Medium

Otentikasi dasar tapi benar.

  • • Password hash bcrypt — JANGAN pernah plaintext
  • • JWT ber-exp + middleware proteksi; token invalid → 401 konsisten; jangan gulung kripto sendiri
18. File Upload & Serving Medium

Multipart upload + unduh.

  • • Validasi tipe & ukuran → 400/413; nama aman (anti path traversal)
  • • Metadata ke DB; content-type benar saat serve
19. Idempotency Keys Medium

Cegah operasi ganda (pola pembayaran).

  • • Header Idempotency-Key: request ulang → hasil pertama TANPA eksekusi ulang
  • • Key sama + body beda → 409/422; TTL untuk key
20. Structured Error & Validation Medium

Kontrak error API konsisten.

  • • Envelope {code,message,fields}; semua error field sekaligus
  • • Petakan error domain → status HTTP di SATU tempat terpusat
21. Multi-Tenant API Hard

Isolasi data antar tenant (pola SaaS/HexaRIS).

  • • Middleware ekstrak tenant → context; SEMUA query ter-scope company_id
  • • Uji: tenant A akses milik B → 404 (bukan 403, agar tak bocorkan keberadaan)
22. Transactional Money Transfer Hard

Konsistensi transaksi DB yang benar.

  • • Satu transaksi DB; gagal → rollback penuh
  • • Cegah race dengan SELECT ... FOR UPDATE; uji konkuren: saldo tak boleh negatif

Fase 5 — Kualitas: yang memisahkan "bisa ngoding" dari "bisa dipekerjakan". Test wajib. 🟢2 · 🟡4 · 🔴2

23. Middleware Suite Easy

Logging, Recovery, Request-ID, CORS.

  • • Dirantai bersih; Request-ID mengalir ke log & respons
  • • Recovery: panic → 500 + log lengkap, tidak ditelan diam-diam
24. Structured Logging & Config Easy

log/slog + config 12-factor.

  • • JSON di produksi, teks di dev; level via env
  • • Validasi config saat startup — env kurang → gagal cepat
25. Test Suite Lengkap Medium

Uji API Fase 4 menyeluruh.

  • • Unit table-driven + integration via httptest
  • • DB test dengan transaksi rollback per test; jalur error diuji
26. Rate Limiter Medium

Token bucket per-IP / API-key.

  • • Lewat batas → 429 + Retry-After
  • • Aman konkuren; bersihkan entri idle (anti memory leak)
27. Layered Architecture Refactor Medium

handler → service → repository.

  • • Handler tak tahu SQL; service tak tahu HTTP
  • • Service teruji dengan repository fake tanpa DB; jangan overengineer
28. Caching Layer (Cache-Aside) Medium

interface Cache + in-memory ber-TTL.

  • • Cek cache → miss → DB → isi; invalidasi saat data berubah
  • • Aman konkuren; TTL benar-benar mengekspirasi
29. Observability Penuh Hard

Instrumentasi ala produksi.

  • • Metrics Prometheus (counter status, histogram latensi) di /metrics
  • • Trace-ID dipropagasi menembus handler→service→repo via context
30. Contract Test Dependency Hard

Uji perilaku saat memanggil layanan lain.

  • • httptest.Server sebagai dependency palsu
  • • Uji retry, timeout, 4xx/5xx; context cancellation menghentikan panggilan

Fase 6 — Concurrency: seluruh proyek WAJIB bersih di go test -race. 🟢1 · 🟡3 · 🔴2

31. Worker Pool Easy

Pola konkurensi paling fundamental.

  • • N worker dari channel job → channel hasil; WaitGroup
  • • Tak ada goroutine bocor; WAJIB -race bersih
32. Fan-Out / Fan-In Medium

Sebar kerja, gabungkan hasil.

  • • Tanpa kirim ke channel tertutup
  • • Opsi: pertahankan urutan hasil sesuai input
33. Bounded Concurrent Processor Medium

Konkurensi terbatas + pembatalan.

  • • Semaphore via channel berbuffer (maks G goroutine)
  • • Context timeout batalkan batch; kebijakan gagal konsisten
34. Job Queue + Graceful Shutdown Medium

Antrian background (pola HexaRIS).

  • • Shutdown: stop terima job baru, SELESAIKAN yang jalan, keluar
  • • Tak ada job hilang; tak ada goroutine menggantung
35. Concurrent Pub-Sub Broker Hard

Broker in-memory aman konkuren.

  • • RWMutex utk struktur subscriber; per-topik
  • • Subscriber lambat tak blokir yang lain (buffer/drop, dokumentasikan); -race bersih di bawah beban
36. Cache + Singleflight Hard

Cegah thundering herd.

  • • Banyak request identik saat miss → HANYA SATU yang menghitung
  • • Uji: 100 goroutine, fungsi mahal terpanggil tepat sekali

Fase 7 — Produksi & Microservices: capstone menyatukan semuanya. 🟡2 · 🔴2

37. Dockerized Service Medium

Service siap deploy.

  • • Multi-stage → distroless/scratch, CGO_ENABLED=0, image < ~30MB
  • • Graceful shutdown SIGTERM; healthcheck; config via env
38. Two-Service System Medium

Dua service saling memanggil — inti microservices.

  • • Correlation-ID propagasi antar service (header→context→log)
  • • B down → A anggun (bukan crash/hang); docker-compose + Postgres
39. Resilient Client (Package) Hard

Klien tahan-banting reusable.

  • • Retry exponential backoff + jitter; timeout per-request via context
  • • Circuit breaker closed→open→half-open + fallback; uji tiap transisi state
40. Capstone: Microservice Lengkap Hard

Satukan semuanya — portfolio piece.

  • • CRUD + Postgres + auth + multi-tenant + worker pool + graceful shutdown
  • • Migrasi saat startup; health/metrics/structured logs
  • • Dockerfile + compose + README catatan deploy VPS

Milestone: selesai Fase 3–4 → layak banyak posisi Go junior. Selesai Fase 5 → "hireable" backend engineer. Capstone → bukti nyata.

Tak perlu tamat semua: selesai #11–35 Fase 1+2 saja sudah siap ke Fase 3. Proyek hard = penempaan bonus, boleh berhari-hari.

Mentok 30–45 menit itu sehat. Jangan langsung lihat solusi — di kebuntuan itulah belajar terjadi. Refactor sekali tiap selesai.

06 · Kamus Konsep

Kamus Go — dari Dasar sampai Lanjut

Tiap istilah: analogi satu kalimat + inti + contoh kode. Urut dari paling dasar. Klik untuk membuka.

Variabel & :=

Kotak berlabel berisi nilai.

`:=` = deklarasi + isi sekaligus (hanya di dalam fungsi). `var` = deklarasi biasa. Tipe statis — tak bisa ganti tipe.

i := 12          // deklarasi + isi
var nama string  // deklarasi, isi zero value ("")
Error sebagai nilai

Error itu return value biasa, bukan exception.

Tak ada try/catch. Fungsi mengembalikan (hasil, error); kamu cek `if err != nil` di mana-mana. Terima saja — ini desain, bukan kekurangan.

hasil, err := bagi(10, 0)
if err != nil {
    return err // tangani atau teruskan
}
Pointer (& dan *)

Link Google Docs vs kirim file Word.

Value biasa = kirim salinan (edit tak nyampe ke asli). Pointer = kirim link ke data asli (edit nyampe). `&x` = ambil link; `*p` = buka link. Dipakai untuk: mutasi asli, hemat memori struct besar, dan menyatakan "kosong" (nil). JS/PHP juga pakai pointer — cuma disembunyikan.

i := 12
p := &i     // p = link ke i
*p = 99     // ubah lewat link
// i sekarang 99, tanpa pernah nulis i = 99
Struct

Formulir dengan kolom yang sudah dicetak.

Bentuk data tetap yang field-nya diketahui dari awal (User, Product). Kebalikan dari map yang key-nya dinamis. Struct = "kamu APA".

type User struct {
    Name string
    Age  int
}
u := User{Name: "Firnanda", Age: 23}
Array vs Slice

Kotak telur permanen vs kotak ajaib yang memanjang.

[3]int = array, ukuran mati. []int = slice, bisa nambah via append. Sehari-hari 99% pakai slice. Slice = "jendela" ke array di baliknya — mengopi slice TIDAK mengopi datanya (dua slice bisa berbagi rak!).

a := [3]int{1,2,3} // array: permanen
s := []int{1,2,3}  // slice: fleksibel
t := s; t[0] = 99  // s ikut berubah! (satu rak)
len & cap

Penumpang di bus vs jumlah kursinya.

len = isi sekarang; cap = kapasitas rak di baliknya. append menulis ke rak yang sama selama muat; kalau penuh, Go carter rak baru lebih besar (makanya WAJIB s = append(s, ...)).

s := make([]int, 0, 2) // len 0, cap 2
s = append(s, 10, 20)  // len 2, cap 2 (penuh)
s = append(s, 30)      // rak BARU: len 3, cap 4
make

Sewa bus dengan jumlah kursi dari awal.

Bikin slice/map dengan ukuran/capacity awal — efisien kalau sudah tahu kebutuhan. Untuk map, make itu WAJIB sebelum menulis (nil map ditulis = panic; beda dengan slice yang boleh append dari nil).

b := make([]int, 3, 10)   // len 3, cap 10
m := make(map[string]int) // wajib sebelum m[k]=v
Map

Kamus / object key-value (mirip {} di JS).

Simpan data dengan label bebas, bukan nomor. Key tak ada → zero value (bukan error!) — cek pakai comma-ok. Urutan range di map ACAK, jangan diandalkan. Struct utk bentuk tetap; map utk key dinamis.

saldo := map[string]int{"budi": 100}
v, ok := saldo["hantu"] // 0, false → tak ada
delete(saldo, "budi")
range

Guru mengabsen satu-satu.

Iterasi slice/map: dapat index + value. AWAS: value-nya FOTOKOPI — mengubah v tak mengubah slice; pakai index kalau mau mutasi.

for i, v := range buah { _ = v }
for i := range angka { angka[i] *= 2 } // mutasi benar
Function value

Fungsi = barang yang bisa disimpan & dioper.

Fungsi bisa ditaruh di variabel dan dikirim sebagai argumen — fondasi untuk closure dan pola callback.

kuadrat := func(x int) int { return x * x }
fmt.Println(kuadrat(5)) // 25
Closure

Fungsi yang bawa tas ransel dari tempat lahirnya.

Fungsi dalam mengingat variabel fungsi luar — bahkan setelah fungsi luar selesai. Nilai bertahan antar panggilan.

func counter() func() int {
    n := 0            // masuk "tas ransel"
    return func() int { n++; return n }
}
c := counter(); c(); c() // 1, lalu 2
Method & Receiver

Fungsi yang nempel ke tipe, dipanggil pakai titik.

(u User) = value receiver → dapat fotokopi (perubahan hilang). (u *User) = pointer receiver → bisa ubah asli. Aturan: mengubah isi / struct besar → pointer; ragu → pointer; satu tipe konsisten. Go otomatis urus &/* saat memanggil.

func (u *User) UlangTahun() { u.Age++ }
u.UlangTahun() // Go otomatis (&u).UlangTahun()
Interface

Struct = kamu APA; interface = kamu BISA APA.

Kontrak kemampuan. Implementasi IMPLICIT: punya method yang cocok = otomatis lolos, tanpa "implements". Bikin satu fungsi jalan untuk banyak tipe — tipe baru masuk tanpa mengubah fungsi lama.

type Hewan interface { Suara() string }
func (b Bebek) Suara() string { return "Kwek" }
// Bebek otomatis Hewan — tanpa deklarasi apa pun
Jebakan nil interface

Kotak berlabel-tapi-kosong ≠ kotak kosong total.

Interface menyimpan (tipe, nilai). Ia == nil HANYA jika keduanya nil. Pointer nil yang dimasukkan ke interface → interface TIDAK nil. Jebakan paling terkenal di Go.

var a *Anjing = nil
var h Hewan = a
fmt.Println(h == nil) // false! (tipe=*Anjing, nilai=nil)
any, assertion, type switch

Kotak tanpa syarat + cara membukanya.

any (interface{}) muat apa saja. Buka pakai assertion v.(T) — versi aman: comma-ok. Banyak tipe → type switch.

v, ok := apa.(string)   // aman, tanpa panic
switch x := apa.(type) {
case int:    _ = x * 2
case string: _ = len(x)
}
Stringer

Ajari struct memperkenalkan diri.

Beri method String() string → fmt.Println otomatis memakainya. Contoh implicit interface yang paling sering kepake.

func (u User) String() string {
    return fmt.Sprintf("%s (%d th)", u.Nama, u.Umur)
}
fmt.Println(u) // Firnanda (23 th)
context.Context

Tali/remote pembatalan untuk pekerjaan yang jalan.

BUKAN soal data — soal kontrol proses: batalkan query/API call saat user pergi, atau pasang timeout. Selalu parameter PERTAMA di fungsi I/O. Jangan ketuker sama pointer.

func ambilData(ctx context.Context) error {
    // ctx memberi sinyal berhenti ke query di sini
}
Goroutine & Channel (nanti — Fase 6)

Pekerja paralel + pipa komunikasinya.

Goroutine = jalankan fungsi "barengan" (go f()). Channel = cara antar goroutine bertukar data dengan aman. Mutex = kunci anti-rebutan. context utk pembatalan. JANGAN sentuh sebelum Fase 1–5 nyaman — ini alat untuk masalah spesifik, bukan default.

// gambaran saja — pelajari di Fase 6
go kerjakan(data)   // jalan paralel
// channel & mutex menyusul saat fondasi kokoh

07 · Automasi Industri

40 Ide Automasi Bernilai bagi Perusahaan

Automasi bernilai kalau menyentuh minimal satu: hemat waktu · kurangi error · skala tanpa nambah orang · kecepatan real-time · buka pendapatan. Rumus prioritas: (nilai × frekuensi) ÷ kompleksitas — mulai dari skor tertinggi.

Tingkat 1 · Cron

Terjadwal, rule tetap. Paling andal & paling banyak dibutuhkan — jangan diremehkan.

Tingkat 2 · Event-driven

Bereaksi ke kejadian (webhook/queue). Inti sistem modern.

Tingkat 3 · AI-augmented

AI utk yang fuzzy (klasifikasi/ekstraksi), rule utk yang pasti.

Tingkat 4 · Agentic

AI multi-langkah + tools. Nilai tertinggi, butuh guardrail ketat.

Insight: proyek termahal menggabungkan tingkat — cron utk laporan + event utk notifikasi + AI utk triage dalam satu sistem.

📣 Content & Marketing

Multi-Platform Social Scheduler Cron+Event

Posting terjadwal lintas IG/FB/X/LinkedIn/TikTok — hemat 10–15 jam/minggu tim marketing.

Content Repurposing Pipeline AI

1 video panjang → 10 klip + caption + subtitle otomatis. Yang bikin agency konten bisa scale.

AI Blog/SEO Pipeline AI

Keyword → riset → draf SEO → publish CMS terjadwal. Volume konten naik drastis.

Email Drip & Newsletter Event+AI

Sequence berbasis perilaku + kurasi AI. Nurturing lead tanpa tim.

💼 Sales & CRM

Lead Enrichment & Scoring AI+Event

Auto-lengkapi data lead + skor prioritas. Sales fokus ke lead panas.

Lead Routing Event

Distribusi lead ke sales tepat + notifikasi. Respons cepat = lebih banyak deal.

Follow-Up Sequence Engine Cron+Event

Follow-up berjenjang email/WA sampai respons. Recover deal yang hilang karena lupa.

Proposal/Quote Generator AI

Data klien → proposal terformat dalam menit, bukan jam.

💬 Customer Support

AI Chatbot dengan RAG AI

Bot WA/web menjawab dari basis pengetahuan perusahaan. Tangani 60–80% pertanyaan 24/7 — salah satu paling diminati.

Ticket Triage & Routing AI+Event

Klasifikasi urgensi/topik/sentimen → rute ke tim tepat.

Agent Reply Assistant AI

Draf balasan otomatis untuk agen — 2–3x lebih produktif.

Call Transcription & Summary AI

Rekaman → transkrip → ringkasan + action items (relevan ID-EN campur).

📊 Data & Reporting

Scheduled ETL Pipeline Cron

Tarik-transform-muat data tiap malam. Fondasi semua BI.

Report Generation & Distribution Cron

Laporan PDF/Excel terjadwal ke email/Slack. Permintaan sangat tinggi & mudah dijual.

Competitor/Price Monitoring Cron+Event

Pantau harga kompetitor + alert perubahan. Keunggulan kompetitif.

Invoice OCR Extraction AI

Foto/PDF invoice → data terstruktur. Eliminasi entri manual keuangan.

⚙️ DevOps & Infra

CI/CD Pipeline Event

Push → test → build → deploy + rollback. Standar industri.

Uptime Monitoring & Alerting Cron+Event

Deteksi down dalam detik + auto-restart. Langsung uang.

Backup + Restore Verification Cron

Backup terjadwal + VERIFIKASI restore otomatis. Backup tak teruji = tak berguna.

Cloud Cost Optimization Cron+AI

Identifikasi resource idle → pangkas tagihan 20–40%.

💰 Finance & Ops

Payment Reminder / Dunning Cron+Event

Reminder tagihan berjenjang via email/WA. Percepat arus kas — nilai paling mudah dijual.

Invoice Reconciliation AI+Event

Cocokkan invoice ↔ pembayaran ↔ PO; tandai selisih.

Expense Processing AI

Foto struk → ekstrak, kategorikan, approval. Reimbursement dari hari jadi menit.

Inventory Reorder Event

Stok sentuh ambang → auto-PO ke supplier.

👥 HR & Recruitment

Resume Screening & Ranking AI

200 CV → tinjau 20 teratas. Hiring cepat & objektif.

Interview Scheduling Event

Koordinasi kalender kandidat ↔ pewawancara otomatis.

Onboarding Workflow Cron+Event

Karyawan baru → rangkaian tugas otomatis. Bagian natural HRIS.

Attendance & Leave Processing Cron+Event

Rekap presensi, lembur, cuti + approval — persis modul HexaRIS.

📄 Document & Workflow

Document Generation Engine Template

Data → kontrak/surat/invoice dari template dalam detik.

E-Signature & Approval Flow Event

Rute penandatangan berurutan + jejak audit. Mirror approval engine HexaRIS.

Contract Review Assistant AI

AI tandai klausul berisiko & tanggal penting. Nilai sangat tinggi di legal.

PDF Processing Pipeline Event

Batch merge/split/watermark/ekstrak otomatis.

🤖 AI-Native & Agentic

Internal Knowledge Assistant (RAG) AI

Jawab pertanyaan karyawan dari seluruh dokumen internal. Permintaan meledak.

Email Triage & Auto-Draft Agent Agentic

Agen baca inbox → kategorikan → draf → update sistem.

Meeting-to-Action Pipeline AI+Event

Transkrip → keputusan & action items → task otomatis di project tool.

Agentic Form Filler Agentic

Data tak terstruktur → isi sistem lain tanpa API. Nilai besar di back-office.

🛒 E-Commerce

Order Processing & Fulfillment Event

Order → validasi → stok → label → notifikasi, otomatis.

Abandoned Cart Recovery Event+Cron

Recover 10–20% penjualan hilang. Pendapatan murni.

Multi-Channel Catalog Sync Event

Sinkron stok/harga lintas kanal real-time. Anti-oversell.

Review Aggregation & Response AI+Cron

Sentimen + auto-respons + alert review buruk.

Legenda titik: hijau = cepat dibangun · kuning = menengah · merah = kompleks. Mulai dari hijau/kuning bernilai tinggi.

Sweet spot Go: cron job, webhook handler, worker queue = kandang alami Go. Banyak proyek ini = latihan Fase 4–7 yang bernilai jual.

Nyambung produk: attendance, onboarding, approval flow = modul HexaRIS. Membangunnya = memperkuat produk sendiri.

Prinsip yang Dipegang

Ambisi diarahkan ke kedalaman, bukan ke angka.

01 — Bikin > baca. Rasa "klik" datang dari ngetik & melihat hasil, bukan menambah topik.

02 — Requirements = kontrak. Jalan tapi melanggar satu aturan = belum selesai.

03 — Jangan loncat fase. Tes pindah: bisa bikin latihannya dari nol tanpa nyontek?

04 — Mentok itu proses. 30–45 menit buntu = otak sedang belajar, bukan gagal.

05 — Satu proyek nyata di produksi > 40 ide di kepala.

06 — Yang bertahan di era AI: yang paham sistem, bukan yang cuma mengetik kode.

Disusun dari riset & diskusi bersama Claude · Juli 2026 · Angka pasar berubah — verifikasi berkala lewat sumber di bagian "Kenapa Go".